Request reviews (S): 6896370: CTW fails share/vm/opto/matcher.cpp:1475 "duplicating node that's already been matched"

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Wed Nov 4 12:04:14 PST 2009


On Nov 4, 2009, at 10:43 AM, Vladimir Kozlov wrote:

>
> http://cr.openjdk.java.net/~kvn/6896370/webrev.00
>
> Fixed 6896370: CTW fails share/vm/opto/matcher.cpp:1475 "duplicating  
> node that's already been matched"
>
> Problem:
> It is compressed oops related.
> LoadN node is not marked as shared since the method
> Matcher::find_shared() misses the case of address phi
> which has AddP nodes as input (after split through phi).
> As result the special code for DecodeN in address
> expressions is not executed.
>
> Solution:
> Move DecodeN code outside the memory nodes only code.
> I also noticed that several new memory nodes are missing
> from the switch's cases in find_shared(). Instead of
> adding them I replaced cases with common code for
> stores and loads at the end of the switch.

I like this.  Which ones were missing?  There's also an oddity that ! 
is_Store() && is_Mem() != is_Load() so you're now treating LoadStore  
nodes as loads and mem_ops and they weren't previously.  Was that  
intentional?  Calling set_shared on LoadStoreNodes is probably benign  
but triggering the clone_shift_expressions logic for them probably  
isn't.  Most cas style instructions don't support full address modes  
so any cloning would be useless.

tom

>
> Reviewed by:
>
> Fix verified (y/n): y, test
>
> Other testing:
> JPRT, CTW
>



More information about the hotspot-compiler-dev mailing list