| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index a51d67f3e090553b6c3c8dbd334f4b100a1043ac..45f414dc01350bd678da01dca3173dfd490f59b3 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -723,6 +723,8 @@ class HValue : public ZoneObject {
|
|
|
| bool CanReplaceWithDummyUses();
|
|
|
| + virtual int argument_delta() const { return 0; }
|
| +
|
| // A purely informative definition is an idef that will not emit code and
|
| // should therefore be removed from the graph in the RestoreActualValues
|
| // phase (so that live ranges will be shorter).
|
| @@ -1930,13 +1932,18 @@ class HEnterInlined V8_FINAL : public HTemplateInstruction<0> {
|
|
|
| class HLeaveInlined V8_FINAL : public HTemplateInstruction<0> {
|
| public:
|
| - HLeaveInlined() { }
|
| + explicit HLeaveInlined(int drop_count) : drop_count_(drop_count) { }
|
|
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::None();
|
| }
|
|
|
| + virtual int argument_delta() const V8_OVERRIDE { return -drop_count_; }
|
| +
|
| DECLARE_CONCRETE_INSTRUCTION(LeaveInlined)
|
| +
|
| + private:
|
| + int drop_count_;
|
| };
|
|
|
|
|
| @@ -1948,6 +1955,7 @@ class HPushArgument V8_FINAL : public HUnaryOperation {
|
| return Representation::Tagged();
|
| }
|
|
|
| + virtual int argument_delta() const V8_OVERRIDE { return 1; }
|
| HValue* argument() { return OperandAt(0); }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(PushArgument)
|
| @@ -2097,7 +2105,13 @@ class HCall : public HTemplateInstruction<V> {
|
| return HType::Tagged();
|
| }
|
|
|
| - virtual int argument_count() const { return argument_count_; }
|
| + virtual int argument_count() const {
|
| + return argument_count_;
|
| + }
|
| +
|
| + virtual int argument_delta() const V8_OVERRIDE {
|
| + return -argument_count();
|
| + }
|
|
|
| virtual bool IsCall() V8_FINAL V8_OVERRIDE { return true; }
|
|
|
|
|