hotspot/src/share/vm/oops/instanceKlass.cpp
changeset 22929 cb114f3238ef
parent 22909 15ec24a0cfad
parent 22920 dd3a135fca38
child 23515 f4872ef5df09
equal deleted inserted replaced
22909:15ec24a0cfad 22929:cb114f3238ef
  2197 
  2197 
  2198 void InstanceKlass::clean_method_data(BoolObjectClosure* is_alive) {
  2198 void InstanceKlass::clean_method_data(BoolObjectClosure* is_alive) {
  2199   for (int m = 0; m < methods()->length(); m++) {
  2199   for (int m = 0; m < methods()->length(); m++) {
  2200     MethodData* mdo = methods()->at(m)->method_data();
  2200     MethodData* mdo = methods()->at(m)->method_data();
  2201     if (mdo != NULL) {
  2201     if (mdo != NULL) {
  2202       for (ProfileData* data = mdo->first_data();
  2202       mdo->clean_method_data(is_alive);
  2203            mdo->is_valid(data);
       
  2204            data = mdo->next_data(data)) {
       
  2205         data->clean_weak_klass_links(is_alive);
       
  2206       }
       
  2207       ParametersTypeData* parameters = mdo->parameters_type_data();
       
  2208       if (parameters != NULL) {
       
  2209         parameters->clean_weak_klass_links(is_alive);
       
  2210       }
       
  2211     }
  2203     }
  2212   }
  2204   }
  2213 }
  2205 }
  2214 
  2206 
  2215 
  2207 
  2724   nmethod* cur  = osr_nmethods_head();
  2716   nmethod* cur  = osr_nmethods_head();
  2725   int max_level = CompLevel_none;  // Find the max comp level excluding n
  2717   int max_level = CompLevel_none;  // Find the max comp level excluding n
  2726   Method* m = n->method();
  2718   Method* m = n->method();
  2727   // Search for match
  2719   // Search for match
  2728   while(cur != NULL && cur != n) {
  2720   while(cur != NULL && cur != n) {
  2729     if (TieredCompilation) {
  2721     if (TieredCompilation && m == cur->method()) {
  2730       // Find max level before n
  2722       // Find max level before n
  2731       max_level = MAX2(max_level, cur->comp_level());
  2723       max_level = MAX2(max_level, cur->comp_level());
  2732     }
  2724     }
  2733     last = cur;
  2725     last = cur;
  2734     cur = cur->osr_link();
  2726     cur = cur->osr_link();
  2746   n->set_osr_link(NULL);
  2738   n->set_osr_link(NULL);
  2747   if (TieredCompilation) {
  2739   if (TieredCompilation) {
  2748     cur = next;
  2740     cur = next;
  2749     while (cur != NULL) {
  2741     while (cur != NULL) {
  2750       // Find max level after n
  2742       // Find max level after n
  2751       max_level = MAX2(max_level, cur->comp_level());
  2743       if (m == cur->method()) {
       
  2744         max_level = MAX2(max_level, cur->comp_level());
       
  2745       }
  2752       cur = cur->osr_link();
  2746       cur = cur->osr_link();
  2753     }
  2747     }
  2754     m->set_highest_osr_comp_level(max_level);
  2748     m->set_highest_osr_comp_level(max_level);
  2755   }
  2749   }
  2756   // Remember to unlock again
  2750   // Remember to unlock again