< prev index next >

src/hotspot/share/opto/valuetypenode.cpp

Print this page

        

@@ -357,11 +357,11 @@
       kit->access_store_at(base, adr, adr_type, value, val_type, bt, decorators, deoptimize_on_exception);
     }
   }
 }
 
-ValueTypeBaseNode* ValueTypeBaseNode::allocate(GraphKit* kit, bool deoptimize_on_exception) {
+ValueTypeBaseNode* ValueTypeBaseNode::allocate(GraphKit* kit, bool deoptimize_on_exception, bool safe_for_replace) {
   // Check if value type is already allocated
   Node* null_ctl = kit->top();
   Node* not_null_oop = kit->null_check_oop(get_oop(), &null_ctl);
   if (null_ctl->is_top()) {
     // Value type is allocated

@@ -403,11 +403,13 @@
   // Use cloned ValueTypeNode to propagate oop from now on
   Node* res_oop = kit->gvn().transform(oop);
   ValueTypeBaseNode* vt = clone()->as_ValueTypeBase();
   vt->set_oop(res_oop);
   vt = kit->gvn().transform(vt)->as_ValueTypeBase();
+  if (safe_for_replace) {
   kit->replace_in_map(this, vt);
+  }
   return vt;
 }
 
 bool ValueTypeBaseNode::is_allocated(PhaseGVN* phase) const {
   Node* oop = get_oop();
< prev index next >