本文整理了Java中org.objectweb.asm.tree.MethodNode.visitVarInsn()
方法的一些代码示例,展示了MethodNode.visitVarInsn()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。MethodNode.visitVarInsn()
方法的具体详情如下:
包路径:org.objectweb.asm.tree.MethodNode
类名称:MethodNode
方法名:visitVarInsn
暂无
代码示例来源:origin: pxb1988/dex2jar
private void visitOP0(int op){
if(op>=26&&op<=45){ // xload_y
int x=op-26;
mn.visitVarInsn(ILOAD+x/4,x%4);
}else if(op>=59&&op<=78){ // xstore_y
int x=op-26;
mn.visitVarInsn(ISTORE+x/4,x%4);
}else{
mn.visitInsn(op);
}
}
private void visitIOP(int op, int a){
代码示例来源:origin: pxb1988/dex2jar
private void visitIOP(int op, int a){
// xstore
// xload
if(op>=21&&op<=58){
mn.visitVarInsn(op,a);
} else {
// xipush
mn.visitIntInsn(op,a);
}
}
private void visitJOP(int op, Label label){
代码示例来源:origin: lenskit/lenskit
private static MethodNode generateBeanConstructor(Class<? extends AttrMethod> superclass) {
MethodNode ctor = new MethodNode();
ctor.access = ACC_PUBLIC;
ctor.desc = getMethodDescriptor(VOID_TYPE, getType(TypedName.class));
ctor.name = "<init>";
ctor.exceptions = Collections.emptyList();
ctor.maxLocals = 2;
ctor.maxStack = 2;
// load instance ('this')
ctor.visitVarInsn(ALOAD, 0);
// load the attribute
ctor.visitVarInsn(ALOAD, 1);
// invoke superclass constructor with attribute
ctor.visitMethodInsn(INVOKESPECIAL, getInternalName(superclass),
"<init>", ctor.desc, false);
ctor.visitInsn(RETURN);
return ctor;
}
代码示例来源:origin: lenskit/lenskit
private static MethodNode generateGetterConstructor() {
MethodNode cn = new MethodNode();
cn.name = "<init>";
cn.desc = "()V";
cn.access = ACC_PUBLIC;
cn.exceptions = Collections.emptyList();
cn.maxStack = 1;
cn.maxLocals = 1;
// load the instance
cn.visitVarInsn(ALOAD, 0);
// call superclass constructor
cn.visitMethodInsn(INVOKESPECIAL, Type.getInternalName(BeanAttributeGetter.class),
"<init>", "()V", false);
cn.visitInsn(RETURN);
return cn;
}
代码示例来源: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 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 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 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 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 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
if (cmethod != null) {
clearer.visitVarInsn(ALOAD, 1);
} else if (!smethod.getParameterTypes()[0].isPrimitive()) {
clearer.visitVarInsn(ALOAD, 1);
clearer.visitTypeInsn(CHECKCAST, getInternalName(type));
代码示例来源:origin: dragome/dragome-sdk
public void visitVarInsn(int opcode, int var)
{
super.visitVarInsn(opcode, var);
if (opcode == ALOAD)
{
//store it for reuse for Method.invoke
_variables.add(var);
}
}
代码示例来源:origin: RS485/LogisticsPipes
@Override
public void visitInsn(int opcode) {
if (opcode == Opcodes.ARETURN) {
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "onCCWrappedILuaObject", "(Lorg/luaj/vm2/LuaTable;Ldan200/computercraft/api/lua/ILuaObject;)Lorg/luaj/vm2/LuaTable;");
}
super.visitInsn(opcode);
}
代码示例来源:origin: org.lenskit/lenskit-core
private static MethodNode generateGetterConstructor() {
MethodNode cn = new MethodNode();
cn.name = "<init>";
cn.desc = "()V";
cn.access = ACC_PUBLIC;
cn.exceptions = Collections.emptyList();
cn.maxStack = 1;
cn.maxLocals = 1;
// load the instance
cn.visitVarInsn(ALOAD, 0);
// call superclass constructor
cn.visitMethodInsn(INVOKESPECIAL, Type.getInternalName(BeanAttributeGetter.class),
"<init>", "()V", false);
cn.visitInsn(RETURN);
return cn;
}
代码示例来源:origin: RS485/LogisticsPipes
@Override
public void visitVarInsn(int opcode, int var) {
super.visitVarInsn(opcode, var);
if(watchForHandling) {
watchForHandling = false;
Label l = new Label();
visitLabel(l);
visitVarInsn(Opcodes.ALOAD, var);
visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/asm/ParamProfiler", "handleException", "(Ljava/lang/Throwable;)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: 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.multiverse/multiverse-alpha-unborn
public MethodNode createGetTranlocalMethod() {
MethodNode m = new MethodNode(
ACC_PUBLIC + ACC_SYNTHETIC,
"getTranlocal",
format("()%s", getDescriptor(AlphaTranlocal.class)),
null,
new String[]{});
m.visitVarInsn(ALOAD, 0);
m.visitFieldInsn(GETFIELD, tranlocalSnapshotName, "___tranlocal", internalToDesc(tranlocalName));
m.visitInsn(ARETURN);
m.visitMaxs(0, 0);
m.visitEnd();
return m;
}
代码示例来源: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: 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;
}
内容来源于网络,如有侵权,请联系作者删除!