sa-jdi

pdate(Observable o, Object data) {}
}

/* Location:
 * Qualified Name:     sun.jvm.hotspot.interpreter.Bytecodes.1
 * Java Class Version: 1.4 (48.0)
 * JD-Core Version:    0.7.1
 */
package sun.jvm.hotspot.interpreter;

import java.util.Observable;
import java.util.Observer;
import sun.jvm.hotspot.oops.Method;
import sun.jvm.hotspot.runtime.BasicType;
import sun.jvm.hotspot.runtime.VM;
import sun.jvm.hotspot.utilities.Assert;
import sun.jvm.hotspot.utilities.Bits;

public class Bytecodes
{
  public static final int _illegal = -1;
  public static final int _nop = 0;
  public static final int _aconst_null = 1;
  public static final int _iconst_m1 = 2;
  public static final int _iconst_0 = 3;
  public static final int _iconst_1 = 4;
  public static final int _iconst_2 = 5;
  public static final int _iconst_3 = 6;
  public static final int _iconst_4 = 7;
  public static final int _iconst_5 = 8;
  public static final int _lconst_0 = 9;
  public static final int _lconst_1 = 10;
  public static final int _fconst_0 = 11;
  public static final int _fconst_1 = 12;
  public static final int _fconst_2 = 13;
  public static final int _dconst_0 = 14;
  public static final int _dconst_1 = 15;
  public static final int _bipush = 16;
  public static final int _sipush = 17;
  public static final int _ldc = 18;
  public static final int _ldc_w = 19;
  public static final int _ldc2_w = 20;
  public static final int _iload = 21;
  public static final int _lload = 22;
  public static final int _fload = 23;
  public static final int _dload = 24;
  public static final int _aload = 25;
  public static final int _iload_0 = 26;
  public static final int _iload_1 = 27;
  public static final int _iload_2 = 28;
  public static final int _iload_3 = 29;
  public static final int _lload_0 = 30;
  public static final int _lload_1 = 31;
  public static final int _lload_2 = 32;
  public static final int _lload_3 = 33;
  public static final int _fload_0 = 34;
  public static final int _fload_1 = 35;
  public static final int _fload_2 = 36;
  public static final int _fload_3 = 37;
  public static final int _dload_0 = 38;
  public static final int _dload_1 = 39;
  public static final int _dload_2 = 40;
  public static final int _dload_3 = 41;
  public static final int _aload_0 = 42;
  public static final int _aload_1 = 43;
  public static final int _aload_2 = 44;
  public static final int _aload_3 = 45;
  public static final int _iaload = 46;
  public static final int _laload = 47;
  public static final int _faload = 48;
  public static final int _daload = 49;
  public static final int _aaload = 50;
  public static final int _baload = 51;
  public static final int _caload = 52;
  public static final int _saload = 53;
  public static final int _istore = 54;
  public static final int _lstore = 55;
  public static final int _fstore = 56;
  public static final int _dstore = 57;
  public static final int _astore = 58;
  public static final int _istore_0 = 59;
  public static final int _istore_1 = 60;
  public static final int _istore_2 = 61;
  public static final int _istore_3 = 62;
  public static final int _lstore_0 = 63;
  public static final int _lstore_1 = 64;
  public static final int _lstore_2 = 65;
  public static final int _lstore_3 = 66;
  public static final int _fstore_0 = 67;
  public static final int _fstore_1 = 68;
  public static final int _fstore_2 = 69;
  public static final int _fstore_3 = 70;
  public static final int _dstore_0 = 71;
  public static final int _dstore_1 = 72;
  public static final int _dstore_2 = 73;
  public static final int _dstore_3 = 74;
  public static final int _astore_0 = 75;
  public static final int _astore_1 = 76;
  public static final int _astore_2 = 77;
  public static final int _astore_3 = 78;
  public static final int _iastore = 79;
  public static final int _lastore = 80;
  public static final int _fastore = 81;
  public static final int _dastore = 82;
  public static final int _aastore = 83;
  public static final int _bastore = 84;
  public static final int _castore = 85;
  public static final int _sastore = 86;
  public static final int _pop = 87;
  public static final int _pop2 = 88;
  public static final int _dup = 89;
  public static final int _dup_x1 = 90;
  public static final int _dup_x2 = 91;
  public static final int _dup2 = 92;
  public static final int _dup2_x1 = 93;
  public static final int _dup2_x2 = 94;
  public static final int _swap = 95;
  public static final int _iadd = 96;
  public static final int _ladd = 97;
  public static final int _fadd = 98;
  public static final int _dadd = 99;
  public static final int _isub = 100;
  public static final int _lsub = 101;
  public static final int _fsub = 102;
  public static final int _dsub = 103;
  public static final int _imul = 104;
  public static final int _lmul = 105;
  public static final int _fmul = 106;
  public static final int _dmul = 107;
  public static final int _idiv = 108;
  public static final int _ldiv = 109;
  public static final int _fdiv = 110;
  public static final int _ddiv = 111;
  public static final int _irem = 112;
  public static final int _lrem = 113;
  public static final int _frem = 114;
  public static final int _drem = 115;
  public static final int _ineg = 116;
  public static final int _lneg = 117;
  public static final int _fneg = 118;
  public static final int _dneg = 119;
  public static final int _ishl = 120;
  public static final int _lshl = 121;
  public static final int _ishr = 122;
  public static final int _lshr = 123;
  public static final int _iushr = 124;
  public static final int _lushr = 125;
  public static final int _iand = 126;
  public static final int _land = 127;
  public static final int _ior = 128;
  public static final int _lor = 129;
  public static final int _ixor = 130;
  public static final int _lxor = 131;
  public static final int _iinc = 132;
  public static final int _i2l = 133;
  public static final int _i2f = 134;
  public static final int _i2d = 135;
  public static final int _l2i = 136;
  public static final int _l2f = 137;
  public static final int _l2d = 138;
  public static final int _f2i = 139;
  public static final int _f2l = 140;
  public static final int _f2d = 141;
  public static final int _d2i = 142;
  public static final int _d2l = 143;
  public static final int _d2f = 144;
  public static final int _i2b = 145;
  public static final int _i2c = 146;
  public static final int _i2s = 147;
  public static final int _lcmp = 148;
  public static final int _fcmpl = 149;
  public static final int _fcmpg = 150;
  public static final int _dcmpl = 151;
  public static final int _dcmpg = 152;
  public static final int _ifeq = 153;
  public static final int _ifne = 154;
  public static final int _iflt = 155;
  public static final int _ifge = 156;
  public static final int _ifgt = 157;
  public static final int _ifle = 158;
  public static final int _if_icmpeq = 159;
  public static final int _if_icmpne = 160;
  public static final int _if_icmplt = 161;
  public static final int _if_icmpge = 162;
  public static final int _if_icmpgt = 163;
  public static final int _if_icmple = 164;
  public static final int _if_acmpeq = 165;
  public static final int _if_acmpne = 166;
  public static final int _goto = 167;
  public static final int _jsr = 168;
  public static final int _ret = 169;
  public static final int _tableswitch = 170;
  public static final int _lookupswitch = 171;
  public static final int _ireturn = 172;
  public static final int _lreturn = 173;
  public static final int _freturn = 174;
  public static final int _dreturn = 175;
  public static final int _areturn = 176;
  public static final int _return = 177;
  public static final int _getstatic = 178;
  public static final int _putstatic = 179;
  public static final int _getfield = 180;
  public static final int _putfield = 181;
  public static final int _invokevirtual = 182;
  public static final int _invokespecial = 183;
  public static final int _invokestatic = 184;
  public static final int _invokeinterface = 185;
  public static final int _invokedynamic = 186;
  public static final int _new = 187;
  public static final int _newarray = 188;
  public static final int _anewarray = 189;
  public static final int _arraylength = 190;
  public static final int _athrow = 191;
  public static final int _checkcast = 192;
  public static final int _instanceof = 193;
  public static final int _monitorenter = 194;
  public static final int _monitorexit = 195;
  public static final int _wide = 196;
  public static final int _multianewarray = 197;
  public static final int _ifnull = 198;
  public static final int _ifnonnull = 199;
  public static final int _goto_w = 200;
  public static final int _jsr_w = 201;
  public static final int _breakpoint = 202;
  public static final int number_of_java_codes = 203;
  public static final int _fast_agetfield = 203;
  public static final int _fast_bgetfield = 204;
  public static final int _fast_cgetfield = 205;
  public static final int _fast_dgetfield = 206;
  public static final int _fast_fgetfield = 207;
  public static final int _fast_igetfield = 208;
  public static final int _fast_lgetfield = 209;
  public static final int _fast_sgetfield = 210;
  public static final int _fast_aputfield = 211;
  public static final int _fast_bputfield = 212;
  public static final int _fast_cputfield = 213;
  public static final int _fast_dputfield = 214;
  public static final int _fast_fputfield = 215;
  public static final int _fast_iputfield = 216;
  public static final int _fast_lputfield = 217;
  public static final int _fast_sputfield = 218;
  public static final int _fast_aload_0 = 219;
  public static final int _fast_iaccess_0 = 220;
  public static final int _fast_aaccess_0 = 221;
  public static final int _fast_faccess_0 = 222;
  public static final int _fast_iload = 223;
  public static final int _fast_iload2 = 224;
  public static final int _fast_icaload = 225;
  public static final int _fast_invokevfinal = 226;
  public static final int _fast_linearswitch = 227;
  public static final int _fast_binaryswitch = 228;
  public static final int _fast_aldc = 229;
  public static final int _fast_aldc_w = 230;
  public static final int _return_register_finalizer = 231;
  public static final int _shouldnotreachhere = 232;
  public static final int number_of_codes = 233;
  
