comparison src/share/vm/classfile/systemDictionary.cpp @ 2244:4f26f535a225

6354181: nsk.logging.stress.threads.scmhml001 fails assertion in "src/share/vm/oops/instanceKlass.cpp, 111" Reviewed-by: jrose, acorn
author never
date Mon, 31 Jan 2011 17:48:21 -0800
parents 3582bf76420e
children 2ab52cda08e5 72dee110246f
comparison
equal deleted inserted replaced
2177:3582bf76420e 2244:4f26f535a225
1688 // is held, to ensure that the compiler is not using the class hierachy, and that deoptimization will kick in 1688 // is held, to ensure that the compiler is not using the class hierachy, and that deoptimization will kick in
1689 // before a new class is used. 1689 // before a new class is used.
1690 1690
1691 void SystemDictionary::add_to_hierarchy(instanceKlassHandle k, TRAPS) { 1691 void SystemDictionary::add_to_hierarchy(instanceKlassHandle k, TRAPS) {
1692 assert(k.not_null(), "just checking"); 1692 assert(k.not_null(), "just checking");
1693 assert_locked_or_safepoint(Compile_lock);
1694
1693 // Link into hierachy. Make sure the vtables are initialized before linking into 1695 // Link into hierachy. Make sure the vtables are initialized before linking into
1694 k->append_to_sibling_list(); // add to superklass/sibling list 1696 k->append_to_sibling_list(); // add to superklass/sibling list
1695 k->process_interfaces(THREAD); // handle all "implements" declarations 1697 k->process_interfaces(THREAD); // handle all "implements" declarations
1696 k->set_init_state(instanceKlass::loaded); 1698 k->set_init_state(instanceKlass::loaded);
1697 // Now flush all code that depended on old class hierarchy. 1699 // Now flush all code that depended on old class hierarchy.
2150 SystemDictionary_lock->notify_all(); 2152 SystemDictionary_lock->notify_all();
2151 } 2153 }
2152 } 2154 }
2153 2155
2154 2156
2157 // Try to find a class name using the loader constraints. The
2158 // loader constraints might know about a class that isn't fully loaded
2159 // yet and these will be ignored.
2155 klassOop SystemDictionary::find_constrained_instance_or_array_klass( 2160 klassOop SystemDictionary::find_constrained_instance_or_array_klass(
2156 Symbol* class_name, Handle class_loader, TRAPS) { 2161 Symbol* class_name, Handle class_loader, TRAPS) {
2157 2162
2158 // First see if it has been loaded directly. 2163 // First see if it has been loaded directly.
2159 // Force the protection domain to be null. (This removes protection checks.) 2164 // Force the protection domain to be null. (This removes protection checks.)