hotspot/src/share/vm/runtime/objectMonitor.hpp
changeset 27608 80d91e264baf
parent 27165 785a8d56024c
child 27880 afb974a04396
equal deleted inserted replaced
27479:389ec536ece9 27608:80d91e264baf
   226   static int FreeNext_offset_in_bytes()    { return offset_of(ObjectMonitor, FreeNext); }
   226   static int FreeNext_offset_in_bytes()    { return offset_of(ObjectMonitor, FreeNext); }
   227   static int WaitSet_offset_in_bytes()     { return offset_of(ObjectMonitor, _WaitSet); }
   227   static int WaitSet_offset_in_bytes()     { return offset_of(ObjectMonitor, _WaitSet); }
   228   static int Responsible_offset_in_bytes() { return offset_of(ObjectMonitor, _Responsible); }
   228   static int Responsible_offset_in_bytes() { return offset_of(ObjectMonitor, _Responsible); }
   229   static int Spinner_offset_in_bytes()     { return offset_of(ObjectMonitor, _Spinner); }
   229   static int Spinner_offset_in_bytes()     { return offset_of(ObjectMonitor, _Spinner); }
   230 
   230 
       
   231   // ObjectMonitor references can be ORed with markOopDesc::monitor_value
       
   232   // as part of the ObjectMonitor tagging mechanism. When we combine an
       
   233   // ObjectMonitor reference with an offset, we need to remove the tag
       
   234   // value in order to generate the proper address.
       
   235   //
       
   236   // We can either adjust the ObjectMonitor reference and then add the
       
   237   // offset or we can adjust the offset that is added to the ObjectMonitor
       
   238   // reference. The latter avoids an AGI (Address Generation Interlock)
       
   239   // stall so the helper macro adjusts the offset value that is returned
       
   240   // to the ObjectMonitor reference manipulation code:
       
   241   //
       
   242   #define OM_OFFSET_NO_MONITOR_VALUE_TAG(f) \
       
   243     ((ObjectMonitor::f ## _offset_in_bytes()) - markOopDesc::monitor_value)
       
   244 
   231   // Eventually we'll make provisions for multiple callbacks, but
   245   // Eventually we'll make provisions for multiple callbacks, but
   232   // now one will suffice.
   246   // now one will suffice.
   233   static int (*SpinCallbackFunction)(intptr_t, int);
   247   static int (*SpinCallbackFunction)(intptr_t, int);
   234   static intptr_t SpinCallbackArgument;
   248   static intptr_t SpinCallbackArgument;
   235 
   249