  public static int specialLengthAt(Method method, int bci)
  {
    int code = codeAt(method, bci);
    switch (code)
    {
    case 196: 
      return wideLengthFor(method.getBytecodeOrBPAt(bci + 1));
    case 170: 
      int alignedBCI = Bits.roundTo(bci + 1, 4);
      int lo = method.getBytecodeIntArg(alignedBCI + 4);
      int hi = method.getBytecodeIntArg(alignedBCI + 8);
      return alignedBCI - bci + (3 + hi - lo + 1) * 4;
    case 171: 
    case 227: 
    case 228: 
      int alignedBCI = Bits.roundTo(bci + 1, 4);
      int npairs = method.getBytecodeIntArg(alignedBCI + 4);
      return alignedBCI - bci + (2 + 2 * npairs) * 4;
    }
    throw new RuntimeException("should not reach here");
  }
  
  public static void check(int code)
  {
    if (Assert.ASSERTS_ENABLED) {
      Assert.that(isDefined(code), "illegal code " + code);
    }
  }
  
  public static void wideCheck(int code)
  {
    if (Assert.ASSERTS_ENABLED) {
      Assert.that(wideIsDefined(code), "illegal code " + code);
    }
  }
  
  public static int codeAt(Method method, int bci)
  {
    int res = codeOrBPAt(method, bci);
    if (res == 202) {
      res = method.getOrigBytecodeAt(bci);
    }
    return res;
  }
  
  public static int codeOrBPAt(Method method, int bci)
  {
    return method.getBytecodeOrBPAt(bci);
  }
  
