< prev index next >

src/share/vm/runtime/objectMonitor.inline.hpp

Print this page
rev 8961 : [mq]: diff-shenandoah.patch


  49 }
  50 
  51 inline void* ObjectMonitor::owner() const {
  52   return _owner;
  53 }
  54 
  55 inline void ObjectMonitor::clear() {
  56   assert(_header, "Fatal logic error in ObjectMonitor header!");
  57   assert(_count == 0, "Fatal logic error in ObjectMonitor count!");
  58   assert(_waiters == 0, "Fatal logic error in ObjectMonitor waiters!");
  59   assert(_recursions == 0, "Fatal logic error in ObjectMonitor recursions!");
  60   assert(_object != NULL, "Fatal logic error in ObjectMonitor object!");
  61   assert(_owner == 0, "Fatal logic error in ObjectMonitor owner!");
  62 
  63   _header = NULL;
  64   _object = NULL;
  65 }
  66 
  67 
  68 inline void* ObjectMonitor::object() const {





  69   return _object;
  70 }
  71 
  72 inline void* ObjectMonitor::object_addr() {
  73   return (void *)(&_object);
  74 }
  75 
  76 inline void ObjectMonitor::set_object(void* obj) {
  77   _object = obj;



  78 }
  79 
  80 inline bool ObjectMonitor::check(TRAPS) {
  81   if (THREAD != _owner) {
  82     if (THREAD->is_lock_owned((address) _owner)) {
  83       _owner = THREAD;  // regain ownership of inflated monitor
  84       assert (_recursions == 0, "invariant") ;
  85     } else {
  86       check_slow(THREAD);
  87       return false;
  88     }
  89   }
  90   return true;
  91 }
  92 
  93 
  94 // return number of threads contending for this monitor
  95 inline jint ObjectMonitor::contentions() const {
  96   return _count;
  97 }


  49 }
  50 
  51 inline void* ObjectMonitor::owner() const {
  52   return _owner;
  53 }
  54 
  55 inline void ObjectMonitor::clear() {
  56   assert(_header, "Fatal logic error in ObjectMonitor header!");
  57   assert(_count == 0, "Fatal logic error in ObjectMonitor count!");
  58   assert(_waiters == 0, "Fatal logic error in ObjectMonitor waiters!");
  59   assert(_recursions == 0, "Fatal logic error in ObjectMonitor recursions!");
  60   assert(_object != NULL, "Fatal logic error in ObjectMonitor object!");
  61   assert(_owner == 0, "Fatal logic error in ObjectMonitor owner!");
  62 
  63   _header = NULL;
  64   _object = NULL;
  65 }
  66 
  67 
  68 inline void* ObjectMonitor::object() const {
  69   /*
  70   if (_object != (cast_to_oop<intptr_t>(-1))) {
  71     assert(oop(_object) == oopDesc::bs()->resolve_and_maybe_copy_oop(oop(_object)), "expect to-space copy");
  72   }
  73   */
  74   return _object;
  75 }
  76 
  77 inline void* ObjectMonitor::object_addr() {
  78   return (void *)(&_object);
  79 }
  80 
  81 inline void ObjectMonitor::set_object(void* obj) {
  82   _object = obj;
  83   if (_object != (cast_to_oop<intptr_t>(-1))) {
  84     assert(oop(_object) == oopDesc::bs()->resolve_and_maybe_copy_oop(oop(_object)), "expect to-space copy");
  85   }
  86 }
  87 
  88 inline bool ObjectMonitor::check(TRAPS) {
  89   if (THREAD != _owner) {
  90     if (THREAD->is_lock_owned((address) _owner)) {
  91       _owner = THREAD;  // regain ownership of inflated monitor
  92       assert (_recursions == 0, "invariant") ;
  93     } else {
  94       check_slow(THREAD);
  95       return false;
  96     }
  97   }
  98   return true;
  99 }
 100 
 101 
 102 // return number of threads contending for this monitor
 103 inline jint ObjectMonitor::contentions() const {
 104   return _count;
 105 }
< prev index next >