diff options
author | Erik Verbruggen <erik.verbruggen@qt.io> | 2017-11-24 14:03:28 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-28 10:44:27 +0000 |
commit | 6739c21677cb9911fbc6a3c49750a6baeca018ca (patch) | |
tree | 4a5e319143a0307a941cb724712e2321601b9f09 /src/qml/jit/qv4assembler.cpp | |
parent | de918eb0890087f93e6fac4bf5291b0855ae0d87 (diff) |
V4 JIT: Try not to overdo alignment
The x86_64 assembler will not push a register aligned. The arm64
assembler will. The correct use for pushing constants is not to
"prepare" the stack pointer and then push (because that would result in
an unaligned value on arm64), but to load the value and do an aligned
register push.
This fixes a Bus Error on ARM64.
Change-Id: I9c9ed643372025f5f7097e7f44ab17adfd0815a9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jit/qv4assembler.cpp')
-rw-r--r-- | src/qml/jit/qv4assembler.cpp | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/src/qml/jit/qv4assembler.cpp b/src/qml/jit/qv4assembler.cpp index 8165cd0807..ee1f1e8673 100644 --- a/src/qml/jit/qv4assembler.cpp +++ b/src/qml/jit/qv4assembler.cpp @@ -785,16 +785,10 @@ struct PlatformAssembler64 : PlatformAssemblerCommon xor64(ScratchRegister, AccumulatorRegister); } - void pushValue(ReturnedValue v) - { - loadValue(v); - push(AccumulatorRegister); - } - void pushValueAligned(ReturnedValue v) { - subPtr(TrustedImm32(PointerSize), StackPointerRegister); - pushValue(v); + loadValue(v); + pushAligned(AccumulatorRegister); } void popValueAligned() |