  public static boolean isActiveBreakpointAt(Method method, int bci)
  {
    return codeOrBPAt(method, bci) == 202;
  }
  
  public static boolean isDefined(int code)
  {
    return (0 <= code) && (code < 233) && (_format[code] != null);
  }
  
  public static boolean wideIsDefined(int code)
  {
    return (isDefined(code)) && (_wide_format[code] != null);
  }
  
  public static String name(int code)
  {
    check(code);return _name[code];
  }
  
  public static String format(int code)
  {
    check(code);return _format[code];
  }
  
  public static String wideFormat(int code)
  {
    wideCheck(code);return _wide_format[code];
  }
  
  public static int resultType(int code)
  {
    check(code);return _result_type[code];
  }
  
  public static int depth(int code)
  {
    check(code);return _depth[code];
  }
  
  public static int lengthFor(int code)
  {
    check(code);return _length[code];
  }
  
  public static boolean canTrap(int code)
  {
    check(code);return _can_trap[code];
  }
  
  public static int javaCode(int code)
  {
    check(code);return _java_code[code];
  }
  
  public static boolean canRewrite(int code)
  {
    check(code);return _can_rewrite[code];
  }
  
  public static int wideLengthFor(int code)
  {
    wideCheck(code);return wideFormat(code).length();
  }
  
  public static int lengthAt(Method method, int bci)
  {
    int l = lengthFor(codeAt(method, bci));return l > 0 ? l : specialLengthAt(method, bci);
  }
  
  public static int javaLengthAt(Method method, int bci)
  {
    int l = lengthFor(javaCode(codeAt(method, bci)));return l > 0 ? l : specialLengthAt(method, bci);
  }
  
  public static boolean isJavaCode(int code)
  {
    return (0 <= code) && (code < 203);
  }
  
  public static boolean isFastCode(int code)
  {
    return (203 <= code) && (code < 233);
  }
  
  public static boolean isAload(int code)
  {
    return (code == 25) || (code == 42) || (code == 43) || (code == 44) || (code == 45);
  }
  
  public static boolean isAstore(int code)
  {
    return (code == 58) || (code == 75) || (code == 76) || (code == 77) || (code == 78);
  }
  
  public static boolean isZeroConst(int code)
  {
    return (code == 1) || (code == 3) || (code == 11) || (code == 14);
  }
  
  private static String[] _name = new String['�'];
  private static String[] _format = new String['�'];
  private static String[] _wide_format = new String['�'];
  private static int[] _result_type = new int['�'];
  private static byte[] _depth = new byte['�'];
  private static byte[] _length = new byte['�'];
  private static boolean[] _can_trap = new boolean['�'];
  private static int[] _java_code = new int['�'];
  private static boolean[] _can_rewrite = new boolean['�'];
  private static final int jintSize = 4;
  
  static
  {
    VM.registerVMInitializedObserver(new Observer()
    {
      public void update(Observable o, Object data) {}
    });
  }
  
