changeset 231:72c3e8693c9a

Merge
author coleenp
date Wed, 02 Jul 2008 15:38:47 -0400
parents 444ad1c62199 (diff) 286bee59f34b (current diff)
children 551f4309f476 17c572e2697c 524eca34ea76
files
diffstat 26 files changed, 138 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/make/defs.make	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/defs.make	Wed Jul 02 15:38:47 2008 -0400
@@ -228,6 +228,7 @@
 
 # Required make macro settings for all platforms
 MAKE_ARGS += JAVA_HOME=$(ABS_BOOTDIR)
+MAKE_ARGS += OUTPUTDIR=$(ABS_OUTPUTDIR)
 MAKE_ARGS += GAMMADIR=$(ABS_GAMMADIR)
 MAKE_ARGS += MAKE_VERBOSE=$(MAKE_VERBOSE)
 MAKE_ARGS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION)
@@ -261,21 +262,3 @@
 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jni.h
 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h
 EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jmm.h
-
-# A list of object files built without the platform specific PIC flags, e.g.
-# -fPIC on linux. Performance measurements show that by compiling GC related 
-# code, we could significantly reduce the GC pause time on 32 bit Linux/Unix
-# platforms. See 6454213 for more details.
-include $(GAMMADIR)/make/scm.make
-
-ifneq ($(OSNAME), windows)
-  ifndef LP64
-    NONPIC_DIRS  = memory oops gc_implementation gc_interface 
-    NONPIC_DIRS  := $(foreach dir,$(NONPIC_DIRS), $(GAMMADIR)/src/share/vm/$(dir))
-    # Look for source files under NONPIC_DIRS
-    NONPIC_FILES := $(foreach dir,$(NONPIC_DIRS),\
-                      $(shell find $(dir) \( $(SCM_DIRS) \) -prune -o \
-		      -name '*.cpp' -print))
-    NONPIC_OBJ_FILES := $(notdir $(subst .cpp,.o,$(NONPIC_FILES)))
-  endif
-endif
--- a/make/linux/makefiles/gcc.make	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/linux/makefiles/gcc.make	Wed Jul 02 15:38:47 2008 -0400
@@ -84,8 +84,17 @@
 
 # Compiler warnings are treated as errors
 WARNINGS_ARE_ERRORS = -Werror
+
 # Except for a few acceptable ones
+# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit
+# conversions which might affect the values. To avoid that, we need to turn
+# it off explicitly. 
+ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
+ACCEPTABLE_WARNINGS = -Wpointer-arith -Wsign-compare
+else
 ACCEPTABLE_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare
+endif
+
 CFLAGS_WARN/DEFAULT = $(WARNINGS_ARE_ERRORS) $(ACCEPTABLE_WARNINGS)
 # Special cases
 CFLAGS_WARN/BYFILE = $(CFLAGS_WARN/$@)$(CFLAGS_WARN/DEFAULT$(CFLAGS_WARN/$@)) 
--- a/make/linux/makefiles/mapfile-vers-debug	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/linux/makefiles/mapfile-vers-debug	Wed Jul 02 15:38:47 2008 -0400
@@ -89,6 +89,7 @@
                 JVM_FillInStackTrace;
                 JVM_FindClassFromClass;
                 JVM_FindClassFromClassLoader;
+                JVM_FindClassFromBootLoader;
                 JVM_FindLibraryEntry;
                 JVM_FindLoadedClass;
                 JVM_FindPrimitiveClass;
--- a/make/linux/makefiles/mapfile-vers-product	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/linux/makefiles/mapfile-vers-product	Wed Jul 02 15:38:47 2008 -0400
@@ -89,6 +89,7 @@
                 JVM_FillInStackTrace;
                 JVM_FindClassFromClass;
                 JVM_FindClassFromClassLoader;
+                JVM_FindClassFromBootLoader;
                 JVM_FindLibraryEntry;
                 JVM_FindLoadedClass;
                 JVM_FindPrimitiveClass;
--- a/make/linux/makefiles/rules.make	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/linux/makefiles/rules.make	Wed Jul 02 15:38:47 2008 -0400
@@ -133,7 +133,10 @@
 COMPILE_DONE    = && { echo Done with $<; }
 endif
 
-include $(GAMMADIR)/make/defs.make
+# Include $(NONPIC_OBJ_FILES) definition
+ifndef LP64
+include $(GAMMADIR)/make/pic.make
+endif
 
 # The non-PIC object files are only generated for 32 bit platforms.
 ifdef LP64
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/pic.make	Wed Jul 02 15:38:47 2008 -0400
@@ -0,0 +1,41 @@
+#
+# Copyright 2006-2007 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#  
+#
+
+# A list of object files built without the platform specific PIC flags, e.g.
+# -fPIC on linux. Performance measurements show that by compiling GC related 
+# code, we could significantly reduce the GC pause time on 32 bit Linux/Unix
+# platforms. See 6454213 for more details.
+include $(GAMMADIR)/make/scm.make
+
+ifneq ($(OSNAME), windows)
+  ifndef LP64
+    NONPIC_DIRS  = memory oops gc_implementation gc_interface 
+    NONPIC_DIRS  := $(foreach dir,$(NONPIC_DIRS), $(GAMMADIR)/src/share/vm/$(dir))
+    # Look for source files under NONPIC_DIRS
+    NONPIC_FILES := $(foreach dir,$(NONPIC_DIRS),\
+                      $(shell find $(dir) \( $(SCM_DIRS) \) -prune -o \
+		      -name '*.cpp' -print))
+    NONPIC_OBJ_FILES := $(notdir $(subst .cpp,.o,$(NONPIC_FILES)))
+  endif
+endif
--- a/make/solaris/makefiles/mapfile-vers	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/mapfile-vers	Wed Jul 02 15:38:47 2008 -0400
@@ -89,6 +89,7 @@
 		JVM_FillInStackTrace;
 		JVM_FindClassFromClass;
 		JVM_FindClassFromClassLoader;
+		JVM_FindClassFromBootLoader;
 		JVM_FindLibraryEntry;
 		JVM_FindLoadedClass;
 		JVM_FindPrimitiveClass;
--- a/make/solaris/makefiles/reorder_COMPILER1_i486	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/reorder_COMPILER1_i486	Wed Jul 02 15:38:47 2008 -0400
@@ -2175,6 +2175,7 @@
 text: .text%jni_GetStringUTFRegion: jni.o;
 text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
 text: .text%JVM_FindClassFromClassLoader;
+text: .text%JVM_FindClassFromBootLoader;
 text: .text%JVM_IsInterface;
 text: .text%JVM_GetClassDeclaredConstructors;
 text: .text%__1cNmethodOopDescOis_initializer6kM_i_;
--- a/make/solaris/makefiles/reorder_COMPILER1_sparc	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/reorder_COMPILER1_sparc	Wed Jul 02 15:38:47 2008 -0400
@@ -1500,6 +1500,7 @@
 text: .text%jni_GetStringUTFRegion: jni.o;
 text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
 text: .text%JVM_FindClassFromClassLoader;
+text: .text%JVM_FindClassFromBootLoader;
 text: .text%JVM_IsInterface;
 text: .text%JVM_GetClassDeclaredConstructors;
 text: .text%__1cNmethodOopDescOis_initializer6kM_i_;
--- a/make/solaris/makefiles/reorder_COMPILER2_amd64	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/reorder_COMPILER2_amd64	Wed Jul 02 15:38:47 2008 -0400
@@ -4339,6 +4339,7 @@
 text: .text%__1cFParseLarray_store6MnJBasicType__v_;
 text: .text%__1cOmangle_name_on6FpnMoutputStream_pnNsymbolOopDesc_ii_v_: nativeLookup.o;
 text: .text%JVM_FindClassFromClassLoader;
+text: .text%JVM_FindClassFromBootLoader;
 text: .text%__1cZCallInterpreterDirectNodeSalignment_required6kM_i_;
 text: .text%__1cZCallInterpreterDirectNodePoper_input_base6kM_I_;
 text: .text%__1cZCallInterpreterDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
--- a/make/solaris/makefiles/reorder_COMPILER2_i486	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/reorder_COMPILER2_i486	Wed Jul 02 15:38:47 2008 -0400
@@ -4755,6 +4755,7 @@
 text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
 text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
 text: .text%JVM_FindClassFromClassLoader;
