24 |
24 |
25 #ifndef SHARE_RUNTIME_BASICLOCK_HPP |
25 #ifndef SHARE_RUNTIME_BASICLOCK_HPP |
26 #define SHARE_RUNTIME_BASICLOCK_HPP |
26 #define SHARE_RUNTIME_BASICLOCK_HPP |
27 |
27 |
28 #include "oops/markOop.hpp" |
28 #include "oops/markOop.hpp" |
|
29 #include "runtime/atomic.hpp" |
29 #include "runtime/handles.hpp" |
30 #include "runtime/handles.hpp" |
30 |
31 |
31 class BasicLock { |
32 class BasicLock { |
32 friend class VMStructs; |
33 friend class VMStructs; |
33 friend class JVMCIVMStructs; |
34 friend class JVMCIVMStructs; |
34 private: |
35 private: |
35 volatile markOop _displaced_header; |
36 volatile markWord _displaced_header; |
36 public: |
37 public: |
37 markOop displaced_header() const { return _displaced_header; } |
38 markWord displaced_header() const { |
38 void set_displaced_header(markOop header) { _displaced_header = header; } |
39 return Atomic::load(&_displaced_header); |
|
40 } |
|
41 |
|
42 void set_displaced_header(markWord header) { |
|
43 Atomic::store(header, &_displaced_header); |
|
44 } |
39 |
45 |
40 void print_on(outputStream* st) const; |
46 void print_on(outputStream* st) const; |
41 |
47 |
42 // move a basic lock (used during deoptimization |
48 // move a basic lock (used during deoptimization |
43 void move_to(oop obj, BasicLock* dest); |
49 void move_to(oop obj, BasicLock* dest); |