1021 |
1021 |
1022 // remove activation |
1022 // remove activation |
1023 // get sender sp |
1023 // get sender sp |
1024 movptr(rbx, |
1024 movptr(rbx, |
1025 Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize)); |
1025 Address(rbp, frame::interpreter_frame_sender_sp_offset * wordSize)); |
|
1026 if (StackReservedPages > 0) { |
|
1027 // testing if reserved zone needs to be re-enabled |
|
1028 Register rthread = LP64_ONLY(r15_thread) NOT_LP64(rcx); |
|
1029 Label no_reserved_zone_enabling; |
|
1030 |
|
1031 NOT_LP64(get_thread(rthread);) |
|
1032 |
|
1033 cmpptr(rbx, Address(rthread, JavaThread::reserved_stack_activation_offset())); |
|
1034 jcc(Assembler::lessEqual, no_reserved_zone_enabling); |
|
1035 |
|
1036 call_VM_leaf( |
|
1037 CAST_FROM_FN_PTR(address, SharedRuntime::enable_stack_reserved_zone), rthread); |
|
1038 push(rthread); |
|
1039 call_VM(noreg, CAST_FROM_FN_PTR(address, |
|
1040 InterpreterRuntime::throw_delayed_StackOverflowError)); |
|
1041 should_not_reach_here(); |
|
1042 |
|
1043 bind(no_reserved_zone_enabling); |
|
1044 } |
1026 leave(); // remove frame anchor |
1045 leave(); // remove frame anchor |
1027 pop(ret_addr); // get return address |
1046 pop(ret_addr); // get return address |
1028 mov(rsp, rbx); // set sp to sender sp |
1047 mov(rsp, rbx); // set sp to sender sp |
1029 } |
1048 } |
1030 #endif // !CC_INTERP |
1049 #endif // !CC_INTERP |