  private static void initialize()
  {
    if (Assert.ASSERTS_ENABLED) {
      Assert.that(true, "too many bytecodes");
    }
    def(0, "nop", "b", null, BasicType.getTVoid(), 0, false);
    def(1, "aconst_null", "b", null, BasicType.getTObject(), 1, false);
    def(2, "iconst_m1", "b", null, BasicType.getTInt(), 1, false);
    def(3, "iconst_0", "b", null, BasicType.getTInt(), 1, false);
    def(4, "iconst_1", "b", null, BasicType.getTInt(), 1, false);
    def(5, "iconst_2", "b", null, BasicType.getTInt(), 1, false);
    def(6, "iconst_3", "b", null, BasicType.getTInt(), 1, false);
    def(7, "iconst_4", "b", null, BasicType.getTInt(), 1, false);
    def(8, "iconst_5", "b", null, BasicType.getTInt(), 1, false);
    def(9, "lconst_0", "b", null, BasicType.getTLong(), 2, false);
    def(10, "lconst_1", "b", null, BasicType.getTLong(), 2, false);
    def(11, "fconst_0", "b", null, BasicType.getTFloat(), 1, false);
    def(12, "fconst_1", "b", null, BasicType.getTFloat(), 1, false);
    def(13, "fconst_2", "b", null, BasicType.getTFloat(), 1, false);
    def(14, "dconst_0", "b", null, BasicType.getTDouble(), 2, false);
    def(15, "dconst_1", "b", null, BasicType.getTDouble(), 2, false);
    def(16, "bipush", "bc", null, BasicType.getTInt(), 1, false);
    def(17, "sipush", "bcc", null, BasicType.getTInt(), 1, false);
    def(18, "ldc", "bk", null, BasicType.getTIllegal(), 1, true);
    def(19, "ldc_w", "bkk", null, BasicType.getTIllegal(), 1, true);
    def(20, "ldc2_w", "bkk", null, BasicType.getTIllegal(), 2, true);
    def(21, "iload", "bi", "wbii", BasicType.getTInt(), 1, false);
    def(22, "lload", "bi", "wbii", BasicType.getTLong(), 2, false);
    def(23, "fload", "bi", "wbii", BasicType.getTFloat(), 1, false);
    def(24, "dload", "bi", "wbii", BasicType.getTDouble(), 2, false);
    def(25, "aload", "bi", "wbii", BasicType.getTObject(), 1, false);
    def(26, "iload_0", "b", null, BasicType.getTInt(), 1, false);
    def(27, "iload_1", "b", null, BasicType.getTInt(), 1, false);
    def(28, "iload_2", "b", null, BasicType.getTInt(), 1, false);
    def(29, "iload_3", "b", null, BasicType.getTInt(), 1, false);
    def(30, "lload_0", "b", null, BasicType.getTLong(), 2, false);
    def(31, "lload_1", "b", null, BasicType.getTLong(), 2, false);
    def(32, "lload_2", "b", null, BasicType.getTLong(), 2, false);
    def(33, "lload_3", "b", null, BasicType.getTLong(), 2, false);
    def(34, "fload_0", "b", null, BasicType.getTFloat(), 1, false);
    def(35, "fload_1", "b", null, BasicType.getTFloat(), 1, false);
    def(36, "fload_2", "b", null, BasicType.getTFloat(), 1, false);
    def(37, "fload_3", "b", null, BasicType.getTFloat(), 1, false);
    def(38, "dload_0", "b", null, BasicType.getTDouble(), 2, false);
    def(39, "dload_1", "b", null, BasicType.getTDouble(), 2, false);
    def(40, "dload_2", "b", null, BasicType.getTDouble(), 2, false);
    def(41, "dload_3", "b", null, BasicType.getTDouble(), 2, false);
    def(42, "aload_0", "b", null, BasicType.getTObject(), 1, true);
    def(43, "aload_1", "b", null, BasicType.getTObject(), 1, false);
    def(44, "aload_2", "b", null, BasicType.getTObject(), 1, false);
    def(45, "aload_3", "b", null, BasicType.getTObject(), 1, false);
    def(46, "iaload", "b", null, BasicType.getTInt(), -1, true);
    def(47, "laload", "b", null, BasicType.getTLong(), 0, true);
    def(48, "faload", "b", null, BasicType.getTFloat(), -1, true);
    def(49, "daload", "b", null, BasicType.getTDouble(), 0, true);
    def(50, "aaload", "b", null, BasicType.getTObject(), -1, true);
    def(51, "baload", "b", null, BasicType.getTInt(), -1, true);
    def(52, "caload", "b", null, BasicType.getTInt(), -1, true);
    def(53, "saload", "b", null, BasicType.getTInt(), -1, true);
    def(54, "istore", "bi", "wbii", BasicType.getTVoid(), -1, false);
    def(55, "lstore", "bi", "wbii", BasicType.getTVoid(), -2, false);
    def(56, "fstore", "bi", "wbii", BasicType.getTVoid(), -1, false);
    def(57, "dstore", "bi", "wbii", BasicType.getTVoid(), -2, false);
    def(58, "astore", "bi", "wbii", BasicType.getTVoid(), -1, false);
    def(59, "istore_0", "b", null, BasicType.getTVoid(), -1, false);
    def(60, "istore_1", "b", null, BasicType.getTVoid(), -1, false);
    def(61, "istore_2", "b", null, BasicType.getTVoid(), -1, false);
    def(62, "istore_3", "b", null, BasicType.getTVoid(), -1, false);
    def(63, "lstore_0", "b", null, BasicType.getTVoid(), -2, false);
    def(64, "lstore_1", "b", null, BasicType.getTVoid(), -2, false);
    def(65, "lstore_2", "b", null, BasicType.getTVoid(), -2, false);
    def(66, "lstore_3", "b", null, BasicType.getTVoid(), -2, false);
    def(67, "fstore_0", "b", null, BasicType.getTVoid(), -1, false);
    def(68, "fstore_1", "b", null, BasicType.getTVoid(), -1, false);
    def(69, "fstore_2", "b", null, BasicType.getTVoid(), -1, false);
    def(70, "fstore_3", "b", null, BasicType.getTVoid(), -1, false);
    def(71, "dstore_0", "b", null, BasicType.getTVoid(), -2, false);
    def(72, "dstore_1", "b", null, BasicType.getTVoid(), -2, false);
    def(73, "dstore_2", "b", null, BasicType.getTVoid(), -2, false);
    def(74, "dstore_3", "b", null, BasicType.getTVoid(), -2, false);
    def(75, "astore_0", "b", null, BasicType.getTVoid(), -1, false);
    def(76, "astore_1", "b", null, BasicType.getTVoid(), -1, false);
    def(77, "astore_2", "b", null, BasicType.getTVoid(), -1, false);
    def(78, "astore_3", "b", null, BasicType.getTVoid(), -1, false);
    def(79, "iastore", "b", null, BasicType.getTVoid(), -3, true);
    def(80, "lastore", "b", null, BasicType.getTVoid(), -4, true);
    def(81, "fastore", "b", null, BasicType.getTVoid(), -3, true);
    def(82, "dastore", "b", null, BasicType.getTVoid(), -4, true);
    def(83, "aastore", "b", null, BasicType.getTVoid(), -3, true);
    def(84, "bastore", "b", null, BasicType.getTVoid(), -3, true);
    def(85, "castore", "b", null, BasicType.getTVoid(), -3, true);
    def(86, "sastore", "b", null, BasicType.getTVoid(), -3, true);
    def(87, "pop", "b", null, BasicType.getTVoid(), -1, false);
    def(88, "pop2", "b", null, BasicType.getTVoid(), -2, false);
    def(89, "dup", "b", null, BasicType.getTVoid(), 1, false);
    def(90, "dup_x1", "b", null, BasicType.getTVoid(), 1, false);
    def(91, "dup_x2", "b", null, BasicType.getTVoid(), 1, false);
    def(92, "dup2", "b", null, BasicType.getTVoid(), 2, false);
    def(93, "dup2_x1", "b", null, BasicType.getTVoid(), 2, false);
    def(94, "dup2_x2", "b", null, BasicType.getTVoid(), 2, false);
    def(95, "swap", "b", null, BasicType.getTVoid(), 0, false);
    def(96, "iadd", "b", null, BasicType.getTInt(), -1, false);
    def(97, "ladd", "b", null, BasicType.getTLong(), -2, false);
    def(98, "fadd", "b", null, BasicType.getTFloat(), -1, false);
    def(99, "dadd", "b", null, BasicType.getTDouble(), -2, false);
    def(100, "isub", "b", null, BasicType.getTInt(), -1, false);
    def(101, "lsub", "b", null, BasicType.getTLong(), -2, false);
    def(102, "fsub", "b", null, BasicType.getTFloat(), -1, false);
    def(103, "dsub", "b", null, BasicType.getTDouble(), -2, false);
    def(104, "imul", "b", null, BasicType.getTInt(), -1, false);
    def(105, "lmul", "b", null, BasicType.getTLong(), -2, false);
    def(106, "fmul", "b", null, BasicType.getTFloat(), -1, false);
    def(107, "dmul", "b", null, BasicType.getTDouble(), -2, false);
    def(108, "idiv", "b", null, BasicType.getTInt(), -1, true);
    def(109, "ldiv", "b", null, BasicType.getTLong(), -2, true);
    def(110, "fdiv", "b", null, BasicType.getTFloat(), -1, false);
    def(111, "ddiv", "b", null, BasicType.getTDouble(), -2, false);
    def(112, "irem", "b", null, BasicType.getTInt(), -1, true);
    def(113, "lrem", "b", null, BasicType.getTLong(), -2, true);
    def(114, "frem", "b", null, BasicType.getTFloat(), -1, false);
    def(115, "drem", "b", null, BasicType.getTDouble(), -2, false);
    def(116, "ineg", "b", null, BasicType.getTInt(), 0, false);
    def(117, "lneg", "b", null, BasicType.getTLong(), 0, false);
    def(118, "fneg", "b", null, BasicType.getTFloat(), 0, false);
    def(119, "dneg", "b", null, BasicType.getTDouble(), 0, false);
    def(120, "ishl", "b", null, BasicType.getTInt(), -1, false);
    def(121, "lshl", "b", null, BasicType.getTLong(), -1, false);
    def(122, "ishr", "b", null, BasicType.getTInt(), -1, false);
    def(123, "lshr", "b", null, BasicType.getTLong(), -1, false);
    def(124, "iushr", "b", null, BasicType.getTInt(), -1, false);
    def(125, "lushr", "b", null, BasicType.getTLong(), -1, false);
    def(126, "iand", "b", null, BasicType.getTInt(), -1, false);
    def(127, "land", "b", null, BasicType.getTLong(), -2, false);
    def(128, "ior", "b", null, BasicType.getTInt(), -1, false);
    def(129, "lor", "b", null, BasicType.getTLong(), -2, false);
    def(130, "ixor", "b", null, BasicType.getTInt(), -1, false);
    def(131, "lxor", "b", null, BasicType.getTLong(), -2, false);
    def(132, "iinc", "bic", "wbiicc", BasicType.getTVoid(), 0, false);
    def(133, "i2l", "b", null, BasicType.getTLong(), 1, false);
    def(134, "i2f", "b", null, BasicType.getTFloat(), 0, false);
    def(135, "i2d", "b", null, BasicType.getTDouble(), 1, false);
    def(136, "l2i", "b", null, BasicType.getTInt(), -1, false);
    def(137, "l2f", "b", null, BasicType.getTFloat(), -1, false);
    def(138, "l2d", "b", null, BasicType.getTDouble(), 0, false);
    def(139, "f2i", "b", null, BasicType.getTInt(), 0, false);
    def(140, "f2l", "b", null, BasicType.getTLong(), 1, false);
    def(141, "f2d", "b", null, BasicType.getTDouble(), 1, false);
    def(142, "d2i", "b", null, BasicType.getTInt(), -1, false);
    def(143, "d2l", "b", null, BasicType.getTLong(), 0, false);
    def(144, "d2f", "b", null, BasicType.getTFloat(), -1, false);
    def(145, "i2b", "b", null, BasicType.getTByte(), 0, false);
    def(146, "i2c", "b", null, BasicType.getTChar(), 0, false);
    def(147, "i2s", "b", null, BasicType.getTShort(), 0, false);
    def(148, "lcmp", "b", null, BasicType.getTVoid(), -3, false);
    def(149, "fcmpl", "b", null, BasicType.getTVoid(), -1, false);
    def(150, "fcmpg", "b", null, BasicType.getTVoid(), -1, false);
    def(151, "dcmpl", "b", null, BasicType.getTVoid(), -3, false);
    def(152, "dcmpg", "b", null, BasicType.getTVoid(), -3, false);
    def(153, "ifeq", "boo", null, BasicType.getTVoid(), -1, false);
    def(154, "ifne", "boo", null, BasicType.getTVoid(), -1, false);
    def(155, "iflt", "boo", null, BasicType.getTVoid(), -1, false);
    def(156, "ifge", "boo", null, BasicType.getTVoid(), -1, false);
    def(157, "ifgt", "boo", null, BasicType.getTVoid(), -1, false);
    def(158, "ifle", "boo", null, BasicType.getTVoid(), -1, false);
    def(159, "if_icmpeq", "boo", null, BasicType.getTVoid(), -2, false);
    def(160, "if_icmpne", "boo", null, BasicType.getTVoid(), -2, false);
    def(161, "if_icmplt", "boo", null, BasicType.getTVoid(), -2, false);
    def(162, "if_icmpge", "boo", null, BasicType.getTVoid(), -2, false);
    def(163, "if_icmpgt", "boo", null, BasicType.getTVoid(), -2, false);
    def(164, "if_icmple", "boo", null, BasicType.getTVoid(), -2, false);
    def(165, "if_acmpeq", "boo", null, BasicType.getTVoid(), -2, false);
    def(166, "if_acmpne", "boo", null, BasicType.getTVoid(), -2, false);
    def(167, "goto", "boo", null, BasicType.getTVoid(), 0, false);
    def(168, "jsr", "boo", null, BasicType.getTInt(), 0, false);
    def(169, "ret", "bi", "wbii", BasicType.getTVoid(), 0, false);
    def(170, "tableswitch", "", null, BasicType.getTVoid(), -1, false);
    def(171, "lookupswitch", "", null, BasicType.getTVoid(), -1, false);
    def(172, "ireturn", "b", null, BasicType.getTInt(), -1, true);
    def(173, "lreturn", "b", null, BasicType.getTLong(), -2, true);
    def(174, "freturn", "b", null, BasicType.getTFloat(), -1, true);
    def(175, "dreturn", "b", null, BasicType.getTDouble(), -2, true);
    def(176, "areturn", "b", null, BasicType.getTObject(), -1, true);
    def(177, "return", "b", null, BasicType.getTVoid(), 0, true);
    def(178, "getstatic", "bJJ", null, BasicType.getTIllegal(), 1, true);
    def(179, "putstatic", "bJJ", null, BasicType.getTIllegal(), -1, true);
    def(180, "getfield", "bJJ", null, BasicType.getTIllegal(), 0, true);
    def(181, "putfield", "bJJ", null, BasicType.getTIllegal(), -2, true);
    def(182, "invokevirtual", "bJJ", null, BasicType.getTIllegal(), -1, true);
    def(183, "invokespecial", "bJJ", null, BasicType.getTIllegal(), -1, true);
    def(184, "invokestatic", "bJJ", null, BasicType.getTIllegal(), 0, true);
    def(185, "invokeinterface", "bJJ__", null, BasicType.getTIllegal(), -1, true);
    def(186, "invokedynamic", "bJJJJ", null, BasicType.getTIllegal(), -1, true);
    def(187, "new", "bkk", null, BasicType.getTObject(), 1, true);
    def(188, "newarray", "bc", null, BasicType.getTObject(), 0, true);
    def(189, "anewarray", "bkk", null, BasicType.getTObject(), 0, true);
    def(190, "arraylength", "b", null, BasicType.getTVoid(), 0, true);
    def(191, "athrow", "b", null, BasicType.getTVoid(), -1, true);
    def(192, "checkcast", "bkk", null, BasicType.getTObject(), 0, true);
    def(193, "instanceof", "bkk", null, BasicType.getTInt(), 0, true);
    def(194, "monitorenter", "b", null, BasicType.getTVoid(), -1, true);
    def(195, "monitorexit", "b", null, BasicType.getTVoid(), -1, true);
    def(196, "wide", "", null, BasicType.getTVoid(), 0, false);
    def(197, "multianewarray", "bkkc", null, BasicType.getTObject(), 1, true);
    def(198, "ifnull", "boo", null, BasicType.getTVoid(), -1, false);
    def(199, "ifnonnull", "boo", null, BasicType.getTVoid(), -1, false);
    def(200, "goto_w", "boooo", null, BasicType.getTVoid(), 0, false);
    def(201, "jsr_w", "boooo", null, BasicType.getTInt(), 0, false);
    def(202, "breakpoint", "", null, BasicType.getTVoid(), 0, true);
    
    def(203, "fast_agetfield", "bJJ", null, BasicType.getTObject(), 0, true, 180);
    def(204, "fast_bgetfield", "bJJ", null, BasicType.getTInt(), 0, true, 180);
    def(205, "fast_cgetfield", "bJJ", null, BasicType.getTChar(), 0, true, 180);
    def(206, "fast_dgetfield", "bJJ", null, BasicType.getTDouble(), 0, true, 180);
    def(207, "fast_fgetfield", "bJJ", null, BasicType.getTFloat(), 0, true, 180);
    def(208, "fast_igetfield", "bJJ", null, BasicType.getTInt(), 0, true, 180);
    def(209, "fast_lgetfield", "bJJ", null, BasicType.getTLong(), 0, true, 180);
    def(210, "fast_sgetfield", "bJJ", null, BasicType.getTShort(), 0, true, 180);
    
    def(211, "fast_aputfield", "bJJ", null, BasicType.getTObject(), 0, true, 181);
    def(212, "fast_bputfield", "bJJ", null, BasicType.getTInt(), 0, true, 181);
    def(213, "fast_cputfield", "bJJ", null, BasicType.getTChar(), 0, true, 181);
    def(214, "fast_dputfield", "bJJ", null, BasicType.getTDouble(), 0, true, 181);
    def(215, "fast_fputfield", "bJJ", null, BasicType.getTFloat(), 0, true, 181);
    def(216, "fast_iputfield", "bJJ", null, BasicType.getTInt(), 0, true, 181);
    def(217, "fast_lputfield", "bJJ", null, BasicType.getTLong(), 0, true, 181);
    def(218, "fast_sputfield", "bJJ", null, BasicType.getTShort(), 0, true, 181);
    
    def(219, "fast_aload_0", "b", null, BasicType.getTObject(), 1, true, 42);
    def(220, "fast_iaccess_0", "b_JJ", null, BasicType.getTInt(), 1, true, 42);
    def(221, "fast_aaccess_0", "b_JJ", null, BasicType.getTObject(), 1, true, 42);
    def(222, "fast_faccess_0", "b_JJ", null, BasicType.getTObject(), 1, true, 42);
    
    def(223, "fast_iload", "bi", null, BasicType.getTInt(), 1, false, 21);
    def(224, "fast_iload2", "bi_i", null, BasicType.getTInt(), 2, false, 21);
    def(225, "fast_icaload", "bi_", null, BasicType.getTInt(), 0, false, 21);
    
    def(226, "fast_invokevfinal", "bJJ", null, BasicType.getTIllegal(), -1, true, 182);
    
    def(227, "fast_linearswitch", "", null, BasicType.getTVoid(), -1, false, 171);
    def(228, "fast_binaryswitch", "", null, BasicType.getTVoid(), -1, false, 171);
    
    def(231, "return_register_finalizer", "b", null, BasicType.getTVoid(), 0, true, 177);
    
    def(229, "fast_aldc", "bj", null, BasicType.getTObject(), 1, true, 18);
    def(230, "fast_aldc_w", "bJJ", null, BasicType.getTObject(), 1, true, 19);
    
    def(232, "_shouldnotreachhere", "b", null, BasicType.getTVoid(), 0, false);
    if (Assert.ASSERTS_ENABLED) {
      for (int i = 0; i < 233; i++) {
        if (isDefined(i))
        {
          int j = javaCode(i);
          if ((canTrap(i)) && (!canTrap(j))) {
            Assert.that(false, name(i) + " can trap => " + name(j) + " can trap, too");
          }
        }
      }
    }
  }
  
