aboutsummaryrefslogtreecommitdiffstats
path: root/src/3rdparty/masm/assembler/MacroAssembler.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2017-03-29 09:22:21 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2017-03-29 15:32:02 +0000
commit4a6e072d6c7591ee58b56e3d6a2128e814c94848 (patch)
tree0bad6e62e51d03ddf9591b34a46ad9fdd14bdf8c /src/3rdparty/masm/assembler/MacroAssembler.h
parentea99d624558437db64e33df476cf7d43bb5c0099 (diff)
Fix stack pointer arithmetic when cross-compiling
Replace the use of size(void*) with target assembler specific values for the pointer size, when calculating offsets into the stack for poke/peek/push/pop and placing arguments onto the stack before calling functions. Change-Id: I3aff540f0083967e75b61e0c29dbeb4d9ecfa433 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/3rdparty/masm/assembler/MacroAssembler.h')
-rw-r--r--src/3rdparty/masm/assembler/MacroAssembler.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/3rdparty/masm/assembler/MacroAssembler.h b/src/3rdparty/masm/assembler/MacroAssembler.h
index 7d9f156c8c..f37861eb66 100644
--- a/src/3rdparty/masm/assembler/MacroAssembler.h
+++ b/src/3rdparty/masm/assembler/MacroAssembler.h
@@ -94,6 +94,7 @@ public:
using DataLabelCompact = typename MacroAssemblerBase::DataLabelCompact;
using Jump = typename MacroAssemblerBase::Jump;
using PatchableJump = typename MacroAssemblerBase::PatchableJump;
+ using MacroAssemblerBase::PointerSize;
using MacroAssemblerBase::pop;
using MacroAssemblerBase::jump;
@@ -200,19 +201,19 @@ public:
// described in terms of other macro assembly methods.
void pop()
{
- addPtr(TrustedImm32(sizeof(void*)), MacroAssemblerBase::stackPointerRegister);
+ addPtr(TrustedImm32(PointerSize), MacroAssemblerBase::stackPointerRegister);
}
void peek(RegisterID dest, int index = 0)
{
- loadPtr(Address(MacroAssemblerBase::stackPointerRegister, (index * sizeof(void*))), dest);
+ loadPtr(Address(MacroAssemblerBase::stackPointerRegister, (index * PointerSize)), dest);
}
Address addressForPoke(int index)
{
- return Address(MacroAssemblerBase::stackPointerRegister, (index * sizeof(void*)));
+ return Address(MacroAssemblerBase::stackPointerRegister, (index * PointerSize));
}
-
+
void poke(RegisterID src, int index = 0)
{
storePtr(src, addressForPoke(index));
@@ -223,10 +224,12 @@ public:
store32(value, addressForPoke(index));
}
+#if !defined(V4_BOOTSTRAP)
void poke(TrustedImmPtr imm, int index = 0)
{
storePtr(imm, addressForPoke(index));
}
+#endif
#if (CPU(X86_64) || CPU(ARM64)) && !defined(V4_BOOTSTRAP)
void peek64(RegisterID dest, int index = 0)