diff options
Diffstat (limited to 'deps/v8/src/builtins/builtins-interpreter.cc')
-rw-r--r-- | deps/v8/src/builtins/builtins-interpreter.cc | 84 |
1 files changed, 28 insertions, 56 deletions
diff --git a/deps/v8/src/builtins/builtins-interpreter.cc b/deps/v8/src/builtins/builtins-interpreter.cc index 3cfa57bcbe..dd6ef0d0d0 100644 --- a/deps/v8/src/builtins/builtins-interpreter.cc +++ b/deps/v8/src/builtins/builtins-interpreter.cc @@ -4,92 +4,64 @@ #include "src/builtins/builtins-utils.h" #include "src/builtins/builtins.h" +#include "src/globals.h" +#include "src/handles-inl.h" #include "src/objects-inl.h" namespace v8 { namespace internal { -Handle<Code> Builtins::InterpreterPushArgsAndCall( - TailCallMode tail_call_mode, InterpreterPushArgsMode mode) { +Handle<Code> Builtins::InterpreterPushArgsThenCall( + ConvertReceiverMode receiver_mode, TailCallMode tail_call_mode, + InterpreterPushArgsMode mode) { switch (mode) { case InterpreterPushArgsMode::kJSFunction: if (tail_call_mode == TailCallMode::kDisallow) { - return InterpreterPushArgsAndCallFunction(); + switch (receiver_mode) { + case ConvertReceiverMode::kNullOrUndefined: + return InterpreterPushUndefinedAndArgsThenCallFunction(); + case ConvertReceiverMode::kNotNullOrUndefined: + case ConvertReceiverMode::kAny: + return InterpreterPushArgsThenCallFunction(); + } } else { - return InterpreterPushArgsAndTailCallFunction(); + CHECK_EQ(receiver_mode, ConvertReceiverMode::kAny); + return InterpreterPushArgsThenTailCallFunction(); } case InterpreterPushArgsMode::kWithFinalSpread: CHECK(tail_call_mode == TailCallMode::kDisallow); - return InterpreterPushArgsAndCallWithFinalSpread(); + return InterpreterPushArgsThenCallWithFinalSpread(); case InterpreterPushArgsMode::kOther: if (tail_call_mode == TailCallMode::kDisallow) { - return InterpreterPushArgsAndCall(); + switch (receiver_mode) { + case ConvertReceiverMode::kNullOrUndefined: + return InterpreterPushUndefinedAndArgsThenCall(); + case ConvertReceiverMode::kNotNullOrUndefined: + case ConvertReceiverMode::kAny: + return InterpreterPushArgsThenCall(); + } } else { - return InterpreterPushArgsAndTailCall(); + CHECK_EQ(receiver_mode, ConvertReceiverMode::kAny); + return InterpreterPushArgsThenTailCall(); } } UNREACHABLE(); return Handle<Code>::null(); } -void Builtins::Generate_InterpreterPushArgsAndCall(MacroAssembler* masm) { - return Generate_InterpreterPushArgsAndCallImpl( - masm, TailCallMode::kDisallow, InterpreterPushArgsMode::kOther); -} - -void Builtins::Generate_InterpreterPushArgsAndCallFunction( - MacroAssembler* masm) { - return Generate_InterpreterPushArgsAndCallImpl( - masm, TailCallMode::kDisallow, InterpreterPushArgsMode::kJSFunction); -} - -void Builtins::Generate_InterpreterPushArgsAndCallWithFinalSpread( - MacroAssembler* masm) { - return Generate_InterpreterPushArgsAndCallImpl( - masm, TailCallMode::kDisallow, InterpreterPushArgsMode::kWithFinalSpread); -} - -void Builtins::Generate_InterpreterPushArgsAndTailCall(MacroAssembler* masm) { - return Generate_InterpreterPushArgsAndCallImpl( - masm, TailCallMode::kAllow, InterpreterPushArgsMode::kOther); -} - -void Builtins::Generate_InterpreterPushArgsAndTailCallFunction( - MacroAssembler* masm) { - return Generate_InterpreterPushArgsAndCallImpl( - masm, TailCallMode::kAllow, InterpreterPushArgsMode::kJSFunction); -} - -Handle<Code> Builtins::InterpreterPushArgsAndConstruct( +Handle<Code> Builtins::InterpreterPushArgsThenConstruct( InterpreterPushArgsMode mode) { switch (mode) { case InterpreterPushArgsMode::kJSFunction: - return InterpreterPushArgsAndConstructFunction(); + return InterpreterPushArgsThenConstructFunction(); case InterpreterPushArgsMode::kWithFinalSpread: - return InterpreterPushArgsAndConstructWithFinalSpread(); + return InterpreterPushArgsThenConstructWithFinalSpread(); case InterpreterPushArgsMode::kOther: - return InterpreterPushArgsAndConstruct(); + return InterpreterPushArgsThenConstruct(); } UNREACHABLE(); return Handle<Code>::null(); } -void Builtins::Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm) { - return Generate_InterpreterPushArgsAndConstructImpl( - masm, InterpreterPushArgsMode::kOther); -} - -void Builtins::Generate_InterpreterPushArgsAndConstructWithFinalSpread( - MacroAssembler* masm) { - return Generate_InterpreterPushArgsAndConstructImpl( - masm, InterpreterPushArgsMode::kWithFinalSpread); -} - -void Builtins::Generate_InterpreterPushArgsAndConstructFunction( - MacroAssembler* masm) { - return Generate_InterpreterPushArgsAndConstructImpl( - masm, InterpreterPushArgsMode::kJSFunction); -} - } // namespace internal } // namespace v8 |