  private static void def(int code, String name, String format, String wide_format, int result_type, int depth, boolean can_trap)
  {
    def(code, name, format, wide_format, result_type, depth, can_trap, code);
  }
  
  private static void def(int code, String name, String format, String wide_format, int result_type, int depth, boolean can_trap, int java_code)
  {
    if (Assert.ASSERTS_ENABLED) {
      Assert.that((wide_format == null) || (format != null), "short form must exist if there's a wide form");
    }
    _name[code] = name;
    _format[code] = format;
    _wide_format[code] = wide_format;
    _result_type[code] = result_type;
    _depth[code] = ((byte)depth);
    _can_trap[code] = can_trap;
    _length[code] = ((byte)(format != null ? format.length() : 0));
    _java_code[code] = java_code;
    if (java_code != code) {
      _can_rewrite[java_code] = true;
    } else {
      _can_rewrite[java_code] = false;
    }
  }
}

/* Location:
 * Qualified Name:     sun.jvm.hotspot.interpreter.Bytecodes
 * Java Class Version: 1.4 (48.0)
 * JD-Core Version:    0.7.1
 */
package sun.jvm.hotspot.interpreter;

import sun.jvm.hotspot.oops.Method;
import sun.jvm.hotspot.utilities.Assert;

public class BytecodeSipush
  extends Bytecode
{
  BytecodeSipush(Method method, int bci)
  {
    super(method, bci);
  }
  
  public short getValue()
  {
    return javaShortAt(1);
  }
  
  public void verify()
  {
    if (Assert.ASSERTS_ENABLED) {
      Assert.that(isValid(), "check sipush");
    }
  }
  
  public boolean isValid()
  {
    return javaCode() == 17;
  }
  
  public static BytecodeSipush at(Method method, int bci)
  {
    BytecodeSipush b = new BytecodeSipush(method, bci);
    if (Assert.ASSERTS_ENABLED) {
      b.verify();
    }
    return b;
  }
  
  public static BytecodeSipush atCheck(Method method, int bci)
  {
    BytecodeSipush b = new BytecodeSipush(method, bci);
    return b.isValid() ? b : null;
  }
  
  public static BytecodeSipush at(BytecodeStream bcs)
  {
    return new BytecodeSipush(bcs.method(), bcs.bci());
  }
  
  public String toString()
  {
    StringBuffer buf = new StringBuffer();
    buf.append("sipush");
    buf.append(" ");
    buf.append(Short.toString(getValue()));
    return buf.toString();
  }
}

