RFR(M): 8006683: Add WhiteBox API to testing of compiler

Mikael Gerdin mikael.gerdin at oracle.com
Wed Jan 30 01:48:34 PST 2013


Hi Igor,

It's really nice to see more uses of the WhiteBox API!
This is exactly the kind of use the API is intended for.

On 01/29/2013 09:31 PM, Igor Ignatyev wrote:
> Hi all,
>
> Please review the patch
>
> 1. added new functions to WhiteBox:
>    public native void    deoptimizeAll();
>    public native boolean isMethodCompiled(Method method);
>    public native boolean isMethodCompilable(Method method);
>    public native boolean isMethodQueuedForCompilation(Method method);
>    public native int     deoptimizeMethod(Method method);
>    public native boolean setDontInlineMethod(Method method, boolean value);
>    public native int     getCompileQueuesSize();

The changes to WhiteBox.java, parserTests.hpp, whitebox.hpp look good.

The actual calls to the compiler code in whitebox.cpp should be reviewed 
for correctness by the compiler developers but as for the style of the 
code I think it's a bit "compact" and lines like:

+   return ((code != NULL && code->is_alive() && 
!code->is_marked_for_deoptimization()) ? JNI_TRUE : JNI_FALSE);

don't improve readability.
Also, is it really necessary to have constructs like:
return (value ? JNI_TRUE : JNI_FALSE);
can you instead write
return (jboolean)value;

>
> 2. added test 'test/compiler/WBApiTest.java' which exercises these
> functions

I think the test should be renamed to something like 
CompilerWhiteBoxTest, to make it clearer that it only uses compiler 
functions.
Could you create a whitebox function to ask the VM for the 
COMPILE_THRESHOLD instead of having it as a constant in the test?
Or perhaps even better, create a utility function for tests that can 
check the value of a VM flag through the HotSpotDiagnosticMXBean?
Then you could dynamically check the value of CompileThreshold without 
needing to add a redundant whitebox function.

Other than that the test looks good to me.

>
> 3. added result type to macro WB_METHOD_DECLARE

Good.

>
> webrev: http://cr.openjdk.java.net/~vlivanov/8006683/webrev.00/

/Mikael



More information about the hotspot-compiler-dev mailing list