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 13:35:29 PST 2009


Sorry for some reason I thought it didn't. Looks good then.

Tom

On Nov 4, 2009, at 12:45 PM, Vladimir Kozlov <Vladimir.Kozlov at Sun.COM>  
wrote:

>
>
> Tom Rodriguez wrote:
>> 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"
>>>
>> I like this.  Which ones were missing?  There's also an oddity that
>
> LoadUB, LoadUI2L, LoadPLocked, LoadLLocked and all LoadStore nodes.
>
>> !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
>
> Yes, I did it intentionally since all Store[P|I|L]Conditional and
> CompareAndSwap nodes have general memory with all address modes.
>
>> 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.
>
> I disagree, according to x86 documents cas uses general memory:
>
> CMPXCHG r/m32,r32    -    Compare EAX with r/m32. If equal, ZF is  
> set and r32 is
>                          loaded into r/m32. Else, clear ZF and load  
> r/m32 into AL
>
> Vladimir
>
>> tom
>>>
>>> Reviewed by:
>>>
>>> Fix verified (y/n): y, test
>>>
>>> Other testing:
>>> JPRT, CTW
>>>


More information about the hotspot-compiler-dev mailing list