diff -r 580bb0b85f63 -r 7e958a8ebcd3 src/hotspot/share/opto/graphKit.cpp --- a/src/hotspot/share/opto/graphKit.cpp Mon Feb 26 09:34:20 2018 +0100 +++ b/src/hotspot/share/opto/graphKit.cpp Mon Feb 26 09:34:12 2018 +0100 @@ -23,10 +23,13 @@ */ #include "precompiled.hpp" +#include "ci/ciUtilities.hpp" #include "compiler/compileLog.hpp" +#include "gc/g1/g1CardTable.hpp" #include "gc/g1/g1SATBCardTableModRefBS.hpp" #include "gc/g1/heapRegion.hpp" #include "gc/shared/barrierSet.hpp" +#include "gc/shared/cardTable.hpp" #include "gc/shared/cardTableModRefBS.hpp" #include "gc/shared/collectedHeap.hpp" #include "memory/resourceArea.hpp" @@ -1562,9 +1565,7 @@ g1_write_barrier_pre(do_load, obj, adr, adr_idx, val, val_type, pre_val, bt); break; - case BarrierSet::CardTableForRS: - case BarrierSet::CardTableExtension: - case BarrierSet::ModRef: + case BarrierSet::CardTableModRef: break; default : @@ -1579,9 +1580,7 @@ case BarrierSet::G1SATBCTLogging: return true; // Can move it if no safepoint - case BarrierSet::CardTableForRS: - case BarrierSet::CardTableExtension: - case BarrierSet::ModRef: + case BarrierSet::CardTableModRef: return true; // There is no pre-barrier default : @@ -1605,14 +1604,10 @@ g1_write_barrier_post(store, obj, adr, adr_idx, val, bt, use_precise); break; - case BarrierSet::CardTableForRS: - case BarrierSet::CardTableExtension: + case BarrierSet::CardTableModRef: write_barrier_post(store, obj, adr, adr_idx, val, use_precise); break; - case BarrierSet::ModRef: - break; - default : ShouldNotReachHere(); @@ -3827,11 +3822,9 @@ Node* GraphKit::byte_map_base_node() { // Get base of card map - CardTableModRefBS* ct = - barrier_set_cast(Universe::heap()->barrier_set()); - assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust users of this code"); - if (ct->byte_map_base != NULL) { - return makecon(TypeRawPtr::make((address)ct->byte_map_base)); + jbyte* card_table_base = ci_card_table_address(); + if (card_table_base != NULL) { + return makecon(TypeRawPtr::make((address)card_table_base)); } else { return null(); } @@ -3883,7 +3876,7 @@ // Divide by card size assert(Universe::heap()->barrier_set()->is_a(BarrierSet::CardTableModRef), "Only one we handle so far."); - Node* card_offset = __ URShiftX( cast, __ ConI(CardTableModRefBS::card_shift) ); + Node* card_offset = __ URShiftX( cast, __ ConI(CardTable::card_shift) ); // Combine card table base and card offset Node* card_adr = __ AddP(__ top(), byte_map_base_node(), card_offset ); @@ -4275,8 +4268,8 @@ Node* no_base = __ top(); float likely = PROB_LIKELY(0.999); float unlikely = PROB_UNLIKELY(0.999); - Node* young_card = __ ConI((jint)G1SATBCardTableModRefBS::g1_young_card_val()); - Node* dirty_card = __ ConI((jint)CardTableModRefBS::dirty_card_val()); + Node* young_card = __ ConI((jint)G1CardTable::g1_young_card_val()); + Node* dirty_card = __ ConI((jint)CardTable::dirty_card_val()); Node* zeroX = __ ConX(0); // Get the alias_index for raw card-mark memory @@ -4306,7 +4299,7 @@ Node* cast = __ CastPX(__ ctrl(), adr); // Divide pointer by card size - Node* card_offset = __ URShiftX( cast, __ ConI(CardTableModRefBS::card_shift) ); + Node* card_offset = __ URShiftX( cast, __ ConI(CardTable::card_shift) ); // Combine card table base and card offset Node* card_adr = __ AddP(no_base, byte_map_base_node(), card_offset );