8154151: VM crashes with assert "Ensure we don't compile before compilebroker init"

Drop compiles submitted with complevel_none

Reviewed-by: kvn
This commit is contained in:
Nils Eliasson 2016-04-18 11:30:10 +02:00
parent 41258ea37a
commit c8593eff81
2 changed files with 40 additions and 3 deletions

View file

@ -1037,12 +1037,14 @@ nmethod* CompileBroker::compile_method(const methodHandle& method, int osr_bci,
int comp_level, int comp_level,
const methodHandle& hot_method, int hot_count, const methodHandle& hot_method, int hot_count,
const char* comment, Thread* THREAD) { const char* comment, Thread* THREAD) {
// do nothing if compilebroker is not available // Do nothing if compilebroker is not initalized or compiles are submitted on level none
if (!_initialized) { if (!_initialized || comp_level == CompLevel_none) {
return NULL; return NULL;
} }
AbstractCompiler *comp = CompileBroker::compiler(comp_level); AbstractCompiler *comp = CompileBroker::compiler(comp_level);
assert(comp != NULL, "Ensure we don't compile before compilebroker init"); assert(comp != NULL, "Ensure we have a compiler");
DirectiveSet* directive = DirectivesStack::getMatchingDirective(method, comp); DirectiveSet* directive = DirectivesStack::getMatchingDirective(method, comp);
nmethod* nm = CompileBroker::compile_method(method, osr_bci, comp_level, hot_method, hot_count, comment, directive, THREAD); nmethod* nm = CompileBroker::compile_method(method, osr_bci, comp_level, hot_method, hot_count, comment, directive, THREAD);
DirectivesStack::release(directive); DirectivesStack::release(directive);

View file

@ -0,0 +1,35 @@
/*
* Copyright (c) 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.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 8154151
* @summary Sanity test flag combo that force compiles on level 0
* @run main/othervm -Xcomp -XX:+UnlockDiagnosticVMOptions -XX:TieredStopAtLevel=0 TieredStopAtLevel0SanityTest
*/
public class TieredStopAtLevel0SanityTest {
public static void main(String[] args) throws Exception {
System.out.println("Hello world!");
}
}