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

Unified Diff: src/interpreter/interpreter-assembler.cc

Issue 2571563004: [Turbofan] Implement super calls with spread bytecode in assembly code. (Closed)
Patch Set: MIPS64 port Created 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/interpreter/interpreter-assembler.h ('k') | src/runtime/runtime.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/interpreter/interpreter-assembler.cc
diff --git a/src/interpreter/interpreter-assembler.cc b/src/interpreter/interpreter-assembler.cc
index 1ccd342f0662470b54d283ea416cc361244ba2ef..a08e6aed56641475015cfd9d8393f39aa5c03591 100644
--- a/src/interpreter/interpreter-assembler.cc
+++ b/src/interpreter/interpreter-assembler.cc
@@ -718,7 +718,7 @@ Node* InterpreterAssembler::CallConstruct(Node* constructor, Node* context,
Comment("call using callConstructFunction");
IncrementCallCount(type_feedback_vector, slot_id);
Callable callable_function = CodeFactory::InterpreterPushArgsAndConstruct(
- isolate(), CallableType::kJSFunction);
+ isolate(), PushArgsConstructMode::kJSFunction);
return_value.Bind(CallStub(callable_function.descriptor(),
HeapConstant(callable_function.code()), context,
arg_count, new_target, constructor,
@@ -821,7 +821,7 @@ Node* InterpreterAssembler::CallConstruct(Node* constructor, Node* context,
{
Comment("call using callConstruct builtin");
Callable callable = CodeFactory::InterpreterPushArgsAndConstruct(
- isolate(), CallableType::kAny);
+ isolate(), PushArgsConstructMode::kOther);
Node* code_target = HeapConstant(callable.code());
return_value.Bind(CallStub(callable.descriptor(), code_target, context,
arg_count, new_target, constructor,
@@ -833,6 +833,23 @@ Node* InterpreterAssembler::CallConstruct(Node* constructor, Node* context,
return return_value.value();
}
+Node* InterpreterAssembler::CallConstructWithSpread(Node* constructor,
+ Node* context,
+ Node* new_target,
+ Node* first_arg,
+ Node* arg_count) {
+ Variable return_value(this, MachineRepresentation::kTagged);
+ Comment("call using ConstructWithSpread");
+ Callable callable = CodeFactory::InterpreterPushArgsAndConstruct(
+ isolate(), PushArgsConstructMode::kWithFinalSpread);
+ Node* code_target = HeapConstant(callable.code());
+ return_value.Bind(CallStub(callable.descriptor(), code_target, context,
+ arg_count, new_target, constructor,
+ UndefinedConstant(), first_arg));
+
+ return return_value.value();
+}
+
Node* InterpreterAssembler::CallRuntimeN(Node* function_id, Node* context,
Node* first_arg, Node* arg_count,
int result_size) {
« no previous file with comments | « src/interpreter/interpreter-assembler.h ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698