< prev index next >
src/hotspot/share/opto/valuetypenode.cpp
Print this page
*** 357,367 ****
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) {
// 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
--- 357,367 ----
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, 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,413 ****
--- 403,415 ----
// 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 >