本文整理了Java中org.objectweb.asm.tree.MethodNode.visitCode()
方法的一些代码示例,展示了MethodNode.visitCode()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。MethodNode.visitCode()
方法的具体详情如下:
包路径:org.objectweb.asm.tree.MethodNode
类名称:MethodNode
方法名:visitCode
暂无
代码示例来源:origin: robolectric/robolectric
ctor.visitCode();
ctor.visitInsn(Opcodes.RETURN);
ctor.visitEnd();
代码示例来源:origin: lenskit/lenskit
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;
}
}
代码示例来源:origin: lenskit/lenskit
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;
}
代码示例来源:origin: lenskit/lenskit
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;
}
代码示例来源:origin: inesc-id-esw/jvstm
public ParNestMethodTransformer(ClassVisitor cv, File originalClassFile) {
super(ASM4, cv);
classFile = originalClassFile;
atomicClInit = new MethodNode(ACC_STATIC, "<clinit>", "()V", null, null);
atomicClInit.visitCode();
}
代码示例来源:origin: RS485/LogisticsPipes
@Override
public void visitCode() {
super.visitCode();
Label l0 = new Label();
visitLabel(l0);
visitVarInsn(Opcodes.ALOAD, 0);
this.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/LogisticsASMHookClass", "invalidate", "(Lnet/minecraft/tileentity/TileEntity;)V");
}
};
代码示例来源:origin: RS485/LogisticsPipes
@Override
public void visitCode() {
super.visitCode();
Label l0 = new Label();
visitLabel(l0);
visitVarInsn(Opcodes.ALOAD, 0);
this.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/LogisticsASMHookClass", "validate", "(Lnet/minecraft/tileentity/TileEntity;)V");
}
};
代码示例来源:origin: RS485/LogisticsPipes
@Override
public void visitCode() {
super.visitCode();
Label l = new Label();
visitLabel(l);
visitVarInsn(Opcodes.ALOAD, 0);
visitVarInsn(Opcodes.ALOAD, 1);
this.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/td/ThermalDynamicsHooks", "travelingItemToNBT", "(Lcofh/thermaldynamics/duct/item/TravelingItem;Lnet/minecraft/nbt/NBTTagCompound;)V", false);
}
};
代码示例来源:origin: org.lenskit/lenskit-core
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;
}
代码示例来源:origin: org.lenskit/lenskit-core
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;
}
}
代码示例来源:origin: Mine-and-blade-admin/Battlegear2
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;
}
}
代码示例来源:origin: Mine-and-blade-admin/Battlegear2
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;
}
代码示例来源:origin: org.lenskit/lenskit-core
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;
}
代码示例来源:origin: RS485/LogisticsPipes
@Override
public void visitCode() {
super.visitCode();
Label l0 = new Label();
super.visitLabel(l0);
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "handleCCWrappedILuaObject", "(Ldan200/computercraft/api/lua/ILuaObject;)Z");
Label l1 = new Label();
super.visitJumpInsn(Opcodes.IFEQ, l1);
Label l2 = new Label();
super.visitLabel(l2);
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "returnCCWrappedILuaObject", "(Ldan200/computercraft/api/lua/ILuaObject;)Lorg/luaj/vm2/LuaTable;");
super.visitInsn(Opcodes.ARETURN);
super.visitLabel(l1);
}
};
代码示例来源:origin: org.robolectric/robolectric-sandbox
ctor.visitCode();
ctor.visitInsn(RETURN);
ctor.visitEnd();
代码示例来源:origin: Mine-and-blade-admin/Battlegear2
private MethodNode generateIsBattleMode() {
MethodNode mv = new MethodNode(ACC_PUBLIC, "isBattlemode", "()Z", null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESTATIC, UTILITY_CLASS, "isPlayerInBattlemode", "(L" + entityPlayerClassName + ";)Z");
mv.visitInsn(IRETURN);
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitLocalVariable("this", "L" + entityPlayerClassName + ";", null, l0, l1, 0);
mv.visitMaxs(1, 1);
mv.visitEnd();
return mv;
}
代码示例来源:origin: Mine-and-blade-admin/Battlegear2
private MethodNode generateAttackOffhandMethod() {
MethodNode mv = new MethodNode(ACC_PUBLIC, "attackTargetEntityWithCurrentOffItem", "(L" + entityClassName + ";)V", null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(INVOKESTATIC, UTILITY_CLASS, "attackTargetEntityWithCurrentOffItem", "(L" + entityPlayerClassName + ";L" + entityClassName + ";)V");
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitInsn(RETURN);
Label l2 = new Label();
mv.visitLabel(l2);
mv.visitLocalVariable("this", "L" + entityPlayerClassName + ";", null, l0, l2, 0);
mv.visitLocalVariable("target", "L" + entityClassName + ";", null, l0, l2, 1);
mv.visitMaxs(2, 2);
mv.visitEnd();
return mv;
}
代码示例来源:origin: ItzSomebody/Radon
null, null);
method.visitCode();
int numberOfStrings = strings.size();
if (numberOfStrings <= 5) {
代码示例来源:origin: Mine-and-blade-admin/Battlegear2
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;
}
代码示例来源:origin: Mine-and-blade-admin/Battlegear2
private MethodNode generateSetBlockingWithShield() {
MethodNode mv = new MethodNode(ACC_PUBLIC, "setBlockingWithShield", "(Z)V", null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
内容来源于网络,如有侵权,请联系作者删除!