mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8168503: JEP 297: Unified arm32/arm64 Port
Reviewed-by: kvn, enevill, ihse, dholmes, erikj, coleenp, cjplummer
This commit is contained in:
parent
4106c6bc9b
commit
6009cf0793
131 changed files with 62914 additions and 519 deletions
|
@ -29,7 +29,6 @@
|
|||
#include "classfile/vmSymbols.hpp"
|
||||
#include "code/codeCache.hpp"
|
||||
#include "code/compiledIC.hpp"
|
||||
#include "code/codeCacheExtensions.hpp"
|
||||
#include "code/scopeDesc.hpp"
|
||||
#include "code/vtableStubs.hpp"
|
||||
#include "compiler/abstractCompiler.hpp"
|
||||
|
@ -2580,27 +2579,15 @@ void AdapterHandlerLibrary::initialize() {
|
|||
if (_adapters != NULL) return;
|
||||
_adapters = new AdapterHandlerTable();
|
||||
|
||||
if (!CodeCacheExtensions::skip_compiler_support()) {
|
||||
// Create a special handler for abstract methods. Abstract methods
|
||||
// are never compiled so an i2c entry is somewhat meaningless, but
|
||||
// throw AbstractMethodError just in case.
|
||||
// Pass wrong_method_abstract for the c2i transitions to return
|
||||
// AbstractMethodError for invalid invocations.
|
||||
address wrong_method_abstract = SharedRuntime::get_handle_wrong_method_abstract_stub();
|
||||
_abstract_method_handler = AdapterHandlerLibrary::new_entry(new AdapterFingerPrint(0, NULL),
|
||||
StubRoutines::throw_AbstractMethodError_entry(),
|
||||
wrong_method_abstract, wrong_method_abstract);
|
||||
} else {
|
||||
// Adapters are not supposed to be used.
|
||||
// Generate a special one to cause an error if used (and store this
|
||||
// singleton in place of the useless _abstract_method_error adapter).
|
||||
address entry = (address) &unexpected_adapter_call;
|
||||
_abstract_method_handler = AdapterHandlerLibrary::new_entry(new AdapterFingerPrint(0, NULL),
|
||||
entry,
|
||||
entry,
|
||||
entry);
|
||||
|
||||
}
|
||||
// Create a special handler for abstract methods. Abstract methods
|
||||
// are never compiled so an i2c entry is somewhat meaningless, but
|
||||
// throw AbstractMethodError just in case.
|
||||
// Pass wrong_method_abstract for the c2i transitions to return
|
||||
// AbstractMethodError for invalid invocations.
|
||||
address wrong_method_abstract = SharedRuntime::get_handle_wrong_method_abstract_stub();
|
||||
_abstract_method_handler = AdapterHandlerLibrary::new_entry(new AdapterFingerPrint(0, NULL),
|
||||
StubRoutines::throw_AbstractMethodError_entry(),
|
||||
wrong_method_abstract, wrong_method_abstract);
|
||||
}
|
||||
|
||||
AdapterHandlerEntry* AdapterHandlerLibrary::new_entry(AdapterFingerPrint* fingerprint,
|
||||
|
@ -2651,17 +2638,6 @@ AdapterHandlerEntry* AdapterHandlerLibrary::get_adapter0(const methodHandle& met
|
|||
// make sure data structure is initialized
|
||||
initialize();
|
||||
|
||||
// during dump time, always generate adapters, even if the
|
||||
// compiler has been turned off.
|
||||
if (!DumpSharedSpaces && CodeCacheExtensions::skip_compiler_support()) {
|
||||
// adapters are useless and should not be used, including the
|
||||
// abstract_method_handler. However, some callers check that
|
||||
// an adapter was installed.
|
||||
// Return the singleton adapter, stored into _abstract_method_handler
|
||||
// and modified to cause an error if we ever call it.
|
||||
return _abstract_method_handler;
|
||||
}
|
||||
|
||||
if (method->is_abstract()) {
|
||||
return _abstract_method_handler;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue