< prev index next >

src/share/vm/runtime/vframe.hpp

Print this page




 233   void print_value() const;
 234   void print();
 235 #endif
 236   friend class vframe;
 237 };
 238 
 239 
 240 // A MonitorInfo is a ResourceObject that describes a the pair:
 241 // 1) the owner of the monitor
 242 // 2) the monitor lock
 243 class MonitorInfo : public ResourceObj {
 244  private:
 245   oop        _owner; // the object owning the monitor
 246   BasicLock* _lock;
 247   oop        _owner_klass; // klass (mirror) if owner was scalar replaced
 248   bool       _eliminated;
 249   bool       _owner_is_scalar_replaced;
 250  public:
 251   // Constructor
 252   MonitorInfo(oop owner, BasicLock* lock, bool eliminated, bool owner_is_scalar_replaced) {

 253     if (!owner_is_scalar_replaced) {
 254       _owner = owner;
 255       _owner_klass = NULL;
 256     } else {
 257       assert(eliminated, "monitor should be eliminated for scalar replaced object");
 258       _owner = NULL;
 259       _owner_klass = owner;
 260     }
 261     _lock  = lock;
 262     _eliminated = eliminated;
 263     _owner_is_scalar_replaced = owner_is_scalar_replaced;
 264   }
 265   // Accessors
 266   oop        owner() const {
 267     assert(!_owner_is_scalar_replaced, "should not be called for scalar replaced object");

 268     return _owner;
 269   }
 270   oop   owner_klass() const {
 271     assert(_owner_is_scalar_replaced, "should not be called for not scalar replaced object");
 272     return _owner_klass;
 273   }
 274   BasicLock* lock()  const { return _lock;  }
 275   bool eliminated()  const { return _eliminated; }
 276   bool owner_is_scalar_replaced()  const { return _owner_is_scalar_replaced; }
 277 };
 278 
 279 class vframeStreamCommon : StackObj {
 280  protected:
 281   // common
 282   frame        _frame;
 283   JavaThread*  _thread;
 284   RegisterMap  _reg_map;
 285   enum { interpreted_mode, compiled_mode, at_end_mode } _mode;
 286 
 287   int _sender_decode_offset;




 233   void print_value() const;
 234   void print();
 235 #endif
 236   friend class vframe;
 237 };
 238 
 239 
 240 // A MonitorInfo is a ResourceObject that describes a the pair:
 241 // 1) the owner of the monitor
 242 // 2) the monitor lock
 243 class MonitorInfo : public ResourceObj {
 244  private:
 245   oop        _owner; // the object owning the monitor
 246   BasicLock* _lock;
 247   oop        _owner_klass; // klass (mirror) if owner was scalar replaced
 248   bool       _eliminated;
 249   bool       _owner_is_scalar_replaced;
 250  public:
 251   // Constructor
 252   MonitorInfo(oop owner, BasicLock* lock, bool eliminated, bool owner_is_scalar_replaced) {
 253     assert(owner == oopDesc::bs()->write_barrier(owner), "expect to-space copy");
 254     if (!owner_is_scalar_replaced) {
 255       _owner = owner;
 256       _owner_klass = NULL;
 257     } else {
 258       assert(eliminated, "monitor should be eliminated for scalar replaced object");
 259       _owner = NULL;
 260       _owner_klass = owner;
 261     }
 262     _lock  = lock;
 263     _eliminated = eliminated;
 264     _owner_is_scalar_replaced = owner_is_scalar_replaced;
 265   }
 266   // Accessors
 267   oop        owner() const {
 268     assert(!_owner_is_scalar_replaced, "should not be called for scalar replaced object");
 269     assert(_owner == oopDesc::bs()->write_barrier(_owner), "expect to-space copy");
 270     return _owner;
 271   }
 272   oop   owner_klass() const {
 273     assert(_owner_is_scalar_replaced, "should not be called for not scalar replaced object");
 274     return _owner_klass;
 275   }
 276   BasicLock* lock()  const { return _lock;  }
 277   bool eliminated()  const { return _eliminated; }
 278   bool owner_is_scalar_replaced()  const { return _owner_is_scalar_replaced; }
 279 };
 280 
 281 class vframeStreamCommon : StackObj {
 282  protected:
 283   // common
 284   frame        _frame;
 285   JavaThread*  _thread;
 286   RegisterMap  _reg_map;
 287   enum { interpreted_mode, compiled_mode, at_end_mode } _mode;
 288 
 289   int _sender_decode_offset;


< prev index next >