/* Location:
 * Qualified Name:     sun.jvm.hotspot.interpreter.BytecodeSipush
 * Java Class Version: 1.4 (48.0)
 * JD-Core Version:    0.7.1
 */
package sun.jvm.hotspot.interpreter;

import sun.jvm.hotspot.oops.Method;
import sun.jvm.hotspot.utilities.Assert;

public class BytecodeStore
  extends BytecodeLoadStore
{
  BytecodeStore(Method method, int bci)
  {
    super(method, bci);
  }
  
  public void verify()
  {
    if (Assert.ASSERTS_ENABLED) {
      Assert.that(isValid(), "check store");
    }
  }
  
  public boolean isValid()
  {
    int jcode = javaCode();
    switch (jcode)
    {
    case 54: 
    case 55: 
    case 56: 
    case 57: 
    case 58: 
      return true;
    }
    return false;
  }
  
  public static BytecodeStore at(Method method, int bci)
  {
    BytecodeStore b = new BytecodeStore(method, bci);
    if (Assert.ASSERTS_ENABLED) {
      b.verify();
    }
    return b;
  }
  
  public static BytecodeStore atCheck(Method method, int bci)
  {
    BytecodeStore b = new BytecodeStore(method, bci);
    return b.isValid() ? b : null;
  }
  
  public static BytecodeStore at(BytecodeStream bcs)
  {
    return new BytecodeStore(bcs.method(), bcs.bci());
  }
}

