[8u76] Request for approval: 8131782: C1 Class.cast optimization breaks when Class is loaded from static final

Aleksey Shipilev aleksey.shipilev at oracle.com
Thu Dec 3 17:18:30 UTC 2015


Hi,

We'd like to backport a simple Hotspot compiler change that serves as
the important prerequisite for another upcoming JDK backport for
Atomic*FieldUpdaters (A*FU) performance.

Bug:
  https://bugs.openjdk.java.net/browse/JDK-8131782

The dependency is simple: C1 intrinsics for Class methods distrust the
classes loaded from final fields due to an oddity in constant parsing.
When A*FU implementations do the typechecks/casts against the target
classes loaded from their internal final fields, those operations are
not folded, but really should be. It is not visible now, since current
8u code does the direct class check, but it will be important when we
backport that other A*FU change
(https://bugs.openjdk.java.net/browse/JDK-8140587).

As other A*FU-related patches, thus provides a migration path with the
eventual demise of sun.misc.Unsafe. Therefore, I'd like us to consider
this in 8u76 to expose users to this improvement earlier than JDK 9 release.

I am not a 8u Committer, so if the change is approved, I'd need a sponsor.

Webrev:
  http://cr.openjdk.java.net/~shade/8131782/webrev.02/

JDK 9 Changeset:
  http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/df802f98b828

JDK 9 Review:

http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2015-July/018473.html

The change was in jdk9 since August 2015. The patch applies without
fuzz. jdk8u builds and runs fine at least on Linux x86_64, the
performance improvement is the same as in JDK 9.

Thanks,
-Aleksey



More information about the jdk8u-dev mailing list