src/share/vm/oops/instanceKlass.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/oops

src/share/vm/oops/instanceKlass.cpp

Print this page
rev 5621 : 8027572: assert(r != 0) failed: invalid
Summary: null classes should be expected in profiles with conflicts
Reviewed-by:


2194           Klass** klass = adr_implementor();
2195           assert(klass != NULL, "null klass");
2196           if (klass != NULL) {
2197             *klass = NULL;
2198           }
2199         }
2200       }
2201     }
2202   }
2203 }
2204 
2205 void InstanceKlass::clean_method_data(BoolObjectClosure* is_alive) {
2206   for (int m = 0; m < methods()->length(); m++) {
2207     MethodData* mdo = methods()->at(m)->method_data();
2208     if (mdo != NULL) {
2209       for (ProfileData* data = mdo->first_data();
2210            mdo->is_valid(data);
2211            data = mdo->next_data(data)) {
2212         data->clean_weak_klass_links(is_alive);
2213       }




2214     }
2215   }
2216 }
2217 
2218 
2219 static void remove_unshareable_in_class(Klass* k) {
2220   // remove klass's unshareable info
2221   k->remove_unshareable_info();
2222 }
2223 
2224 void InstanceKlass::remove_unshareable_info() {
2225   Klass::remove_unshareable_info();
2226   // Unlink the class
2227   if (is_linked()) {
2228     unlink_class();
2229   }
2230   init_implementor();
2231 
2232   constants()->remove_unshareable_info();
2233 




2194           Klass** klass = adr_implementor();
2195           assert(klass != NULL, "null klass");
2196           if (klass != NULL) {
2197             *klass = NULL;
2198           }
2199         }
2200       }
2201     }
2202   }
2203 }
2204 
2205 void InstanceKlass::clean_method_data(BoolObjectClosure* is_alive) {
2206   for (int m = 0; m < methods()->length(); m++) {
2207     MethodData* mdo = methods()->at(m)->method_data();
2208     if (mdo != NULL) {
2209       for (ProfileData* data = mdo->first_data();
2210            mdo->is_valid(data);
2211            data = mdo->next_data(data)) {
2212         data->clean_weak_klass_links(is_alive);
2213       }
2214       ParametersTypeData* parameters = mdo->parameters_type_data();
2215       if (parameters != NULL) {
2216         parameters->clean_weak_klass_links(is_alive);
2217       }
2218     }
2219   }
2220 }
2221 
2222 
2223 static void remove_unshareable_in_class(Klass* k) {
2224   // remove klass's unshareable info
2225   k->remove_unshareable_info();
2226 }
2227 
2228 void InstanceKlass::remove_unshareable_info() {
2229   Klass::remove_unshareable_info();
2230   // Unlink the class
2231   if (is_linked()) {
2232     unlink_class();
2233   }
2234   init_implementor();
2235 
2236   constants()->remove_unshareable_info();
2237 


src/share/vm/oops/instanceKlass.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File