--- old/src/share/vm/runtime/sharedRuntime.cpp 2015-10-08 22:16:04.247908021 +0200 +++ new/src/share/vm/runtime/sharedRuntime.cpp 2015-10-08 22:16:04.197909215 +0200 @@ -211,6 +211,11 @@ #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; @@ -1795,6 +1800,7 @@ // 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()->write_barrier(_obj); // Disable ObjectSynchronizer::quick_enter() in default config // until JDK-8077392 is resolved. if ((SyncFlags & 256) != 0 && !SafepointSynchronize::is_synchronizing()) { @@ -1824,6 +1830,7 @@ // 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()->write_barrier(_obj); oop obj(_obj); assert(JavaThread::current() == THREAD, "invariant"); // I'm not convinced we need the code contained by MIGHT_HAVE_PENDING anymore