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; |