[9] RFR (S): 8134918: C2: Type speculation produces mismatched unsafe accesses

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Apr 15 01:12:18 UTC 2016


Next assert should be at the beginning of method:
+     assert(type != T_OBJECT || !unaligned, "unaligned access not supported with object type");

Fix Copyright year in the test.

There is no PIT link in the bug report.

Thanks,
Vladimir

On 4/14/16 9:53 AM, Vladimir Ivanov wrote:
> http://cr.openjdk.java.net/~vlivanov/8134918/webrev.00/
> https://bugs.openjdk.java.net/browse/JDK-8134918
>
> Type speculation can produce mismatched unsafe accesses.
>
> It injects a guard based on profile data and then propagate type info down to the users. If there's an unsafe access, it can become mismatched w.r.t. profile data being used.
>
> It happens even for valid usages. If an unsafe access always matches memory location at runtime, the code produced by type speculation in that case is effectively dead.
>
> What cause problems are unsafe OOP accesses (U.putObject()/getObject() on non-OOP locations).
>
> The fix is to avoid intrinsification of problematic accesses. Type speculation injects precise type information, which is available during intrinsification.
>
> We could try to support mismatched unsafe object accesses instead, but I don't see any value in that.
>
> Testing: JPRT, pit-hs-comp (in progress).
>
> Thanks!
>
> Best regards,
> Vladimir Ivanov


More information about the hotspot-compiler-dev mailing list