RFR (S) 8131782: C1 Class.cast optimization breaks when Class is loaded from static final (original) (raw)

Aleksey Shipilev aleksey.shipilev at oracle.com
Mon Jul 20 13:52:15 UTC 2015


Hi,

On the road from Unsafe to VarHandles lies a small deficiency in C1 Class.cast/isInstance optimization: the canonicalizer folds constant class perfectly when it is coming from "inlined" constant, but not from static final, because the constant "shapes" are different: https://bugs.openjdk.java.net/browse/JDK-8131782

And here is the fix: http://cr.openjdk.java.net/~shade/8131782/webrev.01/

(There is another ClassConstant shape, which is, AFAIU, the constant "receiver" class as discovered within the static method. It does not seem to appear in current java.lang.Class, and there seems to be no way for users to stumble upon such a pattern. Which also means I can't do a targeted test for it.)

Testing:

Thanks, -Aleksey

-------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: OpenPGP digital signature URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20150720/87c60161/signature.asc>



More information about the hotspot-compiler-dev mailing list