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) { |