< prev index next > src/hotspot/share/gc/parallel/psPromotionManager.cpp
Print this page
#include "memory/memRegion.hpp"
#include "memory/padded.inline.hpp"
#include "memory/resourceArea.hpp"
#include "oops/access.inline.hpp"
#include "oops/compressedOops.inline.hpp"
+ #include "oops/flatArrayKlass.inline.hpp"
+ #include "oops/oopCast.inline.hpp"
#include "oops/oopsHierarchy.hpp"
#include "utilities/checkedCast.hpp"
+ #include "utilities/debug.hpp"
PaddedEnd<PSPromotionManager>* PSPromotionManager::_manager_array = nullptr;
PSPromotionManager::PSScannerTasksQueueSet* PSPromotionManager::_stack_array_depth = nullptr;
PreservedMarksSet* PSPromotionManager::_preserved_marks_set = nullptr;
PSOldGen* PSPromotionManager::_old_gen = nullptr;
checked_cast<int>(end));
}
void PSPromotionManager::process_array_chunk(PartialArrayState* state, bool stolen) {
// Access before release by claim().
- objArrayOop to_array = objArrayOop(state->destination());
+ objArrayOop to_array = oop_cast<objArrayOop>(state->destination());
+ precond(to_array->is_array_with_oops());
+
PartialArraySplitter::Claim claim =
_partial_array_splitter.claim(state, &_claimed_stack_depth, stolen);
+
process_array_chunk(to_array, claim._start, claim._end);
}
void PSPromotionManager::push_objArray(oop old_obj, oop new_obj) {
assert(old_obj->is_forwarded(), "precondition");
assert(old_obj->forwardee() == new_obj, "precondition");
- assert(new_obj->is_objArray(), "precondition");
+ precond(new_obj->is_array_with_oops());
objArrayOop to_array = objArrayOop(new_obj);
size_t array_length = to_array->length();
size_t initial_chunk_size =
// The source array is unused when processing states.
< prev index next >