< prev index next >
src/hotspot/share/classfile/classLoaderExt.hpp
Print this page
*** 27,104 ****
#include "classfile/classLoader.hpp"
#include "classfile/moduleEntry.hpp"
#include "utilities/macros.hpp"
! CDS_ONLY(class SharedPathsMiscInfoExt;)
! CDS_ONLY(class ClassListParser;)
class ClassLoaderExt: public ClassLoader { // AllStatic
public:
enum SomeConstants {
max_classpath_index = 0x7fff
};
- // ClassLoaderExt::Context --
- //
- // This is used by DumpSharedSpaces only - it enforces the same classloader
- // delegation model as would be in run-time. I.e.,
- // + classes defined by the NULL class loader cannot load classes in the PLATFORM or APP paths.
- // + classes defined by the PLATFORM class loader cannot load classes in the APP paths.
- class Context {
- static Thread* _dump_thread;
- const char* _class_name;
- const char* _file_name;
- public:
- const char* class_name() {
- return _class_name;
- }
- const char* file_name() {
- return _file_name;
- }
-
- Context(const char* class_name, const char* file_name, TRAPS) {
- _class_name = class_name;
- _file_name = file_name;
- #if INCLUDE_CDS
- if (!DumpSharedSpaces && !UseSharedSpaces) {
- // Must not modify _app_class_paths_start_index if we're not using CDS.
- assert(_app_class_paths_start_index == ClassLoaderExt::max_classpath_index, "must be");
- }
- #endif
- }
-
- bool should_verify(int classpath_index) {
- CDS_ONLY(return (classpath_index >= _app_class_paths_start_index);)
- NOT_CDS(return false;)
- }
-
- void record_result(Symbol* class_name,
- const s2 classpath_index,
- InstanceKlass* result,
- TRAPS) {
- #if INCLUDE_CDS
- ClassLoaderExt::record_result(this, class_name, classpath_index, result, THREAD);
- #endif
- }
-
- ~Context() {
- #if INCLUDE_CDS
- if (!DumpSharedSpaces && !UseSharedSpaces) {
- // Must not modify app_class_paths_start_index if we're not using CDS.
- assert(_app_class_paths_start_index == ClassLoaderExt::max_classpath_index, "must be");
- }
- #endif
- }
- }; // end ClassLoaderExt::Context
private:
#if INCLUDE_CDS
static char* get_class_path_attr(const char* jar_path, char* manifest, jint manifest_size);
static void setup_app_search_path(); // Only when -Xshare:dump
static void process_module_table(ModuleEntryTable* met, TRAPS);
! static SharedPathsMiscInfoExt* shared_paths_misc_info() {
! return (SharedPathsMiscInfoExt*)_shared_paths_misc_info;
}
// index of first app JAR in shared classpath entry table
static jshort _app_class_paths_start_index;
// index of first modular JAR in shared modulepath entry table
static jshort _app_module_paths_start_index;
--- 27,51 ----
#include "classfile/classLoader.hpp"
#include "classfile/moduleEntry.hpp"
#include "utilities/macros.hpp"
! class ClassListParser;
class ClassLoaderExt: public ClassLoader { // AllStatic
public:
enum SomeConstants {
max_classpath_index = 0x7fff
};
private:
#if INCLUDE_CDS
static char* get_class_path_attr(const char* jar_path, char* manifest, jint manifest_size);
static void setup_app_search_path(); // Only when -Xshare:dump
static void process_module_table(ModuleEntryTable* met, TRAPS);
! static SharedPathsMiscInfo* shared_paths_misc_info() {
! return (SharedPathsMiscInfo*)_shared_paths_misc_info;
}
// index of first app JAR in shared classpath entry table
static jshort _app_class_paths_start_index;
// index of first modular JAR in shared modulepath entry table
static jshort _app_module_paths_start_index;
*** 108,117 ****
--- 55,68 ----
#endif
public:
CDS_ONLY(static void process_jar_manifest(ClassPathEntry* entry, bool check_for_duplicates);)
+ static bool should_verify(int classpath_index) {
+ CDS_ONLY(return (classpath_index >= _app_class_paths_start_index);)
+ NOT_CDS(return false;)
+ }
// Called by JVMTI code to add boot classpath
static void append_boot_classpath(ClassPathEntry* new_entry);
static void setup_search_paths() NOT_CDS_RETURN;
static void setup_module_paths(TRAPS) NOT_CDS_RETURN;
*** 154,166 ****
static bool has_platform_or_app_classes() {
return _has_app_classes || _has_platform_classes;
}
! static void record_result(class ClassLoaderExt::Context *context,
! Symbol* class_name,
! const s2 classpath_index,
InstanceKlass* result, TRAPS);
static InstanceKlass* load_class(Symbol* h_name, const char* path, TRAPS);
static Klass* load_one_class(ClassListParser* parser, TRAPS);
static void set_has_app_classes() {
_has_app_classes = true;
--- 105,115 ----
static bool has_platform_or_app_classes() {
return _has_app_classes || _has_platform_classes;
}
! static void record_result(const s2 classpath_index,
InstanceKlass* result, TRAPS);
static InstanceKlass* load_class(Symbol* h_name, const char* path, TRAPS);
static Klass* load_one_class(ClassListParser* parser, TRAPS);
static void set_has_app_classes() {
_has_app_classes = true;
< prev index next >