private static MethodNode generateDoubleGetterMethod(Class<? extends AbstractBeanEntity> type, Method getter) { MethodNode gn = new MethodNode(); gn.name = "getDouble"; gn.desc = Type.getMethodDescriptor(Type.DOUBLE_TYPE, Type.getType(AbstractBeanEntity.class)); gn.access = ACC_PUBLIC; gn.exceptions = Collections.emptyList(); gn.maxLocals = 2; gn.maxStack = 2; gn.visitCode(); gn.visitVarInsn(ALOAD, 1); gn.visitTypeInsn(CHECKCAST, Type.getInternalName(type)); gn.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(type), getter.getName(), Type.getMethodDescriptor(getter), false); gn.visitInsn(DRETURN); return gn; } }
private static MethodNode generateLongGetterMethod(Class<? extends AbstractBeanEntity> type, Method getter) { MethodNode gn = new MethodNode(); gn.name = "getLong"; gn.desc = Type.getMethodDescriptor(Type.LONG_TYPE, Type.getType(AbstractBeanEntity.class)); gn.access = ACC_PUBLIC; gn.exceptions = Collections.emptyList(); gn.maxLocals = 2; gn.maxStack = 2; gn.visitCode(); gn.visitVarInsn(ALOAD, 1); gn.visitTypeInsn(CHECKCAST, Type.getInternalName(type)); gn.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(type), getter.getName(), Type.getMethodDescriptor(getter), false); gn.visitInsn(LRETURN); return gn; }
mn.visitTypeInsn(getOp((a!=null?a.getText():null)),Type.getType(ffTV).getInternalName());
private static MethodNode generateDoubleSetter(Class<? extends AbstractBeanEntityBuilder> type, Method smethod) { MethodNode setter = new MethodNode(); setter.access = ACC_PUBLIC; setter.desc = getMethodDescriptor(VOID_TYPE, getType(AbstractBeanEntityBuilder.class), getType(double.class)); setter.name = "set"; setter.exceptions = Collections.emptyList(); setter.maxLocals = 4; setter.maxStack = 3; // load target object setter.visitVarInsn(ALOAD, 1); // cast target object setter.visitTypeInsn(CHECKCAST, getInternalName(type)); // load attribute value setter.visitVarInsn(DLOAD, 2); // call real setter setter.visitMethodInsn(INVOKEVIRTUAL, getInternalName(type), smethod.getName(), getMethodDescriptor(smethod), false); setter.visitInsn(RETURN); return setter; }
private static MethodNode generateLongSetter(Class<? extends AbstractBeanEntityBuilder> type, Method smethod) { MethodNode setter = new MethodNode(); setter.access = ACC_PUBLIC; setter.desc = getMethodDescriptor(VOID_TYPE, getType(AbstractBeanEntityBuilder.class), getType(long.class)); setter.name = "set"; setter.exceptions = Collections.emptyList(); setter.maxLocals = 4; setter.maxStack = 3; // load target object setter.visitVarInsn(ALOAD, 1); // cast target object setter.visitTypeInsn(CHECKCAST, getInternalName(type)); // load attribute value setter.visitVarInsn(LLOAD, 2); // call real setter setter.visitMethodInsn(INVOKEVIRTUAL, getInternalName(type), smethod.getName(), getMethodDescriptor(smethod), false); setter.visitInsn(RETURN); return setter; }
private static MethodNode generateSetter(Class<? extends AbstractBeanEntityBuilder> type, Method smethod) { MethodNode setter = new MethodNode(); setter.access = ACC_PUBLIC; setter.desc = getMethodDescriptor(VOID_TYPE, getType(AbstractBeanEntityBuilder.class), getType(Object.class)); setter.name = "set"; setter.exceptions = Collections.emptyList(); setter.maxLocals = 3; setter.maxStack = 2; // load target object setter.visitVarInsn(ALOAD, 1); // cast target object setter.visitTypeInsn(CHECKCAST, getInternalName(type)); // load attribute value setter.visitVarInsn(ALOAD, 2); // convert attribute value if necessary setter.maxStack += CGUtils.adaptToType(setter, smethod.getParameterTypes()[0]); // call real setter setter.visitMethodInsn(INVOKEVIRTUAL, getInternalName(type), smethod.getName(), getMethodDescriptor(smethod), false); setter.visitInsn(RETURN); return setter; }
private static MethodNode generateGetterMethod(Class<? extends AbstractBeanEntity> type, Method getter) { MethodNode gn = new MethodNode(); gn.name = "get"; gn.desc = Type.getMethodDescriptor(Type.getType(Object.class), Type.getType(AbstractBeanEntity.class)); gn.access = ACC_PUBLIC; gn.exceptions = Collections.emptyList(); Type rt = Type.getReturnType(getter); gn.maxLocals = 2; gn.maxStack = 1 + rt.getSize(); gn.visitCode(); // load the target object from parameter gn.visitVarInsn(ALOAD, 1); // cast to target object type gn.visitTypeInsn(CHECKCAST, Type.getInternalName(type)); // call target object method gn.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(type), getter.getName(), Type.getMethodDescriptor(getter), false); // convert from primitive to object if necessary CGUtils.adaptFromType(gn, getter.getReturnType()); gn.visitInsn(ARETURN); return gn; }
clearer.visitTypeInsn(CHECKCAST, getInternalName(type)); clearer.visitTypeInsn(CHECKCAST, getInternalName(type)); clearer.visitTypeInsn(NEW, "java/lang/UnsupportedOperationException"); clearer.visitInsn(DUP); clearer.visitMethodInsn(INVOKESPECIAL, "java/lang/UnsupportedOperationException", "<init>", "()V", false);
private static MethodNode generateLongGetterMethod(Class<? extends AbstractBeanEntity> type, Method getter) { MethodNode gn = new MethodNode(); gn.name = "getLong"; gn.desc = Type.getMethodDescriptor(Type.LONG_TYPE, Type.getType(AbstractBeanEntity.class)); gn.access = ACC_PUBLIC; gn.exceptions = Collections.emptyList(); gn.maxLocals = 2; gn.maxStack = 2; gn.visitCode(); gn.visitVarInsn(ALOAD, 1); gn.visitTypeInsn(CHECKCAST, Type.getInternalName(type)); gn.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(type), getter.getName(), Type.getMethodDescriptor(getter), false); gn.visitInsn(LRETURN); return gn; }
private static MethodNode generateDoubleGetterMethod(Class<? extends AbstractBeanEntity> type, Method getter) { MethodNode gn = new MethodNode(); gn.name = "getDouble"; gn.desc = Type.getMethodDescriptor(Type.DOUBLE_TYPE, Type.getType(AbstractBeanEntity.class)); gn.access = ACC_PUBLIC; gn.exceptions = Collections.emptyList(); gn.maxLocals = 2; gn.maxStack = 2; gn.visitCode(); gn.visitVarInsn(ALOAD, 1); gn.visitTypeInsn(CHECKCAST, Type.getInternalName(type)); gn.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(type), getter.getName(), Type.getMethodDescriptor(getter), false); gn.visitInsn(DRETURN); return gn; } }
private static MethodNode generateLongSetter(Class<? extends AbstractBeanEntityBuilder> type, Method smethod) { MethodNode setter = new MethodNode(); setter.access = ACC_PUBLIC; setter.desc = getMethodDescriptor(VOID_TYPE, getType(AbstractBeanEntityBuilder.class), getType(long.class)); setter.name = "set"; setter.exceptions = Collections.emptyList(); setter.maxLocals = 4; setter.maxStack = 3; // load target object setter.visitVarInsn(ALOAD, 1); // cast target object setter.visitTypeInsn(CHECKCAST, getInternalName(type)); // load attribute value setter.visitVarInsn(LLOAD, 2); // call real setter setter.visitMethodInsn(INVOKEVIRTUAL, getInternalName(type), smethod.getName(), getMethodDescriptor(smethod), false); setter.visitInsn(RETURN); return setter; }
private static MethodNode generateDoubleSetter(Class<? extends AbstractBeanEntityBuilder> type, Method smethod) { MethodNode setter = new MethodNode(); setter.access = ACC_PUBLIC; setter.desc = getMethodDescriptor(VOID_TYPE, getType(AbstractBeanEntityBuilder.class), getType(double.class)); setter.name = "set"; setter.exceptions = Collections.emptyList(); setter.maxLocals = 4; setter.maxStack = 3; // load target object setter.visitVarInsn(ALOAD, 1); // cast target object setter.visitTypeInsn(CHECKCAST, getInternalName(type)); // load attribute value setter.visitVarInsn(DLOAD, 2); // call real setter setter.visitMethodInsn(INVOKEVIRTUAL, getInternalName(type), smethod.getName(), getMethodDescriptor(smethod), false); setter.visitInsn(RETURN); return setter; }
private static MethodNode generateSetter(Class<? extends AbstractBeanEntityBuilder> type, Method smethod) { MethodNode setter = new MethodNode(); setter.access = ACC_PUBLIC; setter.desc = getMethodDescriptor(VOID_TYPE, getType(AbstractBeanEntityBuilder.class), getType(Object.class)); setter.name = "set"; setter.exceptions = Collections.emptyList(); setter.maxLocals = 3; setter.maxStack = 2; // load target object setter.visitVarInsn(ALOAD, 1); // cast target object setter.visitTypeInsn(CHECKCAST, getInternalName(type)); // load attribute value setter.visitVarInsn(ALOAD, 2); // convert attribute value if necessary setter.maxStack += CGUtils.adaptToType(setter, smethod.getParameterTypes()[0]); // call real setter setter.visitMethodInsn(INVOKEVIRTUAL, getInternalName(type), smethod.getName(), getMethodDescriptor(smethod), false); setter.visitInsn(RETURN); return setter; }
private Object createOpenForWriteMethod() { String desc = "()" + Type.getDescriptor(AlphaTranlocal.class); MethodNode m = new MethodNode( ACC_PUBLIC + ACC_SYNTHETIC, "openForWrite", desc, null, new String[]{}); m.visitTypeInsn(NEW, tranlocalName); m.visitInsn(DUP); m.visitVarInsn(ALOAD, 0); m.visitMethodInsn(INVOKESPECIAL, tranlocalName, "<init>", format("(%s)V", internalToDesc(tranlocalName))); m.visitInsn(ARETURN); return m; }
private static MethodNode generateGetterMethod(Class<? extends AbstractBeanEntity> type, Method getter) { MethodNode gn = new MethodNode(); gn.name = "get"; gn.desc = Type.getMethodDescriptor(Type.getType(Object.class), Type.getType(AbstractBeanEntity.class)); gn.access = ACC_PUBLIC; gn.exceptions = Collections.emptyList(); Type rt = Type.getReturnType(getter); gn.maxLocals = 2; gn.maxStack = 1 + rt.getSize(); gn.visitCode(); // load the target object from parameter gn.visitVarInsn(ALOAD, 1); // cast to target object type gn.visitTypeInsn(CHECKCAST, Type.getInternalName(type)); // call target object method gn.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(type), getter.getName(), Type.getMethodDescriptor(getter), false); // convert from primitive to object if necessary CGUtils.adaptFromType(gn, getter.getReturnType()); gn.visitInsn(ARETURN); return gn; }
clearer.visitTypeInsn(CHECKCAST, getInternalName(type)); clearer.visitTypeInsn(CHECKCAST, getInternalName(type)); clearer.visitTypeInsn(NEW, "java/lang/UnsupportedOperationException"); clearer.visitInsn(DUP); clearer.visitMethodInsn(INVOKESPECIAL, "java/lang/UnsupportedOperationException", "<init>", "()V", false);
/** * Just override the original super.createTakeSnapshotMethod if one exists. */ private MethodNode createTakeSnapshotMethod() { MethodNode m = new MethodNode( ACC_PUBLIC + ACC_SYNTHETIC, "takeSnapshot", format("()%s", getDescriptor(AlphaTranlocalSnapshot.class)), null, new String[]{}); m.visitTypeInsn(NEW, tranlocalSnapshotName); m.visitInsn(DUP); m.visitVarInsn(ALOAD, 0); String constructorDesc = format("(%s)V", internalToDesc(tranlocalName)); m.visitMethodInsn(INVOKESPECIAL, tranlocalSnapshotName, "<init>", constructorDesc); m.visitInsn(ARETURN); m.visitMaxs(0, 0);//value's don't matter, will be reculculated, but call is needed m.visitEnd(); return m; } }
/** * If the transactionalObject is not a firstGeneration, the method of the parent * TransactionalObject is completely overridden. */ private MethodNode createOpenUnconstructedMethod() { String desc = "()" + Type.getDescriptor(AlphaTranlocal.class); MethodNode m = new MethodNode( ACC_PUBLIC + ACC_SYNTHETIC, "___openUnconstructed", desc, null, new String[]{}); m.visitTypeInsn(NEW, classMetadata.getTranlocalName()); m.visitInsn(DUP); m.visitVarInsn(ALOAD, 0); String constructorDesc = format("(%s)V", internalToDesc(classNode.name)); m.visitMethodInsn( INVOKESPECIAL, classMetadata.getTranlocalName(), "<init>", constructorDesc); m.visitInsn(ARETURN); return m; } }
method.visitTypeInsn(ANEWARRAY, "java/lang/String");
m.visitTypeInsn(CHECKCAST, tranlocalName);