RFR (S) 8041959: Skip replay parsing errors with ReplayIgnoreInitErrors

Christian Thalinger christian.thalinger at oracle.com
Sat Apr 26 01:28:47 UTC 2014


Looks good.

On Apr 25, 2014, at 12:06 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:

> http://cr.openjdk.java.net/~kvn/8041959/webrev
> https://bugs.openjdk.java.net/browse/JDK-8041959
> 
> Compilation replay currently can't resolve dynamically generated classes recorded in replay file. There are other parsing problems too which does not affect replayed compilation. Replay is aborted (not even reaching compilation) if such problems are found.
> 
> We should allow to try the compilation even if such problems are found because the compilation may not need that broken information.
> I am suggesting to do that when already existing flag is specified:
> 
> -XX:+ReplayIgnoreInitErrors
> 
> Currently with this flag we only skip problems during compiled method's klasses initialization which happen very rare.
> 
> I also took small fix from Roland in process_ciMethodData().
> 
> When failed compilation happened with Tiered we have to replay with TieredCompilation because MDO counters generated by C1 are slightly different:
> 
>    if (TieredCompilation && ProfileInterpreter) {
>      // Interpreter and C1 treat final and special invokes differently.
>      // C1 will record a type, whereas the interpreter will just
>      // increment the count. Detect this case.
>      if (morphism == 1 && count > 0) {
>        epsilon = count;
>        count = 0;
>      }
>    }
> 
> Unfortunately with -XX:+TieredCompilation a lot of other C1 compilations are triggered (static initializers) during replay.
> Added missing check in SimpleThresholdPolicy::event() to avoid that. Note, we already have such check in NonTieredCompPolicy::event().
> 
> With these changes I was able to replay 8039298 compilation failure without modifying replay file manually.
> 
> Thanks,
> Vladimir
> 
> 
> 



More information about the hotspot-compiler-dev mailing list