< prev index next >
src/share/vm/runtime/sharedRuntime.cpp
Print this page
*** 2644,2655 ****
address c2i_unverified_entry,
Symbol* sig_extended) {
return _adapters->new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry, sig_extended);
}
! AdapterHandlerEntry* AdapterHandlerLibrary::get_adapter(const methodHandle& method) {
! AdapterHandlerEntry* entry = get_adapter0(method);
if (method->is_shared()) {
// See comments around Method::link_method()
MutexLocker mu(AdapterHandlerLibrary_lock);
if (method->adapter() == NULL) {
method->update_adapter_trampoline(entry);
--- 2644,2655 ----
address c2i_unverified_entry,
Symbol* sig_extended) {
return _adapters->new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry, sig_extended);
}
! AdapterHandlerEntry* AdapterHandlerLibrary::get_adapter(const methodHandle& method, TRAPS) {
! AdapterHandlerEntry* entry = get_adapter0(method, CHECK_NULL);
if (method->is_shared()) {
// See comments around Method::link_method()
MutexLocker mu(AdapterHandlerLibrary_lock);
if (method->adapter() == NULL) {
method->update_adapter_trampoline(entry);
*** 2668,2678 ****
}
return entry;
}
! AdapterHandlerEntry* AdapterHandlerLibrary::get_adapter0(const methodHandle& method) {
// Use customized signature handler. Need to lock around updates to
// the AdapterHandlerTable (it is not safe for concurrent readers
// and a single writer: this could be fixed if it becomes a
// problem).
--- 2668,2678 ----
}
return entry;
}
! AdapterHandlerEntry* AdapterHandlerLibrary::get_adapter0(const methodHandle& method, TRAPS) {
// Use customized signature handler. Need to lock around updates to
// the AdapterHandlerTable (it is not safe for concurrent readers
// and a single writer: this could be fixed if it becomes a
// problem).
*** 2727,2738 ****
// Method handle intrinsics with a __Value argument may be created during
// compilation. Only do a full system dictionary lookup if the argument name
// is not __Value, to avoid lookups from the compiler thread.
Klass* k = ss.as_klass(Handle(THREAD, holder->class_loader()),
Handle(THREAD, holder->protection_domain()),
! SignatureStream::ReturnNull, THREAD);
! assert(k != NULL && !HAS_PENDING_EXCEPTION, "can resolve klass?");
const Array<SigEntry>* sig_vk = ValueKlass::cast(k)->extended_sig();
sig_extended.appendAll(sig_vk);
}
} else {
sig_extended.push(SigEntry(ss.type()));
--- 2727,2737 ----
// Method handle intrinsics with a __Value argument may be created during
// compilation. Only do a full system dictionary lookup if the argument name
// is not __Value, to avoid lookups from the compiler thread.
Klass* k = ss.as_klass(Handle(THREAD, holder->class_loader()),
Handle(THREAD, holder->protection_domain()),
! SignatureStream::ReturnNull, CHECK_NULL);
const Array<SigEntry>* sig_vk = ValueKlass::cast(k)->extended_sig();
sig_extended.appendAll(sig_vk);
}
} else {
sig_extended.push(SigEntry(ss.type()));
< prev index next >