Code Review for 6965815

Prepared by:never on Fri Sep 3 17:36:59 PDT 2010
Workspace:/net/smite.sfbay/export/ws/baseline
Compare against: ssh://hg.openjdk.java.net/jdk7/hotspot-comp-gate/hotspot
Summary of changes: 16 lines changed: 16 ins; 0 del; 0 mod; 3618 unchg
Patch of changes: 6965815.patch
Author comments:
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.

Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/graphKit.cpp

16 lines changed: 16 ins; 0 del; 0 mod; 3618 unchg

This code review page was prepared using /never/bin/webrev (vers 23.18-hg-never).