diff options
author | Erik Verbruggen <[email protected]> | 2013-10-14 15:20:31 +0200 |
---|---|---|
committer | The Qt Project <[email protected]> | 2013-10-14 16:43:06 +0200 |
commit | 3f7f6be40947f19ef4e40a8f10307a1a6dcb31e0 (patch) | |
tree | 87ec1bf5caccb2ea5ccf82a4f8adfea1fb432ea2 /src/qml/compiler/qv4isel_masm_p.h | |
parent | f106d905df58de637f291111ed3e1ccf1dfdf23e (diff) |
V4 JIT: fix stack size calculation on 32bit.
Registers containing outgoing parameters for calls are saved as Value
(so, 8 bytes long) instead of native register size. For 64 bit this is
the same, but not for 32 bits.
Change-Id: If1d55e9d552a301782816c9228390dc5611c6d00
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml/compiler/qv4isel_masm_p.h')
-rw-r--r-- | src/qml/compiler/qv4isel_masm_p.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/qml/compiler/qv4isel_masm_p.h b/src/qml/compiler/qv4isel_masm_p.h index a0f81a7412..fb990d0d53 100644 --- a/src/qml/compiler/qv4isel_masm_p.h +++ b/src/qml/compiler/qv4isel_masm_p.h @@ -289,7 +289,7 @@ public: qDebug("calleeSavedRegCount.....: %d",calleeSavedRegCount); qDebug("maxOutgoingArgumentCount: %d",maxOutgoingArgumentCount); qDebug("localCount..............: %d",localCount); - qDebug("savedConstCount.........: %d",savedConstCount); + qDebug("savedConstCount.........: %d",savedRegCount); for (int i = 0; i < maxOutgoingArgumentCount; ++i) qDebug("argumentAddressForCall(%d) = 0x%x / -0x%x", i, argumentAddressForCall(i).offset, -argumentAddressForCall(i).offset); @@ -313,7 +313,8 @@ public: + RegisterSize; // saved StackFrameRegister // space for the callee saved registers - int frameSize = RegisterSize * (calleeSavedRegisterCount + savedRegCount); + int frameSize = RegisterSize * calleeSavedRegisterCount; + frameSize += savedRegCount * sizeof(QV4::SafeValue); // these get written out as Values, not as native registers frameSize = WTF::roundUpToMultipleOf(StackAlignment, frameSize + stackSpaceAllocatedOtherwise); frameSize -= stackSpaceAllocatedOtherwise; |