| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 6ae1466d62de54427cc9992af757099705339594..d447bbc9f76cbcb6d16990ed22233d11b154e1d1 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -11310,13 +11310,17 @@ void HOptimizedGraphBuilder::GenerateIsConstructCall(CallRuntime* call) {
|
|
|
| // Support for arguments.length and arguments[?].
|
| void HOptimizedGraphBuilder::GenerateArgumentsLength(CallRuntime* call) {
|
| - // Our implementation of arguments (based on this stack frame or an
|
| - // adapter below it) does not work for inlined functions. This runtime
|
| - // function is blacklisted by AstNode::IsInlineable.
|
| - ASSERT(function_state()->outer() == NULL);
|
| ASSERT(call->arguments()->length() == 0);
|
| - HInstruction* elements = Add<HArgumentsElements>(false);
|
| - HArgumentsLength* result = New<HArgumentsLength>(elements);
|
| + HInstruction* result = NULL;
|
| + if (function_state()->outer() == NULL) {
|
| + HInstruction* elements = Add<HArgumentsElements>(false);
|
| + result = New<HArgumentsLength>(elements);
|
| + } else {
|
| + // Number of arguments without receiver.
|
| + int argument_count = environment()->
|
| + arguments_environment()->parameter_count() - 1;
|
| + result = New<HConstant>(argument_count);
|
| + }
|
| return ast_context()->ReturnInstruction(result, call->id());
|
| }
|
|
|
|
|