mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8039146: Fix 64-bit store to int JNIHandleBlock::_top
Reviewed-by: coleenp, kvn
This commit is contained in:
parent
aae7e42b0b
commit
d7b640b3ce
8 changed files with 8 additions and 8 deletions
|
@ -958,7 +958,7 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) {
|
||||||
|
|
||||||
// reset handle block
|
// reset handle block
|
||||||
__ ld_ptr(G2_thread, in_bytes(JavaThread::active_handles_offset()), G3_scratch);
|
__ ld_ptr(G2_thread, in_bytes(JavaThread::active_handles_offset()), G3_scratch);
|
||||||
__ st_ptr(G0, G3_scratch, JNIHandleBlock::top_offset_in_bytes());
|
__ st(G0, G3_scratch, JNIHandleBlock::top_offset_in_bytes());
|
||||||
|
|
||||||
|
|
||||||
// handle exceptions (exception handling will handle unlocking!)
|
// handle exceptions (exception handling will handle unlocking!)
|
||||||
|
|
|
@ -2687,7 +2687,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||||
if (!is_critical_native) {
|
if (!is_critical_native) {
|
||||||
// reset handle block
|
// reset handle block
|
||||||
__ ld_ptr(G2_thread, in_bytes(JavaThread::active_handles_offset()), L5);
|
__ ld_ptr(G2_thread, in_bytes(JavaThread::active_handles_offset()), L5);
|
||||||
__ st_ptr(G0, L5, JNIHandleBlock::top_offset_in_bytes());
|
__ st(G0, L5, JNIHandleBlock::top_offset_in_bytes());
|
||||||
|
|
||||||
__ ld_ptr(G2_thread, in_bytes(Thread::pending_exception_offset()), G3_scratch);
|
__ ld_ptr(G2_thread, in_bytes(Thread::pending_exception_offset()), G3_scratch);
|
||||||
check_forward_pending_exception(masm, G3_scratch);
|
check_forward_pending_exception(masm, G3_scratch);
|
||||||
|
|
|
@ -1147,7 +1147,7 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) {
|
||||||
|
|
||||||
// reset handle block
|
// reset handle block
|
||||||
__ ld_ptr(G2_thread, JavaThread::active_handles_offset(), G3_scratch);
|
__ ld_ptr(G2_thread, JavaThread::active_handles_offset(), G3_scratch);
|
||||||
__ st_ptr(G0, G3_scratch, JNIHandleBlock::top_offset_in_bytes());
|
__ st(G0, G3_scratch, JNIHandleBlock::top_offset_in_bytes());
|
||||||
|
|
||||||
// If we have an oop result store it where it will be safe for any further gc
|
// If we have an oop result store it where it will be safe for any further gc
|
||||||
// until we return now that we've released the handle it might be protected by
|
// until we return now that we've released the handle it might be protected by
|
||||||
|
|
|
@ -1358,7 +1358,7 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) {
|
||||||
|
|
||||||
// reset handle block
|
// reset handle block
|
||||||
__ movptr(t, Address(thread, JavaThread::active_handles_offset()));
|
__ movptr(t, Address(thread, JavaThread::active_handles_offset()));
|
||||||
__ movptr(Address(t, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
|
__ movl(Address(t, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
|
||||||
|
|
||||||
// If result was an oop then unbox and save it in the frame
|
// If result was an oop then unbox and save it in the frame
|
||||||
{ Label L;
|
{ Label L;
|
||||||
|
|
|
@ -2266,7 +2266,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||||
if (!is_critical_native) {
|
if (!is_critical_native) {
|
||||||
// reset handle block
|
// reset handle block
|
||||||
__ movptr(rcx, Address(thread, JavaThread::active_handles_offset()));
|
__ movptr(rcx, Address(thread, JavaThread::active_handles_offset()));
|
||||||
__ movptr(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
|
__ movl(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
|
||||||
|
|
||||||
// Any exception pending?
|
// Any exception pending?
|
||||||
__ cmpptr(Address(thread, in_bytes(Thread::pending_exception_offset())), (int32_t)NULL_WORD);
|
__ cmpptr(Address(thread, in_bytes(Thread::pending_exception_offset())), (int32_t)NULL_WORD);
|
||||||
|
|
|
@ -2509,7 +2509,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||||
if (!is_critical_native) {
|
if (!is_critical_native) {
|
||||||
// reset handle block
|
// reset handle block
|
||||||
__ movptr(rcx, Address(r15_thread, JavaThread::active_handles_offset()));
|
__ movptr(rcx, Address(r15_thread, JavaThread::active_handles_offset()));
|
||||||
__ movptr(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
|
__ movl(Address(rcx, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
// pop our frame
|
// pop our frame
|
||||||
|
|
|
@ -1287,7 +1287,7 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) {
|
||||||
|
|
||||||
// reset handle block
|
// reset handle block
|
||||||
__ movptr(t, Address(thread, JavaThread::active_handles_offset()));
|
__ movptr(t, Address(thread, JavaThread::active_handles_offset()));
|
||||||
__ movptr(Address(t, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
|
__ movl(Address(t, JNIHandleBlock::top_offset_in_bytes()), NULL_WORD);
|
||||||
|
|
||||||
// If result was an oop then unbox and save it in the frame
|
// If result was an oop then unbox and save it in the frame
|
||||||
{ Label L;
|
{ Label L;
|
||||||
|
|
|
@ -1259,7 +1259,7 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) {
|
||||||
|
|
||||||
// reset handle block
|
// reset handle block
|
||||||
__ movptr(t, Address(r15_thread, JavaThread::active_handles_offset()));
|
__ movptr(t, Address(r15_thread, JavaThread::active_handles_offset()));
|
||||||
__ movptr(Address(t, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
|
__ movl(Address(t, JNIHandleBlock::top_offset_in_bytes()), (int32_t)NULL_WORD);
|
||||||
|
|
||||||
// If result is an oop unbox and store it in frame where gc will see it
|
// If result is an oop unbox and store it in frame where gc will see it
|
||||||
// and result handler will pick it up
|
// and result handler will pick it up
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue