src/share/vm/opto/graphKit.cpp

changeset 1420
685e959d09ea
parent 1390
26fbe81d30cf
child 1462
39b01ab7035a
     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.

mercurial