提交 0076280f 编写于 作者: G goetz

8039146: Fix 64-bit store to int JNIHandleBlock::_top

Reviewed-by: coleenp, kvn
上级 0dcbaf29
...@@ -960,7 +960,7 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) { ...@@ -960,7 +960,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, ...@@ -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) { ...@@ -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
......
...@@ -1354,7 +1354,7 @@ address InterpreterGenerator::generate_native_entry(bool synchronized) { ...@@ -1354,7 +1354,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, ...@@ -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, ...@@ -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) { ...@@ -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) { ...@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册