| 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_;
|
| };
|
|
|