From 8f9df4fb03f220599e0f1ef1e8e856a0b91081c8 Mon Sep 17 00:00:00 2001 From: Minero Aoki Date: Sat, 6 Jun 2009 19:17:42 +0000 Subject: [PATCH] r5033@macbookpro: aamine | 2009-06-07 03:17:50 +0900 * sysdep/x86/CodeGenerator.java (compileFunctionBody): fix offset bug. git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4278 1b9489fe-b721-0410-924e-b54b9192deb8 --- ChangeLog | 5 +++++ net/loveruby/cflat/sysdep/x86/CodeGenerator.java | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index be071d8..2a11868 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Jun 7 03:17:06 2009 Minero Aoki + + * sysdep/x86/CodeGenerator.java (compileFunctionBody): fix offset + bug. + Sun Jun 7 03:02:35 2009 Minero Aoki * net/loveruby/cflat/sysdep/x86/CodeGenerator.java: refactoring diff --git a/net/loveruby/cflat/sysdep/x86/CodeGenerator.java b/net/loveruby/cflat/sysdep/x86/CodeGenerator.java index 4b23951..cc75926 100644 --- a/net/loveruby/cflat/sysdep/x86/CodeGenerator.java +++ b/net/loveruby/cflat/sysdep/x86/CodeGenerator.java @@ -402,7 +402,7 @@ public class CodeGenerator List saveRegs = usedCalleeSavedRegisters(body); long saveRegsSize = stackSizeFromWordNum(saveRegs.size()); fixLocalVariableOffsets(func.body().scope(), saveRegsSize); - body.virtualStack.fixOffset(saveRegsSize + lvarsSize); + fixTempVariableOffsets(body, saveRegsSize + lvarsSize); if (options.isVerboseAsm()) { printStackFrameLayout(file, saveRegsSize, lvarsSize, @@ -603,6 +603,12 @@ public class CodeGenerator } // #@@} + // #@@range/fixTempVariableOffsets{ + private void fixTempVariableOffsets(AssemblyFile asm, long len) { + asm.virtualStack.fixOffset(-len); + } + // #@@} + // #@@range/extendStack{ private void extendStack(AssemblyFile file, long len) { if (len > 0) {