< prev index next >
src/share/vm/prims/jvm.cpp
Print this page
rev 11747 : [mq]: per.hotspot.patch
rev 11748 : imported patch pop_pl
rev 11749 : imported patch coleen_review
rev 11752 : [mq]: vm_api
*** 3350,3359 ****
--- 3350,3389 ----
objArrayOop result = ClassLoader::get_system_packages(CHECK_NULL);
return (jobjectArray) JNIHandles::make_local(result);
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) {
if (current_class == NULL) {
return true;
< prev index next >