comparison src/share/vm/classfile/systemDictionary.cpp @ 4137:04b9a2566eec

Merge with hsx23/hotspot.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Sat, 17 Dec 2011 21:40:27 +0100
parents be4ca325525a e6b1331a51d2
children 33df1aeaebbf
comparison
equal deleted inserted replaced
3737:9dc19b7d89a3 4137:04b9a2566eec
123 // Parallel class loading check 123 // Parallel class loading check
124 124
125 bool SystemDictionary::is_parallelCapable(Handle class_loader) { 125 bool SystemDictionary::is_parallelCapable(Handle class_loader) {
126 if (UnsyncloadClass || class_loader.is_null()) return true; 126 if (UnsyncloadClass || class_loader.is_null()) return true;
127 if (AlwaysLockClassLoader) return false; 127 if (AlwaysLockClassLoader) return false;
128 return java_lang_Class::parallelCapable(class_loader()); 128 return java_lang_ClassLoader::parallelCapable(class_loader());
129 } 129 }
130 // ---------------------------------------------------------------------------- 130 // ----------------------------------------------------------------------------
131 // ParallelDefineClass flag does not apply to bootclass loader 131 // ParallelDefineClass flag does not apply to bootclass loader
132 bool SystemDictionary::is_parallelDefine(Handle class_loader) { 132 bool SystemDictionary::is_parallelDefine(Handle class_loader) {
133 if (class_loader.is_null()) return false; 133 if (class_loader.is_null()) return false;
134 if (AllowParallelDefineClass && java_lang_Class::parallelCapable(class_loader())) { 134 if (AllowParallelDefineClass && java_lang_ClassLoader::parallelCapable(class_loader())) {
135 return true; 135 return true;
136 } 136 }
137 return false; 137 return false;
138 } 138 }
139 // ---------------------------------------------------------------------------- 139 // ----------------------------------------------------------------------------
1289 // first try to call this so it'd better be fast!! 1289 // first try to call this so it'd better be fast!!
1290 static instanceKlassHandle download_and_retry_class_load( 1290 static instanceKlassHandle download_and_retry_class_load(
1291 Symbol* class_name, 1291 Symbol* class_name,
1292 TRAPS) { 1292 TRAPS) {
1293 1293
1294 klassOop dlm = SystemDictionary::sun_jkernel_DownloadManager_klass(); 1294 klassOop dlm = SystemDictionary::DownloadManager_klass();
1295 instanceKlassHandle nk; 1295 instanceKlassHandle nk;
1296 1296
1297 // If download manager class isn't loaded just return. 1297 // If download manager class isn't loaded just return.
1298 if (dlm == NULL) return nk; 1298 if (dlm == NULL) return nk;
1299 1299
1952 // Preload commonly used klasses 1952 // Preload commonly used klasses
1953 WKID scan = FIRST_WKID; 1953 WKID scan = FIRST_WKID;
1954 // first do Object, String, Class 1954 // first do Object, String, Class
1955 initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Class_klass), scan, CHECK); 1955 initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Class_klass), scan, CHECK);
1956 1956
1957 debug_only(instanceKlass::verify_class_klass_nonstatic_oop_maps(WK_KLASS(Class_klass))); 1957 java_lang_Class::compute_offsets();
1958 1958
1959 // Fixup mirrors for classes loaded before java.lang.Class. 1959 // Fixup mirrors for classes loaded before java.lang.Class.
1960 // These calls iterate over the objects currently in the perm gen 1960 // These calls iterate over the objects currently in the perm gen
1961 // so calling them at this point is matters (not before when there 1961 // so calling them at this point is matters (not before when there
1962 // are fewer objects and not later after there are more objects 1962 // are fewer objects and not later after there are more objects
1977 instanceKlass::cast(WK_KLASS(FinalReference_klass))->set_reference_type(REF_FINAL); 1977 instanceKlass::cast(WK_KLASS(FinalReference_klass))->set_reference_type(REF_FINAL);
1978 instanceKlass::cast(WK_KLASS(PhantomReference_klass))->set_reference_type(REF_PHANTOM); 1978 instanceKlass::cast(WK_KLASS(PhantomReference_klass))->set_reference_type(REF_PHANTOM);
1979 1979
1980 // JSR 292 classes 1980 // JSR 292 classes
1981 WKID jsr292_group_start = WK_KLASS_ENUM_NAME(MethodHandle_klass); 1981 WKID jsr292_group_start = WK_KLASS_ENUM_NAME(MethodHandle_klass);
1982 WKID jsr292_group_end = WK_KLASS_ENUM_NAME(CallSite_klass); 1982 WKID jsr292_group_end = WK_KLASS_ENUM_NAME(VolatileCallSite_klass);
1983 initialize_wk_klasses_until(jsr292_group_start, scan, CHECK); 1983 initialize_wk_klasses_until(jsr292_group_start, scan, CHECK);
1984 if (EnableInvokeDynamic) { 1984 if (EnableInvokeDynamic) {
1985 initialize_wk_klasses_through(jsr292_group_end, scan, CHECK); 1985 initialize_wk_klasses_through(jsr292_group_end, scan, CHECK);
1986 } else { 1986 } else {
1987 // Skip the JSR 292 classes, if not enabled. 1987 // Skip the JSR 292 classes, if not enabled.
2000 _box_klasses[T_LONG] = WK_KLASS(Long_klass); 2000 _box_klasses[T_LONG] = WK_KLASS(Long_klass);
2001 //_box_klasses[T_OBJECT] = WK_KLASS(object_klass); 2001 //_box_klasses[T_OBJECT] = WK_KLASS(object_klass);
2002 //_box_klasses[T_ARRAY] = WK_KLASS(object_klass); 2002 //_box_klasses[T_ARRAY] = WK_KLASS(object_klass);
2003 2003
2004 #ifdef KERNEL 2004 #ifdef KERNEL
2005 if (sun_jkernel_DownloadManager_klass() == NULL) { 2005 if (DownloadManager_klass() == NULL) {
2006 warning("Cannot find sun/jkernel/DownloadManager"); 2006 warning("Cannot find sun/jkernel/DownloadManager");
2007 } 2007 }
2008 #endif // KERNEL 2008 #endif // KERNEL
2009 2009
2010 { // Compute whether we should use loadClass or loadClassInternal when loading classes. 2010 { // Compute whether we should use loadClass or loadClassInternal when loading classes.
2736 class_size += ik->methods()->size(); 2736 class_size += ik->methods()->size();
2737 class_size += ik->constants()->size(); 2737 class_size += ik->constants()->size();
2738 class_size += ik->local_interfaces()->size(); 2738 class_size += ik->local_interfaces()->size();
2739 class_size += ik->transitive_interfaces()->size(); 2739 class_size += ik->transitive_interfaces()->size();
2740 // We do not have to count implementors, since we only store one! 2740 // We do not have to count implementors, since we only store one!
2741 class_size += ik->fields()->size(); 2741 class_size += ik->all_fields_count() * FieldInfo::field_slots;
2742 } 2742 }
2743 } 2743 }
2744 2744
2745 static void do_method(methodOop m) { 2745 static void do_method(methodOop m) {
2746 nmethods++; 2746 nmethods++;