< prev index next >

src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp

Print this page
@@ -486,10 +486,15 @@
      __ mov(r19, lr);
      BLOCK_COMMENT("call exception_handler_for_return_address");
      __ call_VM_leaf(CAST_FROM_FN_PTR(address,
                           SharedRuntime::exception_handler_for_return_address),
                      rthread, c_rarg1);
+     if (UseSVE > 0 ) {
+       // Reinitialize the ptrue predicate register, in case the external runtime
+       // call clobbers ptrue reg, as we may return to SVE compiled code.
+       __ reinitialize_ptrue();
+     }
      // we should not really care that lr is no longer the callee
      // address. we saved the value the handler needs in r19 so we can
      // just copy it to r3. however, the C2 handler will push its own
      // frame and then calls into the VM and the VM code asserts that
      // the PC for the frame above the handler belongs to a compiled

@@ -5016,10 +5021,16 @@
      oop_maps->add_gc_map(the_pc - start, map);
  
      __ reset_last_Java_frame(true);
      __ maybe_isb();
  
+     if (UseSVE > 0) {
+       // Reinitialize the ptrue predicate register, in case the external runtime
+       // call clobbers ptrue reg, as we may return to SVE compiled code.
+       __ reinitialize_ptrue();
+     }
+ 
      __ leave();
  
      // check for pending exceptions
  #ifdef ASSERT
      Label L;
< prev index next >