< prev index next > src/hotspot/share/cds/aotMappedHeapLoader.cpp
Print this page
#include "logging/logTag.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/iterator.inline.hpp"
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
+ #include "oops/oopCast.inline.hpp"
#include "sanitizers/ub.hpp"
#include "utilities/bitMap.inline.hpp"
#include "utilities/copy.hpp"
#if INCLUDE_G1GC
#include "gc/g1/g1CollectedHeap.hpp"
_is_loaded = true;
return true;
}
- objArrayOop AOTMappedHeapLoader::root_segment(int segment_idx) {
+ refArrayOop AOTMappedHeapLoader::root_segment(int segment_idx) {
if (!CDSConfig::is_using_archive()) {
assert(CDSConfig::is_dumping_heap() && Thread::current() == (Thread*)VMThread::vm_thread(), "sanity");
}
- objArrayOop segment = (objArrayOop)_root_segments->at(segment_idx).resolve();
+ oop segment = _root_segments->at(segment_idx).resolve();
assert(segment != nullptr, "should have been initialized");
- return segment;
+ return oop_cast<refArrayOop>(segment);
}
void AOTMappedHeapLoader::get_segment_indexes(int idx, int& seg_idx, int& int_idx) {
assert(_root_segment_max_size_elems > 0, "sanity");
assert(idx == seg_idx * _root_segment_max_size_elems + int_idx,
"sanity: %d index maps to %d segment and %d internal", idx, seg_idx, int_idx);
}
- void AOTMappedHeapLoader::add_root_segment(objArrayOop segment_oop) {
+ void AOTMappedHeapLoader::add_root_segment(refArrayOop segment_oop) {
assert(segment_oop != nullptr, "must be");
assert(is_in_use(), "must be");
if (_root_segments == nullptr) {
_root_segments = new GrowableArrayCHeap<OopHandle, mtClassShared>(10);
}
oop AOTMappedHeapLoader::get_root(int index) {
assert(!_root_segments->is_empty(), "must have loaded shared heap");
int seg_idx, int_idx;
get_segment_indexes(index, seg_idx, int_idx);
- objArrayOop result = objArrayOop(root_segment(seg_idx));
+ refArrayOop result = root_segment(seg_idx);
return result->obj_at(int_idx);
}
void AOTMappedHeapLoader::clear_root(int index) {
int seg_idx, int_idx;
HeapRootSegments segments = FileMapInfo::current_info()->mapped_heap()->root_segments();
init_root_segment_sizes(segments.max_size_in_elems());
intptr_t first_segment_addr = bottom + segments.base_offset();
for (size_t c = 0; c < segments.count(); c++) {
oop segment_oop = cast_to_oop(first_segment_addr + (c * segments.max_size_in_bytes()));
- assert(segment_oop->is_objArray(), "Must be");
- add_root_segment((objArrayOop)segment_oop);
+ add_root_segment(oop_cast<refArrayOop>(segment_oop));
}
if (CDSConfig::is_dumping_final_static_archive()) {
StringTable::move_shared_strings_into_runtime_table();
}
< prev index next >