1527 "unsafeDefineClassCalls"); |
1527 "unsafeDefineClassCalls"); |
1528 } |
1528 } |
1529 |
1529 |
1530 // lookup zip library entry points |
1530 // lookup zip library entry points |
1531 load_zip_library(); |
1531 load_zip_library(); |
1532 // lookup jimage library entry points |
1532 // jimage library entry points are loaded below, in lookup_vm_options |
|
1533 setup_bootstrap_search_path(); |
|
1534 } |
|
1535 |
|
1536 char* lookup_vm_resource(JImageFile *jimage, const char *jimage_version, const char *path) { |
|
1537 jlong size; |
|
1538 JImageLocationRef location = (*JImageFindResource)(jimage, "java.base", jimage_version, path, &size); |
|
1539 if (location == 0) |
|
1540 return NULL; |
|
1541 char *val = NEW_C_HEAP_ARRAY(char, size+1, mtClass); |
|
1542 (*JImageGetResource)(jimage, location, val, size); |
|
1543 val[size] = '\0'; |
|
1544 return val; |
|
1545 } |
|
1546 |
|
1547 // Lookup VM options embedded in the modules jimage file |
|
1548 char* ClassLoader::lookup_vm_options() { |
|
1549 jint error; |
|
1550 char modules_path[JVM_MAXPATHLEN]; |
|
1551 const char* fileSep = os::file_separator(); |
|
1552 |
|
1553 // Initialize jimage library entry points |
1533 load_jimage_library(); |
1554 load_jimage_library(); |
1534 setup_bootstrap_search_path(); |
1555 |
|
1556 jio_snprintf(modules_path, JVM_MAXPATHLEN, "%s%slib%smodules", Arguments::get_java_home(), fileSep, fileSep); |
|
1557 JImageFile* jimage =(*JImageOpen)(modules_path, &error); |
|
1558 if (jimage == NULL) { |
|
1559 return NULL; |
|
1560 } |
|
1561 |
|
1562 const char *jimage_version = get_jimage_version_string(); |
|
1563 char *options = lookup_vm_resource(jimage, jimage_version, "jdk/internal/vm/options"); |
|
1564 |
|
1565 (*JImageClose)(jimage); |
|
1566 return options; |
1535 } |
1567 } |
1536 |
1568 |
1537 #if INCLUDE_CDS |
1569 #if INCLUDE_CDS |
1538 void ClassLoader::initialize_shared_path() { |
1570 void ClassLoader::initialize_shared_path() { |
1539 if (Arguments::is_dumping_archive()) { |
1571 if (Arguments::is_dumping_archive()) { |