< prev index next >

src/hotspot/cpu/ppc/c1_Runtime1_ppc.cpp

Print this page
*** 62,11 ***
    // ARG1 must hold thread address.
    mr(R3_ARG1, R16_thread);
  
    address return_pc = call_c(entry_point);
  
!   reset_last_Java_frame();
  
    // Check for pending exceptions.
    {
      ld(R0, in_bytes(Thread::pending_exception_offset()), R16_thread);
      cmpdi(CCR0, R0, 0);
--- 62,12 ---
    // ARG1 must hold thread address.
    mr(R3_ARG1, R16_thread);
  
    address return_pc = call_c(entry_point);
  
!   // Last java sp can be null when the RT call was preempted
+   reset_last_Java_frame(false /* check_last_java_sp */);
  
    // Check for pending exceptions.
    {
      ld(R0, in_bytes(Thread::pending_exception_offset()), R16_thread);
      cmpdi(CCR0, R0, 0);

*** 255,10 ***
--- 256,15 ---
      sp_offset += BytesPerWord;
    }
    frame_size_in_bytes = align_up(sp_offset, frame::alignment_in_bytes);
  }
  
+ uint Runtime1::runtime_blob_current_thread_offset(frame f) {
+   // On PPC virtual threads don't save the JavaThread* in their context (e.g. C1 stub frames).
+   ShouldNotCallThis();
+   return 0;
+ }
  
  OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
    // Make a frame and preserve the caller's caller-save registers.
    OopMap* oop_map = save_live_registers(sasm);
  
< prev index next >