summaryrefslogtreecommitdiff
path: root/deps/v8/src/codegen/arm/macro-assembler-arm.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/codegen/arm/macro-assembler-arm.h')
-rw-r--r--deps/v8/src/codegen/arm/macro-assembler-arm.h27
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);