src/hotspot/share/classfile/javaClasses.cpp
changeset 47998 fb0275c320a0
parent 47818 2f6ab27efb60
child 48618 688e5cbd0b91
child 48619 1703d83b3ffe
--- a/src/hotspot/share/classfile/javaClasses.cpp	Mon Nov 20 12:04:13 2017 +0100
+++ b/src/hotspot/share/classfile/javaClasses.cpp	Mon Nov 20 13:07:44 2017 +0100
@@ -3064,6 +3064,25 @@
   }
 }
 
+// Support for java_lang_ref_Reference
+
+bool java_lang_ref_Reference::is_referent_field(oop obj, ptrdiff_t offset) {
+  assert(!oopDesc::is_null(obj), "sanity");
+  if (offset != java_lang_ref_Reference::referent_offset) {
+    return false;
+  }
+
+  Klass* k = obj->klass();
+  if (!k->is_instance_klass()) {
+    return false;
+  }
+
+  InstanceKlass* ik = InstanceKlass::cast(obj->klass());
+  bool is_reference = ik->reference_type() != REF_NONE;
+  assert(!is_reference || ik->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+  return is_reference;
+}
+
 // Support for java_lang_ref_SoftReference
 
 jlong java_lang_ref_SoftReference::timestamp(oop ref) {