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