Mercurial > hg > graal-compiler
diff src/share/vm/runtime/arguments.cpp @ 21040:12e94cba3696
Graal Loader: load all jars matching lib/graal/graal*.jar
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Mon, 20 Apr 2015 17:56:38 +0200 |
parents | 7848fc12602b |
children | e121783a0df9 |
line wrap: on
line diff
--- a/src/share/vm/runtime/arguments.cpp Wed Apr 15 20:05:51 2015 +0200 +++ b/src/share/vm/runtime/arguments.cpp Mon Apr 20 17:56:38 2015 +0200 @@ -3621,10 +3621,28 @@ #ifdef GRAAL if (!UseGraalClassLoader) { - // Append graal.jar to boot class path - const char* home = Arguments::get_java_home(); - scp_p->add_suffix(os::format_boot_path("%/lib/graal.jar:%/lib/graal-truffle.jar", home, (int)strlen(home), os::file_separator()[0], os::path_separator()[0])); - scp_assembly_required = true; + // Append lib/graal/graal*.jar to boot class path + char graalDir[JVM_MAXPATHLEN]; + const char* fileSep = os::file_separator(); + jio_snprintf(graalDir, sizeof(graalDir), "%s%slib%sgraal", Arguments::get_java_home(), fileSep, fileSep); + DIR* dir = os::opendir(graalDir); + if (dir != NULL) { + struct dirent *entry; + char *dbuf = NEW_C_HEAP_ARRAY(char, os::readdir_buf_size(graalDir), mtInternal); + while ((entry = os::readdir(dir, (dirent *) dbuf)) != NULL) { + const char* name = entry->d_name; + const char* ext = name + strlen(name) - 4; + if (ext > name && strcmp(ext, ".jar") == 0 + && strlen(name) > strlen("graal") + && strncmp(name, "graal", strlen("graal")) == 0) { + char fileName[JVM_MAXPATHLEN]; + jio_snprintf(fileName, sizeof(fileName), "%s%s%s", graalDir, fileSep, name); + scp_p->add_suffix(fileName); + scp_assembly_required = true; + } + } + } + } #endif