< prev index next >

src/hotspot/share/gc/g1/g1FullGCMarker.cpp

Print this page
*** 59,11 ***
--- 59,17 ---
      _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 >