| Index: src/compiler/ast-graph-builder.cc
|
| diff --git a/src/compiler/ast-graph-builder.cc b/src/compiler/ast-graph-builder.cc
|
| index 9c0b1113251585d31b50a05e0ecad2f026852f6e..9e8b951b04f36eb0bf1fbe981f92661f8ecaead0 100644
|
| --- a/src/compiler/ast-graph-builder.cc
|
| +++ b/src/compiler/ast-graph-builder.cc
|
| @@ -667,24 +667,20 @@ void AstGraphBuilder::VisitForInStatement(ForInStatement* stmt) {
|
| PrepareFrameState(obj, stmt->ToObjectId(), OutputFrameStateCombine::Push());
|
| environment()->Push(obj);
|
| // TODO(dcarney): should do a fast enum cache check here to skip runtime.
|
| - environment()->Push(obj);
|
| - Node* cache_type = ProcessArguments(
|
| - javascript()->CallRuntime(Runtime::kGetPropertyNamesFast, 1), 1);
|
| + Node* cache_type = NewNode(
|
| + javascript()->CallRuntime(Runtime::kGetPropertyNamesFast, 1), obj);
|
| PrepareFrameState(cache_type, stmt->EnumId(),
|
| OutputFrameStateCombine::Push());
|
| // TODO(dcarney): these next runtime calls should be removed in favour of
|
| // a few simplified instructions.
|
| - environment()->Push(obj);
|
| - environment()->Push(cache_type);
|
| - Node* cache_pair =
|
| - ProcessArguments(javascript()->CallRuntime(Runtime::kForInInit, 2), 2);
|
| + Node* cache_pair = NewNode(
|
| + javascript()->CallRuntime(Runtime::kForInInit, 2), obj, cache_type);
|
| // cache_type may have been replaced.
|
| Node* cache_array = NewNode(common()->Projection(0), cache_pair);
|
| cache_type = NewNode(common()->Projection(1), cache_pair);
|
| - environment()->Push(cache_type);
|
| - environment()->Push(cache_array);
|
| - Node* cache_length = ProcessArguments(
|
| - javascript()->CallRuntime(Runtime::kForInCacheArrayLength, 2), 2);
|
| + Node* cache_length =
|
| + NewNode(javascript()->CallRuntime(Runtime::kForInCacheArrayLength, 2),
|
| + cache_type, cache_array);
|
| {
|
| // TODO(dcarney): this check is actually supposed to be for the
|
| // empty enum case only.
|
| @@ -749,16 +745,10 @@ void AstGraphBuilder::VisitForInBody(ForInStatement* stmt) {
|
| Node* function = BuildLoadObjectField(
|
| builtins,
|
| JSBuiltinsObject::OffsetOfFunctionWithId(Builtins::FILTER_KEY));
|
| - // Callee.
|
| - environment()->Push(function);
|
| - // Receiver.
|
| - environment()->Push(obj);
|
| - // Args.
|
| - environment()->Push(value);
|
| // result is either the string key or Smi(0) indicating the property
|
| // is gone.
|
| - Node* res = ProcessArguments(
|
| - javascript()->CallFunction(3, NO_CALL_FUNCTION_FLAGS), 3);
|
| + Node* res = NewNode(javascript()->CallFunction(3, NO_CALL_FUNCTION_FLAGS),
|
| + function, obj, value);
|
| // TODO(jarin): provide real bailout id.
|
| PrepareFrameState(res, BailoutId::None());
|
| Node* property_missing =
|
|
|