summaryrefslogtreecommitdiff
path: root/js/src/irregexp
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2020-02-28 18:00:45 -0500
committerMatt A. Tobin <email@mattatobin.com>2020-02-28 18:00:45 -0500
commit65b37410ca38005bd6f4c9470c93a49cd12ad368 (patch)
treec65f22f3ed2fda8b9b3ff36c029020bd1500d946 /js/src/irregexp
parent6a3d5769d01ec1a8dd56ea79aec2df91b801ce02 (diff)
downloaduxp-65b37410ca38005bd6f4c9470c93a49cd12ad368.tar.gz
Revert "Issue #190 - Part 1: Remove XP_IOS conditional code"
This reverts commit 6a3d5769d01ec1a8dd56ea79aec2df91b801ce02.
Diffstat (limited to 'js/src/irregexp')
-rw-r--r--js/src/irregexp/NativeRegExpMacroAssembler.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/js/src/irregexp/NativeRegExpMacroAssembler.cpp b/js/src/irregexp/NativeRegExpMacroAssembler.cpp
index f452de6bad..0fb5072973 100644
--- a/js/src/irregexp/NativeRegExpMacroAssembler.cpp
+++ b/js/src/irregexp/NativeRegExpMacroAssembler.cpp
@@ -132,6 +132,14 @@ NativeRegExpMacroAssembler::GenerateCode(JSContext* cx, bool match_only)
pushedNonVolatileRegisters++;
}
+#if defined(XP_IOS) && defined(JS_CODEGEN_ARM)
+ // The stack is 4-byte aligned on iOS, force 8-byte alignment.
+ masm.movePtr(StackPointer, temp0);
+ masm.andPtr(Imm32(~7), StackPointer);
+ masm.push(temp0);
+ masm.push(temp0);
+#endif
+
#ifndef JS_CODEGEN_X86
// The InputOutputData* is stored as an argument, save it on the stack
// above the frame.
@@ -398,6 +406,11 @@ NativeRegExpMacroAssembler::GenerateCode(JSContext* cx, bool match_only)
masm.freeStack(frameSize);
#endif
+#if defined(XP_IOS) && defined(JS_CODEGEN_ARM)
+ masm.pop(temp0);
+ masm.movePtr(temp0, StackPointer);
+#endif
+
// Restore non-volatile registers which were saved on entry.
for (GeneralRegisterBackwardIterator iter(savedNonVolatileRegisters); iter.more(); ++iter)
masm.Pop(*iter);