Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index d0dd5680c0485555b013113e97cf0ea9e8d59701..31e4e2d3a5147c4dae70cbaa73f217ac1bd1b9ef 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -1354,13 +1354,15 @@ class HEnterInlined: public HTemplateInstruction<0> { |
FunctionLiteral* function, |
CallKind call_kind, |
bool is_construct, |
- Variable* arguments) |
+ Variable* arguments_var, |
+ ZoneList<HValue*>* arguments_values) |
: closure_(closure), |
arguments_count_(arguments_count), |
function_(function), |
call_kind_(call_kind), |
is_construct_(is_construct), |
- arguments_(arguments) { |
+ arguments_var_(arguments_var), |
+ arguments_values_(arguments_values) { |
} |
virtual void PrintDataTo(StringStream* stream); |
@@ -1375,7 +1377,8 @@ class HEnterInlined: public HTemplateInstruction<0> { |
return Representation::None(); |
} |
- Variable* arguments() { return arguments_; } |
+ Variable* arguments_var() { return arguments_var_; } |
+ ZoneList<HValue*>* arguments_values() { return arguments_values_; } |
DECLARE_CONCRETE_INSTRUCTION(EnterInlined) |
@@ -1385,19 +1388,28 @@ class HEnterInlined: public HTemplateInstruction<0> { |
FunctionLiteral* function_; |
CallKind call_kind_; |
bool is_construct_; |
- Variable* arguments_; |
+ Variable* arguments_var_; |
+ ZoneList<HValue*>* arguments_values_; |
}; |
class HLeaveInlined: public HTemplateInstruction<0> { |
public: |
- HLeaveInlined() {} |
+ explicit HLeaveInlined(bool arguments_pushed) |
+ : arguments_pushed_(arguments_pushed) { } |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::None(); |
} |
+ bool arguments_pushed() { |
+ return arguments_pushed_; |
+ } |
+ |
DECLARE_CONCRETE_INSTRUCTION(LeaveInlined) |
+ |
+ private: |
+ bool arguments_pushed_; |
}; |
@@ -2577,7 +2589,7 @@ class HApplyArguments: public HTemplateInstruction<4> { |
class HArgumentsElements: public HTemplateInstruction<0> { |
public: |
- HArgumentsElements() { |
+ explicit HArgumentsElements(bool from_inlined) : from_inlined_(from_inlined) { |
// The value produced by this instruction is a pointer into the stack |
// that looks as if it was a smi because of alignment. |
set_representation(Representation::Tagged()); |
@@ -2590,8 +2602,12 @@ class HArgumentsElements: public HTemplateInstruction<0> { |
return Representation::None(); |
} |
+ bool from_inlined() const { return from_inlined_; } |
+ |
protected: |
virtual bool DataEquals(HValue* other) { return true; } |
+ |
+ bool from_inlined_; |
}; |