< prev index next >

src/share/vm/gc_implementation/g1/g1OopClosures.inline.hpp

Print this page
rev 7471 : 8060025: Object copy time regressions after JDK-8031323 and JDK-8057536
Summary: Evaluate and improve object copy time by micro-optimizations and splitting out slow and fast paths aggressively.
Reviewed-by:
Contributed-by: Tony Printezis <tprintezis@twitter.com>, Thomas Schatzl <thomas.schatzl@oracle.com>
rev 7473 : imported patch mikael-refactor-cset-state

@@ -65,12 +65,12 @@
 inline void G1ParScanClosure::do_oop_nv(T* p) {
   T heap_oop = oopDesc::load_heap_oop(p);
 
   if (!oopDesc::is_null(heap_oop)) {
     oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
-    const in_cset_state_t state = _g1->in_cset_state(obj);
-    if (InCSetState::is_in_cset(state)) {
+    const InCSetState state = _g1->in_cset_state(obj);
+    if (state.is_in_cset()) {
       // We're not going to even bother checking whether the object is
       // already forwarded or not, as this usually causes an immediate
       // stall. We'll try to prefetch the object (for write, given that
       // we might need to install the forwarding reference) and we'll
       // get back to it when pop it from the queue

@@ -85,11 +85,11 @@
                  obj->forwardee() == oopDesc::load_decode_heap_oop(p)),
              "p should still be pointing to obj or to its forwardee");
 
       _par_scan_state->push_on_queue(p);
     } else {
-      if (InCSetState::is_humongous(state)) {
+      if (state.is_humongous()) {
         _g1->set_humongous_is_live(obj);
       }
       _par_scan_state->update_rs(_from, p, _worker_id);
     }
   }
< prev index next >