132 } 133 134 void SystemDictionary::compute_java_loaders(TRAPS) { 135 JavaValue result(T_OBJECT); 136 InstanceKlass* class_loader_klass = SystemDictionary::ClassLoader_klass(); 137 JavaCalls::call_static(&result, 138 class_loader_klass, 139 vmSymbols::getSystemClassLoader_name(), 140 vmSymbols::void_classloader_signature(), 141 CHECK); 142 143 _java_system_loader = (oop)result.get_jobject(); 144 145 JavaCalls::call_static(&result, 146 class_loader_klass, 147 vmSymbols::getPlatformClassLoader_name(), 148 vmSymbols::void_classloader_signature(), 149 CHECK); 150 151 _java_platform_loader = (oop)result.get_jobject(); 152 153 CDS_ONLY(SystemDictionaryShared::initialize(CHECK);) 154 } 155 156 ClassLoaderData* SystemDictionary::register_loader(Handle class_loader) { 157 if (class_loader() == NULL) return ClassLoaderData::the_null_class_loader_data(); 158 return ClassLoaderDataGraph::find_or_create(class_loader); 159 } 160 161 // ---------------------------------------------------------------------------- 162 // Parallel class loading check 163 164 bool SystemDictionary::is_parallelCapable(Handle class_loader) { 165 if (class_loader.is_null()) return true; 166 if (AlwaysLockClassLoader) return false; 167 return java_lang_ClassLoader::parallelCapable(class_loader()); 168 } 169 // ---------------------------------------------------------------------------- 170 // ParallelDefineClass flag does not apply to bootclass loader 171 bool SystemDictionary::is_parallelDefine(Handle class_loader) { 172 if (class_loader.is_null()) return false; 173 if (AllowParallelDefineClass && java_lang_ClassLoader::parallelCapable(class_loader())) { | 132 } 133 134 void SystemDictionary::compute_java_loaders(TRAPS) { 135 JavaValue result(T_OBJECT); 136 InstanceKlass* class_loader_klass = SystemDictionary::ClassLoader_klass(); 137 JavaCalls::call_static(&result, 138 class_loader_klass, 139 vmSymbols::getSystemClassLoader_name(), 140 vmSymbols::void_classloader_signature(), 141 CHECK); 142 143 _java_system_loader = (oop)result.get_jobject(); 144 145 JavaCalls::call_static(&result, 146 class_loader_klass, 147 vmSymbols::getPlatformClassLoader_name(), 148 vmSymbols::void_classloader_signature(), 149 CHECK); 150 151 _java_platform_loader = (oop)result.get_jobject(); 152 } 153 154 ClassLoaderData* SystemDictionary::register_loader(Handle class_loader) { 155 if (class_loader() == NULL) return ClassLoaderData::the_null_class_loader_data(); 156 return ClassLoaderDataGraph::find_or_create(class_loader); 157 } 158 159 // ---------------------------------------------------------------------------- 160 // Parallel class loading check 161 162 bool SystemDictionary::is_parallelCapable(Handle class_loader) { 163 if (class_loader.is_null()) return true; 164 if (AlwaysLockClassLoader) return false; 165 return java_lang_ClassLoader::parallelCapable(class_loader()); 166 } 167 // ---------------------------------------------------------------------------- 168 // ParallelDefineClass flag does not apply to bootclass loader 169 bool SystemDictionary::is_parallelDefine(Handle class_loader) { 170 if (class_loader.is_null()) return false; 171 if (AllowParallelDefineClass && java_lang_ClassLoader::parallelCapable(class_loader())) { |