8202081: Introduce CollectedHeap::is_oop()
authorstefank
Mon, 23 Apr 2018 11:25:53 +0200
changeset 49851 9082914ccaf2
parent 49850 e286fa159ff1
child 49852 4d3218e5f170
8202081: Introduce CollectedHeap::is_oop() Reviewed-by: eosterlund, rkennke
src/hotspot/share/gc/shared/collectedHeap.cpp
src/hotspot/share/gc/shared/collectedHeap.hpp
src/hotspot/share/oops/oop.cpp
--- a/src/hotspot/share/gc/shared/collectedHeap.cpp	Mon Apr 23 13:32:00 2018 +0200
+++ b/src/hotspot/share/gc/shared/collectedHeap.cpp	Mon Apr 23 11:25:53 2018 +0200
@@ -172,6 +172,22 @@
   return false;
 }
 
+bool CollectedHeap::is_oop(oop object) const {
+  if (!check_obj_alignment(object)) {
+    return false;
+  }
+
+  if (!is_in_reserved(object)) {
+    return false;
+  }
+
+  if (is_in_reserved(object->klass_or_null())) {
+    return false;
+  }
+
+  return true;
+}
+
 // Memory state functions.
 
 
--- a/src/hotspot/share/gc/shared/collectedHeap.hpp	Mon Apr 23 13:32:00 2018 +0200
+++ b/src/hotspot/share/gc/shared/collectedHeap.hpp	Mon Apr 23 11:25:53 2018 +0200
@@ -591,6 +591,8 @@
   virtual oop pin_object(JavaThread* thread, oop obj);
   virtual void unpin_object(JavaThread* thread, oop obj);
 
+  virtual bool is_oop(oop object) const;
+
   // Non product verification and debugging.
 #ifndef PRODUCT
   // Support for PromotionFailureALot.  Return true if it's time to cause a
--- a/src/hotspot/share/oops/oop.cpp	Mon Apr 23 13:32:00 2018 +0200
+++ b/src/hotspot/share/oops/oop.cpp	Mon Apr 23 11:25:53 2018 +0200
@@ -122,10 +122,9 @@
 
 // used only for asserts and guarantees
 bool oopDesc::is_oop(oop obj, bool ignore_mark_word) {
-  if (!check_obj_alignment(obj)) return false;
-  if (!Universe::heap()->is_in_reserved(obj)) return false;
-  // obj is aligned and accessible in heap
-  if (Universe::heap()->is_in_reserved(obj->klass_or_null())) return false;
+  if (!Universe::heap()->is_oop(obj)) {
+    return false;
+  }
 
   // Header verification: the mark is typically non-NULL. If we're
   // at a safepoint, it must not be null.