< prev index next >
src/share/vm/runtime/sharedRuntime.cpp
Print this page
rev 8961 : [mq]: diff-shenandoah.patch
@@ -209,10 +209,15 @@
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,10 +1798,11 @@
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,10 +1828,11 @@
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 >