< prev index next >
src/hotspot/share/runtime/objectMonitor.inline.hpp
Print this page
rev 58110 : v2.09a with 8235795, 8235931 and 8236035 extracted; rebased to jdk-14+28; merge with 8236035.patch.cr1; merge with 8235795.patch.cr1; merge with 8236035.patch.cr2; merge with 8235795.patch.cr2; merge with 8235795.patch.cr3.
rev 58111 : See CR9-to-CR10-changes; merge with jdk-15+11.
*** 87,98 ****
// Async deflation protocol uses the header, owner and ref_count
// fields. While the ObjectMonitor being deflated is on the global free
// list, we leave those three fields alone; owner == DEFLATER_MARKER
// and ref_count < 0 will force any racing threads to retry. The
// header field is used by install_displaced_markword_in_object()
! // in the last part of the deflation protocol so we cannot check
! // its value here.
guarantee(_owner == NULL || _owner == DEFLATER_MARKER,
"must be NULL or DEFLATER_MARKER: owner=" INTPTR_FORMAT,
p2i(_owner));
jint l_ref_count = ref_count();
guarantee(l_ref_count <= 0, "must be <= 0: l_ref_count=%d, ref_count=%d", l_ref_count, ref_count());
--- 87,97 ----
// Async deflation protocol uses the header, owner and ref_count
// fields. While the ObjectMonitor being deflated is on the global free
// list, we leave those three fields alone; owner == DEFLATER_MARKER
// and ref_count < 0 will force any racing threads to retry. The
// header field is used by install_displaced_markword_in_object()
! // to restore the object's header so we cannot check its value here.
guarantee(_owner == NULL || _owner == DEFLATER_MARKER,
"must be NULL or DEFLATER_MARKER: owner=" INTPTR_FORMAT,
p2i(_owner));
jint l_ref_count = ref_count();
guarantee(l_ref_count <= 0, "must be <= 0: l_ref_count=%d, ref_count=%d", l_ref_count, ref_count());
< prev index next >