mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8158854: Ensure release_store is paired with load_acquire in lock-free code
Reviewed-by: shade, dcubed, zgu
This commit is contained in:
parent
56ff858c45
commit
6db26ca5bf
10 changed files with 87 additions and 23 deletions
|
@ -29,10 +29,27 @@
|
|||
#include "oops/instanceKlass.hpp"
|
||||
#include "oops/klass.hpp"
|
||||
#include "oops/oop.inline.hpp"
|
||||
#include "runtime/orderAccess.inline.hpp"
|
||||
#include "utilities/debug.hpp"
|
||||
#include "utilities/globalDefinitions.hpp"
|
||||
#include "utilities/macros.hpp"
|
||||
|
||||
inline Klass* InstanceKlass::array_klasses_acquire() const {
|
||||
return (Klass*) OrderAccess::load_ptr_acquire(&_array_klasses);
|
||||
}
|
||||
|
||||
inline void InstanceKlass::release_set_array_klasses(Klass* k) {
|
||||
OrderAccess::release_store_ptr(&_array_klasses, k);
|
||||
}
|
||||
|
||||
inline jmethodID* InstanceKlass::methods_jmethod_ids_acquire() const {
|
||||
return (jmethodID*)OrderAccess::load_ptr_acquire(&_methods_jmethod_ids);
|
||||
}
|
||||
|
||||
inline void InstanceKlass::release_set_methods_jmethod_ids(jmethodID* jmeths) {
|
||||
OrderAccess::release_store_ptr(&_methods_jmethod_ids, jmeths);
|
||||
}
|
||||
|
||||
// The iteration over the oops in objects is a hot path in the GC code.
|
||||
// By force inlining the following functions, we get similar GC performance
|
||||
// as the previous macro based implementation.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue