< prev index next >

src/share/vm/gc_implementation/g1/g1EvacFailure.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>

*** 30,39 **** --- 30,40 ---- #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" #include "gc_implementation/g1/g1_globals.hpp" #include "gc_implementation/g1/g1OopClosures.inline.hpp" #include "gc_implementation/g1/heapRegion.hpp" #include "gc_implementation/g1/heapRegionRemSet.hpp" + #include "oops/markOop.inline.hpp" #include "utilities/workgroup.hpp" // Closures and tasks associated with any self-forwarding pointers // installed as a result of an evacuation failure.
*** 118,128 **** if (_end_of_last_gap != obj_addr) { // there was a gap before obj_addr _last_gap_threshold = _hr->cross_threshold(_end_of_last_gap, obj_addr); } ! if (obj->is_forwarded() && obj->forwardee() == obj) { // The object failed to move. // We consider all objects that we find self-forwarded to be // live. What we'll do is that we'll update the prev marking // info so that they are all under PTAMS and explicitly marked. --- 119,131 ---- if (_end_of_last_gap != obj_addr) { // there was a gap before obj_addr _last_gap_threshold = _hr->cross_threshold(_end_of_last_gap, obj_addr); } ! markOop m = obj->mark(); ! if (m->is_marked() && ((oop)m->decode_pointer() == obj)) { ! // The object failed to move. // We consider all objects that we find self-forwarded to be // live. What we'll do is that we'll update the prev marking // info so that they are all under PTAMS and explicitly marked.
< prev index next >