< prev index next >
test/lib/sun/hotspot/WhiteBox.java
Print this page
rev 1945 : 8150646: Add support for blocking compiles though whitebox API
Reviewed-by: kvn, ppunegov, simonis, neliasso
Contributed-by: nils.eliasson@oracle.com, volker.simonis@gmail.com
*** 1,7 ****
/*
! * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 301,316 ****
public boolean testSetForceInlineMethod(Executable method, boolean value) {
Objects.requireNonNull(method);
return testSetForceInlineMethod0(method, value);
}
public boolean enqueueMethodForCompilation(Executable method, int compLevel) {
! return enqueueMethodForCompilation(method, compLevel, -1 /*InvocationEntryBci*/);
}
private native boolean enqueueMethodForCompilation0(Executable method, int compLevel, int entry_bci);
public boolean enqueueMethodForCompilation(Executable method, int compLevel, int entry_bci) {
! Objects.requireNonNull(method);
! return enqueueMethodForCompilation0(method, compLevel, entry_bci);
}
private native void clearMethodState0(Executable method);
public void clearMethodState(Executable method) {
Objects.requireNonNull(method);
clearMethodState0(method);
--- 301,335 ----
public boolean testSetForceInlineMethod(Executable method, boolean value) {
Objects.requireNonNull(method);
return testSetForceInlineMethod0(method, value);
}
public boolean enqueueMethodForCompilation(Executable method, int compLevel) {
! return enqueueMethodForCompilation(method, compLevel, -1 /*InvocationEntryBci*/, false);
! }
! // This is a convenience method for doing blocking compiles.
! // It adds a new compiler directive which may shadow previously added directives!
! public boolean enqueueMethodForCompilation(Executable method, int compLevel, boolean block) {
! return enqueueMethodForCompilation(method, compLevel, -1 /*InvocationEntryBci*/, block);
}
private native boolean enqueueMethodForCompilation0(Executable method, int compLevel, int entry_bci);
public boolean enqueueMethodForCompilation(Executable method, int compLevel, int entry_bci) {
! return enqueueMethodForCompilation(method, compLevel, entry_bci, false);
! }
! // This is a convenience method for doing blocking compiles.
! // It adds a new compiler directive which may shadow previously added directives!
! public boolean enqueueMethodForCompilation(Executable method, int compLevel, int entry_bci, boolean block) {
! Objects.requireNonNull(method);
! if (block) {
! String comp = (compLevel == 4) ? "c2: {" : "c1: {";
! addCompilerDirective("[{ match: \"" + method.getDeclaringClass().getName() + "::" + method.getName() + "\", " +
! comp + "BackgroundCompilation: false }}]");
! }
! boolean ret = enqueueMethodForCompilation0(method, compLevel, entry_bci);
! if (block) {
! removeCompilerDirective(1);
! }
! return ret;
}
private native void clearMethodState0(Executable method);
public void clearMethodState(Executable method) {
Objects.requireNonNull(method);
clearMethodState0(method);
*** 453,458 ****
--- 472,481 ----
// Sharing
public native boolean isSharedClass(Class<?> c);
public native boolean isShared(Object o);
public native boolean areSharedStringsIgnored();
+
+ // Compiler Directive
+ public native int addCompilerDirective(String compDirect);
+ public native void removeCompilerDirective(int count);
}
< prev index next >