< prev index next >
src/hotspot/share/classfile/classLoader.hpp
Print this page
*** 24,42 ****
#ifndef SHARE_CLASSFILE_CLASSLOADER_HPP
#define SHARE_CLASSFILE_CLASSLOADER_HPP
#include "jimage.hpp"
#include "runtime/handles.hpp"
#include "runtime/perfData.hpp"
#include "utilities/exceptions.hpp"
#include "utilities/macros.hpp"
// The VM class loader.
#include <sys/stat.h>
! // Name of boot "modules" image
#define MODULES_IMAGE_NAME "modules"
// Class path entry (directory or zip file)
class JImageFile;
--- 24,48 ----
#ifndef SHARE_CLASSFILE_CLASSLOADER_HPP
#define SHARE_CLASSFILE_CLASSLOADER_HPP
#include "jimage.hpp"
+ #include "runtime/arguments.hpp"
#include "runtime/handles.hpp"
#include "runtime/perfData.hpp"
#include "utilities/exceptions.hpp"
#include "utilities/macros.hpp"
// The VM class loader.
#include <sys/stat.h>
! // Name of boot "modules" image. This macro may be used with caution.
! //
! // For most of use cases, ClassLoader::modules_image_name(), which gives the
! // canonical name should be used. When dealing with the system boot path string
! // that's set up by os::set_boot_path(), then the canonical name cannot be
! // used and MODULES_IMAGE_NAME should be used directly.
#define MODULES_IMAGE_NAME "modules"
// Class path entry (directory or zip file)
class JImageFile;
*** 215,224 ****
--- 221,233 ----
// Note: boot loader append path does not support named modules.
static ClassPathEntry* _first_append_entry;
// Last entry in linked list of appended ClassPathEntry instances
static ClassPathEntry* _last_append_entry;
+ // The modules image name obtained from the canonical path.
+ static const char* _modules_image_name;
+
// Info used by CDS
CDS_ONLY(static SharedPathsMiscInfo * _shared_paths_misc_info;)
CDS_ONLY(static ClassPathEntry* _app_classpath_entries;)
CDS_ONLY(static ClassPathEntry* _last_app_classpath_entry;)
*** 246,255 ****
--- 255,267 ----
static void create_javabase();
static void load_zip_library();
static void load_jimage_library();
+ static const char* skip_directories(const char* path);
+ static void init_modules_image_name(const char* modules_path);
+
public:
static ClassPathEntry* create_class_path_entry(const char *path, const struct stat* st,
bool throw_exception,
bool is_boot_append, TRAPS);
*** 437,447 ****
// obtain package name from a fully qualified class name
// *bad_class_name is set to true if there's a problem with parsing class_name, to
// distinguish from a class_name with no package name, as both cases have a NULL return value
static const char* package_from_name(const char* const class_name, bool* bad_class_name = NULL);
! static bool is_modules_image(const char* name) { return string_ends_with(name, MODULES_IMAGE_NAME); }
// Debugging
static void verify() PRODUCT_RETURN;
};
--- 449,466 ----
// obtain package name from a fully qualified class name
// *bad_class_name is set to true if there's a problem with parsing class_name, to
// distinguish from a class_name with no package name, as both cases have a NULL return value
static const char* package_from_name(const char* const class_name, bool* bad_class_name = NULL);
! static const char* modules_image_name() { return _modules_image_name; }
! static bool is_modules_image(const char* name) {
! if (Arguments::has_jimage()) {
! assert(_modules_image_name != NULL, "must be set");
! return string_ends_with(name, _modules_image_name);
! }
! return false;
! }
// Debugging
static void verify() PRODUCT_RETURN;
};
< prev index next >