src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/compiler/OopMapValue.java
changeset 58527 f9cc0141574c
parent 47216 71c04702a3d5
equal deleted inserted replaced
58524:e84d8379815b 58527:f9cc0141574c
    45   static int TYPE_MASK_IN_PLACE;
    45   static int TYPE_MASK_IN_PLACE;
    46   static int REGISTER_MASK;
    46   static int REGISTER_MASK;
    47   static int REGISTER_MASK_IN_PLACE;
    47   static int REGISTER_MASK_IN_PLACE;
    48 
    48 
    49   // Types of OopValues
    49   // Types of OopValues
    50   static int UNUSED_VALUE;
       
    51   static int OOP_VALUE;
    50   static int OOP_VALUE;
    52   static int NARROWOOP_VALUE;
    51   static int NARROWOOP_VALUE;
    53   static int CALLEE_SAVED_VALUE;
    52   static int CALLEE_SAVED_VALUE;
    54   static int DERIVED_OOP_VALUE;
    53   static int DERIVED_OOP_VALUE;
    55 
    54 
    68     REGISTER_SHIFT         = db.lookupIntConstant("OopMapValue::register_shift").intValue();
    67     REGISTER_SHIFT         = db.lookupIntConstant("OopMapValue::register_shift").intValue();
    69     TYPE_MASK              = db.lookupIntConstant("OopMapValue::type_mask").intValue();
    68     TYPE_MASK              = db.lookupIntConstant("OopMapValue::type_mask").intValue();
    70     TYPE_MASK_IN_PLACE     = db.lookupIntConstant("OopMapValue::type_mask_in_place").intValue();
    69     TYPE_MASK_IN_PLACE     = db.lookupIntConstant("OopMapValue::type_mask_in_place").intValue();
    71     REGISTER_MASK          = db.lookupIntConstant("OopMapValue::register_mask").intValue();
    70     REGISTER_MASK          = db.lookupIntConstant("OopMapValue::register_mask").intValue();
    72     REGISTER_MASK_IN_PLACE = db.lookupIntConstant("OopMapValue::register_mask_in_place").intValue();
    71     REGISTER_MASK_IN_PLACE = db.lookupIntConstant("OopMapValue::register_mask_in_place").intValue();
    73     UNUSED_VALUE           = db.lookupIntConstant("OopMapValue::unused_value").intValue();
       
    74     OOP_VALUE              = db.lookupIntConstant("OopMapValue::oop_value").intValue();
    72     OOP_VALUE              = db.lookupIntConstant("OopMapValue::oop_value").intValue();
    75     NARROWOOP_VALUE        = db.lookupIntConstant("OopMapValue::narrowoop_value").intValue();
    73     NARROWOOP_VALUE        = db.lookupIntConstant("OopMapValue::narrowoop_value").intValue();
    76     CALLEE_SAVED_VALUE     = db.lookupIntConstant("OopMapValue::callee_saved_value").intValue();
    74     CALLEE_SAVED_VALUE     = db.lookupIntConstant("OopMapValue::callee_saved_value").intValue();
    77     DERIVED_OOP_VALUE      = db.lookupIntConstant("OopMapValue::derived_oop_value").intValue();
    75     DERIVED_OOP_VALUE      = db.lookupIntConstant("OopMapValue::derived_oop_value").intValue();
    78   }
    76   }
    79 
    77 
    80   public static abstract class OopTypes {
    78   public static abstract class OopTypes {
    81     public static final OopTypes UNUSED_VALUE       = new OopTypes() { int getValue() { return OopMapValue.UNUSED_VALUE;       }};
       
    82     public static final OopTypes OOP_VALUE          = new OopTypes() { int getValue() { return OopMapValue.OOP_VALUE;          }};
    79     public static final OopTypes OOP_VALUE          = new OopTypes() { int getValue() { return OopMapValue.OOP_VALUE;          }};
    83     public static final OopTypes NARROWOOP_VALUE    = new OopTypes() { int getValue() { return OopMapValue.NARROWOOP_VALUE;         }};
    80     public static final OopTypes NARROWOOP_VALUE    = new OopTypes() { int getValue() { return OopMapValue.NARROWOOP_VALUE;         }};
    84     public static final OopTypes CALLEE_SAVED_VALUE = new OopTypes() { int getValue() { return OopMapValue.CALLEE_SAVED_VALUE; }};
    81     public static final OopTypes CALLEE_SAVED_VALUE = new OopTypes() { int getValue() { return OopMapValue.CALLEE_SAVED_VALUE; }};
    85     public static final OopTypes DERIVED_OOP_VALUE  = new OopTypes() { int getValue() { return OopMapValue.DERIVED_OOP_VALUE;  }};
    82     public static final OopTypes DERIVED_OOP_VALUE  = new OopTypes() { int getValue() { return OopMapValue.DERIVED_OOP_VALUE;  }};
    86 
    83 
   109   public VMReg getReg() { return new VMReg((getValue() & REGISTER_MASK_IN_PLACE) >> REGISTER_SHIFT); }
   106   public VMReg getReg() { return new VMReg((getValue() & REGISTER_MASK_IN_PLACE) >> REGISTER_SHIFT); }
   110   public void  setReg(VMReg r) { setValue((short) (r.getValue() << REGISTER_SHIFT | (getValue() & TYPE_MASK_IN_PLACE))); }
   107   public void  setReg(VMReg r) { setValue((short) (r.getValue() << REGISTER_SHIFT | (getValue() & TYPE_MASK_IN_PLACE))); }
   111 
   108 
   112   public OopTypes getType() {
   109   public OopTypes getType() {
   113     int which = (getValue() & TYPE_MASK_IN_PLACE);
   110     int which = (getValue() & TYPE_MASK_IN_PLACE);
   114          if (which == UNUSED_VALUE) return OopTypes.UNUSED_VALUE;
   111          if (which == OOP_VALUE)    return OopTypes.OOP_VALUE;
   115     else if (which == OOP_VALUE)    return OopTypes.OOP_VALUE;
       
   116     else if (which == NARROWOOP_VALUE)   return OopTypes.NARROWOOP_VALUE;
   112     else if (which == NARROWOOP_VALUE)   return OopTypes.NARROWOOP_VALUE;
   117     else if (which == CALLEE_SAVED_VALUE) return OopTypes.CALLEE_SAVED_VALUE;
   113     else if (which == CALLEE_SAVED_VALUE) return OopTypes.CALLEE_SAVED_VALUE;
   118     else if (which == DERIVED_OOP_VALUE)  return OopTypes.DERIVED_OOP_VALUE;
   114     else if (which == DERIVED_OOP_VALUE)  return OopTypes.DERIVED_OOP_VALUE;
   119     else throw new InternalError("unknown which " + which + " (TYPE_MASK_IN_PLACE = " + TYPE_MASK_IN_PLACE + ")");
   115     else throw new InternalError("unknown which " + which + " (TYPE_MASK_IN_PLACE = " + TYPE_MASK_IN_PLACE + ")");
   120   }
   116   }