+text: .text%JVM_FindClassFromBootLoader;
 text: .text%__1cPshrI_eReg_1NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cHi2bNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
 text: .text%__1cMmatch_option6FpknMJavaVMOption_pkcp4_i_: arguments.o;
--- a/make/solaris/makefiles/reorder_COMPILER2_sparc	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/reorder_COMPILER2_sparc	Wed Jul 02 15:38:47 2008 -0400
@@ -3713,6 +3713,7 @@
 text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
 text: .text%__1cQregI_to_stkINodeHis_Copy6kM_I_: ad_sparc_misc.o;
 text: .text%JVM_FindClassFromClassLoader;
+text: .text%JVM_FindClassFromBootLoader;
 text: .text%signalHandler;
 text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
 text: .text%JVM_handle_solaris_signal;
--- a/make/solaris/makefiles/reorder_COMPILER2_sparcv9	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/reorder_COMPILER2_sparcv9	Wed Jul 02 15:38:47 2008 -0400
@@ -3735,6 +3735,7 @@
 text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
 text: .text%__1cIMulINodeGadd_id6kM_pknEType__: classes.o;
 text: .text%JVM_FindClassFromClassLoader;
+text: .text%JVM_FindClassFromBootLoader;
 text: .text%__1cHTypePtrFempty6kM_i_;
 text: .text%__1cQaddP_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cbFunnecessary_membar_volatileNodePoper_input_base6kM_I_: ad_sparc_misc.o;
--- a/make/solaris/makefiles/reorder_TIERED_amd64	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/reorder_TIERED_amd64	Wed Jul 02 15:38:47 2008 -0400
@@ -4339,6 +4339,7 @@
 text: .text%__1cFParseLarray_store6MnJBasicType__v_;
 text: .text%__1cOmangle_name_on6FpnMoutputStream_pnNsymbolOopDesc_ii_v_: nativeLookup.o;
 text: .text%JVM_FindClassFromClassLoader;
+text: .text%JVM_FindClassFromBootLoader;
 text: .text%__1cZCallInterpreterDirectNodeSalignment_required6kM_i_;
 text: .text%__1cZCallInterpreterDirectNodePoper_input_base6kM_I_;
 text: .text%__1cZCallInterpreterDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
--- a/make/solaris/makefiles/reorder_TIERED_i486	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/reorder_TIERED_i486	Wed Jul 02 15:38:47 2008 -0400
@@ -4755,6 +4755,7 @@
 text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
 text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
 text: .text%JVM_FindClassFromClassLoader;
+text: .text%JVM_FindClassFromBootLoader;
 text: .text%__1cPshrI_eReg_1NodeEsize6kMpnNPhaseRegAlloc__I_;
 text: .text%__1cHi2bNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
 text: .text%__1cMmatch_option6FpknMJavaVMOption_pkcp4_i_: arguments.o;
--- a/make/solaris/makefiles/reorder_TIERED_sparc	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/reorder_TIERED_sparc	Wed Jul 02 15:38:47 2008 -0400
@@ -3713,6 +3713,7 @@
 text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
 text: .text%__1cQregI_to_stkINodeHis_Copy6kM_I_: ad_sparc_misc.o;
 text: .text%JVM_FindClassFromClassLoader;
+text: .text%JVM_FindClassFromBootLoader;
 text: .text%signalHandler;
 text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
 text: .text%JVM_handle_solaris_signal;
--- a/make/solaris/makefiles/rules.make	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/solaris/makefiles/rules.make	Wed Jul 02 15:38:47 2008 -0400
@@ -133,7 +133,10 @@
 COMPILE_DONE    = && { echo Done with $<; }
 endif
 
-include $(GAMMADIR)/make/defs.make
+# Include NONPIC_OBJ_FILES definition
+ifndef LP64
+include $(GAMMADIR)/make/pic.make
+endif
 
 # Sun compiler for 64 bit Solaris does not support building non-PIC object files.
 ifdef LP64
--- a/make/windows/makefiles/vm.make	Fri Jun 27 19:12:11 2008 -0700
+++ b/make/windows/makefiles/vm.make	Wed Jul 02 15:38:47 2008 -0400
@@ -88,13 +88,20 @@
 !endif
 !endif
 
