mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
Merge
This commit is contained in:
commit
d3b254656d
26 changed files with 252 additions and 73 deletions
|
@ -1052,7 +1052,8 @@ class CommandLineFlags {
|
|||
"Use SSE2 MOVDQU instruction for Arraycopy") \
|
||||
\
|
||||
product(intx, FieldsAllocationStyle, 1, \
|
||||
"0 - type based with oops first, 1 - with oops last") \
|
||||
"0 - type based with oops first, 1 - with oops last, " \
|
||||
"2 - oops in super and sub classes are together") \
|
||||
\
|
||||
product(bool, CompactFields, true, \
|
||||
"Allocate nonstatic fields in gaps between previous fields") \
|
||||
|
@ -2707,7 +2708,8 @@ class CommandLineFlags {
|
|||
product(intx, AllocatePrefetchStyle, 1, \
|
||||
"0 = no prefetch, " \
|
||||
"1 = prefetch instructions for each allocation, " \
|
||||
"2 = use TLAB watermark to gate allocation prefetch") \
|
||||
"2 = use TLAB watermark to gate allocation prefetch, " \
|
||||
"3 = use BIS instruction on Sparc for allocation prefetch") \
|
||||
\
|
||||
product(intx, AllocatePrefetchDistance, -1, \
|
||||
"Distance to prefetch ahead of allocation pointer") \
|
||||
|
@ -3110,6 +3112,9 @@ class CommandLineFlags {
|
|||
develop_pd(intx, CodeEntryAlignment, \
|
||||
"Code entry alignment for generated code (in bytes)") \
|
||||
\
|
||||
product_pd(intx, OptoLoopAlignment, \
|
||||
"Align inner loops to zero relative to this modulus") \
|
||||
\
|
||||
product_pd(uintx, InitialCodeCacheSize, \
|
||||
"Initial code cache size (in bytes)") \
|
||||
\
|
||||
|
|
|
@ -259,13 +259,16 @@ JRT_END
|
|||
address SharedRuntime::raw_exception_handler_for_return_address(JavaThread* thread, address return_address) {
|
||||
assert(frame::verify_return_pc(return_address), "must be a return pc");
|
||||
|
||||
// Reset MethodHandle flag.
|
||||
thread->set_is_method_handle_return(false);
|
||||
|
||||
// the fastest case first
|
||||
CodeBlob* blob = CodeCache::find_blob(return_address);
|
||||
if (blob != NULL && blob->is_nmethod()) {
|
||||
nmethod* code = (nmethod*)blob;
|
||||
assert(code != NULL, "nmethod must be present");
|
||||
// Check if the return address is a MethodHandle call site.
|
||||
thread->set_is_method_handle_exception(code->is_method_handle_return(return_address));
|
||||
thread->set_is_method_handle_return(code->is_method_handle_return(return_address));
|
||||
// native nmethods don't have exception handlers
|
||||
assert(!code->is_native_method(), "no exception handler");
|
||||
assert(code->header_begin() != code->exception_begin(), "no exception handler");
|
||||
|
@ -292,7 +295,7 @@ address SharedRuntime::raw_exception_handler_for_return_address(JavaThread* thre
|
|||
nmethod* code = (nmethod*)blob;
|
||||
assert(code != NULL, "nmethod must be present");
|
||||
// Check if the return address is a MethodHandle call site.
|
||||
thread->set_is_method_handle_exception(code->is_method_handle_return(return_address));
|
||||
thread->set_is_method_handle_return(code->is_method_handle_return(return_address));
|
||||
assert(code->header_begin() != code->exception_begin(), "no exception handler");
|
||||
return code->exception_begin();
|
||||
}
|
||||
|
|
|
@ -772,7 +772,7 @@ class JavaThread: public Thread {
|
|||
volatile address _exception_pc; // PC where exception happened
|
||||
volatile address _exception_handler_pc; // PC for handler of exception
|
||||
volatile int _exception_stack_size; // Size of frame where exception happened
|
||||
volatile int _is_method_handle_exception; // True if the current exception PC is at a MethodHandle call.
|
||||
volatile int _is_method_handle_return; // true (== 1) if the current exception PC is a MethodHandle call site.
|
||||
|
||||
// support for compilation
|
||||
bool _is_compiling; // is true if a compilation is active inthis thread (one compilation per thread possible)
|
||||
|
@ -1108,13 +1108,13 @@ class JavaThread: public Thread {
|
|||
int exception_stack_size() const { return _exception_stack_size; }
|
||||
address exception_pc() const { return _exception_pc; }
|
||||
address exception_handler_pc() const { return _exception_handler_pc; }
|
||||
int is_method_handle_exception() const { return _is_method_handle_exception; }
|
||||
bool is_method_handle_return() const { return _is_method_handle_return == 1; }
|
||||
|
||||
void set_exception_oop(oop o) { _exception_oop = o; }
|
||||
void set_exception_pc(address a) { _exception_pc = a; }
|
||||
void set_exception_handler_pc(address a) { _exception_handler_pc = a; }
|
||||
void set_exception_stack_size(int size) { _exception_stack_size = size; }
|
||||
void set_is_method_handle_exception(int value) { _is_method_handle_exception = value; }
|
||||
void set_is_method_handle_return(bool value) { _is_method_handle_return = value ? 1 : 0; }
|
||||
|
||||
// Stack overflow support
|
||||
inline size_t stack_available(address cur_sp);
|
||||
|
@ -1188,7 +1188,7 @@ class JavaThread: public Thread {
|
|||
static ByteSize exception_pc_offset() { return byte_offset_of(JavaThread, _exception_pc ); }
|
||||
static ByteSize exception_handler_pc_offset() { return byte_offset_of(JavaThread, _exception_handler_pc); }
|
||||
static ByteSize exception_stack_size_offset() { return byte_offset_of(JavaThread, _exception_stack_size); }
|
||||
static ByteSize is_method_handle_exception_offset() { return byte_offset_of(JavaThread, _is_method_handle_exception); }
|
||||
static ByteSize is_method_handle_return_offset() { return byte_offset_of(JavaThread, _is_method_handle_return); }
|
||||
static ByteSize stack_guard_state_offset() { return byte_offset_of(JavaThread, _stack_guard_state ); }
|
||||
static ByteSize suspend_flags_offset() { return byte_offset_of(JavaThread, _suspend_flags ); }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue