Index: src/arm64/lithium-codegen-arm64.h |
diff --git a/src/arm64/lithium-codegen-arm64.h b/src/arm64/lithium-codegen-arm64.h |
index 809ed556d06843fea17b7f0d5d4bd6f6b6f1d96d..06cc92f0e3e1f46b568b598bcab681c1fbbe52d6 100644 |
--- a/src/arm64/lithium-codegen-arm64.h |
+++ b/src/arm64/lithium-codegen-arm64.h |
@@ -37,7 +37,8 @@ class LCodeGen: public LCodeGenBase { |
frame_is_built_(false), |
safepoints_(info->zone()), |
resolver_(this), |
- expected_safepoint_kind_(Safepoint::kSimple) { |
+ expected_safepoint_kind_(Safepoint::kSimple), |
+ pushed_arguments_(0) { |
PopulateDeoptimizationLiteralsWithInlinedFunctions(); |
} |
@@ -81,7 +82,9 @@ class LCodeGen: public LCodeGenBase { |
Register ToRegister32(LOperand* op) const; |
Operand ToOperand(LOperand* op); |
Operand ToOperand32(LOperand* op); |
- MemOperand ToMemOperand(LOperand* op) const; |
+ enum StackMode { kMustUseFramePointer, kCanUseStackPointer }; |
+ MemOperand ToMemOperand(LOperand* op, |
+ StackMode stack_mode = kCanUseStackPointer) const; |
Handle<Object> ToHandle(LConstantOperand* op) const; |
template <class LI> |
@@ -358,6 +361,15 @@ class LCodeGen: public LCodeGenBase { |
Safepoint::Kind expected_safepoint_kind_; |
+ // The number of arguments pushed onto the stack, either by this block or by a |
+ // predecessor. |
+ int pushed_arguments_; |
+ |
+ void RecordPushedArgumentsDelta(int delta) { |
+ pushed_arguments_ += delta; |
+ DCHECK(pushed_arguments_ >= 0); |
+ } |
+ |
int old_position_; |
class PushSafepointRegistersScope BASE_EMBEDDED { |