Mercurial > hg > graal-jvmci-8
comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @ 1194:34fb2662f6c2
6920090: G1: Disable ReduceInitialCardMarks at least until 6920109 is fixed
Summary: G1 now answers "no" to the query can_elide_initializing_store_barrier() in the product build. A debug flag allows alternate behaviour in debug builds.
Reviewed-by: iveresov, tonyp
author | ysr |
---|---|
date | Tue, 26 Jan 2010 16:52:29 -0800 |
parents | 7b0e9cba0307 |
children | 0414c1049f15 |
comparison
equal
deleted
inserted
replaced
1193:c81fa70144aa | 1194:34fb2662f6c2 |
---|---|
1002 // of this implementation depends crucially on being able to | 1002 // of this implementation depends crucially on being able to |
1003 // answer very efficiently in constant time whether a piece of | 1003 // answer very efficiently in constant time whether a piece of |
1004 // storage in the heap comes from a young region or not. | 1004 // storage in the heap comes from a young region or not. |
1005 // See ReduceInitialCardMarks. | 1005 // See ReduceInitialCardMarks. |
1006 virtual bool can_elide_tlab_store_barriers() const { | 1006 virtual bool can_elide_tlab_store_barriers() const { |
1007 return true; | 1007 // 6920090: Temporarily disabled, because of lingering |
1008 // instabilities related to RICM with G1. In the | |
1009 // interim, the option ReduceInitialCardMarksForG1 | |
1010 // below is left solely as a debugging device at least | |
1011 // until 6920109 fixes the instabilities. | |
1012 return ReduceInitialCardMarksForG1; | |
1008 } | 1013 } |
1009 | 1014 |
1010 virtual bool card_mark_must_follow_store() const { | 1015 virtual bool card_mark_must_follow_store() const { |
1011 return true; | 1016 return true; |
1012 } | 1017 } |
1024 // G1 does not have any "young" objects, should not elide | 1029 // G1 does not have any "young" objects, should not elide |
1025 // the rs logging barrier and so should always answer false below. | 1030 // the rs logging barrier and so should always answer false below. |
1026 // However, non-generational G1 (-XX:-G1Gen) appears to have | 1031 // However, non-generational G1 (-XX:-G1Gen) appears to have |
1027 // bit-rotted so was not tested below. | 1032 // bit-rotted so was not tested below. |
1028 virtual bool can_elide_initializing_store_barrier(oop new_obj) { | 1033 virtual bool can_elide_initializing_store_barrier(oop new_obj) { |
1034 // Re 6920090, 6920109 above. | |
1035 assert(ReduceInitialCardMarksForG1, "Else cannot be here"); | |
1029 assert(G1Gen || !is_in_young(new_obj), | 1036 assert(G1Gen || !is_in_young(new_obj), |
1030 "Non-generational G1 should never return true below"); | 1037 "Non-generational G1 should never return true below"); |
1031 return is_in_young(new_obj); | 1038 return is_in_young(new_obj); |
1032 } | 1039 } |
1033 | 1040 |