public void writePushBooleanAsMemory(boolean value) { if (value) code.add(new FieldInsnNode( GETSTATIC, Type.getInternalName(Memory.class), "TRUE", Type.getDescriptor(Memory.class) )); else code.add(new FieldInsnNode( GETSTATIC, Type.getInternalName(Memory.class), "FALSE", Type.getDescriptor(Memory.class) )); stackPush(Memory.Type.REFERENCE); }
public void writePutStatic(Class clazz, String name, Class fieldClass) { code.add(new FieldInsnNode(PUTSTATIC, Type.getInternalName(clazz), name, Type.getDescriptor(fieldClass))); stackPop(); }
public void writePutDynamic(String name, Class fieldClass) { code.add(new FieldInsnNode( PUTFIELD, method.clazz.node.name, name, Type.getDescriptor(fieldClass) )); stackPop(); }
public void writePutStatic(String name, Class fieldClass) { code.add(new FieldInsnNode( PUTSTATIC, method.clazz.node.name, name, Type.getDescriptor(fieldClass) )); stackPop(); }
public void writeGetStatic(Class clazz, String name, Class fieldClass) { code.add(new FieldInsnNode(GETSTATIC, Type.getInternalName(clazz), name, Type.getDescriptor(fieldClass))); stackPush(null, StackItem.Type.valueOf(fieldClass)); setStackPeekAsImmutable(); }
public void writeGetStatic(String name, Class fieldClass) { code.add(new FieldInsnNode( GETSTATIC, method.clazz.node.name, name, Type.getDescriptor(fieldClass) )); stackPush(null, StackItem.Type.valueOf(fieldClass)); setStackPeekAsImmutable(); }
public void writeGetDynamic(String name, Class fieldClass) { stackPop(); code.add(new FieldInsnNode( GETFIELD, method.clazz.node.name, name, Type.getDescriptor(fieldClass) )); stackPush(null, StackItem.Type.valueOf(fieldClass)); setStackPeekAsImmutable(); }
code.add(new FieldInsnNode( GETSTATIC, Type.getInternalName(Memory.class), "UNDEFINED", Type.getDescriptor(Memory.class) )); } else if (memory instanceof NullMemory) { code.add(new FieldInsnNode( GETSTATIC, Type.getInternalName(Memory.class), "NULL", Type.getDescriptor(Memory.class) ));
@Override public void visitFieldInsn(int opcode, String owner, String name, String desc) { mv.visitFieldInsn(opcode, owner, name, desc); fieldAccessNode = new FieldInsnNode(opcode, owner, name, desc); instructionsAfterFieldAccess.clear(); }
public static AbstractInsnNode loadBoxedBoolean(boolean value) { return new FieldInsnNode( GETSTATIC, Type.getInternalName(Boolean.class), value ? "TRUE" : "FALSE", Type.getDescriptor(Boolean.class)); }
@Override public AbstractInsnNode clone(final Map<LabelNode, LabelNode> clonedLabels) { return new FieldInsnNode(opcode, owner, name, desc).cloneAnnotations(this); } }
@Override public void visitFieldInsn(int arg0, String arg1, String arg2, String arg3) { super.visitFieldInsn(arg0, arg1, arg2, arg3); appendToBacklog(new FieldInsnNode(arg0, arg1, arg2, arg3)); }
@Override public AbstractInsnNode clone(final Map<LabelNode, LabelNode> labels) { return new FieldInsnNode(opcode, owner, name, desc) .cloneAnnotations(this); } }
@Override public void visitFieldInsn( final int opcode, final String owner, final String name, final String descriptor) { instructions.add(new FieldInsnNode(opcode, owner, name, descriptor)); }
public CodeBlock putfield(final String className, final String fieldName, final String fieldDesc) { instructionList.add(new FieldInsnNode(PUTFIELD, className, fieldName, fieldDesc)); return this; }
@Override public void visitFieldInsn(final int opcode, final String owner, final String name, final String desc) { instructions.add(new FieldInsnNode(opcode, owner, name, desc)); }
public InsnList instantiateInsns() { InsnList il = new InsnList(); doInstantiate(il); il.add(new FieldInsnNode( PUTSTATIC, ownerClassType.getInternalName(), fieldName, fieldType.getDescriptor())); return il; }
public static InsnList getClassRefInst(Type type, int majorVersion) { char charType = type.getDescriptor().charAt(0); if (charType == '[' || charType == 'L') return getClassConstantRef(type, majorVersion); String wrapper = getWrapper(type, charType); InsnList list = new InsnList(); list.add(new FieldInsnNode(GETSTATIC, wrapper, "TYPE", ci(Class.class))); return list; }
protected void convertXLoads(InstructionGroup group) { String owner = group.getGroupClassType().getInternalName(); for (InstructionGraphNode node : group.getNodes()) { if (!node.isXLoad()) continue; VarInsnNode insn = (VarInsnNode) node.getInstruction(); FieldNode field = group.getFields().get(insn.var); // insert the correct GETFIELD after the xLoad group.getInstructions().insert(insn, new FieldInsnNode(GETFIELD, owner, field.name, field.desc)); // change the load to ALOAD 0 group.getInstructions().set(insn, new VarInsnNode(ALOAD, 0)); } }
private void initializeFields() { String internalName = group.getGroupClassType().getInternalName(); for (FieldNode field : group.getFields()) { insert(new InsnNode(DUP)); // the FieldNodes access and value members have been reused for the var index / Type respectively! insert(new VarInsnNode(getLoadingOpcode((Type) field.value), field.access)); insert(new FieldInsnNode(PUTFIELD, internalName, field.name, field.desc)); } }