1.1 --- a/src/share/vm/opto/graphKit.cpp Thu Sep 10 18:18:06 2009 -0700 1.2 +++ b/src/share/vm/opto/graphKit.cpp Mon Sep 14 09:49:54 2009 -0700 1.3 @@ -1450,7 +1450,7 @@ 1.4 1.5 case BarrierSet::CardTableModRef: 1.6 case BarrierSet::CardTableExtension: 1.7 - write_barrier_post(store, obj, adr, val, use_precise); 1.8 + write_barrier_post(store, obj, adr, adr_idx, val, use_precise); 1.9 break; 1.10 1.11 case BarrierSet::ModRef: 1.12 @@ -3165,6 +3165,7 @@ 1.13 void GraphKit::write_barrier_post(Node* oop_store, 1.14 Node* obj, 1.15 Node* adr, 1.16 + uint adr_idx, 1.17 Node* val, 1.18 bool use_precise) { 1.19 // No store check needed if we're storing a NULL or an old object 1.20 @@ -3214,7 +3215,7 @@ 1.21 __ store(__ ctrl(), card_adr, zero, bt, adr_type); 1.22 } else { 1.23 // Specialized path for CM store barrier 1.24 - __ storeCM(__ ctrl(), card_adr, zero, oop_store, bt, adr_type); 1.25 + __ storeCM(__ ctrl(), card_adr, zero, oop_store, adr_idx, bt, adr_type); 1.26 } 1.27 1.28 // Final sync IdealKit and GraphKit. 1.29 @@ -3314,6 +3315,7 @@ 1.30 void GraphKit::g1_mark_card(IdealKit& ideal, 1.31 Node* card_adr, 1.32 Node* oop_store, 1.33 + uint oop_alias_idx, 1.34 Node* index, 1.35 Node* index_adr, 1.36 Node* buffer, 1.37 @@ -3323,7 +3325,7 @@ 1.38 Node* no_base = __ top(); 1.39 BasicType card_bt = T_BYTE; 1.40 // Smash zero into card. MUST BE ORDERED WRT TO STORE 1.41 - __ storeCM(__ ctrl(), card_adr, zero, oop_store, card_bt, Compile::AliasIdxRaw); 1.42 + __ storeCM(__ ctrl(), card_adr, zero, oop_store, oop_alias_idx, card_bt, Compile::AliasIdxRaw); 1.43 1.44 // Now do the queue work 1.45 __ if_then(index, BoolTest::ne, zero); { 1.46 @@ -3435,13 +3437,13 @@ 1.47 Node* card_val = __ load(__ ctrl(), card_adr, TypeInt::INT, T_BYTE, Compile::AliasIdxRaw); 1.48 1.49 __ if_then(card_val, BoolTest::ne, zero); { 1.50 - g1_mark_card(ideal, card_adr, oop_store, index, index_adr, buffer, tf); 1.51 + g1_mark_card(ideal, card_adr, oop_store, alias_idx, index, index_adr, buffer, tf); 1.52 } __ end_if(); 1.53 } __ end_if(); 1.54 } __ end_if(); 1.55 } else { 1.56 // Object.clone() instrinsic uses this path. 1.57 - g1_mark_card(ideal, card_adr, oop_store, index, index_adr, buffer, tf); 1.58 + g1_mark_card(ideal, card_adr, oop_store, alias_idx, index, index_adr, buffer, tf); 1.59 } 1.60 1.61 // Final sync IdealKit and GraphKit.