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

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

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

MethodNode.visitTypeInsn介绍

暂无

代码示例

代码示例来源: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: pxb1988/dex2jar

mn.visitTypeInsn(getOp((a!=null?a.getText():null)),Type.getType(ffTV).getInternalName());

代码示例来源:origin: lenskit/lenskit

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

代码示例来源:origin: lenskit/lenskit

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

代码示例来源:origin: lenskit/lenskit

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

代码示例来源: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: lenskit/lenskit

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

代码示例来源: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: org.lenskit/lenskit-core

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

代码示例来源:origin: org.lenskit/lenskit-core

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

代码示例来源:origin: org.lenskit/lenskit-core

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

代码示例来源:origin: org.multiverse/multiverse-alpha-unborn

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

代码示例来源: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: org.lenskit/lenskit-core

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

代码示例来源:origin: org.multiverse/multiverse-alpha-unborn

/**
   * 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;
  }
}

代码示例来源:origin: org.multiverse/multiverse-alpha-unborn

/**
   * 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;
  }
}

代码示例来源:origin: ItzSomebody/Radon

method.visitTypeInsn(ANEWARRAY, "java/lang/String");

代码示例来源:origin: org.multiverse/multiverse-alpha-unborn

m.visitTypeInsn(CHECKCAST, tranlocalName);

相关文章