8066448: SmallCodeCacheStartup.java exits with exit code 1
authorthartmann
Thu, 04 Dec 2014 09:52:15 +0100
changeset 27920 b34081fac06c
parent 27919 f1c3cf5737dc
child 27922 5462454ce541
8066448: SmallCodeCacheStartup.java exits with exit code 1 Summary: Check for VirtualMachineError in case VM initialization fails. Reviewed-by: kvn
hotspot/src/share/vm/oops/method.cpp
hotspot/test/compiler/startup/SmallCodeCacheStartup.java
--- a/hotspot/src/share/vm/oops/method.cpp	Tue Dec 02 12:24:31 2014 -0800
+++ b/hotspot/src/share/vm/oops/method.cpp	Thu Dec 04 09:52:15 2014 +0100
@@ -936,7 +936,7 @@
   // so making them eagerly shouldn't be too expensive.
   AdapterHandlerEntry* adapter = AdapterHandlerLibrary::get_adapter(mh);
   if (adapter == NULL ) {
-    THROW_MSG_NULL(vmSymbols::java_lang_VirtualMachineError(), "out of space in CodeCache for adapters");
+    THROW_MSG_NULL(vmSymbols::java_lang_VirtualMachineError(), "Out of space in CodeCache for adapters");
   }
 
   mh->set_adapter_entry(adapter);
--- a/hotspot/test/compiler/startup/SmallCodeCacheStartup.java	Tue Dec 02 12:24:31 2014 -0800
+++ b/hotspot/test/compiler/startup/SmallCodeCacheStartup.java	Thu Dec 04 09:52:15 2014 +0100
@@ -24,22 +24,29 @@
 /*
  * @test
  * @bug 8023014
- * @summary Test ensures that there is no crash if there is not enough ReservedCodeacacheSize
+ * @summary Test ensures that there is no crash if there is not enough ReservedCodeCacheSize
  *          to initialize all compiler threads. The option -Xcomp gives the VM more time to
- *          to trigger the old bug.
+ *          trigger the old bug.
  * @library /testlibrary
  */
 import com.oracle.java.testlibrary.*;
+import static com.oracle.java.testlibrary.Asserts.assertTrue;
 
 public class SmallCodeCacheStartup {
-  public static void main(String[] args) throws Exception {
-      ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:ReservedCodeCacheSize=3m",
-                                                                "-XX:CICompilerCount=64",
-                                                                "-Xcomp",
-                                                                "-version");
-      OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
-      analyzer.shouldHaveExitValue(0);
+    public static void main(String[] args) throws Exception {
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:ReservedCodeCacheSize=3m",
+                                                                  "-XX:CICompilerCount=64",
+                                                                  "-Xcomp",
+                                                                  "-version");
+        OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
+        try {
+            analyzer.shouldHaveExitValue(0);
+        } catch (RuntimeException e) {
+            // Error occurred during initialization, did we run out of adapter space?
+            assertTrue(analyzer.getOutput().contains("VirtualMachineError: Out of space in CodeCache"),
+                    "Expected VirtualMachineError");
+        }
 
-      System.out.println("TEST PASSED");
+        System.out.println("TEST PASSED");
   }
 }