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).