summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-interpreter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/builtins/builtins-interpreter.cc')
-rw-r--r--deps/v8/src/builtins/builtins-interpreter.cc84
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