| Index: src/builtins/builtins-interpreter.cc
|
| diff --git a/src/builtins/builtins-interpreter.cc b/src/builtins/builtins-interpreter.cc
|
| index 27ef954f17b9994b8e5f11f60105bba13df54503..701c92b23970ba96a8adfcfa88fb17d885d27644 100644
|
| --- a/src/builtins/builtins-interpreter.cc
|
| +++ b/src/builtins/builtins-interpreter.cc
|
| @@ -9,17 +9,20 @@ namespace v8 {
|
| namespace internal {
|
|
|
| Handle<Code> Builtins::InterpreterPushArgsAndCall(TailCallMode tail_call_mode,
|
| - CallableType function_type) {
|
| - switch (tail_call_mode) {
|
| - case TailCallMode::kDisallow:
|
| - if (function_type == CallableType::kJSFunction) {
|
| + PushArgsMode mode) {
|
| + switch (mode) {
|
| + case PushArgsMode::kJSFunction:
|
| + if (tail_call_mode == TailCallMode::kDisallow) {
|
| return InterpreterPushArgsAndCallFunction();
|
| } else {
|
| - return InterpreterPushArgsAndCall();
|
| - }
|
| - case TailCallMode::kAllow:
|
| - if (function_type == CallableType::kJSFunction) {
|
| return InterpreterPushArgsAndTailCallFunction();
|
| + }
|
| + case PushArgsMode::kWithFinalSpread:
|
| + CHECK(tail_call_mode == TailCallMode::kDisallow);
|
| + return InterpreterPushArgsAndCallWithFinalSpread();
|
| + case PushArgsMode::kOther:
|
| + if (tail_call_mode == TailCallMode::kDisallow) {
|
| + return InterpreterPushArgsAndCall();
|
| } else {
|
| return InterpreterPushArgsAndTailCall();
|
| }
|
| @@ -30,34 +33,39 @@ Handle<Code> Builtins::InterpreterPushArgsAndCall(TailCallMode tail_call_mode,
|
|
|
| void Builtins::Generate_InterpreterPushArgsAndCall(MacroAssembler* masm) {
|
| return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kDisallow,
|
| - CallableType::kAny);
|
| + PushArgsMode::kOther);
|
| }
|
|
|
| void Builtins::Generate_InterpreterPushArgsAndCallFunction(
|
| MacroAssembler* masm) {
|
| return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kDisallow,
|
| - CallableType::kJSFunction);
|
| + PushArgsMode::kJSFunction);
|
| +}
|
| +
|
| +void Builtins::Generate_InterpreterPushArgsAndCallWithFinalSpread(
|
| + MacroAssembler* masm) {
|
| + return Generate_InterpreterPushArgsAndCallImpl(
|
| + masm, TailCallMode::kDisallow, PushArgsMode::kWithFinalSpread);
|
| }
|
|
|
| void Builtins::Generate_InterpreterPushArgsAndTailCall(MacroAssembler* masm) {
|
| return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow,
|
| - CallableType::kAny);
|
| + PushArgsMode::kOther);
|
| }
|
|
|
| void Builtins::Generate_InterpreterPushArgsAndTailCallFunction(
|
| MacroAssembler* masm) {
|
| return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow,
|
| - CallableType::kJSFunction);
|
| + PushArgsMode::kJSFunction);
|
| }
|
|
|
| -Handle<Code> Builtins::InterpreterPushArgsAndConstruct(
|
| - PushArgsConstructMode mode) {
|
| +Handle<Code> Builtins::InterpreterPushArgsAndConstruct(PushArgsMode mode) {
|
| switch (mode) {
|
| - case PushArgsConstructMode::kJSFunction:
|
| + case PushArgsMode::kJSFunction:
|
| return InterpreterPushArgsAndConstructFunction();
|
| - case PushArgsConstructMode::kWithFinalSpread:
|
| + case PushArgsMode::kWithFinalSpread:
|
| return InterpreterPushArgsAndConstructWithFinalSpread();
|
| - case PushArgsConstructMode::kOther:
|
| + case PushArgsMode::kOther:
|
| return InterpreterPushArgsAndConstruct();
|
| }
|
| UNREACHABLE();
|
| @@ -65,20 +73,20 @@ Handle<Code> Builtins::InterpreterPushArgsAndConstruct(
|
| }
|
|
|
| void Builtins::Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm) {
|
| - return Generate_InterpreterPushArgsAndConstructImpl(
|
| - masm, PushArgsConstructMode::kOther);
|
| + return Generate_InterpreterPushArgsAndConstructImpl(masm,
|
| + PushArgsMode::kOther);
|
| }
|
|
|
| void Builtins::Generate_InterpreterPushArgsAndConstructWithFinalSpread(
|
| MacroAssembler* masm) {
|
| return Generate_InterpreterPushArgsAndConstructImpl(
|
| - masm, PushArgsConstructMode::kWithFinalSpread);
|
| + masm, PushArgsMode::kWithFinalSpread);
|
| }
|
|
|
| void Builtins::Generate_InterpreterPushArgsAndConstructFunction(
|
| MacroAssembler* masm) {
|
| return Generate_InterpreterPushArgsAndConstructImpl(
|
| - masm, PushArgsConstructMode::kJSFunction);
|
| + masm, PushArgsMode::kJSFunction);
|
| }
|
|
|
| } // namespace internal
|
|
|