< prev index next >

src/hotspot/share/runtime/basicLock.hpp

Print this page




  23  */
  24 
  25 #ifndef SHARE_RUNTIME_BASICLOCK_HPP
  26 #define SHARE_RUNTIME_BASICLOCK_HPP
  27 
  28 #include "oops/markWord.hpp"
  29 #include "runtime/atomic.hpp"
  30 #include "runtime/handles.hpp"
  31 
  32 class BasicLock {
  33   friend class VMStructs;
  34   friend class JVMCIVMStructs;
  35  private:
  36   volatile markWord _displaced_header;
  37  public:
  38   markWord displaced_header() const {
  39     return Atomic::load(&_displaced_header);
  40   }
  41 
  42   void set_displaced_header(markWord header) {
  43     Atomic::store(header, &_displaced_header);
  44   }
  45 
  46   void print_on(outputStream* st) const;
  47 
  48   // move a basic lock (used during deoptimization
  49   void move_to(oop obj, BasicLock* dest);
  50 
  51   static int displaced_header_offset_in_bytes()       { return offset_of(BasicLock, _displaced_header); }
  52 };
  53 
  54 // A BasicObjectLock associates a specific Java object with a BasicLock.
  55 // It is currently embedded in an interpreter frame.
  56 
  57 // Because some machines have alignment restrictions on the control stack,
  58 // the actual space allocated by the interpreter may include padding words
  59 // after the end of the BasicObjectLock.  Also, in order to guarantee
  60 // alignment of the embedded BasicLock objects on such machines, we
  61 // put the embedded BasicLock at the beginning of the struct.
  62 
  63 class BasicObjectLock {




  23  */
  24 
  25 #ifndef SHARE_RUNTIME_BASICLOCK_HPP
  26 #define SHARE_RUNTIME_BASICLOCK_HPP
  27 
  28 #include "oops/markWord.hpp"
  29 #include "runtime/atomic.hpp"
  30 #include "runtime/handles.hpp"
  31 
  32 class BasicLock {
  33   friend class VMStructs;
  34   friend class JVMCIVMStructs;
  35  private:
  36   volatile markWord _displaced_header;
  37  public:
  38   markWord displaced_header() const {
  39     return Atomic::load(&_displaced_header);
  40   }
  41 
  42   void set_displaced_header(markWord header) {
  43     Atomic::store(&_displaced_header, header);
  44   }
  45 
  46   void print_on(outputStream* st) const;
  47 
  48   // move a basic lock (used during deoptimization
  49   void move_to(oop obj, BasicLock* dest);
  50 
  51   static int displaced_header_offset_in_bytes()       { return offset_of(BasicLock, _displaced_header); }
  52 };
  53 
  54 // A BasicObjectLock associates a specific Java object with a BasicLock.
  55 // It is currently embedded in an interpreter frame.
  56 
  57 // Because some machines have alignment restrictions on the control stack,
  58 // the actual space allocated by the interpreter may include padding words
  59 // after the end of the BasicObjectLock.  Also, in order to guarantee
  60 // alignment of the embedded BasicLock objects on such machines, we
  61 // put the embedded BasicLock at the beginning of the struct.
  62 
  63 class BasicObjectLock {


< prev index next >