8154239: -Xbootclasspath/a breaks exploded build

Correct exploded modules build system class path search for the boot loader

Reviewed-by: acorn, ccheung, hseigel, jiangli
This commit is contained in:
Lois Foltan 2016-07-26 10:29:27 -04:00
parent 2313844e20
commit 64f4953141
11 changed files with 338 additions and 312 deletions

View file

@ -363,6 +363,9 @@ class Arguments : AllStatic {
// -Xbootclasspath/p was supported.
static PathString *_system_boot_class_path;
// Set if a modular java runtime image is present vs. a build with exploded modules
static bool _has_jimage;
// temporary: to emit warning if the default ext dirs are not empty.
// remove this variable when the warning is no longer needed.
static char* _ext_dirs;
@ -411,11 +414,6 @@ class Arguments : AllStatic {
static void set_java_compiler(bool arg) { _java_compiler = arg; }
static bool java_compiler() { return _java_compiler; }
// Capture the index location of -Xbootclasspath\a within sysclasspath.
// Used when setting up the bootstrap search path in order to
// mark the boot loader's append path observability boundary.
static int _bootclassloader_append_index;
// -Xdebug flag
static bool _xdebug_mode;
static void set_xdebug_mode(bool arg) { _xdebug_mode = arg; }
@ -669,17 +667,6 @@ class Arguments : AllStatic {
static size_t min_heap_size() { return _min_heap_size; }
static void set_min_heap_size(size_t v) { _min_heap_size = v; }
// -Xbootclasspath/a
static int bootclassloader_append_index() {
return _bootclassloader_append_index;
}
static void set_bootclassloader_append_index(int value) {
// Set only if the index has not been set yet
if (_bootclassloader_append_index == -1) {
_bootclassloader_append_index = value;
}
}
// -Xrun
static AgentLibrary* libraries() { return _libraryList.first(); }
static bool init_libraries_at_startup() { return !_libraryList.is_empty(); }
@ -739,19 +726,21 @@ class Arguments : AllStatic {
// Set up the underlying pieces of the system boot class path
static void add_xpatchprefix(const char *module_name, const char *path, bool* xpatch_javabase);
static void set_sysclasspath(const char *value) {
static void set_sysclasspath(const char *value, bool has_jimage) {
// During start up, set by os::set_boot_path()
assert(get_sysclasspath() == NULL, "System boot class path previously set");
_system_boot_class_path->set_value(value);
set_jdkbootclasspath_append();
_has_jimage = has_jimage;
}
static void append_sysclasspath(const char *value) {
_system_boot_class_path->append_value(value);
set_jdkbootclasspath_append();
_jdk_boot_class_path_append->append_value(value);
}
static void set_jdkbootclasspath_append();
static GrowableArray<ModuleXPatchPath*>* get_xpatchprefix() { return _xpatchprefix; }
static char* get_sysclasspath() { return _system_boot_class_path->value(); }
static char* get_jdk_boot_class_path_append() { return _jdk_boot_class_path_append->value(); }
static bool has_jimage() { return _has_jimage; }
static char* get_java_home() { return _java_home->value(); }
static char* get_dll_dir() { return _sun_boot_library_path->value(); }