RFR(XS) 8025657: compiler/intrinsics/mathexact/ConstantTest.java fails on assert in lcm.cpp on solaris x64

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Oct 4 11:55:37 PDT 2013


Rickard,

addExact, should in must_clone[] list since it produce flag (I think 
your original changes have it). With that it should be scheduled near 
use (see PhaseCFG::schedule_late()). The problem could be it has 2 uses.

FlagsProj should be scheduled near consumer of the flag (since it is 
also in must_clone[]). Otherwise flags state could be changes by other 
instructions. So moving it to addExact block is wrong. It should be 
opposite: addExact should at the same block as FlagsProj and conditional 
jump.

Vladimir

On 10/4/13 4:35 AM, Rickard Bäckman wrote:
> Hi all,
>
> I would appreciate some reviews on this change.
>
> On some machines when running with -XX:+DeoptimizeALot a test (test/compiler/intrinsics/mathexact/ConstantTest.java) failed with an assert.
> assert(idx >= 0) failed: index should be set
>
> It seems that gcm would put the addExact in a different block then the jump.
> This change forces the producer of FlagsProjNode to be in the same block as
> the consumer.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8025657
> Webrev: http://cr.openjdk.java.net/~rbackman/8025657.1/
>
> Thanks
> /R
>


More information about the hotspot-compiler-dev mailing list