@Override public final void accept(MethodVisitor visitor, MethodGenerationContext generationContext) { getBytecode(generationContext).accept(visitor, generationContext); }
@Override public BytecodeNode getBytecode(MethodGenerationContext generationContext) { if (instance == null) { return new BytecodeBlock() .append(value.getBytecode(generationContext)) .putStaticField(declaringClass, name, fieldType); } return new BytecodeBlock() .append(instance.getBytecode(generationContext)) .append(value.getBytecode(generationContext)) .putField(declaringClass, name, fieldType); }
@Override public BytecodeNode getBytecode(MethodGenerationContext generationContext) { return new BytecodeBlock() .append(instance.getBytecode(generationContext)) .append(ARRAYLENGTH); }
@Override public BytecodeNode getBytecode(MethodGenerationContext generationContext) { return new BytecodeBlock() .append(instance.getBytecode(generationContext)) .append(returnOpCode); }
@Override public BytecodeNode getBytecode(MethodGenerationContext generationContext) { return new BytecodeBlock() .append(instance.getBytecode(generationContext)) .append(index) .append(arrayLoadInstruction); }
@Override public BytecodeNode getBytecode(MethodGenerationContext generationContext) { return new BytecodeBlock() .append(instance.getBytecode(generationContext)) .pop(instance.getType()); }
@Override public BytecodeNode getBytecode(MethodGenerationContext generationContext) { return new BytecodeBlock() .append(instance.getBytecode(generationContext)) .append(index) .append(value) .append(arrayStoreInstruction); }
@Override public BytecodeNode getBytecode(MethodGenerationContext generationContext) { return new BytecodeBlock() .append(instance.getBytecode(generationContext)) .append(generateBytecode(instance.getType(), getType())); }
@Override public BytecodeNode getBytecode(MethodGenerationContext generationContext) { if (instance == null) { return getStaticInstruction(declaringClass, name, getType()); } return new BytecodeBlock() .append(instance.getBytecode(generationContext)) .getField(declaringClass, name, getType()); }