LIR_Opr result() { assert(_destroys_register==not_destroyed||(!_result->is_register()||_result->is_virtual()), "shouldn't use set_destroys_register with physical regsiters"); if(_destroys_register==awaiting_copy&&_result->is_register()){ LIR_Opr new_result=_gen->new_register(type())->set_destroyed(); gen()->lir()->move(_result, new_result); _destroys_register = destroyed; _result=new_result; } return _result; }
LIR_Opr result() { assert(!_destroys_register || (!_result->is_register() || _result->is_virtual()), "shouldn't use set_destroys_register with physical regsiters"); if (_destroys_register && _result->is_register()) { if (_new_result->is_illegal()) { _new_result = _gen->new_register(type()); gen()->lir()->move(_result, _new_result); } return _new_result; } else { return _result; } return _result; }