Index: src/compiler/interpreter-assembler.cc |
diff --git a/src/compiler/interpreter-assembler.cc b/src/compiler/interpreter-assembler.cc |
index 0ba6176f6b8d4be91dc110e193e56e9ad46160c7..47c24a4ceec7050496f68d98eb4c37461500ceea 100644 |
--- a/src/compiler/interpreter-assembler.cc |
+++ b/src/compiler/interpreter-assembler.cc |
@@ -317,6 +317,26 @@ Node* InterpreterAssembler::LoadTypeFeedbackVector() { |
} |
+Node* InterpreterAssembler::CallConstruct(Node* original_constructor, |
+ Node* constructor, Node* first_arg, |
+ Node* arg_count) { |
+ Callable callable = CodeFactory::InterpreterPushArgsAndConstruct(isolate()); |
+ CallDescriptor* descriptor = Linkage::GetStubCallDescriptor( |
+ isolate(), zone(), callable.descriptor(), 0, CallDescriptor::kNoFlags); |
+ |
+ Node* code_target = HeapConstant(callable.code()); |
+ |
+ Node** args = zone()->NewArray<Node*>(5); |
+ args[0] = arg_count; |
+ args[1] = original_constructor; |
+ args[2] = constructor; |
+ args[3] = first_arg; |
+ args[4] = GetContext(); |
+ |
+ return CallN(descriptor, code_target, args); |
+} |
+ |
+ |
Node* InterpreterAssembler::CallN(CallDescriptor* descriptor, Node* code_target, |
Node** args) { |
Node* stack_pointer_before_call = nullptr; |