-LINK_FLAGS=$(LINK_FLAGS) $(STACK_SIZE) /subsystem:windows /dll /base:0x8000000  \
-  /export:JNI_GetDefaultJavaVMInitArgs /export:JNI_CreateJavaVM    \
-  /export:JNI_GetCreatedJavaVMs /export:jio_snprintf               \
-  /export:jio_printf /export:jio_fprintf                           \
-  /export:jio_vfprintf /export:jio_vsnprintf $(AGCT_EXPORT)        \
-  /export:JVM_GetVersionInfo \
-  /export:JVM_GetThreadStateNames /export:JVM_GetThreadStateValues \
+LINK_FLAGS=$(LINK_FLAGS) $(STACK_SIZE) /subsystem:windows /dll /base:0x8000000 \
+  /export:JNI_GetDefaultJavaVMInitArgs       \
+  /export:JNI_CreateJavaVM                   \
+  /export:JVM_FindClassFromBootLoader        \
+  /export:JNI_GetCreatedJavaVMs              \
+  /export:jio_snprintf                       \
+  /export:jio_printf                         \
+  /export:jio_fprintf                        \
+  /export:jio_vfprintf                       \
+  /export:jio_vsnprintf                      \
+  $(AGCT_EXPORT)                             \
+  /export:JVM_GetVersionInfo                 \
+  /export:JVM_GetThreadStateNames            \
+  /export:JVM_GetThreadStateValues           \
   /export:JVM_InitAgentProperties
 
 CPP_INCLUDE_DIRS=\
--- a/src/share/vm/adlc/adlc.hpp	Fri Jun 27 19:12:11 2008 -0700
+++ b/src/share/vm/adlc/adlc.hpp	Wed Jul 02 15:38:47 2008 -0400
@@ -29,11 +29,7 @@
 // standard library constants
 #include "stdio.h"
 #include "stdlib.h"
-#if _MSC_VER >= 1300  // Visual C++ 7.0 or later
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 #include "string.h"
 #include "ctype.h"
 #include "stdarg.h"
--- a/src/share/vm/adlc/filebuff.hpp	Fri Jun 27 19:12:11 2008 -0700
+++ b/src/share/vm/adlc/filebuff.hpp	Wed Jul 02 15:38:47 2008 -0400
@@ -23,13 +23,9 @@
  */
 
 // FILEBUFF.HPP - Definitions for parser file buffering routines
+#include <iostream>
 
-#if _MSC_VER >= 1300  // Visual C++ 7.0 or later
-#include <iostream>
-#else
-#include <iostream.h>
-#endif
-
+using namespace std;
 // STRUCTURE FOR HANDLING INPUT AND OUTPUT FILES
 typedef struct {
   const char *_name;
--- a/src/share/vm/prims/jni.cpp	Fri Jun 27 19:12:11 2008 -0700
+++ b/src/share/vm/prims/jni.cpp	Wed Jul 02 15:38:47 2008 -0400
@@ -631,7 +631,7 @@
   DTRACE_PROBE2(hotspot_jni, FatalError__entry, env, msg);
   tty->print_cr("FATAL ERROR in native method: %s", msg);
   thread->print_stack();
-  os::abort(false); // Prevent core dump, causes a jck failure.
+  os::abort(); // Dump core and abort
 JNI_END
 
 
--- a/src/share/vm/prims/jvm.cpp	Fri Jun 27 19:12:11 2008 -0700
+++ b/src/share/vm/prims/jvm.cpp	Wed Jul 02 15:38:47 2008 -0400
@@ -624,6 +624,30 @@
   if (PrintJVMWarnings) warning("JVM_ResolveClass not implemented");
 JVM_END
 
+// Rationale behind JVM_FindClassFromBootLoader
+// a> JVM_FindClassFromClassLoader was never exported in the export tables.
+// b> because of (a) java.dll has a direct dependecy on the  unexported
+//    private symbol "_JVM_FindClassFromClassLoader@20".
+// c> the launcher cannot use the private symbol as it dynamically opens
+//    the entry point, so if something changes, the launcher will fail
+//    unexpectedly at runtime, it is safest for the launcher to dlopen a
+//    stable exported interface.
+// d> re-exporting JVM_FindClassFromClassLoader as public, will cause its
+//    signature to change from _JVM_FindClassFromClassLoader@20 to
+//    JVM_FindClassFromClassLoader and will not be backward compatible
+//    with older JDKs.
+// Thus a public/stable exported entry point is the right solution,
+// public here means public in linker semantics, and is exported only
+// to the JDK, and is not intended to be a public API.
+
+JVM_ENTRY(jclass, JVM_FindClassFromBootLoader(JNIEnv* env,
+                                              const char* name,
+                                              jboolean throwError))
+  JVMWrapper3("JVM_FindClassFromBootLoader %s throw %s", name,
+              throwError ? "error" : "exception");
+  return JVM_FindClassFromClassLoader(env, name, JNI_FALSE,
+                                      (jobject)NULL, throwError);
+JVM_END
 
 JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name,
                                                jboolean init, jobject loader,
--- a/src/share/vm/prims/jvm.h	Fri Jun 27 19:12:11 2008 -0700
+++ b/src/share/vm/prims/jvm.h	Wed Jul 02 15:38:47 2008 -0400
@@ -390,6 +390,17 @@
                              jobject loader, jboolean throwError);
 
 /*
+ * Find a class from a boot class loader. Throw ClassNotFoundException
+ * or NoClassDefFoundError depending on the value of the last
+ * argument. This is the same as FindClassFromClassLoader but provided
+ * as a convenience method exported correctly on all platforms for
+ * JSR 277 launcher class loading.
+ */
+JNIEXPORT jclass JNICALL
+JVM_FindClassFromBootLoader(JNIEnv *env, const char *name,
+                            jboolean throwError);
+
+/*
  * Find a class from a given class.
  */
 JNIEXPORT jclass JNICALL
