org.objectweb.asm.tree.MethodNode.visitCode()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(10.9k)|赞(0)|评价(0)|浏览(104)

本文整理了Java中org.objectweb.asm.tree.MethodNode.visitCode()方法的一些代码示例,展示了MethodNode.visitCode()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。MethodNode.visitCode()方法的具体详情如下:
包路径:org.objectweb.asm.tree.MethodNode
类名称:MethodNode
方法名:visitCode

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);

相关文章