diff --git a/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp b/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp index e708a86..846255a 100644 --- a/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp +++ b/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp @@ -37,8 +37,12 @@ #ifdef COMPILER1 #include "gc/shared/c1/cardTableBarrierSetC1.hpp" #endif +#ifdef COMPILER2 +#include "gc/shared/c2/cardTableBarrierSetC2.hpp" +#endif class CardTableBarrierSetC1; +class CardTableBarrierSetC2; // This kind of "BarrierSet" allows a "CollectedHeap" to detect and // enumerate ref fields that have been modified (since the last @@ -46,10 +50,12 @@ class CardTableBarrierSetC1; CardTableBarrierSet::CardTableBarrierSet(BarrierSetAssembler* barrier_set_assembler, BarrierSetC1* barrier_set_c1, + BarrierSetC2* barrier_set_c2, CardTable* card_table, const BarrierSet::FakeRtti& fake_rtti) : ModRefBarrierSet(barrier_set_assembler, barrier_set_c1, + barrier_set_c2, fake_rtti.add_tag(BarrierSet::CardTableBarrierSet)), _defer_initial_card_mark(false), _card_table(card_table) @@ -58,6 +64,7 @@ CardTableBarrierSet::CardTableBarrierSet(BarrierSetAssembler* barrier_set_assemb CardTableBarrierSet::CardTableBarrierSet(CardTable* card_table) : ModRefBarrierSet(make_barrier_set_assembler(), make_barrier_set_c1(), + make_barrier_set_c2(), BarrierSet::FakeRtti(BarrierSet::CardTableBarrierSet)), _defer_initial_card_mark(false), _card_table(card_table) @@ -155,7 +162,7 @@ void CardTableBarrierSet::initialize_deferred_card_mark_barriers() { // Used for ReduceInitialCardMarks (when COMPILER2 or JVMCI is used); // otherwise remains unused. #if COMPILER2_OR_JVMCI - _defer_initial_card_mark = is_server_compilation_mode_vm() && ReduceInitialCardMarks && can_elide_tlab_store_barriers() + _defer_initial_card_mark = is_server_compilation_mode_vm() && ReduceInitialCardMarks && (DeferInitialCardMark || card_mark_must_follow_store()); #else assert(_defer_initial_card_mark == false, "Who would set it?");