--- a/src/share/vm/runtime/java.cpp	Fri Jun 27 19:12:11 2008 -0700
+++ b/src/share/vm/runtime/java.cpp	Wed Jul 02 15:38:47 2008 -0400
@@ -502,9 +502,9 @@
   os::shutdown();
 }
 
-void vm_abort() {
+void vm_abort(bool dump_core) {
   vm_perform_shutdown_actions();
-  os::abort(PRODUCT_ONLY(false));
+  os::abort(dump_core);
   ShouldNotReachHere();
 }
 
@@ -538,18 +538,24 @@
   java_lang_Throwable::print_stack_trace(exception(), tty);
   tty->cr();
   vm_notify_during_shutdown(NULL, NULL);
-  vm_abort();
+
+  // Failure during initialization, we don't want to dump core
+  vm_abort(false);
 }
 
 void vm_exit_during_initialization(symbolHandle ex, const char* message) {
   ResourceMark rm;
   vm_notify_during_shutdown(ex->as_C_string(), message);
-  vm_abort();
+
+  // Failure during initialization, we don't want to dump core
+  vm_abort(false);
 }
 
 void vm_exit_during_initialization(const char* error, const char* message) {
   vm_notify_during_shutdown(error, message);
-  vm_abort();
+
+  // Failure during initialization, we don't want to dump core
+  vm_abort(false);
 }
 
 void vm_shutdown_during_initialization(const char* error, const char* message) {
--- a/src/share/vm/runtime/java.hpp	Fri Jun 27 19:12:11 2008 -0700
+++ b/src/share/vm/runtime/java.hpp	Wed Jul 02 15:38:47 2008 -0400
@@ -37,7 +37,7 @@
 // Shutdown the VM but do not exit the process
 extern void vm_shutdown();
 // Shutdown the VM and abort the process
-extern void vm_abort();
+extern void vm_abort(bool dump_core=true);
 
 // Trigger any necessary notification of the VM being shutdown
 extern void notify_vm_shutdown();
--- a/src/share/vm/utilities/debug.cpp	Fri Jun 27 19:12:11 2008 -0700
+++ b/src/share/vm/utilities/debug.cpp	Wed Jul 02 15:38:47 2008 -0400
@@ -208,7 +208,9 @@
     Thread* thread = ThreadLocalStorage::get_thread_slow();
     VMError(thread, size, message, file_name, line_no).report_and_die();
   }
-  vm_abort();
+
+  // Dump core and abort
+  vm_abort(true);
 }
 
 void report_vm_out_of_memory_vararg(const char* file_name, int line_no, size_t size, const char* format, ...) {