Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 1e92cc4a3fe53e61fa0dde85b4b5b0caf5308f84..28408f20bfe84fef5d8bd2403b350567a07175bd 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -1403,20 +1403,30 @@ class HStackCheck: public HTemplateInstruction<1> { |
}; |
+// Indicate whether we have to perform special handling on return from inlined |
+// functions. |
+enum ReturnHandlingFlag { |
+ NORMAL_RETURN, // Normal function/method return. |
+ DROP_EXTRA_ON_RETURN, // Drop an extra value from the environment. |
+ CONSTRUCT_CALL_RETURN, // Either use allocated receiver or return value. |
+ SETTER_CALL_RETURN // Use the RHS of the assignment as the return value. |
+}; |
+ |
+ |
class HEnterInlined: public HTemplateInstruction<0> { |
public: |
HEnterInlined(Handle<JSFunction> closure, |
int arguments_count, |
FunctionLiteral* function, |
CallKind call_kind, |
- bool is_construct, |
+ ReturnHandlingFlag return_handling, |
Variable* arguments_var, |
ZoneList<HValue*>* arguments_values) |
: closure_(closure), |
arguments_count_(arguments_count), |
function_(function), |
call_kind_(call_kind), |
- is_construct_(is_construct), |
+ return_handling_(return_handling), |
arguments_var_(arguments_var), |
arguments_values_(arguments_values) { |
} |
@@ -1427,7 +1437,7 @@ class HEnterInlined: public HTemplateInstruction<0> { |
int arguments_count() const { return arguments_count_; } |
FunctionLiteral* function() const { return function_; } |
CallKind call_kind() const { return call_kind_; } |
- bool is_construct() const { return is_construct_; } |
+ ReturnHandlingFlag return_handling() const { return return_handling_; } |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::None(); |
@@ -1443,7 +1453,7 @@ class HEnterInlined: public HTemplateInstruction<0> { |
int arguments_count_; |
FunctionLiteral* function_; |
CallKind call_kind_; |
- bool is_construct_; |
+ ReturnHandlingFlag return_handling_; |
Variable* arguments_var_; |
ZoneList<HValue*>* arguments_values_; |
}; |