Mercurial > hg > graal-compiler
comparison src/share/vm/classfile/systemDictionary.cpp @ 3938:e6b1331a51d2
7086585: make Java field injection more flexible
Reviewed-by: jrose, twisti, kvn, coleenp
author | never |
---|---|
date | Sat, 10 Sep 2011 17:29:02 -0700 |
parents | fdb992d83a87 |
children | 04b9a2566eec 94ec88ca68e2 |
comparison
equal
deleted
inserted
replaced
3937:c565834fb592 | 3938:e6b1331a51d2 |
---|---|
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 // ---------------------------------------------------------------------------- |
1288 // first try to call this so it'd better be fast!! | 1288 // first try to call this so it'd better be fast!! |
1289 static instanceKlassHandle download_and_retry_class_load( | 1289 static instanceKlassHandle download_and_retry_class_load( |
1290 Symbol* class_name, | 1290 Symbol* class_name, |
1291 TRAPS) { | 1291 TRAPS) { |
1292 | 1292 |
1293 klassOop dlm = SystemDictionary::sun_jkernel_DownloadManager_klass(); | 1293 klassOop dlm = SystemDictionary::DownloadManager_klass(); |
1294 instanceKlassHandle nk; | 1294 instanceKlassHandle nk; |
1295 | 1295 |
1296 // If download manager class isn't loaded just return. | 1296 // If download manager class isn't loaded just return. |
1297 if (dlm == NULL) return nk; | 1297 if (dlm == NULL) return nk; |
1298 | 1298 |
1951 // Preload commonly used klasses | 1951 // Preload commonly used klasses |
1952 WKID scan = FIRST_WKID; | 1952 WKID scan = FIRST_WKID; |
1953 // first do Object, String, Class | 1953 // first do Object, String, Class |
1954 initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Class_klass), scan, CHECK); | 1954 initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Class_klass), scan, CHECK); |
1955 | 1955 |
1956 debug_only(instanceKlass::verify_class_klass_nonstatic_oop_maps(WK_KLASS(Class_klass))); | 1956 java_lang_Class::compute_offsets(); |
1957 | 1957 |
1958 // Fixup mirrors for classes loaded before java.lang.Class. | 1958 // Fixup mirrors for classes loaded before java.lang.Class. |
1959 // These calls iterate over the objects currently in the perm gen | 1959 // These calls iterate over the objects currently in the perm gen |
1960 // so calling them at this point is matters (not before when there | 1960 // so calling them at this point is matters (not before when there |
1961 // are fewer objects and not later after there are more objects | 1961 // are fewer objects and not later after there are more objects |
1999 _box_klasses[T_LONG] = WK_KLASS(Long_klass); | 1999 _box_klasses[T_LONG] = WK_KLASS(Long_klass); |
2000 //_box_klasses[T_OBJECT] = WK_KLASS(object_klass); | 2000 //_box_klasses[T_OBJECT] = WK_KLASS(object_klass); |
2001 //_box_klasses[T_ARRAY] = WK_KLASS(object_klass); | 2001 //_box_klasses[T_ARRAY] = WK_KLASS(object_klass); |
2002 | 2002 |
2003 #ifdef KERNEL | 2003 #ifdef KERNEL |
2004 if (sun_jkernel_DownloadManager_klass() == NULL) { | 2004 if (DownloadManager_klass() == NULL) { |
2005 warning("Cannot find sun/jkernel/DownloadManager"); | 2005 warning("Cannot find sun/jkernel/DownloadManager"); |
2006 } | 2006 } |
2007 #endif // KERNEL | 2007 #endif // KERNEL |
2008 | 2008 |
2009 { // Compute whether we should use loadClass or loadClassInternal when loading classes. | 2009 { // Compute whether we should use loadClass or loadClassInternal when loading classes. |
2734 class_size += ik->methods()->size(); | 2734 class_size += ik->methods()->size(); |
2735 class_size += ik->constants()->size(); | 2735 class_size += ik->constants()->size(); |
2736 class_size += ik->local_interfaces()->size(); | 2736 class_size += ik->local_interfaces()->size(); |
2737 class_size += ik->transitive_interfaces()->size(); | 2737 class_size += ik->transitive_interfaces()->size(); |
2738 // We do not have to count implementors, since we only store one! | 2738 // We do not have to count implementors, since we only store one! |
2739 class_size += ik->fields()->size(); | 2739 class_size += ik->all_fields_count() * FieldInfo::field_slots; |
2740 } | 2740 } |
2741 } | 2741 } |
2742 | 2742 |
2743 static void do_method(methodOop m) { | 2743 static void do_method(methodOop m) { |
2744 nmethods++; | 2744 nmethods++; |