< 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 >