mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8232080: jlink plugins for vendor information and run-time options
Reviewed-by: ihse, alanb, kvn, bobv, mchung
This commit is contained in:
parent
72b3f81dd4
commit
d83df45396
33 changed files with 848 additions and 45 deletions
|
@ -60,12 +60,6 @@
|
|||
#include "jfr/jfr.hpp"
|
||||
#endif
|
||||
|
||||
// Note: This is a special bug reporting site for the JVM
|
||||
#ifdef VENDOR_URL_VM_BUG
|
||||
# define DEFAULT_VENDOR_URL_BUG VENDOR_URL_VM_BUG
|
||||
#else
|
||||
# define DEFAULT_VENDOR_URL_BUG "http://bugreport.java.com/bugreport/crash.jsp"
|
||||
#endif
|
||||
#define DEFAULT_JAVA_LAUNCHER "generic"
|
||||
|
||||
char* Arguments::_jvm_flags_file = NULL;
|
||||
|
@ -80,7 +74,7 @@ size_t Arguments::_conservative_max_heap_alignment = 0;
|
|||
Arguments::Mode Arguments::_mode = _mixed;
|
||||
bool Arguments::_java_compiler = false;
|
||||
bool Arguments::_xdebug_mode = false;
|
||||
const char* Arguments::_java_vendor_url_bug = DEFAULT_VENDOR_URL_BUG;
|
||||
const char* Arguments::_java_vendor_url_bug = NULL;
|
||||
const char* Arguments::_sun_java_launcher = DEFAULT_JAVA_LAUNCHER;
|
||||
bool Arguments::_sun_java_launcher_is_altjvm = false;
|
||||
|
||||
|
@ -1422,12 +1416,16 @@ bool Arguments::add_property(const char* prop, PropertyWriteable writeable, Prop
|
|||
os::free(old_java_command);
|
||||
}
|
||||
} else if (strcmp(key, "java.vendor.url.bug") == 0) {
|
||||
// If this property is set on the command line then its value will be
|
||||
// displayed in VM error logs as the URL at which to submit such logs.
|
||||
// Normally the URL displayed in error logs is different from the value
|
||||
// of this system property, so a different property should have been
|
||||
// used here, but we leave this as-is in case someone depends upon it.
|
||||
const char* old_java_vendor_url_bug = _java_vendor_url_bug;
|
||||
// save it in _java_vendor_url_bug, so JVM fatal error handler can access
|
||||
// its value without going through the property list or making a Java call.
|
||||
_java_vendor_url_bug = os::strdup_check_oom(value, mtArguments);
|
||||
if (old_java_vendor_url_bug != DEFAULT_VENDOR_URL_BUG) {
|
||||
assert(old_java_vendor_url_bug != NULL, "_java_vendor_url_bug is NULL");
|
||||
if (old_java_vendor_url_bug != NULL) {
|
||||
os::free((void *)old_java_vendor_url_bug);
|
||||
}
|
||||
}
|
||||
|
@ -2185,7 +2183,8 @@ Arguments::ArgsRange Arguments::parse_memory_size(const char* s,
|
|||
|
||||
// Parse JavaVMInitArgs structure
|
||||
|
||||
jint Arguments::parse_vm_init_args(const JavaVMInitArgs *java_tool_options_args,
|
||||
jint Arguments::parse_vm_init_args(const JavaVMInitArgs *vm_options_args,
|
||||
const JavaVMInitArgs *java_tool_options_args,
|
||||
const JavaVMInitArgs *java_options_args,
|
||||
const JavaVMInitArgs *cmd_line_args) {
|
||||
bool patch_mod_javabase = false;
|
||||
|
@ -2203,9 +2202,15 @@ jint Arguments::parse_vm_init_args(const JavaVMInitArgs *java_tool_options_args,
|
|||
// Setup flags for mixed which is the default
|
||||
set_mode_flags(_mixed);
|
||||
|
||||
// Parse args structure generated from java.base vm options resource
|
||||
jint result = parse_each_vm_init_arg(vm_options_args, &patch_mod_javabase, JVMFlag::JIMAGE_RESOURCE);
|
||||
if (result != JNI_OK) {
|
||||
return result;
|
||||
}
|
||||
|
||||
// Parse args structure generated from JAVA_TOOL_OPTIONS environment
|
||||
// variable (if present).
|
||||
jint result = parse_each_vm_init_arg(java_tool_options_args, &patch_mod_javabase, JVMFlag::ENVIRON_VAR);
|
||||
result = parse_each_vm_init_arg(java_tool_options_args, &patch_mod_javabase, JVMFlag::ENVIRON_VAR);
|
||||
if (result != JNI_OK) {
|
||||
return result;
|
||||
}
|
||||
|
@ -2711,7 +2716,6 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, bool* patch_m
|
|||
needs_module_property_warning = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!add_property(tail)) {
|
||||
return JNI_ENOMEM;
|
||||
}
|
||||
|
@ -3832,16 +3836,19 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
|
|||
const char* hotspotrc = ".hotspotrc";
|
||||
bool settings_file_specified = false;
|
||||
bool needs_hotspotrc_warning = false;
|
||||
ScopedVMInitArgs initial_vm_options_args("");
|
||||
ScopedVMInitArgs initial_java_tool_options_args("env_var='JAVA_TOOL_OPTIONS'");
|
||||
ScopedVMInitArgs initial_java_options_args("env_var='_JAVA_OPTIONS'");
|
||||
|
||||
// Pointers to current working set of containers
|
||||
JavaVMInitArgs* cur_cmd_args;
|
||||
JavaVMInitArgs* cur_vm_options_args;
|
||||
JavaVMInitArgs* cur_java_options_args;
|
||||
JavaVMInitArgs* cur_java_tool_options_args;
|
||||
|
||||
// Containers for modified/expanded options
|
||||
ScopedVMInitArgs mod_cmd_args("cmd_line_args");
|
||||
ScopedVMInitArgs mod_vm_options_args("vm_options_args");
|
||||
ScopedVMInitArgs mod_java_tool_options_args("env_var='JAVA_TOOL_OPTIONS'");
|
||||
ScopedVMInitArgs mod_java_options_args("env_var='_JAVA_OPTIONS'");
|
||||
|
||||
|
@ -3857,6 +3864,16 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
|
|||
return code;
|
||||
}
|
||||
|
||||
// Parse the options in the /java.base/jdk/internal/vm/options resource, if present
|
||||
char *vmoptions = ClassLoader::lookup_vm_options();
|
||||
if (vmoptions != NULL) {
|
||||
code = parse_options_buffer("vm options resource", vmoptions, strlen(vmoptions), &initial_vm_options_args);
|
||||
FREE_C_HEAP_ARRAY(char, vmoptions);
|
||||
if (code != JNI_OK) {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
||||
code = expand_vm_options_as_needed(initial_java_tool_options_args.get(),
|
||||
&mod_java_tool_options_args,
|
||||
&cur_java_tool_options_args);
|
||||
|
@ -3878,6 +3895,13 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
|
|||
return code;
|
||||
}
|
||||
|
||||
code = expand_vm_options_as_needed(initial_vm_options_args.get(),
|
||||
&mod_vm_options_args,
|
||||
&cur_vm_options_args);
|
||||
if (code != JNI_OK) {
|
||||
return code;
|
||||
}
|
||||
|
||||
const char* flags_file = Arguments::get_jvm_flags_file();
|
||||
settings_file_specified = (flags_file != NULL);
|
||||
|
||||
|
@ -3915,7 +3939,8 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
|
|||
}
|
||||
|
||||
// Parse JavaVMInitArgs structure passed in, as well as JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
|
||||
jint result = parse_vm_init_args(cur_java_tool_options_args,
|
||||
jint result = parse_vm_init_args(cur_vm_options_args,
|
||||
cur_java_tool_options_args,
|
||||
cur_java_options_args,
|
||||
cur_cmd_args);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue