Request for reviews (S): 7110824: ctw/jarfiles/GUI3rdParty_jar/ob_mask_DateField crashes VM

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Jan 5 11:36:03 PST 2012


How about this?:

http://cr.openjdk.java.net/~kvn/7110824/webrev

Normal load constant nodes have only one (root) input so I look for 2 inputs 
loads and allow multiple inputs only in that case. Should I use guarantee 
instead of assert?

Thanks,
Vladimir

Tom Rodriguez wrote:
> On Jan 4, 2012, at 7:54 PM, Vladimir Kozlov wrote:
> 
>> http://cr.openjdk.java.net/~kvn/7110824/webrev
>>
>> 7110824: ctw/jarfiles/GUI3rdParty_jar/ob_mask_DateField crashes VM
>>
>> PhaseChaitin::yank_if_dead() can't handle nodes which load from constant table because MachConstantBase node could be spilled and Phi nodes are generated for it. In failing case loadConP_load node has Phi node as input and it is yanked since there is an other copy of the same constant load.
>>
>> Change yank_if_dead() to recursive method to remove all dead inputs.
> 
> The change seems fine though the limited logic would protect us from bad graph shapes and I'm a little concerned that it will now just blindly trim anything away that it sees without complaining.  We'd probably die at a later point in that case but it will be a bit more mysterious.  An assert could check that we only start yanking certain node type but I don't know how long that list would be.  Would that be overkill?
> 
> tom
> 
>> Tested with full CTW and failing test.
>>
>> Thanks,
>> Vladimir
> 


More information about the hotspot-compiler-dev mailing list