Prepared by: | never on Tue Aug 30 18:43:00 PDT 2011 |
---|---|
Workspace: | /net/smite.us.oracle.com/export/ws/box |
Compare against: | ssh://hg.openjdk.java.net/hsx/hotspot-comp-gate/hotspot |
Summary of changes: | 365 lines changed: 305 ins; 22 del; 38 mod; 24471 unchg |
Patch of changes: | 7071307.patch |
Author comments: |
7071307: MethodHandle bimorphic inlining should consider the frequency Reviewed-by: The fix for 7050554 added a bimorphic inline path but didn't take into account the frequency of the guarding test. This ends up treating both sides of the if as equally frequent which can lead to over inlining and overflowing the method inlining limits. The fix is to grab the frequency from the If and apply that to the branches. Additionally I added support for per method handle profile collection since this was required to get good results for more complex programs. This requires the fix for 7082631 on the JDK side. http://cr.openjdk.java.net/~never/7082631 I also fixed a problem with the ideal graph printer where debug_orig printing would go into an infinite loop. Tested with jruby and vm.mlvm tests. |
Bug id: | 7071307 MethodHandle bimorphic inlining should consider the frequency |
Legend: |
Modified file Deleted file New file |
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/methodHandles_sparc.cpp
9 lines changed: 9 ins; 0 del; 0 mod; 2278 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/methodHandles_x86.cpp
7 lines changed: 7 ins; 0 del; 0 mod; 2424 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/ci/ciCallProfile.hpp
11 lines changed: 11 ins; 0 del; 0 mod; 84 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/ci/ciMethodHandle.hpp
22 lines changed: 16 ins; 0 del; 6 mod; 63 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/ci/ciMethodHandle.cpp
17 lines changed: 11 ins; 0 del; 6 mod; 90 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/ci/ciObject.cpp
10 lines changed: 9 ins; 1 del; 0 mod; 238 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/javaClasses.hpp
28 lines changed: 28 ins; 0 del; 0 mod; 1328 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/javaClasses.cpp
20 lines changed: 20 ins; 0 del; 0 mod; 3250 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/systemDictionary.hpp
9 lines changed: 1 ins; 0 del; 8 mod; 678 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/vmSymbols.hpp
7 lines changed: 7 ins; 0 del; 0 mod; 1112 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/oops/methodDataOop.hpp
9 lines changed: 9 ins; 0 del; 0 mod; 1526 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/opto/bytecodeInfo.cpp
15 lines changed: 14 ins; 0 del; 1 mod; 579 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/opto/callGenerator.cpp
25 lines changed: 16 ins; 6 del; 3 mod; 1095 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/opto/idealGraphPrinter.hpp
2 lines changed: 0 ins; 0 del; 2 mod; 142 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/opto/idealGraphPrinter.cpp
16 lines changed: 3 ins; 6 del; 7 mod; 724 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/opto/matcher.cpp
3 lines changed: 3 ins; 0 del; 0 mod; 2356 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandleWalk.hpp
13 lines changed: 11 ins; 1 del; 1 mod; 474 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandleWalk.cpp
124 lines changed: 114 ins; 8 del; 2 mod; 1975 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandles.hpp
5 lines changed: 5 ins; 0 del; 0 mod; 842 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandles.cpp
13 lines changed: 11 ins; 0 del; 2 mod; 3213 unchg
This code review page was prepared using /never/bin/webrev (vers 23.18-hg-never).