<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi,<br>
    <br>
    I got a failure during testing and had to fix that. The additional
    change is very small.<br>
    <br>
    Problem:<br>
    Running embedded server profiles with -XX:+AggressiveOpts can cause
    compilations to trigger (many Integers in the cache...) before the
    compile broker is initialized. <br>
    <br>
    What this code at the start of compile_method doesn't tell you - is
    that the NULL check guards from compile requests before the
    compilation_init is called. <br>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <pre style="color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(238, 238, 238);">// lock, make sure that the compilation
1052   // isn't prohibited in a straightforward way.
1053   AbstractCompiler *comp = CompileBroker::compiler(comp_level);
<span class="changed" style="color: blue;">1054   if (comp == NULL || !comp->can_compile_method(method) ||</span>
<span class="changed" style="color: blue;">1055       compilation_is_prohibited(method, osr_bci, comp_level)) {</span>
1056     return NULL;
1057   }</pre>
    The compile_method wrapper we introduced used
    "CompileBroker::compiler(comp_level)" but didn't guard for NULL. <br>
    <br>
    Solution: <br>
    There was already a check on CompileBroker::_initalized in the code
    - a bit late though - so it was never executed. I hoisted it from
    compile_method_base to the beginning of compile_method and check the
    check comp==NULL check to an assert.<br>
    <br>
    All new changes in CompileBroker.cpp:<br>
    Webrev: <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~neliasso/8150646/webrev.07">http://cr.openjdk.java.net/~neliasso/8150646/webrev.07</a><br>
    <br>
    Regards,<br>
    Nils Eliasson<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 2016-02-25 16:01, Nils Eliasson
      wrote:<br>
    </div>
    <blockquote cite="mid:56CF175E.1030806@oracle.com" type="cite">Hi,
      <br>
      <br>
      Please review this change that adds support for blocking compiles
      in the whitebox API. This enables simpler less time consuming
      tests.
      <br>
      <br>
      Motivation:
      <br>
      * -XX:-BackgroundCompilation is a global flag and can be time
      consuming
      <br>
      * Blocking compiles removes the need for waiting on the compile
      queue to complete
      <br>
      * Compiles put in the queue may be evicted if the queue grows to
      big - causing indeterminism in the test
      <br>
      * Less VM-flags allows for more tests in the same VM
      <br>
      <br>
      Testing:
      <br>
      Posting a separate RFR for test fix that uses this change. They
      will be pushed at the same time.
      <br>
      <br>
      RFE: <a class="moz-txt-link-freetext" href="https://bugs.openjdk.java.net/browse/JDK-8150646">https://bugs.openjdk.java.net/browse/JDK-8150646</a>
      <br>
      JDK rev:
      <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~neliasso/8150646/webrev_jdk.01/">http://cr.openjdk.java.net/~neliasso/8150646/webrev_jdk.01/</a>
      <br>
      Hotspot rev:
      <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~neliasso/8150646/webrev.02/">http://cr.openjdk.java.net/~neliasso/8150646/webrev.02/</a>
      <br>
      <br>
      Best regards,
      <br>
      Nils Eliasson
      <br>
    </blockquote>
    <br>
  </body>
</html>