25 #ifndef SHARE_VM_OOPS_OOP_INLINE_HPP
26 #define SHARE_VM_OOPS_OOP_INLINE_HPP
27
28 #include "gc_implementation/shared/ageTable.hpp"
29 #include "gc_implementation/shared/markSweep.inline.hpp"
30 #include "gc_interface/collectedHeap.inline.hpp"
31 #include "memory/barrierSet.inline.hpp"
32 #include "memory/cardTableModRefBS.hpp"
33 #include "memory/genCollectedHeap.hpp"
34 #include "memory/generation.hpp"
35 #include "memory/specialized_oop_closures.hpp"
36 #include "oops/arrayKlass.hpp"
37 #include "oops/arrayOop.hpp"
38 #include "oops/klass.inline.hpp"
39 #include "oops/markOop.inline.hpp"
40 #include "oops/oop.hpp"
41 #include "runtime/atomic.inline.hpp"
42 #include "runtime/orderAccess.inline.hpp"
43 #include "runtime/os.hpp"
44 #include "utilities/macros.hpp"
45 #ifdef TARGET_ARCH_x86
46 # include "bytes_x86.hpp"
47 #endif
48 #ifdef TARGET_ARCH_sparc
49 # include "bytes_sparc.hpp"
50 #endif
51 #ifdef TARGET_ARCH_zero
52 # include "bytes_zero.hpp"
53 #endif
54 #ifdef TARGET_ARCH_arm
55 # include "bytes_arm.hpp"
56 #endif
57 #ifdef TARGET_ARCH_ppc
58 # include "bytes_ppc.hpp"
59 #endif
60
61 // Implementation of all inlined member functions defined in oop.hpp
62 // We need a separate file to avoid circular references
63
64 inline void oopDesc::release_set_mark(markOop m) {
65 OrderAccess::release_store_ptr(&_mark, m);
66 }
67
68 inline markOop oopDesc::cas_set_mark(markOop new_mark, markOop old_mark) {
69 return (markOop) Atomic::cmpxchg_ptr(new_mark, &_mark, old_mark);
70 }
71
72 inline Klass* oopDesc::klass() const {
73 if (UseCompressedClassPointers) {
74 return Klass::decode_klass_not_null(_metadata._compressed_klass);
75 } else {
76 return _metadata._klass;
77 }
78 }
79
|
25 #ifndef SHARE_VM_OOPS_OOP_INLINE_HPP
26 #define SHARE_VM_OOPS_OOP_INLINE_HPP
27
28 #include "gc_implementation/shared/ageTable.hpp"
29 #include "gc_implementation/shared/markSweep.inline.hpp"
30 #include "gc_interface/collectedHeap.inline.hpp"
31 #include "memory/barrierSet.inline.hpp"
32 #include "memory/cardTableModRefBS.hpp"
33 #include "memory/genCollectedHeap.hpp"
34 #include "memory/generation.hpp"
35 #include "memory/specialized_oop_closures.hpp"
36 #include "oops/arrayKlass.hpp"
37 #include "oops/arrayOop.hpp"
38 #include "oops/klass.inline.hpp"
39 #include "oops/markOop.inline.hpp"
40 #include "oops/oop.hpp"
41 #include "runtime/atomic.inline.hpp"
42 #include "runtime/orderAccess.inline.hpp"
43 #include "runtime/os.hpp"
44 #include "utilities/macros.hpp"
45
46 // Implementation of all inlined member functions defined in oop.hpp
47 // We need a separate file to avoid circular references
48
49 inline void oopDesc::release_set_mark(markOop m) {
50 OrderAccess::release_store_ptr(&_mark, m);
51 }
52
53 inline markOop oopDesc::cas_set_mark(markOop new_mark, markOop old_mark) {
54 return (markOop) Atomic::cmpxchg_ptr(new_mark, &_mark, old_mark);
55 }
56
57 inline Klass* oopDesc::klass() const {
58 if (UseCompressedClassPointers) {
59 return Klass::decode_klass_not_null(_metadata._compressed_klass);
60 } else {
61 return _metadata._klass;
62 }
63 }
64
|