< prev index next >

src/hotspot/share/gc/shared/c2/cardTableBarrierSetC2.cpp

Print this page

        

@@ -133,12 +133,12 @@
 
   // Final sync IdealKit and GraphKit.
   kit->final_sync(ideal);
 }
 
-void CardTableBarrierSetC2::clone(GraphKit* kit, Node* src, Node* dst, Node* size, bool is_array) const {
-  BarrierSetC2::clone(kit, src, dst, size, is_array);
+void CardTableBarrierSetC2::clone(GraphKit* kit, Node* src_base, Node* dst_base, Node* countx, bool is_array) const {
+  BarrierSetC2::clone(kit, src_base, dst_base, countx, is_array);
   const TypePtr* raw_adr_type = TypeRawPtr::BOTTOM;
 
   // If necessary, emit some card marks afterwards.  (Non-arrays only.)
   bool card_mark = !is_array && !use_ReduceInitialCardMarks();
   if (card_mark) {

@@ -147,10 +147,13 @@
     // into this object.  (We could avoid this if we could prove
     // that the object type contains no oop fields at all.)
     Node* no_particular_value = NULL;
     Node* no_particular_field = NULL;
     int raw_adr_idx = Compile::AliasIdxRaw;
+    intptr_t unused_offset;
+    Node* dst = AddPNode::Ideal_base_and_offset(dst_base, &kit->gvn(), unused_offset);
+    assert(dst != NULL, "dst_base not an Addp");
     post_barrier(kit, kit->control(),
                  kit->memory(raw_adr_type),
                  dst,
                  no_particular_field,
                  raw_adr_idx,
< prev index next >