| Index: src/arm64/code-stubs-arm64.cc
|
| diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc
|
| index 884be5800eeddc32b014eae4b21f249457578282..5bffd19c1a26c3c27a3c5adcb44e807e9d4781bb 100644
|
| --- a/src/arm64/code-stubs-arm64.cc
|
| +++ b/src/arm64/code-stubs-arm64.cc
|
| @@ -1577,6 +1577,7 @@ void CEntryStub::Generate(MacroAssembler* masm) {
|
| // jssp[8]: Preserved x22 (used for argc).
|
| // jssp[0]: Preserved x21 (used for argv).
|
| __ Drop(x11);
|
| + __ AssertFPCRState();
|
| __ Ret();
|
|
|
| // The stack pointer is still csp if we aren't returning, and the frame
|
| @@ -1660,6 +1661,11 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| __ Mov(jssp, csp);
|
| __ SetStackPointer(jssp);
|
|
|
| + // Configure the FPCR. We don't restore it, so this is technically not allowed
|
| + // according to AAPCS64. However, we only set default-NaN mode and this will
|
| + // be harmless for most C code. Also, it works for ARM.
|
| + __ ConfigureFPCR();
|
| +
|
| ProfileEntryHookStub::MaybeCallEntryHook(masm);
|
|
|
| // Set up the reserved register for 0.0.
|
| @@ -4519,7 +4525,7 @@ void StoreArrayLiteralElementStub::Generate(MacroAssembler* masm) {
|
|
|
| __ Bind(&double_elements);
|
| __ Ldr(x10, FieldMemOperand(array, JSObject::kElementsOffset));
|
| - __ StoreNumberToDoubleElements(value, index_smi, x10, x11, d0, d1,
|
| + __ StoreNumberToDoubleElements(value, index_smi, x10, x11, d0,
|
| &slow_elements);
|
| __ Ret();
|
| }
|
| @@ -4621,6 +4627,7 @@ void DirectCEntryStub::Generate(MacroAssembler* masm) {
|
| __ Blr(x10);
|
| // Return to calling code.
|
| __ Peek(lr, 0);
|
| + __ AssertFPCRState();
|
| __ Ret();
|
|
|
| __ SetStackPointer(old_stack_pointer);
|
|
|