--- a/hotspot/src/share/vm/oops/instanceKlass.cpp Fri Feb 28 14:56:04 2014 +0100
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Fri Feb 28 08:02:20 2014 -0800
@@ -2199,15 +2199,7 @@
for (int m = 0; m < methods()->length(); m++) {
MethodData* mdo = methods()->at(m)->method_data();
if (mdo != NULL) {
- for (ProfileData* data = mdo->first_data();
- mdo->is_valid(data);
- data = mdo->next_data(data)) {
- data->clean_weak_klass_links(is_alive);
- }
- ParametersTypeData* parameters = mdo->parameters_type_data();
- if (parameters != NULL) {
- parameters->clean_weak_klass_links(is_alive);
- }
+ mdo->clean_method_data(is_alive);
}
}
}
@@ -2726,7 +2718,7 @@
Method* m = n->method();
// Search for match
while(cur != NULL && cur != n) {
- if (TieredCompilation) {
+ if (TieredCompilation && m == cur->method()) {
// Find max level before n
max_level = MAX2(max_level, cur->comp_level());
}
@@ -2748,7 +2740,9 @@
cur = next;
while (cur != NULL) {
// Find max level after n
- max_level = MAX2(max_level, cur->comp_level());
+ if (m == cur->method()) {
+ max_level = MAX2(max_level, cur->comp_level());
+ }
cur = cur->osr_link();
}
m->set_highest_osr_comp_level(max_level);