mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 09:34:38 +02:00
8265411: Avoid unnecessary Method::init_intrinsic_id calls
Reviewed-by: dholmes, minqi
This commit is contained in:
parent
a22ad03b25
commit
739769c8fc
5 changed files with 54 additions and 7 deletions
|
@ -1404,7 +1404,7 @@ methodHandle Method::make_method_handle_intrinsic(vmIntrinsics::ID iid,
|
|||
assert(MethodHandles::is_signature_polymorphic_name(m->name()), "");
|
||||
assert(m->signature() == signature, "");
|
||||
m->compute_from_signature(signature);
|
||||
m->init_intrinsic_id();
|
||||
m->init_intrinsic_id(klass_id_for_intrinsics(m->method_holder()));
|
||||
assert(m->is_method_handle_intrinsic(), "");
|
||||
#ifdef ASSERT
|
||||
if (!MethodHandles::is_signature_polymorphic(m->intrinsic_id())) m->print();
|
||||
|
@ -1558,17 +1558,22 @@ vmSymbolID Method::klass_id_for_intrinsics(const Klass* holder) {
|
|||
|
||||
// see if the klass name is well-known:
|
||||
Symbol* klass_name = ik->name();
|
||||
return vmSymbols::find_sid(klass_name);
|
||||
vmSymbolID id = vmSymbols::find_sid(klass_name);
|
||||
if (id != vmSymbolID::NO_SID && vmIntrinsics::class_has_intrinsics(id)) {
|
||||
return id;
|
||||
} else {
|
||||
return vmSymbolID::NO_SID;
|
||||
}
|
||||
}
|
||||
|
||||
void Method::init_intrinsic_id() {
|
||||
void Method::init_intrinsic_id(vmSymbolID klass_id) {
|
||||
assert(_intrinsic_id == static_cast<int>(vmIntrinsics::_none), "do this just once");
|
||||
const uintptr_t max_id_uint = right_n_bits((int)(sizeof(_intrinsic_id) * BitsPerByte));
|
||||
assert((uintptr_t)vmIntrinsics::ID_LIMIT <= max_id_uint, "else fix size");
|
||||
assert(intrinsic_id_size_in_bytes() == sizeof(_intrinsic_id), "");
|
||||
|
||||
// the klass name is well-known:
|
||||
vmSymbolID klass_id = klass_id_for_intrinsics(method_holder());
|
||||
assert(klass_id == klass_id_for_intrinsics(method_holder()), "must be");
|
||||
assert(klass_id != vmSymbolID::NO_SID, "caller responsibility");
|
||||
|
||||
// ditto for method and signature:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue