< 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 >