1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Mon Feb 17 15:39:34 2014 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Mon Feb 17 17:33:22 2014 +0100
1.3 @@ -39,37 +39,6 @@
1.4 final class ByteCodeParser {
1.5 private ByteCodeParser() {
1.6 }
1.7 - /* Signature Characters */
1.8 - public static final char SIGC_VOID = 'V';
1.9 - public static final String SIG_VOID = "V";
1.10 - public static final char SIGC_BOOLEAN = 'Z';
1.11 - public static final String SIG_BOOLEAN = "Z";
1.12 - public static final char SIGC_BYTE = 'B';
1.13 - public static final String SIG_BYTE = "B";
1.14 - public static final char SIGC_CHAR = 'C';
1.15 - public static final String SIG_CHAR = "C";
1.16 - public static final char SIGC_SHORT = 'S';
1.17 - public static final String SIG_SHORT = "S";
1.18 - public static final char SIGC_INT = 'I';
1.19 - public static final String SIG_INT = "I";
1.20 - public static final char SIGC_LONG = 'J';
1.21 - public static final String SIG_LONG = "J";
1.22 - public static final char SIGC_FLOAT = 'F';
1.23 - public static final String SIG_FLOAT = "F";
1.24 - public static final char SIGC_DOUBLE = 'D';
1.25 - public static final String SIG_DOUBLE = "D";
1.26 - public static final char SIGC_ARRAY = '[';
1.27 - public static final String SIG_ARRAY = "[";
1.28 - public static final char SIGC_CLASS = 'L';
1.29 - public static final String SIG_CLASS = "L";
1.30 - public static final char SIGC_METHOD = '(';
1.31 - public static final String SIG_METHOD = "(";
1.32 - public static final char SIGC_ENDCLASS = ';';
1.33 - public static final String SIG_ENDCLASS = ";";
1.34 - public static final char SIGC_ENDMETHOD = ')';
1.35 - public static final String SIG_ENDMETHOD = ")";
1.36 - public static final char SIGC_PACKAGE = '/';
1.37 - public static final String SIG_PACKAGE = "/";
1.38
1.39 /* Class File Constants */
1.40 public static final int JAVA_MAGIC = 0xcafebabe;
1.41 @@ -107,17 +76,6 @@
1.42 public static final int ACC_EXPLICIT = 0x00001000;
1.43 public static final int ACC_SYNTHETIC = 0x00010000; // actually, this is an attribute
1.44
1.45 - /* Type codes */
1.46 - public static final int T_CLASS = 0x00000002;
1.47 - public static final int T_BOOLEAN = 0x00000004;
1.48 - public static final int T_CHAR = 0x00000005;
1.49 - public static final int T_FLOAT = 0x00000006;
1.50 - public static final int T_DOUBLE = 0x00000007;
1.51 - public static final int T_BYTE = 0x00000008;
1.52 - public static final int T_SHORT = 0x00000009;
1.53 - public static final int T_INT = 0x0000000a;
1.54 - public static final int T_LONG = 0x0000000b;
1.55 -
1.56 /* Type codes for StackMap attribute */
1.57 public static final int ITEM_Bogus =0; // an unknown or uninitialized value
1.58 public static final int ITEM_Integer =1; // a 32-bit integer
1.59 @@ -358,7 +316,7 @@
1.60 public static final int opc_nonpriv = 254;
1.61 public static final int opc_priv = 255;
1.62
1.63 - /* Wide instructions */
1.64 + /* Wide instructions *
1.65 public static final int opc_iload_w = (opc_wide<<8)|opc_iload;
1.66 public static final int opc_lload_w = (opc_wide<<8)|opc_lload;
1.67 public static final int opc_fload_w = (opc_wide<<8)|opc_fload;
1.68 @@ -371,762 +329,7 @@
1.69 public static final int opc_astore_w = (opc_wide<<8)|opc_astore;
1.70 public static final int opc_ret_w = (opc_wide<<8)|opc_ret;
1.71 public static final int opc_iinc_w = (opc_wide<<8)|opc_iinc;
1.72 -
1.73 - /* Opcode Names */
1.74 - public static final String opcNamesTab[] = {
1.75 - "nop",
1.76 - "aconst_null",
1.77 - "iconst_m1",
1.78 - "iconst_0",
1.79 - "iconst_1",
1.80 - "iconst_2",
1.81 - "iconst_3",
1.82 - "iconst_4",
1.83 - "iconst_5",
1.84 - "lconst_0",
1.85 - "lconst_1",
1.86 - "fconst_0",
1.87 - "fconst_1",
1.88 - "fconst_2",
1.89 - "dconst_0",
1.90 - "dconst_1",
1.91 - "bipush",
1.92 - "sipush",
1.93 - "ldc",
1.94 - "ldc_w",
1.95 - "ldc2_w",
1.96 - "iload",
1.97 - "lload",
1.98 - "fload",
1.99 - "dload",
1.100 - "aload",
1.101 - "iload_0",
1.102 - "iload_1",
1.103 - "iload_2",
1.104 - "iload_3",
1.105 - "lload_0",
1.106 - "lload_1",
1.107 - "lload_2",
1.108 - "lload_3",
1.109 - "fload_0",
1.110 - "fload_1",
1.111 - "fload_2",
1.112 - "fload_3",
1.113 - "dload_0",
1.114 - "dload_1",
1.115 - "dload_2",
1.116 - "dload_3",
1.117 - "aload_0",
1.118 - "aload_1",
1.119 - "aload_2",
1.120 - "aload_3",
1.121 - "iaload",
1.122 - "laload",
1.123 - "faload",
1.124 - "daload",
1.125 - "aaload",
1.126 - "baload",
1.127 - "caload",
1.128 - "saload",
1.129 - "istore",
1.130 - "lstore",
1.131 - "fstore",
1.132 - "dstore",
1.133 - "astore",
1.134 - "istore_0",
1.135 - "istore_1",
1.136 - "istore_2",
1.137 - "istore_3",
1.138 - "lstore_0",
1.139 - "lstore_1",
1.140 - "lstore_2",
1.141 - "lstore_3",
1.142 - "fstore_0",
1.143 - "fstore_1",
1.144 - "fstore_2",
1.145 - "fstore_3",
1.146 - "dstore_0",
1.147 - "dstore_1",
1.148 - "dstore_2",
1.149 - "dstore_3",
1.150 - "astore_0",
1.151 - "astore_1",
1.152 - "astore_2",
1.153 - "astore_3",
1.154 - "iastore",
1.155 - "lastore",
1.156 - "fastore",
1.157 - "dastore",
1.158 - "aastore",
1.159 - "bastore",
1.160 - "castore",
1.161 - "sastore",
1.162 - "pop",
1.163 - "pop2",
1.164 - "dup",
1.165 - "dup_x1",
1.166 - "dup_x2",
1.167 - "dup2",
1.168 - "dup2_x1",
1.169 - "dup2_x2",
1.170 - "swap",
1.171 - "iadd",
1.172 - "ladd",
1.173 - "fadd",
1.174 - "dadd",
1.175 - "isub",
1.176 - "lsub",
1.177 - "fsub",
1.178 - "dsub",
1.179 - "imul",
1.180 - "lmul",
1.181 - "fmul",
1.182 - "dmul",
1.183 - "idiv",
1.184 - "ldiv",
1.185 - "fdiv",
1.186 - "ddiv",
1.187 - "irem",
1.188 - "lrem",
1.189 - "frem",
1.190 - "drem",
1.191 - "ineg",
1.192 - "lneg",
1.193 - "fneg",
1.194 - "dneg",
1.195 - "ishl",
1.196 - "lshl",
1.197 - "ishr",
1.198 - "lshr",
1.199 - "iushr",
1.200 - "lushr",
1.201 - "iand",
1.202 - "land",
1.203 - "ior",
1.204 - "lor",
1.205 - "ixor",
1.206 - "lxor",
1.207 - "iinc",
1.208 - "i2l",
1.209 - "i2f",
1.210 - "i2d",
1.211 - "l2i",
1.212 - "l2f",
1.213 - "l2d",
1.214 - "f2i",
1.215 - "f2l",
1.216 - "f2d",
1.217 - "d2i",
1.218 - "d2l",
1.219 - "d2f",
1.220 - "i2b",
1.221 - "i2c",
1.222 - "i2s",
1.223 - "lcmp",
1.224 - "fcmpl",
1.225 - "fcmpg",
1.226 - "dcmpl",
1.227 - "dcmpg",
1.228 - "ifeq",
1.229 - "ifne",
1.230 - "iflt",
1.231 - "ifge",
1.232 - "ifgt",
1.233 - "ifle",
1.234 - "if_icmpeq",
1.235 - "if_icmpne",
1.236 - "if_icmplt",
1.237 - "if_icmpge",
1.238 - "if_icmpgt",
1.239 - "if_icmple",
1.240 - "if_acmpeq",
1.241 - "if_acmpne",
1.242 - "goto",
1.243 - "jsr",
1.244 - "ret",
1.245 - "tableswitch",
1.246 - "lookupswitch",
1.247 - "ireturn",
1.248 - "lreturn",
1.249 - "freturn",
1.250 - "dreturn",
1.251 - "areturn",
1.252 - "return",
1.253 - "getstatic",
1.254 - "putstatic",
1.255 - "getfield",
1.256 - "putfield",
1.257 - "invokevirtual",
1.258 - "invokespecial", // was "invokenonvirtual",
1.259 - "invokestatic",
1.260 - "invokeinterface",
1.261 - "bytecode 186", //"xxxunusedxxx",
1.262 - "new",
1.263 - "newarray",
1.264 - "anewarray",
1.265 - "arraylength",
1.266 - "athrow",
1.267 - "checkcast",
1.268 - "instanceof",
1.269 - "monitorenter",
1.270 - "monitorexit",
1.271 - null, // "wide",
1.272 - "multianewarray",
1.273 - "ifnull",
1.274 - "ifnonnull",
1.275 - "goto_w",
1.276 - "jsr_w",
1.277 - "bytecode 202", // "breakpoint",
1.278 - "bytecode",
1.279 - "try",
1.280 - "endtry",
1.281 - "catch",
1.282 - "var",
1.283 - "endvar",
1.284 - "locals_map",
1.285 - "stack_map"
1.286 - };
1.287 -
1.288 - /* Opcode Lengths */
1.289 - public static final int opcLengthsTab[] = {
1.290 - 1,
1.291 - 1,
1.292 - 1,
1.293 - 1,
1.294 - 1,
1.295 - 1,
1.296 - 1,
1.297 - 1,
1.298 - 1,
1.299 - 1,
1.300 - 1,
1.301 - 1,
1.302 - 1,
1.303 - 1,
1.304 - 1,
1.305 - 1,
1.306 - 2,
1.307 - 3,
1.308 - 2,
1.309 - 3,
1.310 - 3,
1.311 - 2,
1.312 - 2,
1.313 - 2,
1.314 - 2,
1.315 - 2,
1.316 - 1,
1.317 - 1,
1.318 - 1,
1.319 - 1,
1.320 - 1,
1.321 - 1,
1.322 - 1,
1.323 - 1,
1.324 - 1,
1.325 - 1,
1.326 - 1,
1.327 - 1,
1.328 - 1,
1.329 - 1,
1.330 - 1,
1.331 - 1,
1.332 - 1,
1.333 - 1,
1.334 - 1,
1.335 - 1,
1.336 - 1,
1.337 - 1,
1.338 - 1,
1.339 - 1,
1.340 - 1,
1.341 - 1,
1.342 - 1,
1.343 - 1,
1.344 - 2,
1.345 - 2,
1.346 - 2,
1.347 - 2,
1.348 - 2,
1.349 - 1,
1.350 - 1,
1.351 - 1,
1.352 - 1,
1.353 - 1,
1.354 - 1,
1.355 - 1,
1.356 - 1,
1.357 - 1,
1.358 - 1,
1.359 - 1,
1.360 - 1,
1.361 - 1,
1.362 - 1,
1.363 - 1,
1.364 - 1,
1.365 - 1,
1.366 - 1,
1.367 - 1,
1.368 - 1,
1.369 - 1,
1.370 - 1,
1.371 - 1,
1.372 - 1,
1.373 - 1,
1.374 - 1,
1.375 - 1,
1.376 - 1,
1.377 - 1,
1.378 - 1,
1.379 - 1,
1.380 - 1,
1.381 - 1,
1.382 - 1,
1.383 - 1,
1.384 - 1,
1.385 - 1,
1.386 - 1,
1.387 - 1,
1.388 - 1,
1.389 - 1,
1.390 - 1,
1.391 - 1,
1.392 - 1,
1.393 - 1,
1.394 - 1,
1.395 - 1,
1.396 - 1,
1.397 - 1,
1.398 - 1,
1.399 - 1,
1.400 - 1,
1.401 - 1,
1.402 - 1,
1.403 - 1,
1.404 - 1,
1.405 - 1,
1.406 - 1,
1.407 - 1,
1.408 - 1,
1.409 - 1,
1.410 - 1,
1.411 - 1,
1.412 - 1,
1.413 - 1,
1.414 - 1,
1.415 - 1,
1.416 - 1,
1.417 - 1,
1.418 - 1,
1.419 - 1,
1.420 - 1,
1.421 - 1,
1.422 - 3,
1.423 - 1,
1.424 - 1,
1.425 - 1,
1.426 - 1,
1.427 - 1,
1.428 - 1,
1.429 - 1,
1.430 - 1,
1.431 - 1,
1.432 - 1,
1.433 - 1,
1.434 - 1,
1.435 - 1,
1.436 - 1,
1.437 - 1,
1.438 - 1,
1.439 - 1,
1.440 - 1,
1.441 - 1,
1.442 - 1,
1.443 - 3,
1.444 - 3,
1.445 - 3,
1.446 - 3,
1.447 - 3,
1.448 - 3,
1.449 - 3,
1.450 - 3,
1.451 - 3,
1.452 - 3,
1.453 - 3,
1.454 - 3,
1.455 - 3,
1.456 - 3,
1.457 - 3,
1.458 - 3,
1.459 - 2,
1.460 - 99,
1.461 - 99,
1.462 - 1,
1.463 - 1,
1.464 - 1,
1.465 - 1,
1.466 - 1,
1.467 - 1,
1.468 - 3,
1.469 - 3,
1.470 - 3,
1.471 - 3,
1.472 - 3,
1.473 - 3,
1.474 - 3,
1.475 - 5,
1.476 - 0,
1.477 - 3,
1.478 - 2,
1.479 - 3,
1.480 - 1,
1.481 - 1,
1.482 - 3,
1.483 - 3,
1.484 - 1,
1.485 - 1,
1.486 - 0, // wide
1.487 - 4,
1.488 - 3,
1.489 - 3,
1.490 - 5,
1.491 - 5,
1.492 - 1,
1.493 - 1, 0, 0, 0, 0, 0 // pseudo
1.494 - };
1.495 -
1.496 - /**
1.497 - * End of input
1.498 - */
1.499 - public static final int EOF = -1;
1.500 -
1.501 - /*
1.502 - * Flags
1.503 - */
1.504 - public static final int F_VERBOSE = 1 << 0;
1.505 - public static final int F_DUMP = 1 << 1;
1.506 - public static final int F_WARNINGS = 1 << 2;
1.507 - public static final int F_DEBUG = 1 << 3;
1.508 - public static final int F_OPTIMIZE = 1 << 4;
1.509 - public static final int F_DEPENDENCIES = 1 << 5;
1.510 -
1.511 - /*
1.512 - * Type codes
1.513 - */
1.514 - public static final int TC_BOOLEAN = 0;
1.515 - public static final int TC_BYTE = 1;
1.516 - public static final int TC_CHAR = 2;
1.517 - public static final int TC_SHORT = 3;
1.518 - public static final int TC_INT = 4;
1.519 - public static final int TC_LONG = 5;
1.520 - public static final int TC_FLOAT = 6;
1.521 - public static final int TC_DOUBLE = 7;
1.522 - public static final int TC_NULL = 8;
1.523 - public static final int TC_ARRAY = 9;
1.524 - public static final int TC_CLASS = 10;
1.525 - public static final int TC_VOID = 11;
1.526 - public static final int TC_METHOD = 12;
1.527 - public static final int TC_ERROR = 13;
1.528 -
1.529 - /*
1.530 - * Type Masks
1.531 - */
1.532 - public static final int TM_NULL = 1 << TC_NULL;
1.533 - public static final int TM_VOID = 1 << TC_VOID;
1.534 - public static final int TM_BOOLEAN = 1 << TC_BOOLEAN;
1.535 - public static final int TM_BYTE = 1 << TC_BYTE;
1.536 - public static final int TM_CHAR = 1 << TC_CHAR;
1.537 - public static final int TM_SHORT = 1 << TC_SHORT;
1.538 - public static final int TM_INT = 1 << TC_INT;
1.539 - public static final int TM_LONG = 1 << TC_LONG;
1.540 - public static final int TM_FLOAT = 1 << TC_FLOAT;
1.541 - public static final int TM_DOUBLE = 1 << TC_DOUBLE;
1.542 - public static final int TM_ARRAY = 1 << TC_ARRAY;
1.543 - public static final int TM_CLASS = 1 << TC_CLASS;
1.544 - public static final int TM_METHOD = 1 << TC_METHOD;
1.545 - public static final int TM_ERROR = 1 << TC_ERROR;
1.546 -
1.547 - public static final int TM_INT32 = TM_BYTE | TM_SHORT | TM_CHAR | TM_INT;
1.548 - public static final int TM_NUM32 = TM_INT32 | TM_FLOAT;
1.549 - public static final int TM_NUM64 = TM_LONG | TM_DOUBLE;
1.550 - public static final int TM_INTEGER = TM_INT32 | TM_LONG;
1.551 - public static final int TM_REAL = TM_FLOAT | TM_DOUBLE;
1.552 - public static final int TM_NUMBER = TM_INTEGER | TM_REAL;
1.553 - public static final int TM_REFERENCE = TM_ARRAY | TM_CLASS | TM_NULL;
1.554 -
1.555 - /*
1.556 - * Class status
1.557 - */
1.558 - public static final int CS_UNDEFINED = 0;
1.559 - public static final int CS_UNDECIDED = 1;
1.560 - public static final int CS_BINARY = 2;
1.561 - public static final int CS_SOURCE = 3;
1.562 - public static final int CS_PARSED = 4;
1.563 - public static final int CS_COMPILED = 5;
1.564 - public static final int CS_NOTFOUND = 6;
1.565 -
1.566 - /*
1.567 - * Attributes
1.568 - */
1.569 - public static final int ATT_ALL = -1;
1.570 - public static final int ATT_CODE = 1;
1.571 -
1.572 - /*
1.573 - * Number of bits used in file offsets
1.574 - */
1.575 - public static final int OFFSETBITS = 19;
1.576 - public static final int MAXFILESIZE = (1 << OFFSETBITS) - 1;
1.577 - public static final int MAXLINENUMBER = (1 << (32 - OFFSETBITS)) - 1;
1.578 -
1.579 - /*
1.580 - * Operators
1.581 - */
1.582 - public final int COMMA = 0;
1.583 - public final int ASSIGN = 1;
1.584 -
1.585 - public final int ASGMUL = 2;
1.586 - public final int ASGDIV = 3;
1.587 - public final int ASGREM = 4;
1.588 - public final int ASGADD = 5;
1.589 - public final int ASGSUB = 6;
1.590 - public final int ASGLSHIFT = 7;
1.591 - public final int ASGRSHIFT = 8;
1.592 - public final int ASGURSHIFT = 9;
1.593 - public final int ASGBITAND = 10;
1.594 - public final int ASGBITOR = 11;
1.595 - public final int ASGBITXOR = 12;
1.596 -
1.597 - public final int COND = 13;
1.598 - public final int OR = 14;
1.599 - public final int AND = 15;
1.600 - public final int BITOR = 16;
1.601 - public final int BITXOR = 17;
1.602 - public final int BITAND = 18;
1.603 - public final int NE = 19;
1.604 - public final int EQ = 20;
1.605 - public final int GE = 21;
1.606 - public final int GT = 22;
1.607 - public final int LE = 23;
1.608 - public final int LT = 24;
1.609 - public final int INSTANCEOF = 25;
1.610 - public final int LSHIFT = 26;
1.611 - public final int RSHIFT = 27;
1.612 - public final int URSHIFT = 28;
1.613 - public final int ADD = 29;
1.614 - public final int SUB = 30;
1.615 - public final int DIV = 31;
1.616 - public final int REM = 32;
1.617 - public final int MUL = 33;
1.618 - public final int CAST = 34; // (x)y
1.619 - public final int POS = 35; // +x
1.620 - public final int NEG = 36; // -x
1.621 - public final int NOT = 37;
1.622 - public final int BITNOT = 38;
1.623 - public final int PREINC = 39; // ++x
1.624 - public final int PREDEC = 40; // --x
1.625 - public final int NEWARRAY = 41;
1.626 - public final int NEWINSTANCE = 42;
1.627 - public final int NEWFROMNAME = 43;
1.628 - public final int POSTINC = 44; // x++
1.629 - public final int POSTDEC = 45; // x--
1.630 - public final int FIELD = 46;
1.631 - public final int METHOD = 47; // x(y)
1.632 - public final int ARRAYACCESS = 48; // x[y]
1.633 - public final int NEW = 49;
1.634 - public final int INC = 50;
1.635 - public final int DEC = 51;
1.636 -
1.637 - public final int CONVERT = 55; // implicit conversion
1.638 - public final int EXPR = 56; // (x)
1.639 - public final int ARRAY = 57; // {x, y, ...}
1.640 - public final int GOTO = 58;
1.641 -
1.642 - /*
1.643 - * Value tokens
1.644 - */
1.645 - public final int IDENT = 60;
1.646 - public final int BOOLEANVAL = 61;
1.647 - public final int BYTEVAL = 62;
1.648 - public final int CHARVAL = 63;
1.649 - public final int SHORTVAL = 64;
1.650 - public final int INTVAL = 65;
1.651 - public final int LONGVAL = 66;
1.652 - public final int FLOATVAL = 67;
1.653 - public final int DOUBLEVAL = 68;
1.654 - public final int STRINGVAL = 69;
1.655 -
1.656 - /*
1.657 - * Type keywords
1.658 - */
1.659 - public final int BYTE = 70;
1.660 - public final int CHAR = 71;
1.661 - public final int SHORT = 72;
1.662 - public final int INT = 73;
1.663 - public final int LONG = 74;
1.664 - public final int FLOAT = 75;
1.665 - public final int DOUBLE = 76;
1.666 - public final int VOID = 77;
1.667 - public final int BOOLEAN = 78;
1.668 -
1.669 - /*
1.670 - * Expression keywords
1.671 - */
1.672 - public final int TRUE = 80;
1.673 - public final int FALSE = 81;
1.674 - public final int THIS = 82;
1.675 - public final int SUPER = 83;
1.676 - public final int NULL = 84;
1.677 -
1.678 - /*
1.679 - * Statement keywords
1.680 - */
1.681 - public final int IF = 90;
1.682 - public final int ELSE = 91;
1.683 - public final int FOR = 92;
1.684 - public final int WHILE = 93;
1.685 - public final int DO = 94;
1.686 - public final int SWITCH = 95;
1.687 - public final int CASE = 96;
1.688 - public final int DEFAULT = 97;
1.689 - public final int BREAK = 98;
1.690 - public final int CONTINUE = 99;
1.691 - public final int RETURN = 100;
1.692 - public final int TRY = 101;
1.693 - public final int CATCH = 102;
1.694 - public final int FINALLY = 103;
1.695 - public final int THROW = 104;
1.696 - public final int STAT = 105;
1.697 - public final int EXPRESSION = 106;
1.698 - public final int DECLARATION = 107;
1.699 - public final int VARDECLARATION = 108;
1.700 -
1.701 - /*
1.702 - * Declaration keywords
1.703 - */
1.704 - public final int IMPORT = 110;
1.705 - public final int CLASS = 111;
1.706 - public final int EXTENDS = 112;
1.707 - public final int IMPLEMENTS = 113;
1.708 - public final int INTERFACE = 114;
1.709 - public final int PACKAGE = 115;
1.710 -
1.711 - /*
1.712 - * Modifier keywords
1.713 - */
1.714 - public final int PRIVATE = 120;
1.715 - public final int PUBLIC = 121;
1.716 - public final int PROTECTED = 122;
1.717 - public final int CONST = 123;
1.718 - public final int STATIC = 124;
1.719 - public final int TRANSIENT = 125;
1.720 - public final int SYNCHRONIZED = 126;
1.721 - public final int NATIVE = 127;
1.722 - public final int FINAL = 128;
1.723 - public final int VOLATILE = 129;
1.724 - public final int ABSTRACT = 130;
1.725 - public final int STRICT = 165;
1.726 -
1.727 - /*
1.728 - * Punctuation
1.729 - */
1.730 - public final int SEMICOLON = 135;
1.731 - public final int COLON = 136;
1.732 - public final int QUESTIONMARK = 137;
1.733 - public final int LBRACE = 138;
1.734 - public final int RBRACE = 139;
1.735 - public final int LPAREN = 140;
1.736 - public final int RPAREN = 141;
1.737 - public final int LSQBRACKET = 142;
1.738 - public final int RSQBRACKET = 143;
1.739 - public final int THROWS = 144;
1.740 -
1.741 - /*
1.742 - * Special tokens
1.743 - */
1.744 - public final int ERROR = 145; // an error
1.745 - public final int COMMENT = 146; // not used anymore.
1.746 - public final int TYPE = 147;
1.747 - public final int LENGTH = 148;
1.748 - public final int INLINERETURN = 149;
1.749 - public final int INLINEMETHOD = 150;
1.750 - public final int INLINENEWINSTANCE = 151;
1.751 -
1.752 - /*
1.753 - * Added for jasm
1.754 - */
1.755 - public final int METHODREF = 152;
1.756 - public final int FIELDREF = 153;
1.757 - public final int STACK = 154;
1.758 - public final int LOCAL = 155;
1.759 - public final int CPINDEX = 156;
1.760 - public final int CPNAME = 157;
1.761 - public final int SIGN = 158;
1.762 - public final int BITS = 159;
1.763 - public final int INF = 160;
1.764 - public final int NAN = 161;
1.765 - public final int INNERCLASS = 162;
1.766 - public final int OF = 163;
1.767 - public final int SYNTHETIC = 164;
1.768 -// last used=165;
1.769 -
1.770 - /*
1.771 - * Operator precedence
1.772 - */
1.773 - public static final int opPrecedence[] = {
1.774 - 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1.775 - 11, 11, 11, 12, 13, 14, 15, 16, 17, 18,
1.776 - 18, 19, 19, 19, 19, 19, 20, 20, 20, 21,
1.777 - 21, 22, 22, 22, 23, 24, 24, 24, 24, 24,
1.778 - 24, 25, 25, 26, 26, 26, 26, 26, 26
1.779 - };
1.780 -
1.781 - /*
1.782 - * Operator names
1.783 - */
1.784 - public static final String opNames[] = {
1.785 - ",", "=", "*=", "/=", "%=",
1.786 - "+=", "-=", "<<=", ">>=", "<<<=",
1.787 - "&=", "|=", "^=", "?:", "||",
1.788 - "&&", "|", "^", "&", "!=",
1.789 - "==", ">=", ">", "<=", "<",
1.790 - "instanceof", "<<", ">>", "<<<", "+",
1.791 - "-", "/", "%", "*", "cast",
1.792 - "+", "-", "!", "~", "++",
1.793 - "--", "new", "new", "new", "++",
1.794 - "--", "field", "method", "[]", "new",
1.795 - "++", "--", null, null, null,
1.796 -
1.797 - "convert", "expr", "array", "goto", null,
1.798 -
1.799 - "Identifier", "Boolean", "Byte", "Char", "Short",
1.800 - "Integer", "Long", "Float", "Double", "String",
1.801 -
1.802 - "byte", "char", "short", "int", "long",
1.803 - "float", "double", "void", "boolean", null,
1.804 -
1.805 - "true", "false", "this", "super", "null",
1.806 - null, null, null, null, null,
1.807 -
1.808 - "if", "else", "for", "while", "do",
1.809 - "switch", "case", "default", "break", "continue",
1.810 - "return", "try", "catch", "finally", "throw",
1.811 - "stat", "expression", "declaration", "declaration", null,
1.812 -
1.813 - "import", "class", "extends", "implements", "interface",
1.814 - "package", null, null, null, null,
1.815 -
1.816 - "private", "public", "protected", "const", "static",
1.817 - "transient", "synchronized", "native", "final", "volatile",
1.818 - "abstract", null, null, null, null,
1.819 -
1.820 - ";", ":", "?", "{", "}",
1.821 - "(", ")", "[", "]", "throws",
1.822 - "error", "comment", "type", "length", "inline-return",
1.823 - "inline-method", "inline-new",
1.824 - "method", "field", "stack", "locals", "CPINDEX", "CPName", "SIGN",
1.825 - "bits", "INF", "NaN", "InnerClass", "of", "synthetic"
1.826 - };
1.827 -
1.828 +*/
1.829 static class AnnotationParser {
1.830
1.831 private final boolean textual;
1.832 @@ -1332,15 +535,11 @@
1.833 private int super_class;
1.834 private int interfaces_count;
1.835 private int[] interfaces = new int[0];
1.836 - private int fields_count;
1.837 private FieldData[] fields;
1.838 - private int methods_count;
1.839 private MethodData[] methods;
1.840 private InnerClassData[] innerClasses;
1.841 private int attributes_count;
1.842 private AttrData[] attrs;
1.843 - private String classname;
1.844 - private String superclassname;
1.845 private int source_cpx = 0;
1.846 private byte tags[];
1.847 private Hashtable indexHashAscii = new Hashtable();