Request for reviews (S): 6876276: assert(!is_visited, "visit only once")

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Thu Aug 27 17:38:50 PDT 2009


Changpeng,

I think you need additional check "current != first_mem &&" to stop the loop:

+       for (Node* current = last_mem; current != ld->in(MemNode::Memory);

Vladimir

Changpeng Fang wrote:
> http://cr.openjdk.java.net/~cfang/6876276/webrev.00/
> 
> Problem:
> SuperWord scheduling of loads uses the memory state of the last executed 
> load in the packet
> for the SuperWord load. This is not correct because memory order may be 
> violated. The test case
> that has problem is like this:
> store1
> load1
> store2
> load2
> after scheduling, it becomes:
> store1
> store2
> load1
> load2
> It turns out that store2 depends on load1, so the memory edge for the 
> superword load (combination of load1 and load2)
> is not correct.
> 
> Solution:
> Schedule the superword loads based on dependence (we have already done 
> this for superword stores, and I don't know
> why I didn't do this for the loads at that time).
> 
> Minor changes: *Use "97" as the exit code (instead of "-1") for the 
> Tests in test/compiler/6636138*
> 
> Tests:
> JPRT, CompileTheWord, and *Tests in test/compiler/6636138*
> 
> Thanks,
> 
> Changpeng


More information about the hotspot-compiler-dev mailing list