hotspot/src/share/vm/runtime/vframe.hpp
changeset 3171 aa289b22b577
parent 670 ddf3e9583f2f
child 3600 27aa4477d039
child 3261 c7d5aae8d3f7
equal deleted inserted replaced
2880:c2974244a496 3171:aa289b22b577
   228 // 2) the monitor lock
   228 // 2) the monitor lock
   229 class MonitorInfo : public ResourceObj {
   229 class MonitorInfo : public ResourceObj {
   230  private:
   230  private:
   231   oop        _owner; // the object owning the monitor
   231   oop        _owner; // the object owning the monitor
   232   BasicLock* _lock;
   232   BasicLock* _lock;
       
   233   oop        _owner_klass; // klass if owner was scalar replaced
   233   bool       _eliminated;
   234   bool       _eliminated;
       
   235   bool       _owner_is_scalar_replaced;
   234  public:
   236  public:
   235   // Constructor
   237   // Constructor
   236   MonitorInfo(oop owner, BasicLock* lock, bool eliminated) {
   238   MonitorInfo(oop owner, BasicLock* lock, bool eliminated, bool owner_is_scalar_replaced) {
   237     _owner = owner;
   239     if (!owner_is_scalar_replaced) {
       
   240       _owner = owner;
       
   241       _owner_klass = NULL;
       
   242     } else {
       
   243       assert(eliminated, "monitor should be eliminated for scalar replaced object");
       
   244       _owner = NULL;
       
   245       _owner_klass = owner;
       
   246     }
   238     _lock  = lock;
   247     _lock  = lock;
   239     _eliminated = eliminated;
   248     _eliminated = eliminated;
       
   249     _owner_is_scalar_replaced = owner_is_scalar_replaced;
   240   }
   250   }
   241   // Accessors
   251   // Accessors
   242   oop        owner() const { return _owner; }
   252   oop        owner() const {
       
   253     assert(!_owner_is_scalar_replaced, "should not be called for scalar replaced object");
       
   254     return _owner;
       
   255   }
       
   256   klassOop   owner_klass() const {
       
   257     assert(_owner_is_scalar_replaced, "should not be called for not scalar replaced object");
       
   258     return (klassOop)_owner_klass;
       
   259   }
   243   BasicLock* lock()  const { return _lock;  }
   260   BasicLock* lock()  const { return _lock;  }
   244   bool eliminated()  const { return _eliminated; }
   261   bool eliminated()  const { return _eliminated; }
       
   262   bool owner_is_scalar_replaced()  const { return _owner_is_scalar_replaced; }
   245 };
   263 };
   246 
   264 
   247 class vframeStreamCommon : StackObj {
   265 class vframeStreamCommon : StackObj {
   248  protected:
   266  protected:
   249   // common
   267   // common