src/share/vm/interpreter/interpreterRuntime.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/interpreter/interpreterRuntime.cpp
src/share/vm/interpreter/interpreterRuntime.cpp
Print this page
rev 12400 : 8168503: JEP 297: Unified arm32/arm64 Port
Reviewed-by: kvn, enevill, ihse, dholmes, erik, coleenp, cjplummer
*** 25,35 ****
#include "precompiled.hpp"
#include "classfile/javaClasses.inline.hpp"
#include "classfile/systemDictionary.hpp"
#include "classfile/vmSymbols.hpp"
#include "code/codeCache.hpp"
- #include "code/codeCacheExtensions.hpp"
#include "compiler/compileBroker.hpp"
#include "compiler/disassembler.hpp"
#include "gc/shared/collectedHeap.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
--- 25,34 ----
*** 1197,1216 ****
memcpy(handler, buffer->insts_begin(), insts_size);
pd_set_handler(handler);
ICache::invalidate_range(handler, insts_size);
_handler = handler + insts_size;
}
- CodeCacheExtensions::handle_generated_handler(handler, buffer->name(), _handler);
return handler;
}
void SignatureHandlerLibrary::add(const methodHandle& method) {
if (method->signature_handler() == NULL) {
// use slow signature handler if we can't do better
int handler_index = -1;
// check if we can use customized (fast) signature handler
! if (UseFastSignatureHandlers && CodeCacheExtensions::support_fast_signature_handlers() && method->size_of_parameters() <= Fingerprinter::max_size_of_parameters) {
// use customized signature handler
MutexLocker mu(SignatureHandlerLibrary_lock);
// make sure data structure is initialized
initialize();
// lookup method signature's fingerprint
--- 1196,1214 ----
memcpy(handler, buffer->insts_begin(), insts_size);
pd_set_handler(handler);
ICache::invalidate_range(handler, insts_size);
_handler = handler + insts_size;
}
return handler;
}
void SignatureHandlerLibrary::add(const methodHandle& method) {
if (method->signature_handler() == NULL) {
// use slow signature handler if we can't do better
int handler_index = -1;
// check if we can use customized (fast) signature handler
! if (UseFastSignatureHandlers && method->size_of_parameters() <= Fingerprinter::max_size_of_parameters) {
// use customized signature handler
MutexLocker mu(SignatureHandlerLibrary_lock);
// make sure data structure is initialized
initialize();
// lookup method signature's fingerprint
*** 1223,1241 ****
ResourceMark rm;
ptrdiff_t align_offset = (address)
round_to((intptr_t)_buffer, CodeEntryAlignment) - (address)_buffer;
CodeBuffer buffer((address)(_buffer + align_offset),
SignatureHandlerLibrary::buffer_size - align_offset);
- if (!CodeCacheExtensions::support_dynamic_code()) {
- // we need a name for the signature (for lookups or saving)
- const int SYMBOL_SIZE = 50;
- char *symbolName = NEW_RESOURCE_ARRAY(char, SYMBOL_SIZE);
- // support for named signatures
- jio_snprintf(symbolName, SYMBOL_SIZE,
- "native_" UINT64_FORMAT, fingerprint);
- buffer.set_name(symbolName);
- }
InterpreterRuntime::SignatureHandlerGenerator(method, &buffer).generate(fingerprint);
// copy into code heap
address handler = set_handler(&buffer);
if (handler == NULL) {
// use slow signature handler (without memorizing it in the fingerprints)
--- 1221,1230 ----
*** 1249,1259 ****
(method->is_static() ? "static" : "receiver"),
method->name_and_sig_as_C_string(),
fingerprint,
buffer.insts_size());
if (buffer.insts_size() > 0) {
- // buffer may be empty for pregenerated handlers
Disassembler::decode(handler, handler + buffer.insts_size());
}
#ifndef PRODUCT
address rh_begin = Interpreter::result_handler(method()->result_type());
if (CodeCache::contains(rh_begin)) {
--- 1238,1247 ----
src/share/vm/interpreter/interpreterRuntime.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File