RFR (S): 8060147: SIGSEGV in Metadata::mark_on_stack() while marking metadata in ciEnv
bertrand.delsart at oracle.com
Wed Oct 29 15:24:40 UTC 2014
This seems OK with respect to class unloading but what about class
In particular, this may not be sufficient for Method* or MethodData*.
Still catching up on runtime issues but I think a redefined method has a
smaller lifetime than its holder class. Hence, it seems that keeping the
holder klass alive may not be sufficient to ensure a Method* survives as
long as you need it for the ciMetadata.
On 29/10/14 14:57, Vladimir Ivanov wrote:
> 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).
> Best regards,
> Vladimir Ivanov
Bertrand Delsart, Grenoble Engineering Center
Oracle, 180 av. de l'Europe, ZIRST de Montbonnot
38334 Saint Ismier, FRANCE
bertrand.delsart at oracle.com Phone : +33 4 76 18 81 23
NOTICE: This email message is for the sole use of the intended
recipient(s) and may contain confidential and privileged
information. Any unauthorized review, use, disclosure or
distribution is prohibited. If you are not the intended recipient,
please contact the sender by reply email and destroy all copies of
the original message.
More information about the hotspot-compiler-dev