< prev index next >
src/share/vm/runtime/sharedRuntime.cpp
Print this page
rev 8961 : [mq]: diff-shenandoah.patch
*** 209,218 ****
--- 209,223 ----
thread->dirty_card_queue().enqueue(card_addr);
JRT_END
#endif // INCLUDE_ALL_GCS
+ // G1 write-barrier pre: executed before a pointer store.
+ JRT_LEAF(void, SharedRuntime::shenandoah_clone_barrier(oopDesc* obj))
+ oopDesc::bs()->write_region(MemRegion((HeapWord*) obj, obj->size()));
+ JRT_END
+
JRT_LEAF(jlong, SharedRuntime::lmul(jlong y, jlong x))
return x * y;
JRT_END
*** 1793,1802 ****
--- 1798,1808 ----
JRT_END
// Handles the uncommon case in locking, i.e., contention or an inflated lock.
JRT_BLOCK_ENTRY(void, SharedRuntime::complete_monitor_locking_C(oopDesc* _obj, BasicLock* lock, JavaThread* thread))
+ _obj = oopDesc::bs()->resolve_and_maybe_copy_oop(_obj);
// Disable ObjectSynchronizer::quick_enter() in default config
// until JDK-8077392 is resolved.
if ((SyncFlags & 256) != 0 && !SafepointSynchronize::is_synchronizing()) {
// Only try quick_enter() if we're not trying to reach a safepoint
// so that the calling thread reaches the safepoint more quickly.
*** 1822,1831 ****
--- 1828,1838 ----
JRT_BLOCK_END
JRT_END
// Handles the uncommon cases of monitor unlocking in compiled code
JRT_LEAF(void, SharedRuntime::complete_monitor_unlocking_C(oopDesc* _obj, BasicLock* lock, JavaThread * THREAD))
+ _obj = oopDesc::bs()->resolve_and_maybe_copy_oop(_obj);
oop obj(_obj);
assert(JavaThread::current() == THREAD, "invariant");
// I'm not convinced we need the code contained by MIGHT_HAVE_PENDING anymore
// testing was unable to ever fire the assert that guarded it so I have removed it.
assert(!HAS_PENDING_EXCEPTION, "Do we need code below anymore?");
< prev index next >