1 23 24 25 package com.sun.jdo.api.persistence.enhancer.classfile; 26 27 import java.io.PrintStream ; 28 29 32 33 public class InsnSingle extends Insn { 34 35 public int nStackArgs() { 36 return VMOp.ops[opcode()].nStackArgs(); 37 } 38 39 public int nStackResults() { 40 return VMOp.ops[opcode()].nStackResults(); 41 } 42 43 46 public String argTypes() { 47 return VMOp.ops[opcode()].argTypes(); 48 } 49 50 53 public String resultTypes() { 54 return VMOp.ops[opcode()].resultTypes(); 55 } 56 57 public boolean branches() { 58 switch (opcode()) { 59 case opc_ireturn: 60 case opc_lreturn: 61 case opc_freturn: 62 case opc_dreturn: 63 case opc_areturn: 64 case opc_return: 65 case opc_athrow: 66 return true; 67 default: 68 return false; 69 } 70 } 71 72 73 74 75 void print (PrintStream out, int indent) { 76 ClassPrint.spaces(out, indent); 77 out.println(offset() + " " + opName(opcode())); } 79 80 int store(byte[] buf, int index) { 81 buf[index] = (byte) opcode(); 82 return index+1; 83 } 84 85 int size() { 86 return 1; 87 } 88 89 91 92 InsnSingle(int theOpcode) { 93 this(theOpcode, NO_OFFSET); 94 } 95 96 97 98 InsnSingle(int theOpcode, int theOffset) { 99 super(theOpcode, theOffset); 100 101 switch (theOpcode) { 102 case opc_nop: 103 case opc_aconst_null: 104 case opc_iconst_m1: 105 case opc_iconst_0: 106 case opc_iconst_1: 107 case opc_iconst_2: 108 case opc_iconst_3: 109 case opc_iconst_4: 110 case opc_iconst_5: 111 case opc_lconst_0: 112 case opc_lconst_1: 113 case opc_fconst_0: 114 case opc_fconst_1: 115 case opc_fconst_2: 116 case opc_dconst_0: 117 case opc_dconst_1: 118 case opc_iload_0: 119 case opc_iload_1: 120 case opc_iload_2: 121 case opc_iload_3: 122 case opc_lload_0: 123 case opc_lload_1: 124 case opc_lload_2: 125 case opc_lload_3: 126 case opc_fload_0: 127 case opc_fload_1: 128 case opc_fload_2: 129 case opc_fload_3: 130 case opc_dload_0: 131 case opc_dload_1: 132 case opc_dload_2: 133 case opc_dload_3: 134 case opc_aload_0: 135 case opc_aload_1: 136 case opc_aload_2: 137 case opc_aload_3: 138 case opc_iaload: 139 case opc_laload: 140 case opc_faload: 141 case opc_daload: 142 case opc_aaload: 143 case opc_baload: 144 case opc_caload: 145 case opc_saload: 146 case opc_istore_0: 147 case opc_istore_1: 148 case opc_istore_2: 149 case opc_istore_3: 150 case opc_lstore_0: 151 case opc_lstore_1: 152 case opc_lstore_2: 153 case opc_lstore_3: 154 case opc_fstore_0: 155 case opc_fstore_1: 156 case opc_fstore_2: 157 case opc_fstore_3: 158 case opc_dstore_0: 159 case opc_dstore_1: 160 case opc_dstore_2: 161 case opc_dstore_3: 162 case opc_astore_0: 163 case opc_astore_1: 164 case opc_astore_2: 165 case opc_astore_3: 166 case opc_iastore: 167 case opc_lastore: 168 case opc_fastore: 169 case opc_dastore: 170 case opc_aastore: 171 case opc_bastore: 172 case opc_castore: 173 case opc_sastore: 174 case opc_pop: 175 case opc_pop2: 176 case opc_dup: 177 case opc_dup_x1: 178 case opc_dup_x2: 179 case opc_dup2: 180 case opc_dup2_x1: 181 case opc_dup2_x2: 182 case opc_swap: 183 case opc_iadd: 184 case opc_ladd: 185 case opc_fadd: 186 case opc_dadd: 187 case opc_isub: 188 case opc_lsub: 189 case opc_fsub: 190 case opc_dsub: 191 case opc_imul: 192 case opc_lmul: 193 case opc_fmul: 194 case opc_dmul: 195 case opc_idiv: 196 case opc_ldiv: 197 case opc_fdiv: 198 case opc_ddiv: 199 case opc_irem: 200 case opc_lrem: 201 case opc_frem: 202 case opc_drem: 203 case opc_ineg: 204 case opc_lneg: 205 case opc_fneg: 206 case opc_dneg: 207 case opc_ishl: 208 case opc_lshl: 209 case opc_ishr: 210 case opc_lshr: 211 case opc_iushr: 212 case opc_lushr: 213 case opc_iand: 214 case opc_land: 215 case opc_ior: 216 case opc_lor: 217 case opc_ixor: 218 case opc_lxor: 219 case opc_i2l: 220 case opc_i2f: 221 case opc_i2d: 222 case opc_l2i: 223 case opc_l2f: 224 case opc_l2d: 225 case opc_f2i: 226 case opc_f2l: 227 case opc_f2d: 228 case opc_d2i: 229 case opc_d2l: 230 case opc_d2f: 231 case opc_i2b: 232 case opc_i2c: 233 case opc_i2s: 234 case opc_lcmp: 235 case opc_fcmpl: 236 case opc_fcmpg: 237 case opc_dcmpl: 238 case opc_dcmpg: 239 case opc_ireturn: 240 case opc_lreturn: 241 case opc_freturn: 242 case opc_dreturn: 243 case opc_areturn: 244 case opc_return: 245 case opc_xxxunusedxxx: 246 case opc_arraylength: 247 case opc_athrow: 248 case opc_monitorenter: 249 case opc_monitorexit: 250 break; 251 252 default: 253 throw new InsnError ("attempt to create an " + opName(opcode()) + " without specifying the required operands"); } 256 } 257 } 258 | Popular Tags |