review (S) for 6862863: C2 compiler fails in elide_copy()
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Wed Aug 12 12:11:39 PDT 2009
Tom Rodriguez wrote:
>
> On Aug 11, 2009, at 9:49 PM, Vladimir Kozlov wrote:
>> Why yank_if_dead() checks only in(1) if it is also dead
>> and not other inputs which could be dead also after old
>> node is removed? should we fix it?
>
> It should never have more than 2 inputs and the control input is
> irrelevant. It's either a MachSpillCopy or a Con of some sort. Maybe
> there should be an assert for no more than 2 inputs?
The assert would be nice.
>
>> Also from the current code it is not clear that at the end
>> it does next for this nreg:
>>
>> regnd.map(nreg,n);
>> value.map(nreg,val);
>>
>> (and corresponding nreg_lo mapping for register pair).
>> May be it needs additional comment in your changes.
>
> It's got a comment to that effect already. What kind of comment were
> you thinking?
Something like this:
// Clear out a dead value mapped by the register to update
// the register->node mapping even if 'n' defines the same value.
>
>> Also in the new method you use "regnd->at(nreg)"
>> when in other places regnd and value are passed as
>> references and "regnd[nreg]". Can you do the same?
>
> The code uses a mix of NOde_List* and Node_List& which is pretty ugly.
> I'd copied the signature of yank_if_dead which was already using
> Node_List*. I can change it to Node_List& if you like it better.
yank_if_dead() uses (*regnd)[old_reg]
I agree that it may be ugly but consistent.
Vladimir
>
> tom
>
>>
>>
>> Thanks,
>> Vladimir
>
More information about the hotspot-compiler-dev
mailing list