JDK-7071307 : MethodHandle bimorphic inlining should consider the frequency
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs22
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_10
  • CPU: x86
  • Submitted: 2011-07-26
  • Updated: 2011-10-07
  • Resolved: 2011-09-30
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 JDK 8 Other
7u2Fixed 8Fixed hs22Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Description
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.

Comments
EVALUATION See main CR
12-09-2011

EVALUATION http://hg.openjdk.java.net/hsx/hotspot-main/hotspot/rev/c26de9aef2ed
08-09-2011

EVALUATION 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.
06-09-2011

EVALUATION http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/c26de9aef2ed
03-09-2011