mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
6787106: Hotspot 32 bit build fails on platforms having different definitions for intptr_t & int32_t
Avoid casting between int32_t and intptr_t specifically for MasmAssembler::movptr in 32 bit platforms. Reviewed-by: jrose, kvn
This commit is contained in:
parent
d80f5c0265
commit
1362b9fd1d
14 changed files with 61 additions and 57 deletions
|
@ -5212,15 +5212,15 @@ void MacroAssembler::pushptr(AddressLiteral src) {
|
||||||
void MacroAssembler::reset_last_Java_frame(bool clear_fp,
|
void MacroAssembler::reset_last_Java_frame(bool clear_fp,
|
||||||
bool clear_pc) {
|
bool clear_pc) {
|
||||||
// we must set sp to zero to clear frame
|
// we must set sp to zero to clear frame
|
||||||
movptr(Address(r15_thread, JavaThread::last_Java_sp_offset()), (int32_t)NULL_WORD);
|
movptr(Address(r15_thread, JavaThread::last_Java_sp_offset()), NULL_WORD);
|
||||||
// must clear fp, so that compiled frames are not confused; it is
|
// must clear fp, so that compiled frames are not confused; it is
|
||||||
// possible that we need it only for debugging
|
// possible that we need it only for debugging
|
||||||
if (clear_fp) {
|
if (clear_fp) {
|
||||||
movptr(Address(r15_thread, JavaThread::last_Java_fp_offset()), (int32_t)NULL_WORD);
|
movptr(Address(r15_thread, JavaThread::last_Java_fp_offset()), NULL_WORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clear_pc) {
|
if (clear_pc) {
|
||||||
movptr(Address(r15_thread, JavaThread::last_Java_pc_offset()), (int32_t)NULL_WORD);
|
movptr(Address(r15_thread, JavaThread::last_Java_pc_offset()), NULL_WORD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5670,7 +5670,7 @@ void MacroAssembler::call_VM_base(Register oop_result,
|
||||||
// get oop result if there is one and reset the value in the thread
|
// get oop result if there is one and reset the value in the thread
|
||||||
if (oop_result->is_valid()) {
|
if (oop_result->is_valid()) {
|
||||||
movptr(oop_result, Address(java_thread, JavaThread::vm_result_offset()));
|
movptr(oop_result, Address(java_thread, JavaThread::vm_result_offset()));
|
||||||
movptr(Address(java_thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
|
movptr(Address(java_thread, JavaThread::vm_result_offset()), NULL_WORD);
|
||||||
verify_oop(oop_result, "broken oop in call_VM_base");
|
verify_oop(oop_result, "broken oop in call_VM_base");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6426,13 +6426,13 @@ void MacroAssembler::reset_last_Java_frame(Register java_thread, bool clear_fp,
|
||||||
get_thread(java_thread);
|
get_thread(java_thread);
|
||||||
}
|
}
|
||||||
// we must set sp to zero to clear frame
|
// we must set sp to zero to clear frame
|
||||||
movptr(Address(java_thread, JavaThread::last_Java_sp_offset()), (int32_t)NULL_WORD);
|
movptr(Address(java_thread, JavaThread::last_Java_sp_offset()), NULL_WORD);
|
||||||
if (clear_fp) {
|
if (clear_fp) {
|
||||||
movptr(Address(java_thread, JavaThread::last_Java_fp_offset()), (int32_t)NULL_WORD);
|
movptr(Address(java_thread, JavaThread::last_Java_fp_offset()), NULL_WORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clear_pc)
|
if (clear_pc)
|
||||||
movptr(Address(java_thread, JavaThread::last_Java_pc_offset()), (int32_t)NULL_WORD);
|
movptr(Address(java_thread, JavaThread::last_Java_pc_offset()), NULL_WORD);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -779,7 +779,7 @@ void LIR_Assembler::const2mem(LIR_Opr src, LIR_Opr dest, BasicType type, CodeEmi
|
||||||
case T_OBJECT: // fall through
|
case T_OBJECT: // fall through
|
||||||
case T_ARRAY:
|
case T_ARRAY:
|
||||||
if (c->as_jobject() == NULL) {
|
if (c->as_jobject() == NULL) {
|
||||||
__ movptr(as_Address(addr), (int32_t)NULL_WORD);
|
__ movptr(as_Address(addr), NULL_WORD);
|
||||||
} else {
|
} else {
|
||||||
if (is_literal_address(addr)) {
|
if (is_literal_address(addr)) {
|
||||||
ShouldNotReachHere();
|
ShouldNotReachHere();
|
||||||
|
|
|
@ -78,10 +78,10 @@ int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address e
|
||||||
movptr(rax, Address(thread, Thread::pending_exception_offset()));
|
movptr(rax, Address(thread, Thread::pending_exception_offset()));
|
||||||
// make sure that the vm_results are cleared
|
// make sure that the vm_results are cleared
|
||||||
if (oop_result1->is_valid()) {
|
if (oop_result1->is_valid()) {
|
||||||
movptr(Address(thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
|
movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
|
||||||
}
|
}
|
||||||
if (oop_result2->is_valid()) {
|
if (oop_result2->is_valid()) {
|
||||||
movptr(Address(thread, JavaThread::vm_result_2_offset()), (int32_t)NULL_WORD);
|
movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD);
|
||||||
}
|
}
|
||||||
if (frame_size() == no_frame_size) {
|
if (frame_size() == no_frame_size) {
|
||||||
leave();
|
leave();
|
||||||
|
@ -96,12 +96,12 @@ int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address e
|
||||||
// get oop results if there are any and reset the values in the thread
|
// get oop results if there are any and reset the values in the thread
|
||||||
if (oop_result1->is_valid()) {
|
if (oop_result1->is_valid()) {
|
||||||
movptr(oop_result1, Address(thread, JavaThread::vm_result_offset()));
|
movptr(oop_result1, Address(thread, JavaThread::vm_result_offset()));
|
||||||
movptr(Address(thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
|
movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
|
||||||
verify_oop(oop_result1);
|
verify_oop(oop_result1);
|
||||||
}
|
}
|
||||||
if (oop_result2->is_valid()) {
|
if (oop_result2->is_valid()) {
|
||||||
movptr(oop_result2, Address(thread, JavaThread::vm_result_2_offset()));
|
movptr(oop_result2, Address(thread, JavaThread::vm_result_2_offset()));
|
||||||
movptr(Address(thread, JavaThread::vm_result_2_offset()), (int32_t)NULL_WORD);
|
movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD);
|
||||||
verify_oop(oop_result2);
|
verify_oop(oop_result2);
|
||||||
}
|
}
|
||||||
return call_offset;
|
return call_offset;
|
||||||
|
@ -728,8 +728,8 @@ void Runtime1::generate_handle_exception(StubAssembler *sasm, OopMapSet* oop_map
|
||||||
|
|
||||||
// clear exception fields in JavaThread because they are no longer needed
|
// clear exception fields in JavaThread because they are no longer needed
|
||||||
// (fields must be cleared because they are processed by GC otherwise)
|
// (fields must be cleared because they are processed by GC otherwise)
|
||||||
__ movptr(Address(thread, JavaThread::exception_oop_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(thread, JavaThread::exception_oop_offset()), NULL_WORD);
|
||||||
__ movptr(Address(thread, JavaThread::exception_pc_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(thread, JavaThread::exception_pc_offset()), NULL_WORD);
|
||||||
|
|
||||||
// pop the stub frame off
|
// pop the stub frame off
|
||||||
__ leave();
|
__ leave();
|
||||||
|
@ -878,7 +878,7 @@ OopMapSet* Runtime1::generate_patching(StubAssembler* sasm, address target) {
|
||||||
|
|
||||||
// load and clear pending exception
|
// load and clear pending exception
|
||||||
__ movptr(rax, Address(thread, Thread::pending_exception_offset()));
|
__ movptr(rax, Address(thread, Thread::pending_exception_offset()));
|
||||||
__ movptr(Address(thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(thread, Thread::pending_exception_offset()), NULL_WORD);
|
||||||
|
|
||||||
// check that there is really a valid exception
|
// check that there is really a valid exception
|
||||||
__ verify_not_null_oop(rax);
|
__ verify_not_null_oop(rax);
|
||||||
|
@ -971,14 +971,14 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
|
||||||
// load pending exception oop into rax,
|
// load pending exception oop into rax,
|
||||||
__ movptr(exception_oop, Address(thread, Thread::pending_exception_offset()));
|
__ movptr(exception_oop, Address(thread, Thread::pending_exception_offset()));
|
||||||
// clear pending exception
|
// clear pending exception
|
||||||
__ movptr(Address(thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(thread, Thread::pending_exception_offset()), NULL_WORD);
|
||||||
|
|
||||||
// load issuing PC (the return address for this stub) into rdx
|
// load issuing PC (the return address for this stub) into rdx
|
||||||
__ movptr(exception_pc, Address(rbp, 1*BytesPerWord));
|
__ movptr(exception_pc, Address(rbp, 1*BytesPerWord));
|
||||||
|
|
||||||
// make sure that the vm_results are cleared (may be unnecessary)
|
// make sure that the vm_results are cleared (may be unnecessary)
|
||||||
__ movptr(Address(thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
|
||||||
__ movptr(Address(thread, JavaThread::vm_result_2_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD);
|
||||||
|
|
||||||
// verify that that there is really a valid exception in rax,
|
// verify that that there is really a valid exception in rax,
|
||||||
__ verify_not_null_oop(exception_oop);
|
__ verify_not_null_oop(exception_oop);
|
||||||
|
|
|
@ -133,7 +133,7 @@ void InterpreterMacroAssembler::load_earlyret_value(TosState state) {
|
||||||
+ in_ByteSize(wordSize));
|
+ in_ByteSize(wordSize));
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case atos: movptr(rax, oop_addr);
|
case atos: movptr(rax, oop_addr);
|
||||||
movptr(oop_addr, (int32_t)NULL_WORD);
|
movptr(oop_addr, NULL_WORD);
|
||||||
verify_oop(rax, state); break;
|
verify_oop(rax, state); break;
|
||||||
case ltos:
|
case ltos:
|
||||||
movl(rdx, val_addr1); // fall through
|
movl(rdx, val_addr1); // fall through
|
||||||
|
@ -148,7 +148,7 @@ void InterpreterMacroAssembler::load_earlyret_value(TosState state) {
|
||||||
}
|
}
|
||||||
// Clean up tos value in the thread object
|
// Clean up tos value in the thread object
|
||||||
movl(tos_addr, (int32_t) ilgl);
|
movl(tos_addr, (int32_t) ilgl);
|
||||||
movptr(val_addr, (int32_t)NULL_WORD);
|
movptr(val_addr, NULL_WORD);
|
||||||
NOT_LP64(movl(val_addr1, (int32_t)NULL_WORD));
|
NOT_LP64(movl(val_addr1, (int32_t)NULL_WORD));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -944,7 +944,7 @@ void InterpreterMacroAssembler::unlock_object(Register lock_reg) {
|
||||||
movptr(obj_reg, Address(lock_reg, BasicObjectLock::obj_offset_in_bytes ()));
|
movptr(obj_reg, Address(lock_reg, BasicObjectLock::obj_offset_in_bytes ()));
|
||||||
|
|
||||||
// Free entry
|
// Free entry
|
||||||
movptr(Address(lock_reg, BasicObjectLock::obj_offset_in_bytes()), (int32_t)NULL_WORD);
|
movptr(Address(lock_reg, BasicObjectLock::obj_offset_in_bytes()), NULL_WORD);
|
||||||
|
|
||||||
if (UseBiasedLocking) {
|
if (UseBiasedLocking) {
|
||||||
biased_locking_exit(obj_reg, header_reg, done);
|
biased_locking_exit(obj_reg, header_reg, done);
|
||||||
|
|
|
@ -120,7 +120,7 @@ class InterpreterMacroAssembler: public MacroAssembler {
|
||||||
void empty_expression_stack() {
|
void empty_expression_stack() {
|
||||||
movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize));
|
movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize));
|
||||||
// NULL last_sp until next java call
|
// NULL last_sp until next java call
|
||||||
movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
|
movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tagged stack helpers for swap and dup
|
// Tagged stack helpers for swap and dup
|
||||||
|
|
|
@ -54,7 +54,7 @@ void InterpreterRuntime::SignatureHandlerGenerator::box(int from_offset, int to_
|
||||||
__ cmpptr(Address(from(), Interpreter::local_offset_in_bytes(from_offset)), (int32_t)NULL_WORD); // do not use temp() to avoid AGI
|
__ cmpptr(Address(from(), Interpreter::local_offset_in_bytes(from_offset)), (int32_t)NULL_WORD); // do not use temp() to avoid AGI
|
||||||
Label L;
|
Label L;
|
||||||
__ jcc(Assembler::notZero, L);
|
__ jcc(Assembler::notZero, L);
|
||||||
__ movptr(temp(), ((int32_t)NULL_WORD));
|
__ movptr(temp(), NULL_WORD);
|
||||||
__ bind(L);
|
__ bind(L);
|
||||||
__ movptr(Address(to(), to_offset * wordSize), temp());
|
__ movptr(Address(to(), to_offset * wordSize), temp());
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,11 +129,11 @@ void OptoRuntime::generate_exception_blob() {
|
||||||
// Get the exception pc in case we are deoptimized
|
// Get the exception pc in case we are deoptimized
|
||||||
__ movptr(rdx, Address(rcx, JavaThread::exception_pc_offset()));
|
__ movptr(rdx, Address(rcx, JavaThread::exception_pc_offset()));
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
__ movptr(Address(rcx, JavaThread::exception_handler_pc_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(rcx, JavaThread::exception_handler_pc_offset()), NULL_WORD);
|
||||||
__ movptr(Address(rcx, JavaThread::exception_pc_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(rcx, JavaThread::exception_pc_offset()), NULL_WORD);
|
||||||
#endif
|
#endif
|
||||||
// Clear the exception oop so GC no longer processes it as a root.
|
// Clear the exception oop so GC no longer processes it as a root.
|
||||||
__ movptr(Address(rcx, JavaThread::exception_oop_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(rcx, JavaThread::exception_oop_offset()), NULL_WORD);
|
||||||
|
|
||||||
__ pop(rcx);
|
__ pop(rcx);
|
||||||
|
|
||||||
|
|
|
@ -1793,7 +1793,7 @@ nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
|
||||||
// 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()), (int32_t)NULL_WORD);
|
__ movptr(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);
|
||||||
|
@ -1865,7 +1865,7 @@ nmethod *SharedRuntime::generate_native_wrapper(MacroAssembler *masm,
|
||||||
// Save pending exception around call to VM (which contains an EXCEPTION_MARK)
|
// Save pending exception around call to VM (which contains an EXCEPTION_MARK)
|
||||||
|
|
||||||
__ pushptr(Address(thread, in_bytes(Thread::pending_exception_offset())));
|
__ pushptr(Address(thread, in_bytes(Thread::pending_exception_offset())));
|
||||||
__ movptr(Address(thread, in_bytes(Thread::pending_exception_offset())), (int32_t)NULL_WORD);
|
__ movptr(Address(thread, in_bytes(Thread::pending_exception_offset())), NULL_WORD);
|
||||||
|
|
||||||
|
|
||||||
// should be a peal
|
// should be a peal
|
||||||
|
@ -2431,7 +2431,7 @@ void SharedRuntime::generate_deopt_blob() {
|
||||||
__ get_thread(rdi);
|
__ get_thread(rdi);
|
||||||
__ movptr(rdx, Address(rdi, JavaThread::exception_pc_offset()));
|
__ movptr(rdx, Address(rdi, JavaThread::exception_pc_offset()));
|
||||||
__ movptr(Address(rbp, wordSize), rdx);
|
__ movptr(Address(rbp, wordSize), rdx);
|
||||||
__ movptr(Address(rdi, JavaThread::exception_pc_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(rdi, JavaThread::exception_pc_offset()), NULL_WORD);
|
||||||
|
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
// verify that there is really an exception oop in JavaThread
|
// verify that there is really an exception oop in JavaThread
|
||||||
|
@ -2489,8 +2489,8 @@ void SharedRuntime::generate_deopt_blob() {
|
||||||
__ jcc(Assembler::notEqual, noException);
|
__ jcc(Assembler::notEqual, noException);
|
||||||
__ movptr(rax, Address(rcx, JavaThread::exception_oop_offset()));
|
__ movptr(rax, Address(rcx, JavaThread::exception_oop_offset()));
|
||||||
__ movptr(rdx, Address(rcx, JavaThread::exception_pc_offset()));
|
__ movptr(rdx, Address(rcx, JavaThread::exception_pc_offset()));
|
||||||
__ movptr(Address(rcx, JavaThread::exception_oop_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(rcx, JavaThread::exception_oop_offset()), NULL_WORD);
|
||||||
__ movptr(Address(rcx, JavaThread::exception_pc_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(rcx, JavaThread::exception_pc_offset()), NULL_WORD);
|
||||||
|
|
||||||
__ verify_oop(rax);
|
__ verify_oop(rax);
|
||||||
|
|
||||||
|
@ -2582,7 +2582,7 @@ void SharedRuntime::generate_deopt_blob() {
|
||||||
rbx); // Make it walkable
|
rbx); // Make it walkable
|
||||||
#else /* CC_INTERP */
|
#else /* CC_INTERP */
|
||||||
// This value is corrected by layout_activation_impl
|
// This value is corrected by layout_activation_impl
|
||||||
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD );
|
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
|
||||||
__ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), rbx); // Make it walkable
|
__ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), rbx); // Make it walkable
|
||||||
#endif /* CC_INTERP */
|
#endif /* CC_INTERP */
|
||||||
__ movptr(sp_temp, rsp); // pass to next frame
|
__ movptr(sp_temp, rsp); // pass to next frame
|
||||||
|
@ -2802,7 +2802,7 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||||
rbx); // Make it walkable
|
rbx); // Make it walkable
|
||||||
#else /* CC_INTERP */
|
#else /* CC_INTERP */
|
||||||
// This value is corrected by layout_activation_impl
|
// This value is corrected by layout_activation_impl
|
||||||
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD );
|
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD );
|
||||||
__ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), rbx); // Make it walkable
|
__ movptr(Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize), rbx); // Make it walkable
|
||||||
#endif /* CC_INTERP */
|
#endif /* CC_INTERP */
|
||||||
__ movptr(sp_temp, rsp); // pass to next frame
|
__ movptr(sp_temp, rsp); // pass to next frame
|
||||||
|
@ -3020,7 +3020,7 @@ static RuntimeStub* generate_resolve_blob(address destination, const char* name)
|
||||||
// exception pending => remove activation and forward to exception handler
|
// exception pending => remove activation and forward to exception handler
|
||||||
|
|
||||||
__ get_thread(thread);
|
__ get_thread(thread);
|
||||||
__ movptr(Address(thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
|
||||||
__ movptr(rax, Address(thread, Thread::pending_exception_offset()));
|
__ movptr(rax, Address(thread, Thread::pending_exception_offset()));
|
||||||
__ jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
|
__ jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
|
||||||
|
|
||||||
|
|
|
@ -472,7 +472,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||||
// setup rax & rdx, remove return address & clear pending exception
|
// setup rax & rdx, remove return address & clear pending exception
|
||||||
__ pop(rdx);
|
__ pop(rdx);
|
||||||
__ movptr(rax, Address(r15_thread, Thread::pending_exception_offset()));
|
__ movptr(rax, Address(r15_thread, Thread::pending_exception_offset()));
|
||||||
__ movptr(Address(r15_thread, Thread::pending_exception_offset()), (int)NULL_WORD);
|
__ movptr(Address(r15_thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
|
||||||
|
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
// make sure exception is set
|
// make sure exception is set
|
||||||
|
@ -954,9 +954,9 @@ class StubGenerator: public StubCodeGenerator {
|
||||||
__ jcc(Assembler::zero, exit); // if obj is NULL it is OK
|
__ jcc(Assembler::zero, exit); // if obj is NULL it is OK
|
||||||
// Check if the oop is in the right area of memory
|
// Check if the oop is in the right area of memory
|
||||||
__ movptr(c_rarg2, rax);
|
__ movptr(c_rarg2, rax);
|
||||||
__ movptr(c_rarg3, (int64_t) Universe::verify_oop_mask());
|
__ movptr(c_rarg3, (intptr_t) Universe::verify_oop_mask());
|
||||||
__ andptr(c_rarg2, c_rarg3);
|
__ andptr(c_rarg2, c_rarg3);
|
||||||
__ movptr(c_rarg3, (int64_t) Universe::verify_oop_bits());
|
__ movptr(c_rarg3, (intptr_t) Universe::verify_oop_bits());
|
||||||
__ cmpptr(c_rarg2, c_rarg3);
|
__ cmpptr(c_rarg2, c_rarg3);
|
||||||
__ jcc(Assembler::notZero, error);
|
__ jcc(Assembler::notZero, error);
|
||||||
|
|
||||||
|
@ -969,9 +969,9 @@ class StubGenerator: public StubCodeGenerator {
|
||||||
__ jcc(Assembler::zero, error); // if klass is NULL it is broken
|
__ jcc(Assembler::zero, error); // if klass is NULL it is broken
|
||||||
// Check if the klass is in the right area of memory
|
// Check if the klass is in the right area of memory
|
||||||
__ mov(c_rarg2, rax);
|
__ mov(c_rarg2, rax);
|
||||||
__ movptr(c_rarg3, (int64_t) Universe::verify_klass_mask());
|
__ movptr(c_rarg3, (intptr_t) Universe::verify_klass_mask());
|
||||||
__ andptr(c_rarg2, c_rarg3);
|
__ andptr(c_rarg2, c_rarg3);
|
||||||
__ movptr(c_rarg3, (int64_t) Universe::verify_klass_bits());
|
__ movptr(c_rarg3, (intptr_t) Universe::verify_klass_bits());
|
||||||
__ cmpptr(c_rarg2, c_rarg3);
|
__ cmpptr(c_rarg2, c_rarg3);
|
||||||
__ jcc(Assembler::notZero, error);
|
__ jcc(Assembler::notZero, error);
|
||||||
|
|
||||||
|
@ -980,9 +980,9 @@ class StubGenerator: public StubCodeGenerator {
|
||||||
__ testptr(rax, rax);
|
__ testptr(rax, rax);
|
||||||
__ jcc(Assembler::zero, error); // if klass' klass is NULL it is broken
|
__ jcc(Assembler::zero, error); // if klass' klass is NULL it is broken
|
||||||
// Check if the klass' klass is in the right area of memory
|
// Check if the klass' klass is in the right area of memory
|
||||||
__ movptr(c_rarg3, (int64_t) Universe::verify_klass_mask());
|
__ movptr(c_rarg3, (intptr_t) Universe::verify_klass_mask());
|
||||||
__ andptr(rax, c_rarg3);
|
__ andptr(rax, c_rarg3);
|
||||||
__ movptr(c_rarg3, (int64_t) Universe::verify_klass_bits());
|
__ movptr(c_rarg3, (intptr_t) Universe::verify_klass_bits());
|
||||||
__ cmpptr(rax, c_rarg3);
|
__ cmpptr(rax, c_rarg3);
|
||||||
__ jcc(Assembler::notZero, error);
|
__ jcc(Assembler::notZero, error);
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ address TemplateInterpreterGenerator::generate_exception_handler_common(const ch
|
||||||
if (message != NULL) {
|
if (message != NULL) {
|
||||||
__ lea(rbx, ExternalAddress((address)message));
|
__ lea(rbx, ExternalAddress((address)message));
|
||||||
} else {
|
} else {
|
||||||
__ movptr(rbx, (int32_t)NULL_WORD);
|
__ movptr(rbx, NULL_WORD);
|
||||||
}
|
}
|
||||||
__ call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::create_exception), rax, rbx);
|
__ call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::create_exception), rax, rbx);
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ address TemplateInterpreterGenerator::generate_exception_handler_common(const ch
|
||||||
address TemplateInterpreterGenerator::generate_continuation_for(TosState state) {
|
address TemplateInterpreterGenerator::generate_continuation_for(TosState state) {
|
||||||
address entry = __ pc();
|
address entry = __ pc();
|
||||||
// NULL last_sp until next java call
|
// NULL last_sp until next java call
|
||||||
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
|
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
|
||||||
__ dispatch_next(state);
|
__ dispatch_next(state);
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
@ -176,7 +176,7 @@ address TemplateInterpreterGenerator::generate_return_entry_for(TosState state,
|
||||||
// Restore stack bottom in case i2c adjusted stack
|
// Restore stack bottom in case i2c adjusted stack
|
||||||
__ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize));
|
__ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize));
|
||||||
// and NULL it as marker that rsp is now tos until next java call
|
// and NULL it as marker that rsp is now tos until next java call
|
||||||
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
|
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
|
||||||
|
|
||||||
__ restore_bcp();
|
__ restore_bcp();
|
||||||
__ restore_locals();
|
__ restore_locals();
|
||||||
|
@ -211,7 +211,7 @@ address TemplateInterpreterGenerator::generate_deopt_entry_for(TosState state, i
|
||||||
|
|
||||||
// The stack is not extended by deopt but we must NULL last_sp as this
|
// The stack is not extended by deopt but we must NULL last_sp as this
|
||||||
// entry is like a "return".
|
// entry is like a "return".
|
||||||
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
|
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
|
||||||
__ restore_bcp();
|
__ restore_bcp();
|
||||||
__ restore_locals();
|
__ restore_locals();
|
||||||
// handle exceptions
|
// handle exceptions
|
||||||
|
@ -1028,7 +1028,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);
|
__ movptr(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;
|
||||||
|
@ -1488,7 +1488,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
|
||||||
|
|
||||||
// Restore sp to interpreter_frame_last_sp even though we are going
|
// Restore sp to interpreter_frame_last_sp even though we are going
|
||||||
// to empty the expression stack for the exception processing.
|
// to empty the expression stack for the exception processing.
|
||||||
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
|
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
|
||||||
// rax,: exception
|
// rax,: exception
|
||||||
// rdx: return address/pc that threw exception
|
// rdx: return address/pc that threw exception
|
||||||
__ restore_bcp(); // rsi points to call/send
|
__ restore_bcp(); // rsi points to call/send
|
||||||
|
@ -1608,7 +1608,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
|
||||||
__ reset_last_Java_frame(rcx, true, true);
|
__ reset_last_Java_frame(rcx, true, true);
|
||||||
// Restore the last_sp and null it out
|
// Restore the last_sp and null it out
|
||||||
__ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize));
|
__ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize));
|
||||||
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
|
__ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD);
|
||||||
|
|
||||||
__ restore_bcp();
|
__ restore_bcp();
|
||||||
__ restore_locals();
|
__ restore_locals();
|
||||||
|
@ -1636,7 +1636,7 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
|
||||||
// restore exception
|
// restore exception
|
||||||
__ get_thread(rcx);
|
__ get_thread(rcx);
|
||||||
__ movptr(rax, Address(rcx, JavaThread::vm_result_offset()));
|
__ movptr(rax, Address(rcx, JavaThread::vm_result_offset()));
|
||||||
__ movptr(Address(rcx, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
|
__ movptr(Address(rcx, JavaThread::vm_result_offset()), NULL_WORD);
|
||||||
__ verify_oop(rax);
|
__ verify_oop(rax);
|
||||||
|
|
||||||
// Inbetween activations - previous activation type unknown yet
|
// Inbetween activations - previous activation type unknown yet
|
||||||
|
|
|
@ -137,7 +137,7 @@ static void do_oop_store(InterpreterMacroAssembler* _masm,
|
||||||
// Do the actual store
|
// Do the actual store
|
||||||
// noreg means NULL
|
// noreg means NULL
|
||||||
if (val == noreg) {
|
if (val == noreg) {
|
||||||
__ movl(Address(rdx, 0), NULL_WORD);
|
__ movl(Address(rdx, 0), (int32_t)NULL_WORD);
|
||||||
// No post barrier for NULL
|
// No post barrier for NULL
|
||||||
} else {
|
} else {
|
||||||
__ movl(Address(rdx, 0), val);
|
__ movl(Address(rdx, 0), val);
|
||||||
|
|
|
@ -3371,7 +3371,7 @@ encode %{
|
||||||
masm.movptr(Address(boxReg, 0), 3) ; // results in ST-before-CAS penalty
|
masm.movptr(Address(boxReg, 0), 3) ; // results in ST-before-CAS penalty
|
||||||
masm.get_thread (scrReg) ;
|
masm.get_thread (scrReg) ;
|
||||||
masm.movptr(boxReg, tmpReg); // consider: LEA box, [tmp-2]
|
masm.movptr(boxReg, tmpReg); // consider: LEA box, [tmp-2]
|
||||||
masm.movptr(tmpReg, 0); // consider: xor vs mov
|
masm.movptr(tmpReg, NULL_WORD); // consider: xor vs mov
|
||||||
if (os::is_MP()) { masm.lock(); }
|
if (os::is_MP()) { masm.lock(); }
|
||||||
masm.cmpxchgptr(scrReg, Address(boxReg, ObjectMonitor::owner_offset_in_bytes()-2)) ;
|
masm.cmpxchgptr(scrReg, Address(boxReg, ObjectMonitor::owner_offset_in_bytes()-2)) ;
|
||||||
} else
|
} else
|
||||||
|
@ -3387,7 +3387,7 @@ encode %{
|
||||||
|
|
||||||
if ((EmitSync & 64) == 0) {
|
if ((EmitSync & 64) == 0) {
|
||||||
// Optimistic form: consider XORL tmpReg,tmpReg
|
// Optimistic form: consider XORL tmpReg,tmpReg
|
||||||
masm.movptr(tmpReg, 0 ) ;
|
masm.movptr(tmpReg, NULL_WORD) ;
|
||||||
} else {
|
} else {
|
||||||
// Can suffer RTS->RTO upgrades on shared or cold $ lines
|
// Can suffer RTS->RTO upgrades on shared or cold $ lines
|
||||||
// Test-And-CAS instead of CAS
|
// Test-And-CAS instead of CAS
|
||||||
|
@ -3587,7 +3587,7 @@ encode %{
|
||||||
masm.orptr(boxReg, Address (tmpReg, ObjectMonitor::EntryList_offset_in_bytes()-2)) ;
|
masm.orptr(boxReg, Address (tmpReg, ObjectMonitor::EntryList_offset_in_bytes()-2)) ;
|
||||||
masm.orptr(boxReg, Address (tmpReg, ObjectMonitor::cxq_offset_in_bytes()-2)) ;
|
masm.orptr(boxReg, Address (tmpReg, ObjectMonitor::cxq_offset_in_bytes()-2)) ;
|
||||||
masm.jccb (Assembler::notZero, DONE_LABEL) ;
|
masm.jccb (Assembler::notZero, DONE_LABEL) ;
|
||||||
masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), 0) ;
|
masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), NULL_WORD) ;
|
||||||
masm.jmpb (DONE_LABEL) ;
|
masm.jmpb (DONE_LABEL) ;
|
||||||
} else {
|
} else {
|
||||||
masm.xorptr(boxReg, Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2)) ;
|
masm.xorptr(boxReg, Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2)) ;
|
||||||
|
@ -3596,7 +3596,7 @@ encode %{
|
||||||
masm.movptr(boxReg, Address (tmpReg, ObjectMonitor::EntryList_offset_in_bytes()-2)) ;
|
masm.movptr(boxReg, Address (tmpReg, ObjectMonitor::EntryList_offset_in_bytes()-2)) ;
|
||||||
masm.orptr(boxReg, Address (tmpReg, ObjectMonitor::cxq_offset_in_bytes()-2)) ;
|
masm.orptr(boxReg, Address (tmpReg, ObjectMonitor::cxq_offset_in_bytes()-2)) ;
|
||||||
masm.jccb (Assembler::notZero, CheckSucc) ;
|
masm.jccb (Assembler::notZero, CheckSucc) ;
|
||||||
masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), 0) ;
|
masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), NULL_WORD) ;
|
||||||
masm.jmpb (DONE_LABEL) ;
|
masm.jmpb (DONE_LABEL) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3644,7 +3644,7 @@ encode %{
|
||||||
// We currently use (3), although it's likely that switching to (2)
|
// We currently use (3), although it's likely that switching to (2)
|
||||||
// is correct for the future.
|
// is correct for the future.
|
||||||
|
|
||||||
masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), 0) ;
|
masm.movptr(Address (tmpReg, ObjectMonitor::owner_offset_in_bytes()-2), NULL_WORD) ;
|
||||||
if (os::is_MP()) {
|
if (os::is_MP()) {
|
||||||
if (VM_Version::supports_sse2() && 1 == FenceInstruction) {
|
if (VM_Version::supports_sse2() && 1 == FenceInstruction) {
|
||||||
masm.mfence();
|
masm.mfence();
|
||||||
|
|
|
@ -116,7 +116,9 @@
|
||||||
#ifdef _LP64
|
#ifdef _LP64
|
||||||
#define NULL_WORD 0L
|
#define NULL_WORD 0L
|
||||||
#else
|
#else
|
||||||
#define NULL_WORD 0
|
// Cast 0 to intptr_t rather than int32_t since they are not the same type
|
||||||
|
// on platforms such as Mac OS X.
|
||||||
|
#define NULL_WORD ((intptr_t)0)
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#define NULL_WORD NULL
|
#define NULL_WORD NULL
|
||||||
|
|
|
@ -115,7 +115,9 @@
|
||||||
#ifdef _LP64
|
#ifdef _LP64
|
||||||
#define NULL_WORD 0L
|
#define NULL_WORD 0L
|
||||||
#else
|
#else
|
||||||
#define NULL_WORD 0
|
// Cast 0 to intptr_t rather than int32_t since they are not the same type
|
||||||
|
// on some platforms.
|
||||||
|
#define NULL_WORD ((intptr_t)0)
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#define NULL_WORD NULL
|
#define NULL_WORD NULL
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue