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