| /* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under |
| * the terms of the Common Public License v1.0 which accompanies this distribution, |
| * and is available at http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * $Id: IOpcodes.java,v 1.1.1.1.2.1 2004/07/10 03:34:52 vlad_r Exp $ |
| */ |
| package com.vladium.jcd.opcodes; |
| |
| // ---------------------------------------------------------------------------- |
| /** |
| * @author Vlad Roubtsov, (C) 2003 |
| */ |
| public |
| interface IOpcodes |
| { |
| // public: ................................................................ |
| |
| // opcode hex dec opbytes stackwords wideable |
| int _nop = 0x00; // 00 0 0 |
| int _aconst_null = 0x01; // 01 0 +1 |
| int _iconst_m1 = 0x02; // 02 0 +1 |
| int _iconst_0 = 0x03; // 03 0 +1 |
| int _iconst_1 = 0x04; // 04 0 +1 |
| int _iconst_2 = 0x05; // 05 0 +1 |
| int _iconst_3 = 0x06; // 06 0 +1 |
| int _iconst_4 = 0x07; // 07 0 +1 |
| int _iconst_5 = 0x08; // 08 0 +1 |
| int _lconst_0 = 0x09; // 09 0 +2 |
| int _lconst_1 = 0x0A; // 10 0 +2 |
| int _fconst_0 = 0x0B; // 11 0 +1 |
| int _fconst_1 = 0x0C; // 12 0 +1 |
| int _fconst_2 = 0x0D; // 13 0 +1 |
| int _dconst_0 = 0x0E; // 14 0 +2 |
| int _dconst_1 = 0x0F; // 15 0 +2 |
| int _bipush = 0x10; // 16 1 +1 |
| int _sipush = 0x11; // 17 2 +1 |
| int _ldc = 0x12; // 18 1 +1 |
| int _ldc_w = 0x13; // 19 2 +1 |
| int _ldc2_w = 0x14; // 20 2 +2 |
| int _iload = 0x15; // 21 1 +1 true |
| int _lload = 0x16; // 22 1 +2 true |
| int _fload = 0x17; // 23 1 +1 true |
| int _dload = 0x18; // 24 1 +2 true |
| int _aload = 0x19; // 25 1 +1 true |
| int _iload_0 = 0x1A; // 26 0 +1 |
| int _iload_1 = 0x1B; // 27 0 +1 |
| int _iload_2 = 0x1C; // 28 0 +1 |
| int _iload_3 = 0x1D; // 29 0 +1 |
| int _lload_0 = 0x1E; // 30 0 +2 |
| int _lload_1 = 0x1F; // 31 0 +2 |
| int _lload_2 = 0x20; // 32 0 +2 |
| int _lload_3 = 0x21; // 33 0 +2 |
| int _fload_0 = 0x22; // 34 0 +1 |
| int _fload_1 = 0x23; // 35 0 +1 |
| int _fload_2 = 0x24; // 36 0 +1 |
| int _fload_3 = 0x25; // 37 0 +1 |
| int _dload_0 = 0x26; // 38 0 +2 |
| int _dload_1 = 0x27; // 39 0 +2 |
| int _dload_2 = 0x28; // 40 0 +2 |
| int _dload_3 = 0x29; // 41 0 +2 |
| int _aload_0 = 0x2A; // 42 0 +1 |
| int _aload_1 = 0x2B; // 43 0 +1 |
| int _aload_2 = 0x2C; // 44 0 +1 |
| int _aload_3 = 0x2D; // 45 0 +1 |
| int _iaload = 0x2E; // 46 0 -1 |
| int _laload = 0x2F; // 47 0 0 |
| int _faload = 0x30; // 48 0 -1 |
| int _daload = 0x31; // 49 0 0 |
| int _aaload = 0x32; // 50 0 -1 |
| int _baload = 0x33; // 51 0 -1 |
| int _caload = 0x34; // 52 0 -1 |
| int _saload = 0x35; // 53 0 -1 |
| int _istore = 0x36; // 54 1 -1 true |
| int _lstore = 0x37; // 55 1 -2 true |
| int _fstore = 0x38; // 56 1 -1 true |
| int _dstore = 0x39; // 57 1 -2 true |
| int _astore = 0x3A; // 58 1 -1 true |
| int _istore_0 = 0x3B; // 59 0 -1 |
| int _istore_1 = 0x3C; // 60 0 -1 |
| int _istore_2 = 0x3D; // 61 0 -1 |
| int _istore_3 = 0x3E; // 62 0 -1 |
| int _lstore_0 = 0x3F; // 63 0 -2 |
| int _lstore_1 = 0x40; // 64 0 -2 |
| int _lstore_2 = 0x41; // 65 0 -2 |
| int _lstore_3 = 0x42; // 66 0 -2 |
| int _fstore_0 = 0x43; // 67 0 -1 |
| int _fstore_1 = 0x44; // 68 0 -1 |
| int _fstore_2 = 0x45; // 69 0 -1 |
| int _fstore_3 = 0x46; // 70 0 -1 |
| int _dstore_0 = 0x47; // 71 0 -2 |
| int _dstore_1 = 0x48; // 72 0 -2 |
| int _dstore_2 = 0x49; // 73 0 -2 |
| int _dstore_3 = 0x4A; // 74 0 -2 |
| int _astore_0 = 0x4B; // 75 0 -1 |
| int _astore_1 = 0x4C; // 76 0 -1 |
| int _astore_2 = 0x4D; // 77 0 -1 |
| int _astore_3 = 0x4E; // 78 0 -1 |
| int _iastore = 0x4F; // 79 0 -3 |
| int _lastore = 0x50; // 80 0 -4 |
| int _fastore = 0x51; // 81 0 -3 |
| int _dastore = 0x52; // 82 0 -4 |
| int _aastore = 0x53; // 83 0 -3 |
| int _bastore = 0x54; // 84 0 -3 |
| int _castore = 0x55; // 85 0 -3 |
| int _sastore = 0x56; // 86 0 -3 |
| int _pop = 0x57; // 87 0 -1 |
| int _pop2 = 0x58; // 88 0 -2 |
| int _dup = 0x59; // 89 0 +1 |
| int _dup_x1 = 0x5A; // 90 0 +1 |
| int _dup_x2 = 0x5B; // 91 0 +1 |
| int _dup2 = 0x5C; // 92 0 +2 |
| int _dup2_x1 = 0x5D; // 93 0 +2 |
| int _dup2_x2 = 0x5E; // 94 0 +2 |
| int _swap = 0x5F; // 95 0 0 |
| int _iadd = 0x60; // 96 0 -1 |
| int _ladd = 0x61; // 97 0 -2 |
| int _fadd = 0x62; // 98 0 -1 |
| int _dadd = 0x63; // 99 0 -2 |
| int _isub = 0x64; // 100 0 -1 |
| int _lsub = 0x65; // 101 0 -2 |
| int _fsub = 0x66; // 102 0 -1 |
| int _dsub = 0x67; // 103 0 -2 |
| int _imul = 0x68; // 104 0 -1 |
| int _lmul = 0x69; // 105 0 -2 |
| int _fmul = 0x6A; // 106 0 -1 |
| int _dmul = 0x6B; // 107 0 -2 |
| int _idiv = 0x6C; // 108 0 -1 |
| int _ldiv = 0x6D; // 109 0 -2 |
| int _fdiv = 0x6E; // 110 0 -1 |
| int _ddiv = 0x6F; // 111 0 -2 |
| int _irem = 0x70; // 112 0 -1 |
| int _lrem = 0x71; // 113 0 -2 |
| int _frem = 0x72; // 114 0 -1 |
| int _drem = 0x73; // 115 0 -2 |
| int _ineg = 0x74; // 116 0 0 |
| int _lneg = 0x75; // 117 0 0 |
| int _fneg = 0x76; // 118 0 0 |
| int _dneg = 0x77; // 119 0 0 |
| int _ishl = 0x78; // 120 0 -1 |
| int _lshl = 0x79; // 121 0 -1 |
| int _ishr = 0x7A; // 122 0 -1 |
| int _lshr = 0x7B; // 123 0 -1 |
| int _iushr = 0x7C; // 124 0 -1 |
| int _lushr = 0x7D; // 125 0 -2 |
| int _iand = 0x7E; // 126 0 -1 |
| int _land = 0x7F; // 127 0 -2 |
| int _ior = 0x80; // 128 0 -1 |
| int _lor = 0x81; // 129 0 -2 |
| int _ixor = 0x82; // 130 0 -1 |
| int _lxor = 0x83; // 131 0 -2 |
| int _iinc = 0x84; // 132 2 0 true [widening is tricky here] |
| int _i2l = 0x85; // 133 0 +1 |
| int _i2f = 0x86; // 134 0 0 |
| int _i2d = 0x87; // 135 0 +1 |
| int _l2i = 0x88; // 136 0 -1 |
| int _l2f = 0x89; // 137 0 -1 |
| int _l2d = 0x8A; // 138 0 0 |
| int _f2i = 0x8B; // 139 0 0 |
| int _f2l = 0x8C; // 140 0 +1 |
| int _f2d = 0x8D; // 141 0 +1 |
| int _d2i = 0x8E; // 142 0 -1 |
| int _d2l = 0x8F; // 143 0 0 |
| int _d2f = 0x90; // 144 0 -1 |
| int _i2b = 0x91; // 145 0 0 |
| int _i2c = 0x92; // 146 0 0 |
| int _i2s = 0x93; // 147 0 0 |
| int _lcmp = 0x94; // 148 0 -3 |
| int _fcmpl = 0x95; // 149 0 -1 |
| int _fcmpg = 0x96; // 150 0 -1 |
| int _dcmpl = 0x97; // 151 0 -3 |
| int _dcmpg = 0x98; // 152 0 -3 |
| int _ifeq = 0x99; // 153 2 -1 |
| int _ifne = 0x9A; // 154 2 -1 |
| int _iflt = 0x9B; // 155 2 -1 |
| int _ifge = 0x9C; // 156 2 -1 |
| int _ifgt = 0x9D; // 157 2 -1 |
| int _ifle = 0x9E; // 158 2 -1 |
| int _if_icmpeq = 0x9F; // 159 2 -2 |
| int _if_icmpne = 0xA0; // 160 2 -2 |
| int _if_icmplt = 0xA1; // 161 2 -2 |
| int _if_icmpge = 0xA2; // 162 2 -2 |
| int _if_icmpgt = 0xA3; // 163 2 -2 |
| int _if_icmple = 0xA4; // 164 2 -2 |
| int _if_acmpeq = 0xA5; // 165 2 -2 |
| int _if_acmpne = 0xA6; // 166 2 -2 |
| int _goto = 0xA7; // 167 2 0 |
| int _jsr = 0xA8; // 168 2 +1 |
| int _ret = 0xA9; // 169 1 0 true |
| int _tableswitch = 0xAA; // 170 * -1 [there are padding bytes and variable number of operands] |
| int _lookupswitch = 0xAB; // 171 * -1 [there are padding bytes and variable number of operands] |
| int _ireturn = 0xAC; // 172 0 -1* [current method returns] |
| int _lreturn = 0xAD; // 173 0 -2* [current method returns] |
| int _freturn = 0xAE; // 174 0 -1* [current method returns] |
| int _dreturn = 0xAF; // 175 0 -2* [current method returns] |
| int _areturn = 0xB0; // 176 0 -1* [current method returns] |
| int _return = 0xB1; // 177 0 0* [current method returns] |
| int _getstatic = 0xB2; // 178 2 +1 or +2* [after stack depends on the field type] |
| int _putstatic = 0xB3; // 179 2 -1 or -2* [after stack depends on the field type] |
| int _getfield = 0xB4; // 180 2 0 or +1* [after stack depends on the field type] |
| int _putfield = 0xB5; // 181 2 -2 or -3* [after stack depends on the field type] |
| int _invokevirtual = 0xB6; // 182 2 * * [stack words pushed for the call are emptied] |
| int _invokespecial = 0xB7; // 183 2 * * [stack words pushed for the call are emptied] |
| int _invokestatic = 0xB8; // 184 2 * * [stack words pushed for the call are emptied] |
| int _invokeinterface = 0xB9; // 185 4 * * [last operand is 0; stack words pushed for the call are emptied] |
| int _unused = 0xBA; // 186 * * * [for historical reasons, opcode value 186 is not used] |
| int _new = 0xBB; // 187 2 +1 |
| int _newarray = 0xBC; // 188 1 0 |
| int _anewarray = 0xBD; // 189 2 0 |
| int _arraylength = 0xBE; // 190 0 0 |
| int _athrow = 0xBF; // 191 0 0* * [stack frame is emptied except for 1 obj ref] |
| int _checkcast = 0xC0; // 192 2 0 |
| int _instanceof = 0xC1; // 193 2 0 |
| int _monitorenter = 0xC2; // 194 0 -1 |
| int _monitorexit = 0xC3; // 195 0 -1 |
| int _wide = 0xC4; // 196 * * [depends on instruction being modified] |
| int _multianewarray = 0xC5; // 197 3 * [variable number of stack operands] |
| int _ifnull = 0xC6; // 198 2 -1 |
| int _ifnonnull = 0xC7; // 199 2 -1 |
| int _goto_w = 0xC8; // 200 4 0 |
| int _jsr_w = 0xC9; // 201 4 +1 |
| // reserved opcodes: |
| int _breakpoint = 0xCA; // 202 |
| int _impdep1 = 0xFE; // 254 |
| int _impdep2 = 0xFF; // 255 |
| |
| |
| String [] MNEMONICS = |
| { |
| "nop", // 0x00 00 |
| "aconst_null", // 0x01 01 |
| "iconst_m1", // 0x02 02 |
| "iconst_0", // 0x03 03 |
| "iconst_1", // 0x04 04 |
| "iconst_2", // 0x05 05 |
| "iconst_3", // 0x06 06 |
| "iconst_4", // 0x07 07 |
| "iconst_5", // 0x08 08 |
| "lconst_0", // 0x09 09 |
| "lconst_1", // 0x0A 10 |
| "fconst_0", // 0x0B 11 |
| "fconst_1", // 0x0C 12 |
| "fconst_2", // 0x0D 13 |
| "dconst_0", // 0x0E 14 |
| "dconst_1", // 0x0F 15 |
| "bipush", // 0x10 16 |
| "sipush", // 0x11 17 |
| "ldc", // 0x12 18 |
| "ldc_w", // 0x13 19 |
| "ldc2_w", // 0x14 20 |
| "iload", // 0x15 21 |
| "lload", // 0x16 22 |
| "fload", // 0x17 23 |
| "dload", // 0x18 24 |
| "aload", // 0x19 25 |
| "iload_0", // 0x1A 26 |
| "iload_1", // 0x1B 27 |
| "iload_2", // 0x1C 28 |
| "iload_3", // 0x1D 29 |
| "lload_0", // 0x1E 30 |
| "lload_1", // 0x1F 31 |
| "lload_2", // 0x20 32 |
| "lload_3", // 0x21 33 |
| "fload_0", // 0x22 34 |
| "fload_1", // 0x23 35 |
| "fload_2", // 0x24 36 |
| "fload_3", // 0x25 37 |
| "dload_0", // 0x26 38 |
| "dload_1", // 0x27 39 |
| "dload_2", // 0x28 40 |
| "dload_3", // 0x29 41 |
| "aload_0", // 0x2A 42 |
| "aload_1", // 0x2B 43 |
| "aload_2", // 0x2C 44 |
| "aload_3", // 0x2D 45 |
| "iaload", // 0x2E 46 |
| "laload", // 0x2F 47 |
| "faload", // 0x30 48 |
| "daload", // 0x31 49 |
| "aaload", // 0x32 50 |
| "baload", // 0x33 51 |
| "caload", // 0x34 52 |
| "saload", // 0x35 53 |
| "istore", // 0x36 54 |
| "lstore", // 0x37 55 |
| "fstore", // 0x38 56 |
| "dstore", // 0x39 57 |
| "astore", // 0x3A 58 |
| "istore_0", // 0x3B 59 |
| "istore_1", // 0x3C 60 |
| "istore_2", // 0x3D 61 |
| "istore_3", // 0x3E 62 |
| "lstore_0", // 0x3F 63 |
| "lstore_1", // 0x40 64 |
| "lstore_2", // 0x41 65 |
| "lstore_3", // 0x42 66 |
| "fstore_0", // 0x43 67 |
| "fstore_1", // 0x44 68 |
| "fstore_2", // 0x45 69 |
| "fstore_3", // 0x46 70 |
| "dstore_0", // 0x47 71 |
| "dstore_1", // 0x48 72 |
| "dstore_2", // 0x49 73 |
| "dstore_3", // 0x4A 74 |
| "astore_0", // 0x4B 75 |
| "astore_1", // 0x4C 76 |
| "astore_2", // 0x4D 77 |
| "astore_3", // 0x4E 78 |
| "iastore", // 0x4F 79 |
| "lastore", // 0x50 80 |
| "fastore", // 0x51 81 |
| "dastore", // 0x52 82 |
| "aastore", // 0x53 83 |
| "bastore", // 0x54 84 |
| "castore", // 0x55 85 |
| "sastore", // 0x56 86 |
| "pop", // 0x57 87 |
| "pop2", // 0x58 88 |
| "dup", // 0x59 089 |
| "dup_x1", // 0x5A 090 |
| "dup_x2", // 0x5B 091 |
| "dup2", // 0x5C 092 |
| "dup2_x1", // 0x5D 093 |
| "dup2_x2", // 0x5E 094 |
| "swap", // 0x5F 095 |
| "iadd", // 0x60 096 |
| "ladd", // 0x61 097 |
| "fadd", // 0x62 098 |
| "dadd", // 0x63 099 |
| "isub", // 0x64 100 |
| "lsub", // 0x65 101 |
| "fsub", // 0x66 102 |
| "dsub", // 0x67 103 |
| "imul", // 0x68 104 |
| "lmul", // 0x69 105 |
| "fmul", // 0x6A 106 |
| "dmul", // 0x6B 107 |
| "idiv", // 0x6C 108 |
| "ldiv", // 0x6D 109 |
| "fdiv", // 0x6E 110 |
| "ddiv", // 0x6F 111 |
| "irem", // 0x70 112 |
| "lrem", // 0x71 113 |
| "frem", // 0x72 114 |
| "drem", // 0x73 115 |
| "ineg", // 0x74 116 |
| "lneg", // 0x75 117 |
| "fneg", // 0x76 118 |
| "dneg", // 0x77 119 |
| "ishl", // 0x78 120 |
| "lshl", // 0x79 121 |
| "ishr", // 0x7A 122 |
| "lshr", // 0x7B 123 |
| "iushr", // 0x7C 124 |
| "lushr", // 0x7D 125 |
| "iand", // 0x7E 126 |
| "land", // 0x7F 127 |
| "ior", // 0x80 128 |
| "lor", // 0x81 129 |
| "ixor", // 0x82 130 |
| "lxor", // 0x83 131 |
| "iinc", // 0x84 132 |
| "i2l", // 0x85 133 |
| "i2f", // 0x86 134 |
| "i2d", // 0x87 135 |
| "l2i", // 0x88 136 |
| "l2f", // 0x89 137 |
| "l2d", // 0x8A 138 |
| "f2i", // 0x8B 139 |
| "f2l", // 0x8C 140 |
| "f2d", // 0x8D 141 |
| "d2i", // 0x8E 142 |
| "d2l", // 0x8F 143 |
| "d2f", // 0x90 144 |
| "i2b", // 0x91 145 |
| "i2c", // 0x92 146 |
| "i2s", // 0x93 147 |
| "lcmp", // 0x94 148 |
| "fcmpl", // 0x95 149 |
| "fcmpg", // 0x96 150 |
| "dcmpl", // 0x97 151 |
| "dcmpg", // 0x98 152 |
| "ifeq", // 0x99 153 |
| "ifne", // 0x9A 154 |
| "iflt", // 0x9B 155 |
| "ifge", // 0x9C 156 |
| "ifgt", // 0x9D 157 |
| "ifle", // 0x9E 158 |
| "if_icmpeq", // 0x9F 159 |
| "if_icmpne", // 0xA0 160 |
| "if_icmplt", // 0xA1 161 |
| "if_icmpge", // 0xA2 162 |
| "if_icmpgt", // 0xA3 163 |
| "if_icmple", // 0xA4 164 |
| "if_acmpeq", // 0xA5 165 |
| "if_acmpne", // 0xA6 166 |
| "goto", // 0xA7 167 |
| "jsr", // 0xA8 168 |
| "ret", // 0xA9 169 |
| "tableswitch", // 0xAA 170 |
| "lookupswitch", // 0xAB 171 |
| "ireturn", // 0xAC 172 |
| "lreturn", // 0xAD 173 |
| "freturn", // 0xAE 174 |
| "dreturn", // 0xAF 175 |
| "areturn", // 0xB0 176 |
| "return", // 0xB1 177 |
| "getstatic", // 0xB2 178 |
| "putstatic", // 0xB3 179 |
| "getfield", // 0xB4 180 |
| "putfield", // 0xB5 181 |
| "invokevirtual", // 0xB6 182 |
| "invokespecial", // 0xB7 183 |
| "invokestatic", // 0xB8 184 |
| "invokeinterface", // 0xB9 185 |
| "unused", // 0xBA 186 |
| "new", // 0xBB 187 |
| "newarray", // 0xBC 188 |
| "anewarray", // 0xBD 189 |
| "arraylength", // 0xBE 190 |
| "athrow", // 0xBF 191 |
| "checkcast", // 0xC0 192 |
| "instanceof", // 0xC1 193 |
| "monitorenter", // 0xC2 194 |
| "monitorexit", // 0xC3 195 |
| "[wide]", // 0xC4 196 |
| "multianewarray", // 0xC5 197 |
| "ifnull", // 0xC6 198 |
| "ifnonnull", // 0xC7 199 |
| "goto_w", // 0xC8 200 |
| "jsr_w" // 0xC9 201 |
| }; |
| |
| |
| boolean [] CONDITIONAL_BRANCHES = clinit._CONDITIONAL_BRANCHES; |
| boolean [] COMPOUND_CONDITIONAL_BRANCHES = clinit._COMPOUND_CONDITIONAL_BRANCHES; |
| boolean [] UNCONDITIONAL_BRANCHES = clinit._UNCONDITIONAL_BRANCHES; |
| boolean [] BRANCHES = clinit._BRANCHES; |
| |
| int [] NARROW_SIZE = clinit._NARROW_SIZE; // including the opcode itself |
| int [] WIDE_SIZE = clinit._WIDE_SIZE; // including the opcode itself |
| |
| |
| static final class clinit |
| { |
| static final boolean [] _CONDITIONAL_BRANCHES; |
| static final boolean [] _COMPOUND_CONDITIONAL_BRANCHES; |
| static final boolean [] _UNCONDITIONAL_BRANCHES; |
| static final boolean [] _BRANCHES; |
| static final int [] _NARROW_SIZE; |
| static final int [] _WIDE_SIZE; |
| |
| static |
| { |
| final int opcodeCount = MNEMONICS.length; |
| |
| _CONDITIONAL_BRANCHES = new boolean [opcodeCount]; |
| |
| _CONDITIONAL_BRANCHES [_ifeq] = true; |
| _CONDITIONAL_BRANCHES [_iflt] = true; |
| _CONDITIONAL_BRANCHES [_ifle] = true; |
| _CONDITIONAL_BRANCHES [_ifne] = true; |
| _CONDITIONAL_BRANCHES [_ifgt] = true; |
| _CONDITIONAL_BRANCHES [_ifge] = true; |
| _CONDITIONAL_BRANCHES [_ifnull] = true; |
| _CONDITIONAL_BRANCHES [_ifnonnull] = true; |
| _CONDITIONAL_BRANCHES [_if_icmpeq] = true; |
| _CONDITIONAL_BRANCHES [_if_icmpne] = true; |
| _CONDITIONAL_BRANCHES [_if_icmplt] = true; |
| _CONDITIONAL_BRANCHES [_if_icmpgt] = true; |
| _CONDITIONAL_BRANCHES [_if_icmple] = true; |
| _CONDITIONAL_BRANCHES [_if_icmpge] = true; |
| _CONDITIONAL_BRANCHES [_if_acmpeq] = true; |
| _CONDITIONAL_BRANCHES [_if_acmpne] = true; |
| |
| |
| _COMPOUND_CONDITIONAL_BRANCHES = new boolean [opcodeCount]; |
| |
| _COMPOUND_CONDITIONAL_BRANCHES [_tableswitch] = true; |
| _COMPOUND_CONDITIONAL_BRANCHES [_lookupswitch] = true; |
| |
| |
| _UNCONDITIONAL_BRANCHES = new boolean [opcodeCount]; |
| |
| _UNCONDITIONAL_BRANCHES [_goto] = true; |
| _UNCONDITIONAL_BRANCHES [_goto_w] = true; |
| _UNCONDITIONAL_BRANCHES [_jsr] = true; |
| _UNCONDITIONAL_BRANCHES [_jsr_w] = true; |
| _UNCONDITIONAL_BRANCHES [_ret] = true; |
| |
| _UNCONDITIONAL_BRANCHES [_ireturn] = true; |
| _UNCONDITIONAL_BRANCHES [_lreturn] = true; |
| _UNCONDITIONAL_BRANCHES [_freturn] = true; |
| _UNCONDITIONAL_BRANCHES [_dreturn] = true; |
| _UNCONDITIONAL_BRANCHES [_areturn] = true; |
| _UNCONDITIONAL_BRANCHES [_return] = true; |
| |
| _UNCONDITIONAL_BRANCHES [_athrow] = true; |
| |
| |
| _BRANCHES = new boolean [opcodeCount]; |
| |
| for (int o = 0; o < opcodeCount; ++ o) |
| if (_CONDITIONAL_BRANCHES [o]) _BRANCHES [o] = true; |
| |
| for (int o = 0; o < opcodeCount; ++ o) |
| if (_COMPOUND_CONDITIONAL_BRANCHES [o]) _BRANCHES [o] = true; |
| |
| for (int o = 0; o < opcodeCount; ++ o) |
| if (_UNCONDITIONAL_BRANCHES [o]) _BRANCHES [o] = true; |
| |
| |
| _NARROW_SIZE = new int [opcodeCount]; |
| |
| for (int o = 0; o < opcodeCount; ++ o) _NARROW_SIZE [o] = 1; |
| |
| _NARROW_SIZE [_bipush] = 2; |
| _NARROW_SIZE [_sipush] = 3; |
| |
| _NARROW_SIZE [_ldc] = 2; |
| _NARROW_SIZE [_ldc_w] = 3; |
| _NARROW_SIZE [_ldc2_w] = 3; |
| |
| _NARROW_SIZE [_iload] = 2; |
| _NARROW_SIZE [_lload] = 2; |
| _NARROW_SIZE [_fload] = 2; |
| _NARROW_SIZE [_dload] = 2; |
| _NARROW_SIZE [_aload] = 2; |
| _NARROW_SIZE [_istore] = 2; |
| _NARROW_SIZE [_lstore] = 2; |
| _NARROW_SIZE [_fstore] = 2; |
| _NARROW_SIZE [_dstore] = 2; |
| _NARROW_SIZE [_astore] = 2; |
| |
| _NARROW_SIZE [_iinc] = 3; |
| |
| _NARROW_SIZE [_ifeq] = 3; |
| _NARROW_SIZE [_ifne] = 3; |
| _NARROW_SIZE [_iflt] = 3; |
| _NARROW_SIZE [_ifge] = 3; |
| _NARROW_SIZE [_ifgt] = 3; |
| _NARROW_SIZE [_ifle] = 3; |
| _NARROW_SIZE [_if_icmpeq] = 3; |
| _NARROW_SIZE [_if_icmpne] = 3; |
| _NARROW_SIZE [_if_icmplt] = 3; |
| _NARROW_SIZE [_if_icmpge] = 3; |
| _NARROW_SIZE [_if_icmpgt] = 3; |
| _NARROW_SIZE [_if_icmple] = 3; |
| _NARROW_SIZE [_if_acmpeq] = 3; |
| _NARROW_SIZE [_if_acmpne] = 3; |
| _NARROW_SIZE [_goto] = 3; |
| _NARROW_SIZE [_jsr] = 3; |
| _NARROW_SIZE [_ifnull] = 3; |
| _NARROW_SIZE [_ifnonnull] = 3; |
| |
| _NARROW_SIZE [_ret] = 2; |
| |
| _NARROW_SIZE [_lookupswitch] = -1; // special case #2 |
| _NARROW_SIZE [_tableswitch] = 0; // special case #1 |
| |
| _NARROW_SIZE [_getstatic] = 3; |
| _NARROW_SIZE [_putstatic] = 3; |
| _NARROW_SIZE [_getfield] = 3; |
| _NARROW_SIZE [_putfield] = 3; |
| |
| _NARROW_SIZE [_invokevirtual] = 3; |
| _NARROW_SIZE [_invokespecial] = 3; |
| _NARROW_SIZE [_invokestatic] = 3; |
| |
| _NARROW_SIZE [_invokeinterface] = 5; |
| |
| _NARROW_SIZE [_new] = 3; |
| _NARROW_SIZE [_checkcast] = 3; |
| _NARROW_SIZE [_instanceof] = 3; |
| |
| _NARROW_SIZE [_newarray] = 2; |
| _NARROW_SIZE [_anewarray] = 3; |
| _NARROW_SIZE [_multianewarray] = 4; |
| |
| _NARROW_SIZE [_goto_w] = 5; |
| _NARROW_SIZE [_jsr_w] = 5; |
| |
| |
| _WIDE_SIZE = (int []) _NARROW_SIZE.clone (); |
| |
| _WIDE_SIZE [_iload] = 3; |
| _WIDE_SIZE [_lload] = 3; |
| _WIDE_SIZE [_fload] = 3; |
| _WIDE_SIZE [_dload] = 3; |
| _WIDE_SIZE [_aload] = 3; |
| _WIDE_SIZE [_istore] = 3; |
| _WIDE_SIZE [_lstore] = 3; |
| _WIDE_SIZE [_fstore] = 3; |
| _WIDE_SIZE [_dstore] = 3; |
| _WIDE_SIZE [_astore] = 3; |
| |
| _WIDE_SIZE [_iinc] = 5; |
| |
| _WIDE_SIZE [_ret] = 3; |
| } |
| |
| } // end of nested class |
| |
| } // end of interface |
| // ---------------------------------------------------------------------------- |
| |