--- old/src/hotspot/share/runtime/sharedRuntime.cpp 2020-02-06 19:18:23.675548555 +0100 +++ new/src/hotspot/share/runtime/sharedRuntime.cpp 2020-02-06 19:18:23.504548570 +0100 @@ -2880,6 +2880,24 @@ GCLocker::unlock_critical(thread); JRT_END +JRT_LEAF(oopDesc*, SharedRuntime::pin_object(JavaThread* thread, oopDesc* obj)) + assert(Universe::heap()->supports_object_pinning(), "Why we here?"); + assert(UseShenandoahGC, "only supported in Shenandoah for now"); + assert(obj != NULL, "Should not be null"); + oop o(obj); + o = Universe::heap()->pin_object(thread, o); + assert(o != NULL, "Should not be null"); + return o; +JRT_END + +JRT_LEAF(void, SharedRuntime::unpin_object(JavaThread* thread, oopDesc* obj)) + assert(Universe::heap()->supports_object_pinning(), "Why we here?"); + assert(UseShenandoahGC, "only supported in Shenandoah for now"); + assert(obj != NULL, "Should not be null"); + oop o(obj); + Universe::heap()->unpin_object(thread, o); +JRT_END + // ------------------------------------------------------------------------- // Java-Java calling convention // (what you use when Java calls Java)