/* Location:
 * Qualified Name:     sun.jvm.hotspot.interpreter.BytecodeStore
 * Java Class Version: 1.4 (48.0)
 * JD-Core Version:    0.7.1
 */
package sun.jvm.hotspot.interpreter;

import sun.jvm.hotspot.oops.Method;
import sun.jvm.hotspot.utilities.Assert;
import sun.jvm.hotspot.utilities.AssertionFailure;

public class BytecodeStream
{
  private Method _method;
  private int _bci;
  private int _next_bci;
  private int _end_bci;
  private int _code;
  private boolean _is_wide;
  
  public BytecodeStream(Method method)
  {
    _method = method;
    setInterval(0, (int)method.getCodeSize());
  }
  
  public void setInterval(int beg_bci, int end_bci)
  {
    if (Assert.ASSERTS_ENABLED)
    {
      Assert.that((0 <= beg_bci) && (beg_bci <= _method.getCodeSize()), "illegal beg_bci");
      Assert.that((0 <= end_bci) && (end_bci <= _method.getCodeSize()), "illegal end_bci");
    }
    _bci = beg_bci;
    _next_bci = beg_bci;
    _end_bci = end_bci;
  }
  
  public void setStart(int beg_bci)
  {
    setInterval(beg_bci, (int)_method.getCodeSize());
  }
  
