diff options
Diffstat (limited to 'deps/v8/src/codegen/arm/macro-assembler-arm.h')
-rw-r--r-- | deps/v8/src/codegen/arm/macro-assembler-arm.h | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/deps/v8/src/codegen/arm/macro-assembler-arm.h b/deps/v8/src/codegen/arm/macro-assembler-arm.h index a7dc5498b8..a4d6632a07 100644 --- a/deps/v8/src/codegen/arm/macro-assembler-arm.h +++ b/deps/v8/src/codegen/arm/macro-assembler-arm.h @@ -17,6 +17,10 @@ namespace v8 { namespace internal { +// TODO(victorgomes): Move definition to macro-assembler.h, once all other +// platforms are updated. +enum class StackLimitKind { kInterruptStackLimit, kRealStackLimit }; + // ---------------------------------------------------------------------------- // Static helper functions @@ -320,10 +324,9 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // The return address on the stack is used by frame iteration. void StoreReturnAddressAndCall(Register target); - // This should only be used when assembling a deoptimizer call because of - // the CheckConstPool invocation, which is only needed for deoptimization. - void CallForDeoptimization(Address target, int deopt_id, Label* exit, - DeoptimizeKind kind); + void CallForDeoptimization(Builtins::Name target, int deopt_id, Label* exit, + DeoptimizeKind kind, + Label* jump_deoptimization_entry_label); // Emit code to discard a non-negative number of pointer-sized elements // from the stack, clobbering only the sp register. @@ -395,6 +398,12 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // values to location, restoring [d0..(d15|d31)]. void RestoreFPRegs(Register location, Register scratch); + // As above, but with heap semantics instead of stack semantics, i.e.: the + // location starts at the lowest address and grows towards higher addresses, + // for both saves and restores. + void SaveFPRegsToHeap(Register location, Register scratch); + void RestoreFPRegsFromHeap(Register location, Register scratch); + // Calculate how much stack space (in bytes) are required to store caller // registers excluding those specified in the arguments. int RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode, @@ -731,11 +740,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { // TODO(victorgomes): Remove this function once we stick with the reversed // arguments order. MemOperand ReceiverOperand(Register argc) { -#ifdef V8_REVERSE_JSARGS return MemOperand(sp, 0); -#else - return MemOperand(sp, argc, LSL, kSystemPointerSizeLog2); -#endif } // --------------------------------------------------------------------------- @@ -781,6 +786,12 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { Register scratch2); // --------------------------------------------------------------------------- + // Stack limit utilities + void LoadStackLimit(Register destination, StackLimitKind kind); + void StackOverflowCheck(Register num_args, Register scratch, + Label* stack_overflow); + + // --------------------------------------------------------------------------- // Smi utilities void SmiTag(Register reg, SBit s = LeaveCC); |