src/share/classes/com/sun/tools/javac/jvm/ByteCodes.java

Tue, 28 Jul 2009 12:12:59 -0700

author
xdono
date
Tue, 28 Jul 2009 12:12:59 -0700
changeset 323
14b1a8ede954
parent 267
e2722bd43f3a
child 554
9d9f26857129
permissions
-rw-r--r--

6862919: Update copyright year
Summary: Update copyright for files that have been modified in 2009, up to 07/09
Reviewed-by: tbell, ohair

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

mercurial