changeset 1424:1ea65e9d943c

updated prologue/epilogue code
author Lukas Stadler <lukas.stadler@oracle.com>
date Mon, 16 Aug 2010 20:00:59 -0700
parents 760213a60e8b
children 98fffb304868
files c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java
diffstat 1 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java	Mon Aug 16 18:59:36 2010 -0700
+++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java	Mon Aug 16 20:00:59 2010 -0700
@@ -121,6 +121,7 @@
         asm.restart(CiKind.Void);
         XirOperand sp = asm.createRegister("stack pointer", CiKind.Word, registerConfig.getStackPointerRegister());
         XirOperand temp = asm.createRegister("temp (rax)", CiKind.Int, AMD64.rax);
+        XirOperand frame_pointer = asm.createRegister("frame pointer", CiKind.Word, AMD64.rbp);
 
         asm.align(config.codeEntryAlignment);
         asm.mark(MARK_UNVERIFIED_ENTRY);
@@ -133,8 +134,7 @@
             asm.align(config.codeEntryAlignment);
         }
         asm.mark(MARK_VERIFIED_ENTRY);
-        // stack banging
-        asm.pstore(CiKind.Word, sp, asm.i(-config.stackShadowPages * config.vmPageSize), temp, true);
+        asm.push(frame_pointer);
         asm.pushFrame();
 
         return asm.finishTemplate(staticMethod ? "static prologue" : "prologue");
@@ -142,7 +142,9 @@
 
     private XirTemplate buildEpilogue() {
         asm.restart(CiKind.Void);
+        XirOperand frame_pointer = asm.createRegister("frame pointer", CiKind.Word, AMD64.rbp);
         asm.popFrame();
+        asm.pop(frame_pointer);
         // TODO safepoint check
         return asm.finishTemplate("epilogue");
     }