JDK-8007270 : Make IsMethodCompilable test work with tiered
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs25,emb-8u26,8,8u25
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2013-01-31
  • Updated: 2014-07-29
  • Resolved: 2014-03-14
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.
8u20Fixed 9 b06Fixed
Related Reports
Blocks :  
Blocks :  
Duplicate :  
Duplicate :  
C1 continues compilation of method even after reaching of recompilation's limit (PerMethodRecompilationCutoff)

Cause of this behavior is calling of 'Method:: set_not_compilable()' with argument 'CompLevel_full_optimization' from 'MethodData::inc_decompile_count()', so for C1 the method is still
http://aurora.ru.oracle.com/functional/faces/RunDetails.xhtml?names=435258.JAVASE.NIGHTLY.VM.Comp_Baseline-Tiered-Stable.2014-03-06-123#JT_HS%20%5B!jfr%5D%20(jtreg)_compiler/whitebox/IsMethodCompilableTest.java http://scaaa008.us.oracle.com:9502/runs%2F435258.JAVASE.NIGHTLY.VM.Comp_Baseline-Tiered-Stable.2014-03-06-123/results/workDir/compiler/whitebox/IsMethodCompilableTest.jtr

Already done that - PerMethodRecompilationCutoff=5 and just looping the compiles once saves a lot of time.

Tricky fixing the test for tiered - there will always be an extra compilation (c1 full profile) that will mess up the counting. Or if not counting c1 deoptimizations (as it is today), then the test won't work on client.

Nils, you can reduce time to execute the test decreasing value of PerMethodRecompilationCutoff. Results for different values of PerMethodRecompilationCutoff got on my laptop: 400 (default) : 1m11.119s 200 : 0m40.770s 100 : 0m27.193s 10 : 0m14.488s

The first two compilations of SimpleTestCaseHelper is with level 3 (c1 with full profiling). The decompile_count is incremented when the method is made non entrant - but only for c2 compiled methods. I suspect that is by design - that historically only c2 compiles have been disabled. (However I can find some code paths which eventually might lead to c1 compiles being disabled as well.). I guess counting c1 and c2 decompiles seperatly might be an option. Also the test need a rewrite - it takes 1-2min just running this testcase on a super fast computer. Waste of time.

RULE compiler/whitebox/IsMethodCompilableTest.java Exception java.lang.RuntimeException: private SimpleTestCase$Helper(int) is still compilable after ... iterations

RULE compiler/whitebox/IsMethodCompilableTest.java Exception java.lang.RuntimeException: protected int CompilerWhiteBoxTest.method() is still compilable after ... iterations

It's in C1, but looks like a relative easy fix