hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
changeset 4742 9b18850a3185
parent 4637 af4d405aacc1
child 4902 991aaddb5165
equal deleted inserted replaced
4741:3b1373d466d2 4742:9b18850a3185
  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