[9] RFR (S): 8060147: SIGSEGV in Metadata::mark_on_stack() while marking metadata in ciEnv
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Wed Oct 29 13:57:53 UTC 2014
http://cr.openjdk.java.net/~vlivanov/8060147/webrev.00
https://bugs.openjdk.java.net/browse/JDK-8060147
ciObjectFactory doesn't keep cached Metadata* alive. ciMetadata is
different from ciObject - it doesn't store JNI handle, but a raw
Metadata* pointer.
In order to avoid Metadata* vanishing during compilation, I cache
ciObject for it's holder, which should keep corresponding Metadata*
alive. Cached objects have the same lifetime as the owning
ciObjectFactory (no cache pruning), so Metadata* will be available as
long as ciObjectFactory instance is used.
Also, cleaned relevant comments and strengthened some asserts (since
NULL keys are not allowed).
Testing: jprt, stress mode - full Nashorn/Octane with aggressive VM
anonymous class unloading (LambdaForm/MethodHandle caching completely
turned off).
Thanks!
Best regards,
Vladimir Ivanov
More information about the hotspot-compiler-dev
mailing list