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

Side by Side Diff: src/builtins.cc

Issue 1609893003: [es6] Tail calls support. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Support for CS and TF compilers added Created 4 years, 11 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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.h" 5 #include "src/builtins.h"
6 6
7 #include "src/api.h" 7 #include "src/api.h"
8 #include "src/api-natives.h" 8 #include "src/api-natives.h"
9 #include "src/arguments.h" 9 #include "src/arguments.h"
10 #include "src/base/once.h" 10 #include "src/base/once.h"
(...skipping 3480 matching lines...) Expand 10 before | Expand all | Expand 10 after
3491 3491
3492 BUILTIN(HandleApiCallConstruct) { 3492 BUILTIN(HandleApiCallConstruct) {
3493 HandleScope scope(isolate); 3493 HandleScope scope(isolate);
3494 Handle<Object> result; 3494 Handle<Object> result;
3495 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, 3495 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
3496 HandleApiCallHelper<true>(isolate, args)); 3496 HandleApiCallHelper<true>(isolate, args));
3497 return *result; 3497 return *result;
3498 } 3498 }
3499 3499
3500 3500
3501 Handle<Code> Builtins::CallFunction(ConvertReceiverMode mode) { 3501 Handle<Code> Builtins::CallFunction(ConvertReceiverMode mode,
3502 switch (mode) { 3502 TailCallMode tail_call_mode) {
3503 case ConvertReceiverMode::kNullOrUndefined: 3503 switch (tail_call_mode) {
3504 return CallFunction_ReceiverIsNullOrUndefined(); 3504 case TailCallMode::kDisallow:
3505 case ConvertReceiverMode::kNotNullOrUndefined: 3505 switch (mode) {
3506 return CallFunction_ReceiverIsNotNullOrUndefined(); 3506 case ConvertReceiverMode::kNullOrUndefined:
3507 case ConvertReceiverMode::kAny: 3507 return CallFunction_ReceiverIsNullOrUndefined();
3508 return CallFunction_ReceiverIsAny(); 3508 case ConvertReceiverMode::kNotNullOrUndefined:
3509 return CallFunction_ReceiverIsNotNullOrUndefined();
3510 case ConvertReceiverMode::kAny:
3511 return CallFunction_ReceiverIsAny();
3512 }
3513 break;
3514 case TailCallMode::kAllow:
3515 switch (mode) {
3516 case ConvertReceiverMode::kNullOrUndefined:
3517 return TailCallFunction_ReceiverIsNullOrUndefined();
3518 case ConvertReceiverMode::kNotNullOrUndefined:
3519 return TailCallFunction_ReceiverIsNotNullOrUndefined();
3520 case ConvertReceiverMode::kAny:
3521 return TailCallFunction_ReceiverIsAny();
3522 }
3523 break;
3509 } 3524 }
3510 UNREACHABLE(); 3525 UNREACHABLE();
3511 return Handle<Code>::null(); 3526 return Handle<Code>::null();
3512 } 3527 }
3513 3528
3514 3529
3515 Handle<Code> Builtins::Call(ConvertReceiverMode mode) { 3530 Handle<Code> Builtins::Call(ConvertReceiverMode mode,
3516 switch (mode) { 3531 TailCallMode tail_call_mode) {
3517 case ConvertReceiverMode::kNullOrUndefined: 3532 switch (tail_call_mode) {
3518 return Call_ReceiverIsNullOrUndefined(); 3533 case TailCallMode::kDisallow:
3519 case ConvertReceiverMode::kNotNullOrUndefined: 3534 switch (mode) {
3520 return Call_ReceiverIsNotNullOrUndefined(); 3535 case ConvertReceiverMode::kNullOrUndefined:
3521 case ConvertReceiverMode::kAny: 3536 return Call_ReceiverIsNullOrUndefined();
3522 return Call_ReceiverIsAny(); 3537 case ConvertReceiverMode::kNotNullOrUndefined:
3538 return Call_ReceiverIsNotNullOrUndefined();
3539 case ConvertReceiverMode::kAny:
3540 return Call_ReceiverIsAny();
3541 }
3542 break;
3543 case TailCallMode::kAllow:
3544 switch (mode) {
3545 case ConvertReceiverMode::kNullOrUndefined:
3546 return TailCall_ReceiverIsNullOrUndefined();
3547 case ConvertReceiverMode::kNotNullOrUndefined:
3548 return TailCall_ReceiverIsNotNullOrUndefined();
3549 case ConvertReceiverMode::kAny:
3550 return TailCall_ReceiverIsAny();
3551 }
3552 break;
3523 } 3553 }
3524 UNREACHABLE(); 3554 UNREACHABLE();
3525 return Handle<Code>::null(); 3555 return Handle<Code>::null();
3556 }
3557
3558
3559 Handle<Code> Builtins::CallBoundFunction(TailCallMode tail_call_mode) {
3560 switch (tail_call_mode) {
3561 case TailCallMode::kDisallow:
3562 return CallBoundFunction();
3563 case TailCallMode::kAllow:
3564 return TailCallBoundFunction();
3565 }
3566 UNREACHABLE();
3567 return Handle<Code>::null();
3526 } 3568 }
3527 3569
3528 3570
3529 namespace { 3571 namespace {
3530 3572
3531 class RelocatableArguments 3573 class RelocatableArguments
3532 : public BuiltinArguments<BuiltinExtraArguments::kTarget>, 3574 : public BuiltinArguments<BuiltinExtraArguments::kTarget>,
3533 public Relocatable { 3575 public Relocatable {
3534 public: 3576 public:
3535 RelocatableArguments(Isolate* isolate, int length, Object** arguments) 3577 RelocatableArguments(Isolate* isolate, int length, Object** arguments)
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
3998 BUILTIN_LIST_C(DEFINE_BUILTIN_ACCESSOR_C) 4040 BUILTIN_LIST_C(DEFINE_BUILTIN_ACCESSOR_C)
3999 BUILTIN_LIST_A(DEFINE_BUILTIN_ACCESSOR_A) 4041 BUILTIN_LIST_A(DEFINE_BUILTIN_ACCESSOR_A)
4000 BUILTIN_LIST_H(DEFINE_BUILTIN_ACCESSOR_H) 4042 BUILTIN_LIST_H(DEFINE_BUILTIN_ACCESSOR_H)
4001 BUILTIN_LIST_DEBUG_A(DEFINE_BUILTIN_ACCESSOR_A) 4043 BUILTIN_LIST_DEBUG_A(DEFINE_BUILTIN_ACCESSOR_A)
4002 #undef DEFINE_BUILTIN_ACCESSOR_C 4044 #undef DEFINE_BUILTIN_ACCESSOR_C
4003 #undef DEFINE_BUILTIN_ACCESSOR_A 4045 #undef DEFINE_BUILTIN_ACCESSOR_A
4004 4046
4005 4047
4006 } // namespace internal 4048 } // namespace internal
4007 } // namespace v8 4049 } // namespace v8
OLDNEW
« no previous file with comments | « src/builtins.h ('k') | src/code-factory.h » ('j') | src/x64/builtins-x64.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698