< prev index next > src/hotspot/share/gc/g1/g1FullGCMarker.cpp
Print this page
_partial_array_splitter.claim(state, task_queue(), stolen);
process_array_chunk(obj_array, claim._start, claim._end);
}
void G1FullGCMarker::start_partial_array_processing(objArrayOop obj) {
+ precond(obj->is_array_with_oops());
mark_closure()->do_klass(obj->klass());
+
+ if (obj->is_flatArray()) {
+ mark_closure()->do_klass(FlatArrayKlass::cast(obj->klass())->element_klass());
+ }
+
// Don't push empty arrays to avoid unnecessary work.
size_t array_length = obj->length();
if (array_length > 0) {
size_t initial_chunk_size = _partial_array_splitter.start(task_queue(), obj, nullptr, array_length);
process_array_chunk(obj, 0, initial_chunk_size);
< prev index next >