< prev index next >
src/hotspot/share/gc/parallel/psCompactionManager.inline.hpp
Print this page
*** 27,37 ****
--- 27,39 ----
#include "gc/parallel/parMarkBitMap.hpp"
#include "gc/parallel/psCompactionManager.hpp"
#include "gc/parallel/psParallelCompact.inline.hpp"
#include "gc/shared/taskqueue.inline.hpp"
+ #include "oops/access.inline.hpp"
#include "oops/arrayOop.inline.hpp"
+ #include "oops/compressedOops.inline.hpp"
#include "oops/objArrayOop.inline.hpp"
#include "oops/oop.inline.hpp"
#include "utilities/debug.hpp"
#include "utilities/globalDefinitions.hpp"
*** 69,81 ****
region_stack()->push(index);
}
template <typename T>
inline void ParCompactionManager::mark_and_push(T* p) {
! T heap_oop = oopDesc::load_heap_oop(p);
! if (!oopDesc::is_null(heap_oop)) {
! oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
assert(ParallelScavengeHeap::heap()->is_in(obj), "should be in heap");
if (mark_bitmap()->is_unmarked(obj) && PSParallelCompact::mark_obj(obj)) {
push(obj);
}
--- 71,83 ----
region_stack()->push(index);
}
template <typename T>
inline void ParCompactionManager::mark_and_push(T* p) {
! T heap_oop = RawAccess<>::oop_load(p);
! if (!CompressedOops::is_null(heap_oop)) {
! oop obj = CompressedOops::decode_not_null(heap_oop);
assert(ParallelScavengeHeap::heap()->is_in(obj), "should be in heap");
if (mark_bitmap()->is_unmarked(obj) && PSParallelCompact::mark_obj(obj)) {
push(obj);
}
< prev index next >