1 30 31 package oracle.toplink.libraries.asm.tree; 32 33 import oracle.toplink.libraries.asm.CodeAdapter; 34 import oracle.toplink.libraries.asm.Label; 35 import oracle.toplink.libraries.asm.Attribute; 36 37 45 46 public class TreeCodeAdapter extends CodeAdapter { 47 48 51 52 public MethodNode methodNode; 53 54 60 61 public TreeCodeAdapter (final MethodNode methodNode) { 62 super(null); 63 this.methodNode = methodNode; 64 } 65 66 public void visitInsn (final int opcode) { 67 AbstractInsnNode n = new InsnNode(opcode); 68 methodNode.instructions.add(n); 69 } 70 71 public void visitIntInsn (final int opcode, final int operand) { 72 AbstractInsnNode n = new IntInsnNode(opcode, operand); 73 methodNode.instructions.add(n); 74 } 75 76 public void visitVarInsn (final int opcode, final int var) { 77 AbstractInsnNode n = new VarInsnNode(opcode, var); 78 methodNode.instructions.add(n); 79 } 80 81 public void visitTypeInsn (final int opcode, final String desc) { 82 AbstractInsnNode n = new TypeInsnNode(opcode, desc); 83 methodNode.instructions.add(n); 84 } 85 86 public void visitFieldInsn ( 87 final int opcode, 88 final String owner, 89 final String name, 90 final String desc) 91 { 92 AbstractInsnNode n = new FieldInsnNode(opcode, owner, name, desc); 93 methodNode.instructions.add(n); 94 } 95 96 public void visitMethodInsn ( 97 final int opcode, 98 final String owner, 99 final String name, 100 final String desc) 101 { 102 AbstractInsnNode n = new MethodInsnNode(opcode, owner, name, desc); 103 methodNode.instructions.add(n); 104 } 105 106 public void visitJumpInsn (final int opcode, final Label label) { 107 AbstractInsnNode n = new JumpInsnNode(opcode, label); 108 methodNode.instructions.add(n); 109 } 110 111 public void visitLabel (final Label label) { 112 methodNode.instructions.add(label); 113 } 114 115 public void visitLdcInsn (final Object cst) { 116 AbstractInsnNode n = new LdcInsnNode(cst); 117 methodNode.instructions.add(n); 118 } 119 120 public void visitIincInsn (final int var, final int increment) { 121 AbstractInsnNode n = new IincInsnNode(var, increment); 122 methodNode.instructions.add(n); 123 } 124 125 public void visitTableSwitchInsn ( 126 final int min, 127 final int max, 128 final Label dflt, 129 final Label labels[]) 130 { 131 AbstractInsnNode n = new TableSwitchInsnNode(min, max, dflt, labels); 132 methodNode.instructions.add(n); 133 } 134 135 public void visitLookupSwitchInsn ( 136 final Label dflt, 137 final int keys[], 138 final Label labels[]) 139 { 140 AbstractInsnNode n = new LookupSwitchInsnNode(dflt, keys, labels); 141 methodNode.instructions.add(n); 142 } 143 144 public void visitMultiANewArrayInsn (final String desc, final int dims) { 145 AbstractInsnNode n = new MultiANewArrayInsnNode(desc, dims); 146 methodNode.instructions.add(n); 147 } 148 149 public void visitTryCatchBlock ( 150 final Label start, 151 final Label end, 152 final Label handler, 153 final String type) 154 { 155 TryCatchBlockNode n = new TryCatchBlockNode(start, end, handler, type); 156 methodNode.tryCatchBlocks.add(n); 157 } 158 159 public void visitMaxs (final int maxStack, final int maxLocals) { 160 methodNode.maxStack = maxStack; 161 methodNode.maxLocals = maxLocals; 162 } 163 164 public void visitLocalVariable ( 165 final String name, 166 final String desc, 167 final Label start, 168 final Label end, 169 final int index) 170 { 171 LocalVariableNode n = new LocalVariableNode(name, desc, start, end, index); 172 methodNode.localVariables.add(n); 173 } 174 175 public void visitLineNumber (final int line, final Label start) { 176 LineNumberNode n = new LineNumberNode(line, start); 177 methodNode.lineNumbers.add(n); 178 } 179 180 public void visitAttribute (final Attribute attr) { 181 attr.next = methodNode.codeAttrs; 182 methodNode.codeAttrs = attr; 183 } 184 } 185 | Popular Tags |