33 #include "utilities/debug.hpp" |
33 #include "utilities/debug.hpp" |
34 #include "utilities/globalDefinitions.hpp" |
34 #include "utilities/globalDefinitions.hpp" |
35 #include "utilities/macros.hpp" |
35 #include "utilities/macros.hpp" |
36 |
36 |
37 inline Klass* InstanceKlass::array_klasses_acquire() const { |
37 inline Klass* InstanceKlass::array_klasses_acquire() const { |
38 return OrderAccess::load_acquire(&_array_klasses); |
38 return Atomic::load_acquire(&_array_klasses); |
39 } |
39 } |
40 |
40 |
41 inline void InstanceKlass::release_set_array_klasses(Klass* k) { |
41 inline void InstanceKlass::release_set_array_klasses(Klass* k) { |
42 OrderAccess::release_store(&_array_klasses, k); |
42 Atomic::release_store(&_array_klasses, k); |
43 } |
43 } |
44 |
44 |
45 inline jmethodID* InstanceKlass::methods_jmethod_ids_acquire() const { |
45 inline jmethodID* InstanceKlass::methods_jmethod_ids_acquire() const { |
46 return OrderAccess::load_acquire(&_methods_jmethod_ids); |
46 return Atomic::load_acquire(&_methods_jmethod_ids); |
47 } |
47 } |
48 |
48 |
49 inline void InstanceKlass::release_set_methods_jmethod_ids(jmethodID* jmeths) { |
49 inline void InstanceKlass::release_set_methods_jmethod_ids(jmethodID* jmeths) { |
50 OrderAccess::release_store(&_methods_jmethod_ids, jmeths); |
50 Atomic::release_store(&_methods_jmethod_ids, jmeths); |
51 } |
51 } |
52 |
52 |
53 // The iteration over the oops in objects is a hot path in the GC code. |
53 // The iteration over the oops in objects is a hot path in the GC code. |
54 // By force inlining the following functions, we get similar GC performance |
54 // By force inlining the following functions, we get similar GC performance |
55 // as the previous macro based implementation. |
55 // as the previous macro based implementation. |