--- a/hotspot/src/share/vm/runtime/arguments.cpp Sat Feb 26 13:33:23 2011 -0500
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Mon Feb 28 14:19:52 2011 +0100
@@ -78,6 +78,7 @@
const char* Arguments::_java_vendor_url_bug = DEFAULT_VENDOR_URL_BUG;
const char* Arguments::_sun_java_launcher = DEFAULT_JAVA_LAUNCHER;
int Arguments::_sun_java_launcher_pid = -1;
+bool Arguments::_created_by_gamma_launcher = false;
// These parameters are reset in method parse_vm_init_args(JavaVMInitArgs*)
bool Arguments::_AlwaysCompileLoopMethods = AlwaysCompileLoopMethods;
@@ -1656,6 +1657,9 @@
void Arguments::process_java_launcher_argument(const char* launcher, void* extra_info) {
_sun_java_launcher = strdup(launcher);
+ if (strcmp("gamma", _sun_java_launcher) == 0) {
+ _created_by_gamma_launcher = true;
+ }
}
bool Arguments::created_by_java_launcher() {
@@ -1663,6 +1667,10 @@
return strcmp(DEFAULT_JAVA_LAUNCHER, _sun_java_launcher) != 0;
}
+bool Arguments::created_by_gamma_launcher() {
+ return _created_by_gamma_launcher;
+}
+
//===========================================================================================================
// Parsing of main arguments
@@ -3155,6 +3163,16 @@
}
}
+ // set PauseAtExit if the gamma launcher was used and a debugger is attached
+ // but only if not already set on the commandline
+ if (Arguments::created_by_gamma_launcher() && os::is_debugger_attached()) {
+ bool set = false;
+ CommandLineFlags::wasSetOnCmdline("PauseAtExit", &set);
+ if (!set) {
+ FLAG_SET_DEFAULT(PauseAtExit, true);
+ }
+ }
+
return JNI_OK;
}