< prev index next >

src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

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 7472 : [mq]: 8060025-mikael-review1
rev 7473 : imported patch mikael-refactor-cset-state
rev 7474 : [mq]: kim-review


2746 
2747 void G1CollectedHeap::prepare_for_verify() {
2748   if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) {
2749     ensure_parsability(false);
2750   }
2751   g1_rem_set()->prepare_for_verify();
2752 }
2753 
2754 bool G1CollectedHeap::allocated_since_marking(oop obj, HeapRegion* hr,
2755                                               VerifyOption vo) {
2756   switch (vo) {
2757   case VerifyOption_G1UsePrevMarking:
2758     return hr->obj_allocated_since_prev_marking(obj);
2759   case VerifyOption_G1UseNextMarking:
2760     return hr->obj_allocated_since_next_marking(obj);
2761   case VerifyOption_G1UseMarkWord:
2762     return false;
2763   default:
2764     ShouldNotReachHere();
2765   }
2766   return false; // Keep some compilers happy
2767 }
2768 
2769 HeapWord* G1CollectedHeap::top_at_mark_start(HeapRegion* hr, VerifyOption vo) {
2770   switch (vo) {
2771   case VerifyOption_G1UsePrevMarking: return hr->prev_top_at_mark_start();
2772   case VerifyOption_G1UseNextMarking: return hr->next_top_at_mark_start();
2773   case VerifyOption_G1UseMarkWord:    return NULL;
2774   default:                            ShouldNotReachHere();
2775   }
2776   return NULL; // keep some compilers happy
2777 }
2778 
2779 bool G1CollectedHeap::is_marked(oop obj, VerifyOption vo) {
2780   switch (vo) {
2781   case VerifyOption_G1UsePrevMarking: return isMarkedPrev(obj);
2782   case VerifyOption_G1UseNextMarking: return isMarkedNext(obj);
2783   case VerifyOption_G1UseMarkWord:    return obj->is_gc_marked();
2784   default:                            ShouldNotReachHere();
2785   }
2786   return false; // keep some compilers happy




2746 
2747 void G1CollectedHeap::prepare_for_verify() {
2748   if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) {
2749     ensure_parsability(false);
2750   }
2751   g1_rem_set()->prepare_for_verify();
2752 }
2753 
2754 bool G1CollectedHeap::allocated_since_marking(oop obj, HeapRegion* hr,
2755                                               VerifyOption vo) {
2756   switch (vo) {
2757   case VerifyOption_G1UsePrevMarking:
2758     return hr->obj_allocated_since_prev_marking(obj);
2759   case VerifyOption_G1UseNextMarking:
2760     return hr->obj_allocated_since_next_marking(obj);
2761   case VerifyOption_G1UseMarkWord:
2762     return false;
2763   default:
2764     ShouldNotReachHere();
2765   }
2766   return false; // keep some compilers happy
2767 }
2768 
2769 HeapWord* G1CollectedHeap::top_at_mark_start(HeapRegion* hr, VerifyOption vo) {
2770   switch (vo) {
2771   case VerifyOption_G1UsePrevMarking: return hr->prev_top_at_mark_start();
2772   case VerifyOption_G1UseNextMarking: return hr->next_top_at_mark_start();
2773   case VerifyOption_G1UseMarkWord:    return NULL;
2774   default:                            ShouldNotReachHere();
2775   }
2776   return NULL; // keep some compilers happy
2777 }
2778 
2779 bool G1CollectedHeap::is_marked(oop obj, VerifyOption vo) {
2780   switch (vo) {
2781   case VerifyOption_G1UsePrevMarking: return isMarkedPrev(obj);
2782   case VerifyOption_G1UseNextMarking: return isMarkedNext(obj);
2783   case VerifyOption_G1UseMarkWord:    return obj->is_gc_marked();
2784   default:                            ShouldNotReachHere();
2785   }
2786   return false; // keep some compilers happy


< prev index next >