Mercurial > hg > truffle
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++; |