Resend: Request for reviews (L): 6840775: Multiple JVM crashes seen with 1.6.0_10 through early access of 1.6.0_14
Tom Rodriguez
Thomas.Rodriguez at Sun.COM
Mon Jun 29 18:06:23 PDT 2009
I think it looks good. Thanks for rearranging the code.
tom
On Jun 29, 2009, at 3:47 PM, Vladimir Kozlov wrote:
> Updated changes:
> Removed changes in sharedRuntime.cpp. Put the duplicated code
> in inline_native_clone() into separate helper method copy_to_clone().
>
> http://cr.openjdk.java.net/~kvn/6840775/webrev.02
>
> Fixed 6840775: Multiple JVM crashes seen with 1.6.0_10 through early
> access of 1.6.0_14
>
> Problem:
> There is no live oop value (only raw) across the call
> to slow_arraycopy() corresponding to new array allocation
> followed by arraycopy. The original CheckCastPP
> is moved after the call and the new CheckCastPP lives
> only until the call. As result the reference to allocated array
> in copyOf() intrinsic is not put into OopMap and we get
> wrong reference after the call when GC happens on the exit
> from the call to slow_arraycopy().
>
> Solution:
> Replace raw memory edge in the original CheckCastPP with
> new CheckCastPP to have a live oop across safepoints.
> Also:
> - don't disconnect the original InitializeNode;
> - use a secondary InitializeNode as raw memory barrier
> only on zero copy length path since other paths have
> stub or runtime calls as raw memory barriers;
> - remove incorrect stack restore in generate_slow_arraycopy;
> - separate code for arrays and instances in inline_native_clone
> and put common code into separate helper method;
> - add assert to check for possible live raw values at safepoint
> which are oops (there are CheckCastPP for the raw value);
> - fix SA to display an object with bad oop fields;
> - fix typo in optimized.make.
>
> Reviewed by: never
>
> Fix verified (y/n): y, bug's test
>
> Other testing:
> JPRT, CTW
>
More information about the hotspot-compiler-dev
mailing list