hotspot Udiff src/share/vm/oops/objArrayKlass.inline.hpp (original) (raw)

< prev index next >

Print this page


@@ -1,7 +1,7 @@ /*


@@ -23,80 +23,167 @@ / #ifndef SHARE_VM_OOPS_OBJARRAYKLASS_INLINE_HPP #define SHARE_VM_OOPS_OBJARRAYKLASS_INLINE_HPP -#include "gc_implementation/shared/markSweep.inline.hpp" +#include "memory/memRegion.hpp" +#include "memory/iterator.inline.hpp" #include "oops/objArrayKlass.hpp" +#include "oops/objArrayOop.inline.hpp" +#include "oops/oop.inline.hpp" #include "utilities/macros.hpp" -#if INCLUDE_ALL_GCS -#include "gc_implementation/parallelScavenge/psCompactionManager.inline.hpp" -#include "gc_implementation/parallelScavenge/psParallelCompact.hpp" -#endif // INCLUDE_ALL_GCS -void ObjArrayKlass::oop_follow_contents(oop obj, int index) { - if (UseCompressedOops) { - objarray_follow_contents(obj, index); - } else { - objarray_follow_contents(obj, index); +template <bool nv, typename T, class OopClosureType> +void ObjArrayKlass::oop_oop_iterate_elements_specialized(objArrayOop a, OopClosureType closure) { + T* p = (T*)a->base(); + T* const end = p + a->length(); + + for (;p < end; p++) { + Devirtualizer::do_oop(closure, p); } } -template -void ObjArrayKlass::objarray_follow_contents(oop obj, int index) { - objArrayOop a = objArrayOop(obj); - const size_t len = size_t(a->length()); - const size_t beg_index = size_t(index); - assert(beg_index < len || len == 0, "index too large");

+template <bool nv, typename T, class OopClosureType> +void ObjArrayKlass::oop_oop_iterate_elements_specialized_bounded(

}

} }

-#if INCLUDE_ALL_GCS -void ObjArrayKlass::oop_follow_contents(ParCompactionManager* cm, oop obj,

+template <bool nv, class OopClosureType> +void ObjArrayKlass::oop_oop_iterate_elements(objArrayOop a, OopClosureType* closure) {

} else {

} +

-template -void ObjArrayKlass::objarray_follow_contents(ParCompactionManager* cm, oop obj,

+template <bool nv, typename OopClosureType> +int ObjArrayKlass::oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr) {

+template <bool nv, typename T, class OopClosureType> +void ObjArrayKlass::oop_oop_iterate_range_specialized(objArrayOop a, OopClosureType* closure, int start, int end) {

}

} +

+int ObjArrayKlass::oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) { \

+#define ObjArrayKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix)
+int ObjArrayKlass::oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) { \

+int ObjArrayKlass::oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* closure, MemRegion mr) { \

+int ObjArrayKlass::oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* closure, int start, int end) { \

#endif // SHARE_VM_OOPS_OBJARRAYKLASS_INLINE_HPP

< prev index next >