< prev index next >
src/hotspot/share/prims/jni.cpp
Print this page
*** 272,282 ****
JNIHistogramElement::JNIHistogramElement(const char* elementName) {
_name = elementName;
uintx count = 0;
while (Atomic::cmpxchg(1, &JNIHistogram_lock, 0) != 0) {
! while (OrderAccess::load_acquire(&JNIHistogram_lock) != 0) {
count +=1;
if ( (WarnOnStalledSpinLock > 0)
&& (count % WarnOnStalledSpinLock == 0)) {
warning("JNIHistogram_lock seems to be stalled");
}
--- 272,282 ----
JNIHistogramElement::JNIHistogramElement(const char* elementName) {
_name = elementName;
uintx count = 0;
while (Atomic::cmpxchg(1, &JNIHistogram_lock, 0) != 0) {
! while (Atomic::load_acquire(&JNIHistogram_lock) != 0) {
count +=1;
if ( (WarnOnStalledSpinLock > 0)
&& (count % WarnOnStalledSpinLock == 0)) {
warning("JNIHistogram_lock seems to be stalled");
}
*** 3914,3924 ****
// Creation failed. We must reset vm_created
*vm = 0;
*(JNIEnv**)penv = 0;
// reset vm_created last to avoid race condition. Use OrderAccess to
// control both compiler and architectural-based reordering.
! OrderAccess::release_store(&vm_created, 0);
}
// Flush stdout and stderr before exit.
fflush(stdout);
fflush(stderr);
--- 3914,3924 ----
// Creation failed. We must reset vm_created
*vm = 0;
*(JNIEnv**)penv = 0;
// reset vm_created last to avoid race condition. Use OrderAccess to
// control both compiler and architectural-based reordering.
! Atomic::release_store(&vm_created, 0);
}
// Flush stdout and stderr before exit.
fflush(stdout);
fflush(stderr);
< prev index next >