本文整理了Java中org.objectweb.asm.tree.MethodNode.visitTypeInsn()
方法的一些代码示例,展示了MethodNode.visitTypeInsn()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。MethodNode.visitTypeInsn()
方法的具体详情如下:
包路径:org.objectweb.asm.tree.MethodNode
类名称: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);
内容来源于网络,如有侵权,请联系作者删除!