< 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 >