< 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 >