< prev index next >

src/hotspot/share/gc/z/zIterator.inline.hpp

Print this page
@@ -27,10 +27,11 @@
  #include "gc/z/zIterator.hpp"
  
  #include "gc/z/zVerify.hpp"
  #include "memory/iterator.inline.hpp"
  #include "oops/objArrayOop.hpp"
+ #include "oops/refArrayOop.hpp"
  #include "oops/oop.inline.hpp"
  
  inline bool ZIterator::is_invisible_object(oop obj) {
    // This is a good place to make sure that we can't concurrently iterate over
    // objects while VMThread operations think they have exclusive access to the

@@ -43,11 +44,11 @@
  
    return obj->mark_acquire().is_marked();
  }
  
  inline bool ZIterator::is_invisible_object_array(oop obj) {
-   return obj->klass()->is_objArray_klass() && is_invisible_object(obj);
+   return obj->klass()->is_refArray_klass() && is_invisible_object(obj);
  }
  
  // This iterator skips invisible object arrays
  template <typename OopClosureT>
  void ZIterator::oop_iterate_safe(oop obj, OopClosureT* cl) {

@@ -66,11 +67,12 @@
  }
  
  template <typename OopClosureT>
  void ZIterator::oop_iterate_range(objArrayOop obj, OopClosureT* cl, int start, int end) {
    assert(!is_invisible_object_array(obj), "not safe");
-   obj->oop_iterate_range(cl, start, end);
+   assert(obj->is_refArray(), "Must be");
+   refArrayOop(obj)->oop_iterate_range(cl, start, end);
  }
  
  template <typename Function>
  class ZBasicOopIterateClosure : public BasicOopIterateClosure {
  private:
< prev index next >