Code Review for 7071307

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