hotspot/src/cpu/x86/vm/interp_masm_x86.cpp
changeset 35135 dd2ce9021031
parent 35071 a0910b1d3e0d
child 35214 d86005e0b4c2
equal deleted inserted replaced
35134:dbf1c77ae372 35135:dd2ce9021031
  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