mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
8211447: Replace oop_pc_update_pointers with oop_iterate and closure
Reviewed-by: sjohanss, tschatzl
This commit is contained in:
parent
78fe66c3bb
commit
e898052f3b
13 changed files with 21 additions and 166 deletions
|
@ -2203,7 +2203,7 @@ void PSParallelCompact::adjust_roots(ParCompactionManager* cm) {
|
|||
// Need new claim bits when tracing through and adjusting pointers.
|
||||
ClassLoaderDataGraph::clear_claimed_marks();
|
||||
|
||||
PSParallelCompact::AdjustPointerClosure oop_closure(cm);
|
||||
PCAdjustPointerClosure oop_closure(cm);
|
||||
|
||||
// General strong roots.
|
||||
Universe::oops_do(&oop_closure);
|
||||
|
@ -3096,76 +3096,6 @@ void MoveAndUpdateClosure::copy_partial_obj()
|
|||
update_state(words);
|
||||
}
|
||||
|
||||
void InstanceKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
|
||||
PSParallelCompact::AdjustPointerClosure closure(cm);
|
||||
if (UseCompressedOops) {
|
||||
oop_oop_iterate_oop_maps<narrowOop>(obj, &closure);
|
||||
} else {
|
||||
oop_oop_iterate_oop_maps<oop>(obj, &closure);
|
||||
}
|
||||
}
|
||||
|
||||
void InstanceMirrorKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
|
||||
InstanceKlass::oop_pc_update_pointers(obj, cm);
|
||||
|
||||
PSParallelCompact::AdjustPointerClosure closure(cm);
|
||||
if (UseCompressedOops) {
|
||||
oop_oop_iterate_statics<narrowOop>(obj, &closure);
|
||||
} else {
|
||||
oop_oop_iterate_statics<oop>(obj, &closure);
|
||||
}
|
||||
}
|
||||
|
||||
void InstanceClassLoaderKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
|
||||
InstanceKlass::oop_pc_update_pointers(obj, cm);
|
||||
}
|
||||
|
||||
#ifdef ASSERT
|
||||
template <class T> static void trace_reference_gc(const char *s, oop obj,
|
||||
T* referent_addr,
|
||||
T* discovered_addr) {
|
||||
log_develop_trace(gc, ref)("%s obj " PTR_FORMAT, s, p2i(obj));
|
||||
log_develop_trace(gc, ref)(" referent_addr/* " PTR_FORMAT " / " PTR_FORMAT,
|
||||
p2i(referent_addr), referent_addr ? p2i((oop)RawAccess<>::oop_load(referent_addr)) : NULL);
|
||||
log_develop_trace(gc, ref)(" discovered_addr/* " PTR_FORMAT " / " PTR_FORMAT,
|
||||
p2i(discovered_addr), discovered_addr ? p2i((oop)RawAccess<>::oop_load(discovered_addr)) : NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
template <class T>
|
||||
static void oop_pc_update_pointers_specialized(oop obj, ParCompactionManager* cm) {
|
||||
T* referent_addr = (T*)java_lang_ref_Reference::referent_addr_raw(obj);
|
||||
PSParallelCompact::adjust_pointer(referent_addr, cm);
|
||||
T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr_raw(obj);
|
||||
PSParallelCompact::adjust_pointer(discovered_addr, cm);
|
||||
debug_only(trace_reference_gc("InstanceRefKlass::oop_update_ptrs", obj,
|
||||
referent_addr, discovered_addr);)
|
||||
}
|
||||
|
||||
void InstanceRefKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
|
||||
InstanceKlass::oop_pc_update_pointers(obj, cm);
|
||||
|
||||
if (UseCompressedOops) {
|
||||
oop_pc_update_pointers_specialized<narrowOop>(obj, cm);
|
||||
} else {
|
||||
oop_pc_update_pointers_specialized<oop>(obj, cm);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
|
||||
assert(obj->is_objArray(), "obj must be obj array");
|
||||
PSParallelCompact::AdjustPointerClosure closure(cm);
|
||||
if (UseCompressedOops) {
|
||||
oop_oop_iterate_elements<narrowOop>(objArrayOop(obj), &closure);
|
||||
} else {
|
||||
oop_oop_iterate_elements<oop>(objArrayOop(obj), &closure);
|
||||
}
|
||||
}
|
||||
|
||||
void TypeArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
|
||||
assert(obj->is_typeArray(),"must be a type array");
|
||||
}
|
||||
|
||||
ParMarkBitMapClosure::IterationStatus
|
||||
MoveAndUpdateClosure::do_addr(HeapWord* addr, size_t words) {
|
||||
assert(destination() != NULL, "sanity");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue