review (S) for 6965815: OptimizeStringConcat: assert(!q->is_MergeMem()) failed with specjbb2000
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Sep 3 17:41:55 PDT 2010
Looks good.
Vladimir
Tom Rodriguez wrote:
> http://cr.openjdk.java.net/~never/6965815
>
> 6965815: OptimizeStringConcat: assert(!q->is_MergeMem()) failed with specjbb2000
> Reviewed-by:
>
> OptimizeStringConcat does a bunch of graph surgery to stitch an
> inlined call into the graph after normal inlining has completed.
> Because of this it can create some unexpected patterns. In this case
> the final memory state of an inline results in a MergeMem that gathers
> all the memory effects and inside replace_call it replaces the old
> call memory projection. In the failing case one of the users of that
> memory is also a MergeMem which results in a MergeMem feeding a
> MergeMem which can make the system unhappy. The fix is detect this
> pattern after replacing the call and call transform to allow the
> optimizer to clean it up. Tested with failing test from report and a
> case that Vladimir found. I also ran full CTW and with
> OptimizerStringConcat and it all looks good.
More information about the hotspot-compiler-dev
mailing list