/* 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 // ----------------------------------------------------------------------------