  public int next()
  {
    _bci = _next_bci;
    int code;
    int code;
    if (isLastBytecode())
    {
      code = -1;
    }
    else
    {
      int rawCode = Bytecodes.codeAt(_method, _bci);
      code = 0;
      try
      {
        code = Bytecodes.javaCode(rawCode);
      }
      catch (AssertionFailure e)
      {
        e.printStackTrace();
        Assert.that(false, "Failure occurred at bci " + _bci + " in method " + _method.externalNameAndSignature());
      }
      int l = Bytecodes.lengthFor(code);
      if (l == 0) {
        l = Bytecodes.lengthAt(_method, _bci);
      }
      _next_bci += l;
      if (Assert.ASSERTS_ENABLED) {
        Assert.that(_bci < _next_bci, "length must be > 0");
      }
      _is_wide = false;
      if (code == 196)
      {
        code = _method.getBytecodeOrBPAt(_bci + 1);
        _is_wide = true;
      }
      if (Assert.ASSERTS_ENABLED) {
        Assert.that(Bytecodes.isJavaCode(code), "sanity check");
      }
    }
    _code = code;
    return _code;
  }
  
  public Method method()
  {
    return _method;
  }
  
  public int bci()
  {
    return _bci;
  }
  
  public int nextBCI()
  {
    return _next_bci;
  }
  
  public int endBCI()
  {
    return _end_bci;
  }
  
  public int code()
  {
    return _code;
  }
  
  public boolean isWide()
  {
    return _is_wide;
  }
  
  public boolean isActiveBreakpoint()
  {
    return Bytecodes.isActiveBreakpointAt(_method, _bci);
  }
  
  public boolean isLastBytecode()
  {
    return _next_bci >= _end_bci;
  }
  
  public void setNextBCI(int bci)
  {
    if (Assert.ASSERTS_ENABLED) {
      Assert.that((0 <= bci) && (bci <= _method.getCodeSize()), "illegal bci");
    }
    _next_bci = bci;
  }
  
  public int dest()
  {
    return bci() + _method.getBytecodeShortArg(bci() + 1);
  }
  
  public int dest_w()
  {
    return bci() + _method.getBytecodeIntArg(bci() + 1);
  }
  
  public int getIndex()
  {
    return isWide() ? _method.getBytecodeShortArg(bci() + 2) & 0xFFFF : _method.getBytecodeOrBPAt(bci() + 1) & 0xFF;
  }
  
  public int getIndexBig()
  {
    return _method.getBytecodeShortArg(bci() + 1);
  }
  
  public int codeAt(int bci)
  {
    return _method.getBytecodeOrBPAt(bci);
  }
}

/* Location:
 * Qualified Name:     sun.jvm.hotspot.interpreter.BytecodeStream
 * Java Class Version: 1.4 (48.0)
 * JD-Core Version:    0.7.1
 */
package sun.jvm.hotspot.interpreter;

import sun.jvm.hotspot.oops.Method;
import sun.jvm.hotspot.utilities.Assert;

public class BytecodeTableswitch
  extends Bytecode
{
  BytecodeTableswitch(Method method, int bci)
  {
    super(method, bci);
  }
  
  public int defaultOffset()
  {
    return javaSignedWordAt(alignedOffset(1));
  }
  
  public int lowKey()
  {
    return javaSignedWordAt(alignedOffset(5));
  }
  
  public int highKey()
  {
    return javaSignedWordAt(alignedOffset(9));
  }
  
  public int length()
  {
    return highKey() - lowKey() + 1;
  }
  
  public int destOffsetAt(int i)
  {
    int x2 = alignedOffset(1 + (3 + i) * 4);
    int val = javaSignedWordAt(x2);
    return javaSignedWordAt(alignedOffset(1 + (3 + i) * 4));
  }
  
  public void verify()
  {
    if (Assert.ASSERTS_ENABLED) {
      Assert.that(isValid(), "check tableswitch");
    }
  }
  
  public boolean isValid()
  {
    boolean result = javaCode() == 170;
    if (!result) {
      return false;
    }
    int lo = lowKey();
    int hi = highKey();
    if (hi < lo) {
      return false;
    }
    int i = hi - lo - 1;
    while (i-- > 0) {}
    return true;
  }
  
  public static BytecodeTableswitch at(Method method, int bci)
  {
    BytecodeTableswitch b = new BytecodeTableswitch(method, bci);
    if (Assert.ASSERTS_ENABLED) {
      b.verify();
    }
    return b;
  }
  
  public static BytecodeTableswitch atCheck(Method method, int bci)
  {
    BytecodeTableswitch b = new BytecodeTableswitch(method, bci);
    return b.isValid() ? b : null;
  }
  
  public static BytecodeTableswitch at(BytecodeStream bcs)
  {
    return new BytecodeTableswitch(bcs.method(), bcs.bci());
  }
  
  public String toString()
  {
    StringBuffer buf = new StringBuffer();
    buf.append(
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114

Further reading...

For more information on Java 1.5 Tiger, you may find Java 1.5 Tiger, A developer's Notebook by D. Flanagan and B. McLaughlin from O'Reilly of interest.

New!JAR listings


Copyright 2006-2019. Infinite Loop Ltd