--- old/src/share/vm/prims/jvm.cpp 2016-07-31 21:09:43.465245779 -0400 +++ new/src/share/vm/prims/jvm.cpp 2016-07-31 21:09:43.361245264 -0400 @@ -3352,6 +3352,36 @@ JVM_END +// java.lang.ref.Reference /////////////////////////////////////////////////////////////// + + +JVM_ENTRY(jobject, JVM_GetAndClearReferencePendingList(JNIEnv* env)) + JVMWrapper("JVM_GetAndClearReferencePendingList"); + + MonitorLockerEx ml(Heap_lock); + oop ref = Universe::reference_pending_list(); + if (ref != NULL) { + Universe::set_reference_pending_list(NULL); + } + return JNIHandles::make_local(env, ref); +JVM_END + +JVM_ENTRY(jboolean, JVM_CheckReferencePendingList(JNIEnv* env, jboolean await)) + JVMWrapper("JVM_CheckReferencePendingList"); + MonitorLockerEx ml(Heap_lock); + if (Universe::reference_pending_list() != NULL) { + return true; + } else if (await) { + do { + ml.wait(); + } while (Universe::reference_pending_list() == NULL); + return true; + } else { + return false; + } +JVM_END + + // ObjectInputStream /////////////////////////////////////////////////////////////// bool force_verify_field_access(Klass* current_class, Klass* field_class, AccessFlags access, bool classloader_only) {