Index: src/compiler/js-inlining.cc |
diff --git a/src/compiler/js-inlining.cc b/src/compiler/js-inlining.cc |
index 3ac5c25036139a1be7e1d1eb928afa699235693e..ebd52f6d5f945272f9ae30f55df8e896cb88f607 100644 |
--- a/src/compiler/js-inlining.cc |
+++ b/src/compiler/js-inlining.cc |
@@ -481,6 +481,18 @@ Reduction JSInliner::ReduceJSCall(Node* node) { |
return NoChange(); |
} |
+ // TODO(706642): Don't inline derived class constructors for now, as the |
+ // inlining logic doesn't deal properly with derived class constructors |
+ // that return a primitive, i.e. it's not in sync with what the Parser |
+ // and the JSConstructSub does. |
+ if (node->opcode() == IrOpcode::kJSConstruct && |
+ IsDerivedConstructor(shared_info->kind())) { |
+ TRACE("Not inlining %s into %s because constructor is derived.\n", |
+ shared_info->DebugName()->ToCString().get(), |
+ info_->shared_info()->DebugName()->ToCString().get()); |
+ return NoChange(); |
+ } |
+ |
// Class constructors are callable, but [[Call]] will raise an exception. |
// See ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList ). |
if (node->opcode() == IrOpcode::kJSCall && |