< prev index next >

src/hotspot/share/classfile/systemDictionary.cpp

Print this page


 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())) {


1953     _abstract_ownable_synchronizer_klass = InstanceKlass::cast(k);
1954   }
1955 }
1956 
1957 // ----------------------------------------------------------------------------
1958 // Initialization
1959 
1960 void SystemDictionary::initialize(TRAPS) {
1961   // Allocate arrays
1962   _placeholders        = new PlaceholderTable(_placeholder_table_size);
1963   _number_of_modifications = 0;
1964   _loader_constraints  = new LoaderConstraintTable(_loader_constraint_size);
1965   _resolution_errors   = new ResolutionErrorTable(_resolution_error_size);
1966   _invoke_method_table = new SymbolPropertyTable(_invoke_method_size);
1967   _pd_cache_table = new ProtectionDomainCacheTable(defaultProtectionDomainCacheSize);
1968 
1969   // Allocate private object used as system class loader lock
1970   _system_loader_lock_obj = oopFactory::new_intArray(0, CHECK);
1971   // Initialize basic classes
1972   initialize_preloaded_classes(CHECK);


1973 }
1974 
1975 // Compact table of directions on the initialization of klasses:
1976 static const short wk_init_info[] = {
1977   #define WK_KLASS_INIT_INFO(name, symbol, option) \
1978     ( ((int)vmSymbols::VM_SYMBOL_ENUM_NAME(symbol) \
1979           << SystemDictionary::CEIL_LG_OPTION_LIMIT) \
1980       | (int)SystemDictionary::option ),
1981   WK_KLASSES_DO(WK_KLASS_INIT_INFO)
1982   #undef WK_KLASS_INIT_INFO
1983   0
1984 };
1985 
1986 bool SystemDictionary::initialize_wk_klass(WKID id, int init_opt, TRAPS) {
1987   assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob");
1988   int  info = wk_init_info[id - FIRST_WKID];
1989   int  sid  = (info >> CEIL_LG_OPTION_LIMIT);
1990   Symbol* symbol = vmSymbols::symbol_at((vmSymbols::SID)sid);
1991   InstanceKlass** klassp = &_well_known_klasses[id];
1992 




 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())) {


1951     _abstract_ownable_synchronizer_klass = InstanceKlass::cast(k);
1952   }
1953 }
1954 
1955 // ----------------------------------------------------------------------------
1956 // Initialization
1957 
1958 void SystemDictionary::initialize(TRAPS) {
1959   // Allocate arrays
1960   _placeholders        = new PlaceholderTable(_placeholder_table_size);
1961   _number_of_modifications = 0;
1962   _loader_constraints  = new LoaderConstraintTable(_loader_constraint_size);
1963   _resolution_errors   = new ResolutionErrorTable(_resolution_error_size);
1964   _invoke_method_table = new SymbolPropertyTable(_invoke_method_size);
1965   _pd_cache_table = new ProtectionDomainCacheTable(defaultProtectionDomainCacheSize);
1966 
1967   // Allocate private object used as system class loader lock
1968   _system_loader_lock_obj = oopFactory::new_intArray(0, CHECK);
1969   // Initialize basic classes
1970   initialize_preloaded_classes(CHECK);
1971 
1972   CDS_ONLY(SystemDictionaryShared::initialize_locks();)
1973 }
1974 
1975 // Compact table of directions on the initialization of klasses:
1976 static const short wk_init_info[] = {
1977   #define WK_KLASS_INIT_INFO(name, symbol, option) \
1978     ( ((int)vmSymbols::VM_SYMBOL_ENUM_NAME(symbol) \
1979           << SystemDictionary::CEIL_LG_OPTION_LIMIT) \
1980       | (int)SystemDictionary::option ),
1981   WK_KLASSES_DO(WK_KLASS_INIT_INFO)
1982   #undef WK_KLASS_INIT_INFO
1983   0
1984 };
1985 
1986 bool SystemDictionary::initialize_wk_klass(WKID id, int init_opt, TRAPS) {
1987   assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob");
1988   int  info = wk_init_info[id - FIRST_WKID];
1989   int  sid  = (info >> CEIL_LG_OPTION_LIMIT);
1990   Symbol* symbol = vmSymbols::symbol_at((vmSymbols::SID)sid);
1991   InstanceKlass** klassp = &_well_known_klasses[id];
1992 


< prev index next >