8154151: VM crashes with assert "Ensure we don't compile before compilebroker init"
authorneliasso
Mon, 18 Apr 2016 11:30:10 +0200
changeset 38217 7ecc47b7df3d
parent 38143 3b732f17ea7d
child 38218 f5ba1dea04eb
8154151: VM crashes with assert "Ensure we don't compile before compilebroker init" Summary: Drop compiles submitted with complevel_none Reviewed-by: kvn
hotspot/src/share/vm/compiler/compileBroker.cpp
hotspot/test/compiler/startup/TieredStopAtLevel0SanityTest.java
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp	Thu Apr 28 13:26:29 2016 +0000
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp	Mon Apr 18 11:30:10 2016 +0200
@@ -1037,12 +1037,14 @@
                                        int comp_level,
                                        const methodHandle& hot_method, int hot_count,
                                        const char* comment, Thread* THREAD) {
-  // do nothing if compilebroker is not available
-  if (!_initialized) {
+  // Do nothing if compilebroker is not initalized or compiles are submitted on level none
+  if (!_initialized || comp_level == CompLevel_none) {
     return NULL;
   }
+
   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);
   nmethod* nm = CompileBroker::compile_method(method, osr_bci, comp_level, hot_method, hot_count, comment, directive, THREAD);
   DirectivesStack::release(directive);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/startup/TieredStopAtLevel0SanityTest.java	Mon Apr 18 11:30:10 2016 +0200
@@ -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!");
+    }
+}