# HG changeset patch # User coleenp # Date 1214605169 14400 # Node ID 444ad1c6219979a345ccb4c537c1b83f33ad7412 # Parent 3e82d72933d0e53be525fc1e2c4bb426d2ec4334# Parent a5838065ab24409e832263d90d5ac065168253d0 Merge diff -r a5838065ab24 -r 444ad1c62199 make/defs.make --- a/make/defs.make Tue Jun 24 21:37:10 2008 -0700 +++ b/make/defs.make Fri Jun 27 18:19:29 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 diff -r a5838065ab24 -r 444ad1c62199 make/linux/makefiles/gcc.make --- a/make/linux/makefiles/gcc.make Tue Jun 24 21:37:10 2008 -0700 +++ b/make/linux/makefiles/gcc.make Fri Jun 27 18:19:29 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/$@)) diff -r a5838065ab24 -r 444ad1c62199 make/linux/makefiles/mapfile-vers-debug --- a/make/linux/makefiles/mapfile-vers-debug Tue Jun 24 21:37:10 2008 -0700 +++ b/make/linux/makefiles/mapfile-vers-debug Fri Jun 27 18:19:29 2008 -0400 @@ -89,6 +89,7 @@ JVM_FillInStackTrace; JVM_FindClassFromClass; JVM_FindClassFromClassLoader; + JVM_FindClassFromBootLoader; JVM_FindLibraryEntry; JVM_FindLoadedClass; JVM_FindPrimitiveClass; diff -r a5838065ab24 -r 444ad1c62199 make/linux/makefiles/mapfile-vers-product --- a/make/linux/makefiles/mapfile-vers-product Tue Jun 24 21:37:10 2008 -0700 +++ b/make/linux/makefiles/mapfile-vers-product Fri Jun 27 18:19:29 2008 -0400 @@ -89,6 +89,7 @@ JVM_FillInStackTrace; JVM_FindClassFromClass; JVM_FindClassFromClassLoader; + JVM_FindClassFromBootLoader; JVM_FindLibraryEntry; JVM_FindLoadedClass; JVM_FindPrimitiveClass; diff -r a5838065ab24 -r 444ad1c62199 make/linux/makefiles/rules.make --- a/make/linux/makefiles/rules.make Tue Jun 24 21:37:10 2008 -0700 +++ b/make/linux/makefiles/rules.make Fri Jun 27 18:19:29 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 diff -r a5838065ab24 -r 444ad1c62199 make/pic.make --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/pic.make Fri Jun 27 18:19:29 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 diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/mapfile-vers --- a/make/solaris/makefiles/mapfile-vers Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/mapfile-vers Fri Jun 27 18:19:29 2008 -0400 @@ -89,6 +89,7 @@ JVM_FillInStackTrace; JVM_FindClassFromClass; JVM_FindClassFromClassLoader; + JVM_FindClassFromBootLoader; JVM_FindLibraryEntry; JVM_FindLoadedClass; JVM_FindPrimitiveClass; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/reorder_COMPILER1_i486 --- a/make/solaris/makefiles/reorder_COMPILER1_i486 Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/reorder_COMPILER1_i486 Fri Jun 27 18:19:29 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_; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/reorder_COMPILER1_sparc --- a/make/solaris/makefiles/reorder_COMPILER1_sparc Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/reorder_COMPILER1_sparc Fri Jun 27 18:19:29 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_; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/reorder_COMPILER2_amd64 --- a/make/solaris/makefiles/reorder_COMPILER2_amd64 Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/reorder_COMPILER2_amd64 Fri Jun 27 18:19:29 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_; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/reorder_COMPILER2_i486 --- a/make/solaris/makefiles/reorder_COMPILER2_i486 Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/reorder_COMPILER2_i486 Fri Jun 27 18:19:29 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; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/reorder_COMPILER2_sparc --- a/make/solaris/makefiles/reorder_COMPILER2_sparc Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/reorder_COMPILER2_sparc Fri Jun 27 18:19:29 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; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/reorder_COMPILER2_sparcv9 --- a/make/solaris/makefiles/reorder_COMPILER2_sparcv9 Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/reorder_COMPILER2_sparcv9 Fri Jun 27 18:19:29 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; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/reorder_TIERED_amd64 --- a/make/solaris/makefiles/reorder_TIERED_amd64 Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/reorder_TIERED_amd64 Fri Jun 27 18:19:29 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_; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/reorder_TIERED_i486 --- a/make/solaris/makefiles/reorder_TIERED_i486 Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/reorder_TIERED_i486 Fri Jun 27 18:19:29 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; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/reorder_TIERED_sparc --- a/make/solaris/makefiles/reorder_TIERED_sparc Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/reorder_TIERED_sparc Fri Jun 27 18:19:29 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; diff -r a5838065ab24 -r 444ad1c62199 make/solaris/makefiles/rules.make --- a/make/solaris/makefiles/rules.make Tue Jun 24 21:37:10 2008 -0700 +++ b/make/solaris/makefiles/rules.make Fri Jun 27 18:19:29 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 diff -r a5838065ab24 -r 444ad1c62199 make/windows/makefiles/vm.make --- a/make/windows/makefiles/vm.make Tue Jun 24 21:37:10 2008 -0700 +++ b/make/windows/makefiles/vm.make Fri Jun 27 18:19:29 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=\ diff -r a5838065ab24 -r 444ad1c62199 src/share/vm/adlc/adlc.hpp --- a/src/share/vm/adlc/adlc.hpp Tue Jun 24 21:37:10 2008 -0700 +++ b/src/share/vm/adlc/adlc.hpp Fri Jun 27 18:19:29 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 -#else -#include -#endif #include "string.h" #include "ctype.h" #include "stdarg.h" diff -r a5838065ab24 -r 444ad1c62199 src/share/vm/adlc/filebuff.hpp --- a/src/share/vm/adlc/filebuff.hpp Tue Jun 24 21:37:10 2008 -0700 +++ b/src/share/vm/adlc/filebuff.hpp Fri Jun 27 18:19:29 2008 -0400 @@ -23,13 +23,9 @@ */ // FILEBUFF.HPP - Definitions for parser file buffering routines +#include -#if _MSC_VER >= 1300 // Visual C++ 7.0 or later -#include -#else -#include -#endif - +using namespace std; // STRUCTURE FOR HANDLING INPUT AND OUTPUT FILES typedef struct { const char *_name; diff -r a5838065ab24 -r 444ad1c62199 src/share/vm/prims/jni.cpp --- a/src/share/vm/prims/jni.cpp Tue Jun 24 21:37:10 2008 -0700 +++ b/src/share/vm/prims/jni.cpp Fri Jun 27 18:19:29 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 diff -r a5838065ab24 -r 444ad1c62199 src/share/vm/prims/jvm.cpp --- a/src/share/vm/prims/jvm.cpp Tue Jun 24 21:37:10 2008 -0700 +++ b/src/share/vm/prims/jvm.cpp Fri Jun 27 18:19:29 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, diff -r a5838065ab24 -r 444ad1c62199 src/share/vm/prims/jvm.h --- a/src/share/vm/prims/jvm.h Tue Jun 24 21:37:10 2008 -0700 +++ b/src/share/vm/prims/jvm.h Fri Jun 27 18:19:29 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 diff -r a5838065ab24 -r 444ad1c62199 src/share/vm/runtime/java.cpp --- a/src/share/vm/runtime/java.cpp Tue Jun 24 21:37:10 2008 -0700 +++ b/src/share/vm/runtime/java.cpp Fri Jun 27 18:19:29 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) { diff -r a5838065ab24 -r 444ad1c62199 src/share/vm/runtime/java.hpp --- a/src/share/vm/runtime/java.hpp Tue Jun 24 21:37:10 2008 -0700 +++ b/src/share/vm/runtime/java.hpp Fri Jun 27 18:19:29 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(); diff -r a5838065ab24 -r 444ad1c62199 src/share/vm/utilities/debug.cpp --- a/src/share/vm/utilities/debug.cpp Tue Jun 24 21:37:10 2008 -0700 +++ b/src/share/vm/utilities/debug.cpp Fri Jun 27 18:19:29 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, ...) {