RFR(S/M): 8150646: Add support for blocking compiles through whitebox API
Volker Simonis
volker.simonis at gmail.com
Fri Mar 11 16:24:40 UTC 2016
Hi Nils,
good catch! Your changes look good. Thumbs up from me.
The only minor comment is the indentation mismatch I can see here:
*! if (comp == NULL || !comp->can_compile_method(method) ||**!
compilation_is_prohibited(method, osr_bci, comp_level)) {**! if
(!comp->can_compile_method(method) ||**!
compilation_is_prohibited(method, osr_bci, comp_level,
directive->ExcludeOption)) {* return NULL;
But that could also be a diff artifact.
Regards,
Volker
On Fri, Mar 11, 2016 at 2:49 PM, Nils Eliasson <nils.eliasson at oracle.com>
wrote:
> Hi,
>
> I got a failure during testing and had to fix that. The additional change
> is very small.
>
> Problem:
> Running embedded server profiles with -XX:+AggressiveOpts can cause
> compilations to trigger (many Integers in the cache...) before the compile
> broker is initialized.
>
> 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.
>
> // lock, make sure that the compilation
> 1052 // isn't prohibited in a straightforward way.
> 1053 AbstractCompiler *comp = CompileBroker::compiler(comp_level);1054 if (comp == NULL || !comp->can_compile_method(method) ||1055 compilation_is_prohibited(method, osr_bci, comp_level)) {
> 1056 return NULL;
> 1057 }
>
> The compile_method wrapper we introduced used
> "CompileBroker::compiler(comp_level)" but didn't guard for NULL.
>
> Solution:
> 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.
>
> All new changes in CompileBroker.cpp:
> Webrev: http://cr.openjdk.java.net/~neliasso/8150646/webrev.07
>
> Regards,
> Nils Eliasson
>
>
>
> On 2016-02-25 16:01, Nils Eliasson wrote:
>
> Hi,
>
> Please review this change that adds support for blocking compiles in the
> whitebox API. This enables simpler less time consuming tests.
>
> Motivation:
> * -XX:-BackgroundCompilation is a global flag and can be time consuming
> * Blocking compiles removes the need for waiting on the compile queue to
> complete
> * Compiles put in the queue may be evicted if the queue grows to big -
> causing indeterminism in the test
> * Less VM-flags allows for more tests in the same VM
>
> Testing:
> Posting a separate RFR for test fix that uses this change. They will be
> pushed at the same time.
>
> RFE: https://bugs.openjdk.java.net/browse/JDK-8150646
> JDK rev: http://cr.openjdk.java.net/~neliasso/8150646/webrev_jdk.01/
> Hotspot rev: http://cr.openjdk.java.net/~neliasso/8150646/webrev.02/
>
> Best regards,
> Nils Eliasson
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20160311/ab73531b/attachment-0001.html>
More information about the hotspot-compiler-dev
mailing list