state._fsp--; line((a!=null?a.getLine():0)); mn.visitFieldInsn(getOp((a!=null?a.getText():null)),(efo!=null?((JasminParser.sFieldObject_return)efo).ownerInternalName:null),(efo!=null?((JasminParser.sFieldObject_return)efo).memberName:null),(efo!=null?((JasminParser.sFieldObject_return)efo).type:null));
@Override public void visitFieldInsn(final int opcode, final String owner, final String name, final String desc) { if ( className_to_subtype.containsKey(owner) || owner.startsWith(MAPPEDSET_PREFIX) ) needsTransformation = true; super.visitFieldInsn(opcode, owner, name, desc); }
public static MethodNode generateGetter(String className, String methodName, String fieldName, String fieldType) { MethodNode mn = new MethodNode(ACC_PUBLIC, methodName, "()" + fieldType, null, null); mn.visitCode(); mn.visitVarInsn(ALOAD, 0); mn.visitFieldInsn(GETFIELD, className, fieldName, fieldType); int opCode; if (fieldType.equals("I") || fieldType.equals("Z")) { opCode = IRETURN; } else if (fieldType.equals("L")) { opCode = LRETURN; } else if (fieldType.equals("F")) { opCode = FRETURN; } else if (fieldType.equals("D")) { opCode = DRETURN; } else { opCode = ARETURN; } mn.visitInsn(opCode); mn.visitMaxs(1, 1); mn.visitEnd(); return mn; } }
public MethodNode createGetTranlocalMethod() { MethodNode m = new MethodNode( ACC_PUBLIC + ACC_SYNTHETIC, "getTranlocal", format("()%s", getDescriptor(AlphaTranlocal.class)), null, new String[]{}); m.visitVarInsn(ALOAD, 0); m.visitFieldInsn(GETFIELD, tranlocalSnapshotName, "___tranlocal", internalToDesc(tranlocalName)); m.visitInsn(ARETURN); m.visitMaxs(0, 0); m.visitEnd(); return m; }
public static MethodNode generateSetter(String className, String methodName, String fieldName, String fieldType) { MethodNode mn = new MethodNode(ACC_PUBLIC, methodName, "(" + fieldType + ")V", null, null); mn.visitCode(); mn.visitVarInsn(ALOAD, 0); int opCode; if (fieldType.equals("I") || fieldType.equals("Z")) { opCode = ILOAD; } else if (fieldType.equals("L")) { opCode = LLOAD; } else if (fieldType.equals("F")) { opCode = FLOAD; } else if (fieldType.equals("D")) { opCode = DLOAD; } else { opCode = ALOAD; } mn.visitVarInsn(opCode, 1); mn.visitFieldInsn(PUTFIELD, className, fieldName, fieldType); mn.visitInsn(RETURN); mn.visitMaxs(2, 2); mn.visitEnd(); return mn; }
injectedMethod.visitFieldInsn(PUTSTATIC, "net/minecraft/client/Minecraft", workDirNode.name, "Ljava/io/File;");
m.visitFieldInsn(GETFIELD, tranlocalSnapshotName, "___tranlocal", internalToDesc(tranlocalName)); m.visitFieldInsn(GETFIELD, tranlocalSnapshotName, fieldNode.name, fieldNode.desc); m.visitFieldInsn(PUTFIELD, tranlocalName, fieldNode.name, fieldNode.desc);
m.visitFieldInsn(GETFIELD, tranlocalName, "___transactionalObject", alphaTransactionalObjectDesc); m.visitFieldInsn(PUTFIELD, tranlocalName, "___transactionalObject", alphaTransactionalObjectDesc); m.visitFieldInsn(PUTFIELD, tranlocalName, "___origin", originDesc); m.visitVarInsn(ALOAD, 0); m.visitVarInsn(ALOAD, 1); m.visitFieldInsn(GETFIELD, tranlocalName, field.name, field.desc); m.visitFieldInsn(PUTFIELD, tranlocalName, field.name, field.desc);
public MethodNode createConstructor() { MethodNode m = new MethodNode( ACC_PUBLIC + ACC_SYNTHETIC, "<init>", format("(%s)V", internalToDesc(tranlocalName)), null, new String[]{}); m.visitVarInsn(ALOAD, 0); m.visitMethodInsn(INVOKESPECIAL, getInternalName(AlphaTranlocalSnapshot.class), "<init>", "()V"); m.visitVarInsn(ALOAD, 0); m.visitVarInsn(ALOAD, 1); m.visitFieldInsn(PUTFIELD, tranlocalSnapshotName, "___tranlocal", internalToDesc(tranlocalName)); for (FieldNode fieldNode : (List<FieldNode>) classNode.fields) { FieldMetadata fieldMetadata = classMetadata.getFieldMetadata(fieldNode.name); if (fieldMetadata.isManagedField()) { m.visitVarInsn(ALOAD, 0); m.visitVarInsn(ALOAD, 1); m.visitFieldInsn(GETFIELD, tranlocalName, fieldNode.name, fieldNode.desc); m.visitFieldInsn(PUTFIELD, tranlocalSnapshotName, fieldNode.name, fieldNode.desc); } } m.visitInsn(RETURN); m.visitMaxs(0, 0); m.visitEnd(); return m; }
private MethodNode createFreshConstructor() { MethodNode m = new MethodNode( ACC_PUBLIC + ACC_SYNTHETIC, "<init>", format("(%s)V", internalToDesc(clazz.name)), null, new String[]{}); //we need to call the no arg constructor of the AlphaTranlocal m.visitVarInsn(ALOAD, 0); m.visitMethodInsn(INVOKESPECIAL, alphaTranlocalName, "<init>", "()V"); //put the atomicobject m.visitVarInsn(ALOAD, 0); m.visitVarInsn(ALOAD, 1); m.visitFieldInsn(PUTFIELD, alphaTranlocalName, "___transactionalObject", alphaTransactionalObjectDesc); m.visitInsn(RETURN); m.visitMaxs(0, 0);//value's don't matter, will be reculculated, but call is needed m.visitEnd(); return m; }
method.visitInsn(AASTORE); method.visitFieldInsn(PUTSTATIC, className, fieldName, "[Ljava/lang/String;"); method.visitInsn(RETURN); method.visitMaxs(3, 0);
m.visitFieldInsn(GETFIELD, tranlocalName, "___writeVersion", "J"); m.visitLdcInsn(new Long(0)); m.visitInsn(LCMP); m.visitFieldInsn(GETFIELD, tranlocalName, "___origin", originDesc); next = new Label(); m.visitJumpInsn(IFNONNULL, next); m.visitFieldInsn(GETFIELD, tranlocalName, "___origin", originDesc); m.visitTypeInsn(CHECKCAST, tranlocalName); m.visitInsn(DUP); m.visitFieldInsn(GETFIELD, tranlocalName, fieldNode.name, fieldNode.desc); m.visitVarInsn(ALOAD, 0); m.visitFieldInsn(GETFIELD, tranlocalName, fieldNode.name, fieldNode.desc);
private MethodNode generateIsBlockingWithShield() { MethodNode mv = new MethodNode(ACC_PUBLIC, "isBlockingWithShield", "()Z", null, null); mv.visitCode(); Label l0 = new Label(); mv.visitLabel(l0); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESTATIC, UTILITY_CLASS, "canBlockWithShield", "(L" + entityPlayerClassName + ";)Z"); Label l1 = new Label(); mv.visitJumpInsn(IFEQ, l1); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, entityPlayerClassName, "isShielding", "Z"); mv.visitJumpInsn(IFEQ, l1); mv.visitInsn(ICONST_1); Label l2 = new Label(); mv.visitJumpInsn(GOTO, l2); mv.visitLabel(l1); mv.visitFrame(F_SAME, 0, null, 0, null); mv.visitInsn(ICONST_0); mv.visitLabel(l2); mv.visitFrame(F_SAME1, 0, null, 1, new Object[]{INTEGER}); mv.visitInsn(IRETURN); Label l3 = new Label(); mv.visitLabel(l3); mv.visitLocalVariable("this", "L" + entityPlayerClassName + ";", null, l0, l3, 0); mv.visitMaxs(1, 1); mv.visitEnd(); return mv; }
mv.visitLabel(l2); mv.visitFrame(F_FULL, 2, new Object[]{entityPlayerClassName, INTEGER}, 2, new Object[]{entityPlayerClassName, INTEGER}); mv.visitFieldInsn(PUTFIELD, entityPlayerClassName, "isShielding", "Z"); Label l3 = new Label(); mv.visitLabel(l3);