| /* |
| * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| package com.sun.tools.javac.jvm; |
| |
| |
| /** Bytecode instruction codes, as well as typecodes used as |
| * instruction modifiers. |
| * |
| * <p><b>This is NOT part of any supported API. |
| * If you write code that depends on this, you do so at your own risk. |
| * This code and its internal interfaces are subject to change or |
| * deletion without notice.</b> |
| */ |
| public interface ByteCodes { |
| |
| /** Byte code instruction codes. |
| */ |
| int illegal = -1, |
| nop = 0, |
| aconst_null = 1, |
| iconst_m1 = 2, |
| iconst_0 = 3, |
| iconst_1 = 4, |
| iconst_2 = 5, |
| iconst_3 = 6, |
| iconst_4 = 7, |
| iconst_5 = 8, |
| lconst_0 = 9, |
| lconst_1 = 10, |
| fconst_0 = 11, |
| fconst_1 = 12, |
| fconst_2 = 13, |
| dconst_0 = 14, |
| dconst_1 = 15, |
| bipush = 16, |
| sipush = 17, |
| ldc1 = 18, |
| ldc2 = 19, |
| ldc2w = 20, |
| iload = 21, |
| lload = 22, |
| fload = 23, |
| dload = 24, |
| aload = 25, |
| iload_0 = 26, |
| iload_1 = 27, |
| iload_2 = 28, |
| iload_3 = 29, |
| lload_0 = 30, |
| lload_1 = 31, |
| lload_2 = 32, |
| lload_3 = 33, |
| fload_0 = 34, |
| fload_1 = 35, |
| fload_2 = 36, |
| fload_3 = 37, |
| dload_0 = 38, |
| dload_1 = 39, |
| dload_2 = 40, |
| dload_3 = 41, |
| aload_0 = 42, |
| aload_1 = 43, |
| aload_2 = 44, |
| aload_3 = 45, |
| iaload = 46, |
| laload = 47, |
| faload = 48, |
| daload = 49, |
| aaload = 50, |
| baload = 51, |
| caload = 52, |
| saload = 53, |
| istore = 54, |
| lstore = 55, |
| fstore = 56, |
| dstore = 57, |
| astore = 58, |
| istore_0 = 59, |
| istore_1 = 60, |
| istore_2 = 61, |
| istore_3 = 62, |
| lstore_0 = 63, |
| lstore_1 = 64, |
| lstore_2 = 65, |
| lstore_3 = 66, |
| fstore_0 = 67, |
| fstore_1 = 68, |
| fstore_2 = 69, |
| fstore_3 = 70, |
| dstore_0 = 71, |
| dstore_1 = 72, |
| dstore_2 = 73, |
| dstore_3 = 74, |
| astore_0 = 75, |
| astore_1 = 76, |
| astore_2 = 77, |
| astore_3 = 78, |
| iastore = 79, |
| lastore = 80, |
| fastore = 81, |
| dastore = 82, |
| aastore = 83, |
| bastore = 84, |
| castore = 85, |
| sastore = 86, |
| pop = 87, |
| pop2 = 88, |
| dup = 89, |
| dup_x1 = 90, |
| dup_x2 = 91, |
| dup2 = 92, |
| dup2_x1 = 93, |
| dup2_x2 = 94, |
| swap = 95, |
| iadd = 96, |
| ladd = 97, |
| fadd = 98, |
| dadd = 99, |
| isub = 100, |
| lsub = 101, |
| fsub = 102, |
| dsub = 103, |
| imul = 104, |
| lmul = 105, |
| fmul = 106, |
| dmul = 107, |
| idiv = 108, |
| ldiv = 109, |
| fdiv = 110, |
| ddiv = 111, |
| imod = 112, |
| lmod = 113, |
| fmod = 114, |
| dmod = 115, |
| ineg = 116, |
| lneg = 117, |
| fneg = 118, |
| dneg = 119, |
| ishl = 120, |
| lshl = 121, |
| ishr = 122, |
| lshr = 123, |
| iushr = 124, |
| lushr = 125, |
| iand = 126, |
| land = 127, |
| ior = 128, |
| lor = 129, |
| ixor = 130, |
| lxor = 131, |
| iinc = 132, |
| i2l = 133, |
| i2f = 134, |
| i2d = 135, |
| l2i = 136, |
| l2f = 137, |
| l2d = 138, |
| f2i = 139, |
| f2l = 140, |
| f2d = 141, |
| d2i = 142, |
| d2l = 143, |
| d2f = 144, |
| int2byte = 145, |
| int2char = 146, |
| int2short = 147, |
| lcmp = 148, |
| fcmpl = 149, |
| fcmpg = 150, |
| dcmpl = 151, |
| dcmpg = 152, |
| ifeq = 153, |
| ifne = 154, |
| iflt = 155, |
| ifge = 156, |
| ifgt = 157, |
| ifle = 158, |
| if_icmpeq = 159, |
| if_icmpne = 160, |
| if_icmplt = 161, |
| if_icmpge = 162, |
| if_icmpgt = 163, |
| if_icmple = 164, |
| if_acmpeq = 165, |
| if_acmpne = 166, |
| goto_ = 167, |
| jsr = 168, |
| ret = 169, |
| tableswitch = 170, |
| lookupswitch = 171, |
| ireturn = 172, |
| lreturn = 173, |
| freturn = 174, |
| dreturn = 175, |
| areturn = 176, |
| return_ = 177, |
| getstatic = 178, |
| putstatic = 179, |
| getfield = 180, |
| putfield = 181, |
| invokevirtual = 182, |
| invokespecial = 183, |
| invokestatic = 184, |
| invokeinterface = 185, |
| invokedynamic = 186, |
| new_ = 187, |
| newarray = 188, |
| anewarray = 189, |
| arraylength = 190, |
| athrow = 191, |
| checkcast = 192, |
| instanceof_ = 193, |
| monitorenter = 194, |
| monitorexit = 195, |
| wide = 196, |
| multianewarray = 197, |
| if_acmp_null = 198, |
| if_acmp_nonnull = 199, |
| goto_w = 200, |
| jsr_w = 201, |
| breakpoint = 202, |
| ByteCodeCount = 203; |
| |
| /** Virtual instruction codes; used for constant folding. |
| */ |
| int string_add = 256, // string + |
| bool_not = 257, // boolean ! |
| bool_and = 258, // boolean && |
| bool_or = 259; // boolean || |
| |
| /** Virtual opcodes; used for shifts with long shiftcount |
| */ |
| int ishll = 270, // int shift left with long count |
| lshll = 271, // long shift left with long count |
| ishrl = 272, // int shift right with long count |
| lshrl = 273, // long shift right with long count |
| iushrl = 274, // int unsigned shift right with long count |
| lushrl = 275; // long unsigned shift right with long count |
| |
| /** Virtual opcode for null reference checks |
| */ |
| int nullchk = 276; // return operand if non-null, |
| // otherwise throw NullPointerException. |
| |
| /** Virtual opcode for disallowed operations. |
| */ |
| int error = 277; |
| |
| /** All conditional jumps come in pairs. To streamline the |
| * treatment of jumps, we also introduce a negation of an |
| * unconditional jump. That opcode happens to be jsr. |
| */ |
| int dontgoto = jsr; |
| |
| /** Shift and mask constants for shifting prefix instructions. |
| * a pair of instruction codes such as LCMP ; IFEQ is encoded |
| * in Symtab as {@literal (LCMP << preShift) + IFEQ }. |
| */ |
| int preShift = 9; |
| int preMask = (1 << preShift) - 1; |
| |
| /** Type codes. |
| */ |
| int INTcode = 0, |
| LONGcode = 1, |
| FLOATcode = 2, |
| DOUBLEcode = 3, |
| OBJECTcode = 4, |
| BYTEcode = 5, |
| CHARcode = 6, |
| SHORTcode = 7, |
| VOIDcode = 8, |
| TypeCodeCount = 9; |
| |
| static final String[] typecodeNames = { |
| "int", |
| "long", |
| "float", |
| "double", |
| "object", |
| "byte", |
| "char", |
| "short", |
| "void", |
| "oops" |
| }; |
| } |