mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8199567: [Nestmates] Cleanup instanceKlass.cpp
Reviewed-by: lfoltan, coleenp
This commit is contained in:
parent
34397c4914
commit
c145bd0bd0
1 changed files with 24 additions and 14 deletions
|
@ -165,10 +165,18 @@ bool InstanceKlass::has_nest_member(InstanceKlass* k, TRAPS) const {
|
||||||
k->external_name(), this->external_name());
|
k->external_name(), this->external_name());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check names first and if they match then check actual klass. This avoids
|
// Check for a resolved cp entry , else fall back to a name check.
|
||||||
// resolving anything unnecessarily.
|
// We don't want to resolve any class other than the one being checked.
|
||||||
for (int i = 0; i < _nest_members->length(); i++) {
|
for (int i = 0; i < _nest_members->length(); i++) {
|
||||||
int cp_index = _nest_members->at(i);
|
int cp_index = _nest_members->at(i);
|
||||||
|
if (_constants->tag_at(cp_index).is_klass()) {
|
||||||
|
Klass* k2 = _constants->klass_at(cp_index, CHECK_false);
|
||||||
|
if (k2 == k) {
|
||||||
|
log_trace(class, nestmates)("- class is listed at nest_members[%d] => cp[%d]", i, cp_index);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
Symbol* name = _constants->klass_name_at(cp_index);
|
Symbol* name = _constants->klass_name_at(cp_index);
|
||||||
if (name == k->name()) {
|
if (name == k->name()) {
|
||||||
log_trace(class, nestmates)("- Found it at nest_members[%d] => cp[%d]", i, cp_index);
|
log_trace(class, nestmates)("- Found it at nest_members[%d] => cp[%d]", i, cp_index);
|
||||||
|
@ -179,14 +187,16 @@ bool InstanceKlass::has_nest_member(InstanceKlass* k, TRAPS) const {
|
||||||
if (k2 == k) {
|
if (k2 == k) {
|
||||||
log_trace(class, nestmates)("- class is listed as a nest member");
|
log_trace(class, nestmates)("- class is listed as a nest member");
|
||||||
return true;
|
return true;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// same name but different klass!
|
// same name but different klass!
|
||||||
log_trace(class, nestmates)(" - klass comparison failed!");
|
log_trace(class, nestmates)(" - klass comparison failed!");
|
||||||
// can't have different classes for the same name, so we're done
|
// can't have two names the same, so we're done
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
log_trace(class, nestmates)("- class is NOT a nest member!");
|
log_trace(class, nestmates)("- class is NOT a nest member!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue