< prev index next >

src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp

Print this page

        

@@ -823,10 +823,12 @@
     __ movptr(Address(r15_thread, in_bytes(JavaThread::jvmci_alternate_call_target_offset())), 0);
     __ bind(no_alternative_target);
   }
 #endif // INCLUDE_JVMCI
 
+  __ set_cont_fastpath(r15_thread, 0);
+
   // Now generate the shuffle code.  Pick up all register args and move the
   // rest through the floating point stack top.
   for (int i = 0; i < total_args_passed; i++) {
     if (sig_bt[i] == T_VOID) {
       // Longs and doubles are passed in native word order, but misaligned

@@ -3478,11 +3480,11 @@
 
   // The following is basically a call_VM.  However, we need the precise
   // address of the call in order to generate an oopmap. Hence, we do all the
   // work outselves.
 
-  __ set_last_Java_frame(noreg, noreg, NULL);
+  __ set_last_Java_frame(noreg, noreg, NULL);  // JavaFrameAnchor::capture_last_Java_pc() will get the pc from the return address, which we store next:
 
   // The return address must always be correct so that frame constructor never
   // sees an invalid pc.
 
   if (!cause_return) {

@@ -3625,10 +3627,12 @@
 
   int start = __ offset();
 
   map = RegisterSaver::save_live_registers(masm, 0, &frame_size_in_words);
 
+  // __ stop_if_in_cont(r10, "CONT 3");
+
   int frame_complete = __ offset();
 
   __ set_last_Java_frame(noreg, noreg, NULL);
 
   __ mov(c_rarg0, r15_thread);
< prev index next >