private void line(int ln){ if(rebuildLine) { Label label=new Label(); mn.visitLabel(label); mn.visitLineNumber(ln, label); } } private static String unEscapeString(String str) {
Label label=getLabel((z!=null?input.toString(z.start,z.stop):null)); mn.visitLabel(label); if(rebuildLine) {mn.visitLineNumber((z!=null?(z.start):null).getLine(),label);} if(!rebuildLine) { Label label=new Label(); mn.visitLabel(label); mn.visitLineNumber(parseInt((b!=null?b.getText():null)),label); }
@Override public void visitLabel(Label label) { watchForHandling = false; super.visitLabel(label); if(catchStatement.contains(label)) { watchForHandling = true; } }
public void visitMethodInsn(int opcode, String owner, String name, String desc) { MethodInsnNode mnode = new MethodInsnNode(opcode, owner, name, desc); if (opcode == INVOKESPECIAL || "<init>".equals(name)) { methods.add(mnode); } if (needsFrameGuard(opcode, owner, name, desc)) { Label label = new Label(); super.visitLabel(label); labels.add(label); nodes.add(mnode); } instructions.add(mnode); }
public void visitMethodInsn(int opcode, String owner, String name, String desc) { MethodInsnNode mnode = new MethodInsnNode(opcode, owner, name, desc); if (opcode == INVOKESPECIAL || "<init>".equals(name)) { methods.add(mnode); } if (needsFrameGuard(opcode, owner, name, desc)) { Label label = new Label(); super.visitLabel(label); labels.add(label); nodes.add(mnode); } instructions.add(mnode); }
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean intf) { MethodInsnNode mnode = new MethodInsnNode(opcode, owner, name, desc, intf); if (opcode == INVOKESPECIAL || "<init>".equals(name)) { methods.add(mnode); } if (needsFrameGuard(opcode, owner, name, desc)) { Label label = new Label(); super.visitLabel(label); labels.add(label); nodes.add(mnode); } instructions.add(mnode); }
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean intf) { MethodInsnNode mnode = new MethodInsnNode(opcode, owner, name, desc, intf); if (opcode == INVOKESPECIAL || "<init>".equals(name)) { methods.add(mnode); } if (needsFrameGuard(opcode, owner, name, desc)) { Label label = new Label(); super.visitLabel(label); labels.add(label); nodes.add(mnode); } instructions.add(mnode); }
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean intf) { MethodInsnNode mnode = new MethodInsnNode(opcode, owner, name, desc, intf); if (opcode == INVOKESPECIAL || "<init>".equals(name)) { methods.add(mnode); } if (needsFrameGuard(opcode, owner, name, desc)) { Label label = new Label(); super.visitLabel(label); labels.add(label); nodes.add(mnode); } instructions.add(mnode); }
public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { InvokeDynamicInsnNode mnode = new InvokeDynamicInsnNode(name, desc, bsm, bsmArgs); if (needsFrameGuard(INVOKEDYNAMIC, bsm.getOwner(), name, desc)) { Label label = new Label(); super.visitLabel(label); labels.add(label); nodes.add(mnode); } instructions.add(mnode); }
public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { InvokeDynamicInsnNode mnode = new InvokeDynamicInsnNode(name, desc, bsm, bsmArgs); if (needsFrameGuard(INVOKEDYNAMIC, bsm.getOwner(), name, desc)) { Label label = new Label(); super.visitLabel(label); labels.add(label); nodes.add(mnode); } instructions.add(mnode); }
@Override public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { InvokeDynamicInsnNode mnode = new InvokeDynamicInsnNode(name, desc, bsm, bsmArgs); if (needsFrameGuard(INVOKEDYNAMIC, bsm.getOwner(), name, desc)) { Label label = new Label(); super.visitLabel(label); labels.add(label); nodes.add(mnode); } instructions.add(mnode); }
public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { InvokeDynamicInsnNode mnode = new InvokeDynamicInsnNode(name, desc, bsm, bsmArgs); if (needsFrameGuard(INVOKEDYNAMIC, bsm.getOwner(), name, desc)) { Label label = new Label(); super.visitLabel(label); labels.add(label); nodes.add(mnode); } instructions.add(mnode); }
@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); } };
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { MethodInsnNode mnode= new MethodInsnNode(opcode, owner, name, desc, itf); if (opcode == INVOKESPECIAL || "<init>".equals(name)) { methods.add(mnode); } if (needsFrameGuard(opcode, owner, name, desc) /* && transformer.inScope(owner, name)*/) { Label label= new Label(); super.visitLabel(label); LabelNode labelNode= new LabelNode(label); instructions.add(labelNode); labels.add(label); nodes.add(mnode); //RS: if (_continueReflection && name.equals("invoke") && owner.startsWith("java/lang/reflect/Method")) { int mthd= ((Integer) _variables.get(_variables.size() - 3)).intValue(); int obj= ((Integer) _variables.get(_variables.size() - 2)).intValue(); int args= ((Integer) _variables.get(_variables.size() - 1)).intValue(); MyVariables vars= new MyVariables(mthd, obj, args); _reflectMapping.put(mnode, vars); } //RS: } instructions.add(mnode); }
@Override public void visitLineNumber(int line, Label start) { if (!added) { added = true; super.visitVarInsn(Opcodes.ALOAD, 1); super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "handleCCToObject", "(Lorg/luaj/vm2/LuaValue;)Z"); start = new Label(); super.visitJumpInsn(Opcodes.IFEQ, start); Label l5 = new Label(); super.visitLabel(l5); super.visitVarInsn(Opcodes.ALOAD, 1); super.visitMethodInsn(Opcodes.INVOKESTATIC, "logisticspipes/proxy/cc/LPASMHookCC", "returnCCToObject", "(Lorg/luaj/vm2/LuaValue;)Ljava/lang/Object;"); super.visitInsn(Opcodes.ARETURN); super.visitLabel(start); } super.visitLineNumber(line, start); } };
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; }
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; }
injectedMethod.visitLabel(label); injectedMethod.visitLineNumber(9001, label); // Linenumber which shows up in the stacktrace
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; }
mv.visitCode(); Label l0 = new Label(); mv.visitLabel(l0); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ILOAD, 1); Label l2 = new Label(); mv.visitJumpInsn(GOTO, l2); mv.visitLabel(l1); mv.visitFrame(F_SAME1, 0, null, 1, new Object[]{entityPlayerClassName}); mv.visitInsn(ICONST_0); mv.visitLabel(l2); mv.visitFrame(F_FULL, 2, new Object[]{entityPlayerClassName, INTEGER}, 2, new Object[]{entityPlayerClassName, INTEGER}); mv.visitFieldInsn(PUTFIELD, entityPlayerClassName, "isShielding", "Z"); Label l3 = new Label(); mv.visitLabel(l3); mv.visitInsn(RETURN); Label l4 = new Label(); mv.visitLabel(l4); mv.visitLocalVariable("this", "L" + entityPlayerClassName + ";", null, l0, l4, 0); mv.visitLocalVariable("block", "Z", null, l0, l4, 1);