< prev index next >

src/hotspot/share/opto/parse3.cpp

Print this page

        

*** 132,142 **** assert(_gvn.type(obj)->higher_equal(tjp), "cast_up is no longer needed"); #endif if (is_get) { (void) pop(); // pop receiver before getting ! do_get_xxx(obj, field, is_field); } else { do_put_xxx(obj, field, is_field); if (stopped()) { return; } --- 132,142 ---- assert(_gvn.type(obj)->higher_equal(tjp), "cast_up is no longer needed"); #endif if (is_get) { (void) pop(); // pop receiver before getting ! do_get_xxx(obj, field); } else { do_put_xxx(obj, field, is_field); if (stopped()) { return; }
*** 144,161 **** } } else { const TypeInstPtr* tip = TypeInstPtr::make(field_holder->java_mirror()); obj = _gvn.makecon(tip); if (is_get) { ! do_get_xxx(obj, field, is_field); } else { do_put_xxx(obj, field, is_field); } } } ! void Parse::do_get_xxx(Node* obj, ciField* field, bool is_field) { BasicType bt = field->layout_type(); // Does this field have a constant value? If so, just push the value. if (field->is_constant() && // Keep consistent with types found by ciTypeFlow: for an --- 144,161 ---- } } else { const TypeInstPtr* tip = TypeInstPtr::make(field_holder->java_mirror()); obj = _gvn.makecon(tip); if (is_get) { ! do_get_xxx(obj, field); } else { do_put_xxx(obj, field, is_field); } } } ! void Parse::do_get_xxx(Node* obj, ciField* field) { BasicType bt = field->layout_type(); // Does this field have a constant value? If so, just push the value. if (field->is_constant() && // Keep consistent with types found by ciTypeFlow: for an
*** 209,218 **** --- 209,219 ---- assert(!flattened, "static fields should not be flattened"); ciInstance* mirror = field->holder()->java_mirror(); ciObject* val = mirror->field_value(field).as_object(); if (!val->is_null_object()) { type = type->join_speculative(TypePtr::NOTNULL); + flattenable = true; // Null-free, treat as flattenable } } } } else { type = Type::get_const_basic_type(bt);
< prev index next >