Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(432)

Side by Side Diff: src/builtins/builtins-array-gen.cc

Issue 2803853005: Inline Array.prototype.forEach in TurboFan (Closed)
Patch Set: fix v8heapconst.py Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 the V8 project authors. All rights reserved. 1 // Copyright 2017 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/builtins/builtins-string-gen.h" 5 #include "src/builtins/builtins-string-gen.h"
6 #include "src/builtins/builtins-utils-gen.h" 6 #include "src/builtins/builtins-utils-gen.h"
7 #include "src/builtins/builtins.h" 7 #include "src/builtins/builtins.h"
8 #include "src/code-stub-assembler.h" 8 #include "src/code-stub-assembler.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1197 1197
1198 InitIteratingArrayBuiltinLoopContinuation(context, receiver, callbackfn, 1198 InitIteratingArrayBuiltinLoopContinuation(context, receiver, callbackfn,
1199 this_arg, array, object, initial_k, 1199 this_arg, array, object, initial_k,
1200 len, to); 1200 len, to);
1201 1201
1202 GenerateIteratingArrayBuiltinLoopContinuation( 1202 GenerateIteratingArrayBuiltinLoopContinuation(
1203 &ArrayBuiltinCodeStubAssembler::ForEachProcessor, 1203 &ArrayBuiltinCodeStubAssembler::ForEachProcessor,
1204 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction); 1204 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction);
1205 } 1205 }
1206 1206
1207 TF_BUILTIN(ArrayForEachLoopEagerDeoptContinuation,
1208 ArrayBuiltinCodeStubAssembler) {
1209 Node* context = Parameter(Descriptor::kContext);
1210 Node* receiver = Parameter(Descriptor::kReceiver);
1211 Node* callbackfn = Parameter(Descriptor::kCallbackFn);
1212 Node* this_arg = Parameter(Descriptor::kThisArg);
1213 Node* initial_k = Parameter(Descriptor::kInitialK);
1214 Node* len = Parameter(Descriptor::kLength);
1215
1216 Callable stub(Builtins::CallableFor(isolate(),
1217 Builtins::kArrayForEachLoopContinuation));
1218 Return(CallStub(stub, context, receiver, callbackfn, this_arg,
1219 UndefinedConstant(), receiver, initial_k, len,
1220 UndefinedConstant()));
1221 }
1222
1223 TF_BUILTIN(ArrayForEachLoopLazyDeoptContinuation,
1224 ArrayBuiltinCodeStubAssembler) {
1225 Node* context = Parameter(Descriptor::kContext);
1226 Node* receiver = Parameter(Descriptor::kReceiver);
1227 Node* callbackfn = Parameter(Descriptor::kCallbackFn);
1228 Node* this_arg = Parameter(Descriptor::kThisArg);
1229 Node* initial_k = Parameter(Descriptor::kInitialK);
1230 Node* len = Parameter(Descriptor::kLength);
1231
1232 Callable stub(Builtins::CallableFor(isolate(),
1233 Builtins::kArrayForEachLoopContinuation));
1234 Return(CallStub(stub, context, receiver, callbackfn, this_arg,
1235 UndefinedConstant(), receiver, initial_k, len,
1236 UndefinedConstant()));
1237 }
1238
1207 TF_BUILTIN(ArrayForEach, ArrayBuiltinCodeStubAssembler) { 1239 TF_BUILTIN(ArrayForEach, ArrayBuiltinCodeStubAssembler) {
1208 Node* argc = 1240 Node* argc =
1209 ChangeInt32ToIntPtr(Parameter(BuiltinDescriptor::kArgumentsCount)); 1241 ChangeInt32ToIntPtr(Parameter(BuiltinDescriptor::kArgumentsCount));
1210 CodeStubArguments args(this, argc); 1242 CodeStubArguments args(this, argc);
1211 Node* context = Parameter(BuiltinDescriptor::kContext); 1243 Node* context = Parameter(BuiltinDescriptor::kContext);
1212 Node* new_target = Parameter(BuiltinDescriptor::kNewTarget); 1244 Node* new_target = Parameter(BuiltinDescriptor::kNewTarget);
1213 Node* receiver = args.GetReceiver(); 1245 Node* receiver = args.GetReceiver();
1214 Node* callbackfn = args.GetOptionalArgumentValue(0, UndefinedConstant()); 1246 Node* callbackfn = args.GetOptionalArgumentValue(0, UndefinedConstant());
1215 Node* this_arg = args.GetOptionalArgumentValue(1, UndefinedConstant()); 1247 Node* this_arg = args.GetOptionalArgumentValue(1, UndefinedConstant());
1216 1248
(...skipping 1228 matching lines...) Expand 10 before | Expand all | Expand 10 after
2445 { 2477 {
2446 Node* message = SmiConstant(MessageTemplate::kDetachedOperation); 2478 Node* message = SmiConstant(MessageTemplate::kDetachedOperation);
2447 CallRuntime(Runtime::kThrowTypeError, context, message, 2479 CallRuntime(Runtime::kThrowTypeError, context, message,
2448 HeapConstant(operation)); 2480 HeapConstant(operation));
2449 Unreachable(); 2481 Unreachable();
2450 } 2482 }
2451 } 2483 }
2452 2484
2453 } // namespace internal 2485 } // namespace internal
2454 } // namespace v8 2486 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698