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
- Previous message: Query regarding ordering in G1 post-write barrier
- Next message: RFR (S) 8131782: C1 Class.cast optimization breaks when Class is loaded from static final
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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:
- JPRT -testset hotspot on all open platforms;
- Targeted benchmarks (see JIRA ticket)
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>
- Previous message: Query regarding ordering in G1 post-write barrier
- Next message: RFR (S) 8131782: C1 Class.cast optimization breaks when Class is loaded from static final
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the hotspot-compiler-dev mailing list