8288134: Super class names don't have envelopes

Reviewed-by: iklam, hseigel, fparain
This commit is contained in:
Coleen Phillimore 2022-06-14 19:30:39 +00:00
parent fb297705f6
commit 0f580974a6
2 changed files with 14 additions and 26 deletions

View File

@ -274,24 +274,16 @@ Klass* SystemDictionary::resolve_or_null(Symbol* class_name, Handle class_loader
if (Signature::is_array(class_name)) {
return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
} else {
return resolve_instance_class_or_null_helper(class_name, class_loader, protection_domain, THREAD);
}
}
// name may be in the form of "java/lang/Object" or "Ljava/lang/Object;"
InstanceKlass* SystemDictionary::resolve_instance_class_or_null_helper(Symbol* class_name,
Handle class_loader,
Handle protection_domain,
TRAPS) {
assert(class_name != NULL && !Signature::is_array(class_name), "must be");
if (Signature::has_envelope(class_name)) {
ResourceMark rm(THREAD);
// Ignore wrapping L and ;.
TempNewSymbol name = SymbolTable::new_symbol(class_name->as_C_string() + 1,
class_name->utf8_length() - 2);
return resolve_instance_class_or_null(name, class_loader, protection_domain, THREAD);
} else {
return resolve_instance_class_or_null(class_name, class_loader, protection_domain, THREAD);
assert(class_name != NULL && !Signature::is_array(class_name), "must be");
if (Signature::has_envelope(class_name)) {
ResourceMark rm(THREAD);
// Ignore wrapping L and ;.
TempNewSymbol name = SymbolTable::new_symbol(class_name->as_C_string() + 1,
class_name->utf8_length() - 2);
return resolve_instance_class_or_null(name, class_loader, protection_domain, THREAD);
} else {
return resolve_instance_class_or_null(class_name, class_loader, protection_domain, THREAD);
}
}
}
@ -424,10 +416,10 @@ InstanceKlass* SystemDictionary::resolve_super_or_fail(Symbol* class_name,
// Resolve the superclass or superinterface, check results on return
InstanceKlass* superk =
SystemDictionary::resolve_instance_class_or_null_helper(super_name,
class_loader,
protection_domain,
THREAD);
SystemDictionary::resolve_instance_class_or_null(super_name,
class_loader,
protection_domain,
THREAD);
// Clean up placeholder entry.
{

View File

@ -317,10 +317,6 @@ private:
private:
// Basic loading operations
static InstanceKlass* resolve_instance_class_or_null_helper(Symbol* name,
Handle class_loader,
Handle protection_domain,
TRAPS);
static InstanceKlass* resolve_instance_class_or_null(Symbol* class_name,
Handle class_loader,
Handle protection_domain, TRAPS);