< prev index next >

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

Print this page
rev 59232 : [mq]: scan_task

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -41,11 +41,11 @@
                                            G1RedirtyCardsQueueSet* rdcqs,
                                            uint worker_id,
                                            size_t young_cset_length,
                                            size_t optional_cset_length)
   : _g1h(g1h),
-    _refs(g1h->task_queue(worker_id)),
+    _task_queue(g1h->task_queue(worker_id)),
     _rdcq(rdcqs),
     _ct(g1h->card_table()),
     _closures(NULL),
     _plab_allocator(NULL),
     _age_table(false),

@@ -117,50 +117,49 @@
 size_t G1ParScanThreadState::lab_undo_waste_words() const {
   return _plab_allocator->undo_waste();
 }
 
 #ifdef ASSERT
-bool G1ParScanThreadState::verify_ref(narrowOop* ref) const {
-  assert(ref != NULL, "invariant");
+void G1ParScanThreadState::verify_task(narrowOop* task) const {
+  assert(task != NULL, "invariant");
   assert(UseCompressedOops, "sanity");
-  assert(!has_partial_array_mask(ref), "ref=" PTR_FORMAT, p2i(ref));
-  oop p = RawAccess<>::oop_load(ref);
+  oop p = RawAccess<>::oop_load(task);
   assert(_g1h->is_in_g1_reserved(p),
-         "ref=" PTR_FORMAT " p=" PTR_FORMAT, p2i(ref), p2i(p));
-  return true;
+         "task=" PTR_FORMAT " p=" PTR_FORMAT, p2i(task), p2i(p));
 }
 
-bool G1ParScanThreadState::verify_ref(oop* ref) const {
-  assert(ref != NULL, "invariant");
-  if (has_partial_array_mask(ref)) {
-    // Must be in the collection set--it's already been copied.
-    oop p = clear_partial_array_mask(ref);
-    assert(_g1h->is_in_cset(p),
-           "ref=" PTR_FORMAT " p=" PTR_FORMAT, p2i(ref), p2i(p));
-  } else {
-    oop p = RawAccess<>::oop_load(ref);
+void G1ParScanThreadState::verify_task(oop* task) const {
+  assert(task != NULL, "invariant");
+  oop p = RawAccess<>::oop_load(task);
     assert(_g1h->is_in_g1_reserved(p),
-           "ref=" PTR_FORMAT " p=" PTR_FORMAT, p2i(ref), p2i(p));
-  }
-  return true;
+         "task=" PTR_FORMAT " p=" PTR_FORMAT, p2i(task), p2i(p));
+}
+
+void G1ParScanThreadState::verify_task(PartialArrayScanTask task) const {
+  // Must be in the collection set--it's already been copied.
+  oop p = task.to_source_array();
+  assert(_g1h->is_in_cset(p), "p=" PTR_FORMAT, p2i(p));
 }
 
-bool G1ParScanThreadState::verify_task(StarTask ref) const {
-  if (ref.is_narrow()) {
-    return verify_ref((narrowOop*) ref);
+void G1ParScanThreadState::verify_task(ScannerTask task) const {
+  if (task.is_narrow_oop_ptr()) {
+    verify_task(task.to_narrow_oop_ptr());
+  } else if (task.is_oop_ptr()) {
+    verify_task(task.to_oop_ptr());
+  } else if (task.is_partial_array_task()) {
+    verify_task(task.to_partial_array_task());
   } else {
-    return verify_ref((oop*) ref);
+    ShouldNotReachHere();
   }
 }
 #endif // ASSERT
 
 void G1ParScanThreadState::trim_queue() {
-  StarTask ref;
   do {
     // Fully drain the queue.
     trim_queue_to_threshold(0);
-  } while (!_refs->is_empty());
+  } while (!_task_queue->is_empty());
 }
 
 HeapWord* G1ParScanThreadState::allocate_in_next_plab(G1HeapRegionAttr* dest,
                                                       size_t word_sz,
                                                       bool previous_plab_refill_failed,

@@ -328,12 +327,11 @@
     if (obj->is_objArray() && arrayOop(obj)->length() >= ParGCArrayScanChunk) {
       // We keep track of the next start index in the length field of
       // the to-space object. The actual length can be found in the
       // length field of the from-space object.
       arrayOop(obj)->set_length(0);
-      oop* old_p = set_partial_array_mask(old);
-      do_oop_partial_array(old_p);
+      do_partial_array(PartialArrayScanTask(old));
     } else {
       G1ScanInYoungSetter x(&_scanner, dest_attr.is_young());
       obj->oop_iterate_backwards(&_scanner);
     }
     return obj;
< prev index next >