8080650: Enable stubs to use frame pointers correctly
authorzmajo
Thu, 15 Oct 2015 17:38:41 +0200
changeset 33188 6d91a3077eca
parent 33186 8bd166b4c145
child 33189 e7d20eb45c7d
8080650: Enable stubs to use frame pointers correctly Summary: Change MacroAssembler::verified_entry() to set up RBP correctly when generating stub code. Reviewed-by: kvn
hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp
hotspot/src/cpu/x86/vm/x86_32.ad
hotspot/src/cpu/x86/vm/x86_64.ad
--- a/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp	Thu Oct 15 11:20:04 2015 +0000
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp	Thu Oct 15 17:38:41 2015 +0200
@@ -6247,7 +6247,9 @@
     // Save caller's stack pointer into RBP if the frame pointer is preserved.
     if (PreserveFramePointer) {
       movptr(rbp, rsp);
-      addptr(rbp, framesize + wordSize);
+      if (framesize > 0) {
+        addptr(rbp, framesize);
+      }
     }
   }
 
--- a/hotspot/src/cpu/x86/vm/x86_32.ad	Thu Oct 15 11:20:04 2015 +0000
+++ b/hotspot/src/cpu/x86/vm/x86_32.ad	Thu Oct 15 17:38:41 2015 +0200
@@ -580,7 +580,11 @@
     st->print("MOV    [ESP + #%d], EBP\t# Save EBP",framesize);
     if (PreserveFramePointer) {
       st->print("\n\t");
-      st->print("MOV    EBP, [ESP + #%d]\t# Save the caller's SP into EBP", (framesize + wordSize));
+      st->print("MOV    EBP, ESP\t# Save the caller's SP into EBP");
+      if (framesize > 0) {
+        st->print("\n\t");
+        st->print("ADD    EBP, #%d", framesize);
+      }
     }
   }
 
--- a/hotspot/src/cpu/x86/vm/x86_64.ad	Thu Oct 15 11:20:04 2015 +0000
+++ b/hotspot/src/cpu/x86/vm/x86_64.ad	Thu Oct 15 17:38:41 2015 +0200
@@ -867,7 +867,11 @@
     st->print("movq    [rsp + #%d], rbp\t# Save rbp",framesize);
     if (PreserveFramePointer) {
       st->print("\n\t");
-      st->print("movq    rbp, [rsp + #%d]\t# Save the caller's SP into rbp", (framesize + wordSize));
+      st->print("movq    rbp, rsp\t# Save the caller's SP into rbp");
+      if (framesize > 0) {
+        st->print("\n\t");
+        st->print("addq    rbp, #%d", framesize);
+      }      
     }
   }