< prev index next >

src/hotspot/share/opto/parseHelper.cpp

Print this page

        

*** 333,356 **** } } //------------------------------do_vdefault------------------------------------- void Parse::do_vdefault() { - // Fixme additional checks needed? bool will_link; ciValueKlass* vk = iter().get_klass(will_link)->as_value_klass(); assert(will_link, "vdefault: typeflow responsibility"); ! ! // Create a new ValueTypeNode ! Node* vt = ValueTypeNode::make_default(_gvn, vk); ! ! push(_gvn.transform(vt)); } //------------------------------do_vwithfield----------------------------------- void Parse::do_vwithfield() { - // Fixme additional checks needed? bool will_link; ciField* field = iter().get_field(will_link); assert(will_link, "vdefault: typeflow responsibility"); BasicType bt = field->layout_type(); Node* val = type2size[bt] == 1 ? pop() : pop_pair(); --- 333,351 ---- } } //------------------------------do_vdefault------------------------------------- void Parse::do_vdefault() { bool will_link; ciValueKlass* vk = iter().get_klass(will_link)->as_value_klass(); assert(will_link, "vdefault: typeflow responsibility"); ! // Create and push a new default ValueTypeNode ! push(ValueTypeNode::make_default(_gvn, vk)); } //------------------------------do_vwithfield----------------------------------- void Parse::do_vwithfield() { bool will_link; ciField* field = iter().get_field(will_link); assert(will_link, "vdefault: typeflow responsibility"); BasicType bt = field->layout_type(); Node* val = type2size[bt] == 1 ? pop() : pop_pair();
*** 360,370 **** ValueTypeNode* new_vt = vt->clone()->as_ValueType(); new_vt->set_oop(_gvn.zerocon(T_VALUETYPE)); int offset = field->offset(); uint i = 0; for (; i < new_vt->field_count() && new_vt->field_offset(i) != offset; i++) {} ! assert(i < new_vt->field_count(), "where's the field"); new_vt->set_field_value(i, val); push(_gvn.transform(new_vt)); } --- 355,365 ---- ValueTypeNode* new_vt = vt->clone()->as_ValueType(); new_vt->set_oop(_gvn.zerocon(T_VALUETYPE)); int offset = field->offset(); uint i = 0; for (; i < new_vt->field_count() && new_vt->field_offset(i) != offset; i++) {} ! assert(i < new_vt->field_count(), "field not found"); new_vt->set_field_value(i, val); push(_gvn.transform(new_vt)); }
< prev index next >