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()->resolve_and_maybe_copy_oop(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()->resolve_and_maybe_copy_oop(_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;
|