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

Side by Side Diff: src/compiler/code-assembler.cc

Issue 2580823002: [turbofan] Combine family of CallRuntime() methods into single imeplementation. (Closed)
Patch Set: Created 4 years 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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/compiler/code-assembler.h" 5 #include "src/compiler/code-assembler.h"
6 6
7 #include <ostream> 7 #include <ostream>
8 8
9 #include "src/code-factory.h" 9 #include "src/code-factory.h"
10 #include "src/compiler/graph.h" 10 #include "src/compiler/graph.h"
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 Node* return_value = raw_assembler()->CallN(descriptor, code_target, args); 402 Node* return_value = raw_assembler()->CallN(descriptor, code_target, args);
403 CallEpilogue(); 403 CallEpilogue();
404 return return_value; 404 return return_value;
405 } 405 }
406 406
407 Node* CodeAssembler::TailCallN(CallDescriptor* descriptor, Node* code_target, 407 Node* CodeAssembler::TailCallN(CallDescriptor* descriptor, Node* code_target,
408 Node** args) { 408 Node** args) {
409 return raw_assembler()->TailCallN(descriptor, code_target, args); 409 return raw_assembler()->TailCallN(descriptor, code_target, args);
410 } 410 }
411 411
412 Node* CodeAssembler::CallRuntime(Runtime::FunctionId function_id, 412 template <class... TArgs>
413 Node* context) { 413 Node* CodeAssembler::CallRuntime(Runtime::FunctionId function, Node* context,
414 TArgs... args) {
414 CallPrologue(); 415 CallPrologue();
415 Node* return_value = raw_assembler()->CallRuntime0(function_id, context); 416 Node* return_value = raw_assembler()->CallRuntime(function, context, args...);
416 CallEpilogue(); 417 CallEpilogue();
417 return return_value; 418 return return_value;
418 } 419 }
419 420
420 Node* CodeAssembler::CallRuntime(Runtime::FunctionId function_id, Node* context, 421 // Instantiate CallRuntime template with different number of arguments.
421 Node* arg1) { 422 template Node* CodeAssembler::CallRuntime(Runtime::FunctionId, Node* context);
422 CallPrologue(); 423 template Node* CodeAssembler::CallRuntime(Runtime::FunctionId, Node* context,
423 Node* return_value = 424 Node*);
424 raw_assembler()->CallRuntime1(function_id, arg1, context); 425 template Node* CodeAssembler::CallRuntime(Runtime::FunctionId, Node* context,
425 CallEpilogue(); 426 Node*, Node*);
426 return return_value; 427 template Node* CodeAssembler::CallRuntime(Runtime::FunctionId, Node* context,
427 } 428 Node*, Node*, Node*);
428 429 template Node* CodeAssembler::CallRuntime(Runtime::FunctionId, Node* context,
429 Node* CodeAssembler::CallRuntime(Runtime::FunctionId function_id, Node* context, 430 Node*, Node*, Node*, Node*);
430 Node* arg1, Node* arg2) { 431 template Node* CodeAssembler::CallRuntime(Runtime::FunctionId, Node* context,
431 CallPrologue(); 432 Node*, Node*, Node*, Node*, Node*);
432 Node* return_value =
433 raw_assembler()->CallRuntime2(function_id, arg1, arg2, context);
434 CallEpilogue();
435 return return_value;
436 }
437
438 Node* CodeAssembler::CallRuntime(Runtime::FunctionId function_id, Node* context,
439 Node* arg1, Node* arg2, Node* arg3) {
440 CallPrologue();
441 Node* return_value =
442 raw_assembler()->CallRuntime3(function_id, arg1, arg2, arg3, context);
443 CallEpilogue();
444 return return_value;
445 }
446
447 Node* CodeAssembler::CallRuntime(Runtime::FunctionId function_id, Node* context,
448 Node* arg1, Node* arg2, Node* arg3,
449 Node* arg4) {
450 CallPrologue();
451 Node* return_value = raw_assembler()->CallRuntime4(function_id, arg1, arg2,
452 arg3, arg4, context);
453 CallEpilogue();
454 return return_value;
455 }
456
457 Node* CodeAssembler::CallRuntime(Runtime::FunctionId function_id, Node* context,
458 Node* arg1, Node* arg2, Node* arg3, Node* arg4,
459 Node* arg5) {
460 CallPrologue();
461 Node* return_value = raw_assembler()->CallRuntime5(function_id, arg1, arg2,
462 arg3, arg4, arg5, context);
463 CallEpilogue();
464 return return_value;
465 }
466 433
467 Node* CodeAssembler::TailCallRuntime(Runtime::FunctionId function_id, 434 Node* CodeAssembler::TailCallRuntime(Runtime::FunctionId function_id,
468 Node* context) { 435 Node* context) {
469 return raw_assembler()->TailCallRuntime0(function_id, context); 436 return raw_assembler()->TailCallRuntime0(function_id, context);
470 } 437 }
471 438
472 Node* CodeAssembler::TailCallRuntime(Runtime::FunctionId function_id, 439 Node* CodeAssembler::TailCallRuntime(Runtime::FunctionId function_id,
473 Node* context, Node* arg1) { 440 Node* context, Node* arg1) {
474 return raw_assembler()->TailCallRuntime1(function_id, arg1, context); 441 return raw_assembler()->TailCallRuntime1(function_id, arg1, context);
475 } 442 }
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after
1213 } 1180 }
1214 } 1181 }
1215 } 1182 }
1216 1183
1217 bound_ = true; 1184 bound_ = true;
1218 } 1185 }
1219 1186
1220 } // namespace compiler 1187 } // namespace compiler
1221 } // namespace internal 1188 } // namespace internal
1222 } // namespace v8 1189 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698