| Index: test/unittests/compiler/bytecode-graph-builder-unittest.cc | 
| diff --git a/test/unittests/compiler/bytecode-graph-builder-unittest.cc b/test/unittests/compiler/bytecode-graph-builder-unittest.cc | 
| index 3135db022939b822b0331cfbac78b2b22942cc5c..4f2859fb392c7335c5b0c2a9d8f9d4521aab5d69 100644 | 
| --- a/test/unittests/compiler/bytecode-graph-builder-unittest.cc | 
| +++ b/test/unittests/compiler/bytecode-graph-builder-unittest.cc | 
| @@ -40,6 +40,12 @@ class BytecodeGraphBuilderTest : public TestWithIsolateAndZone { | 
| public: | 
| BytecodeGraphBuilderTest() {} | 
|  | 
| +  std::pair<Graph*, Handle<SharedFunctionInfo>> GetCompletedGraphAndSharedInfo( | 
| +      Handle<BytecodeArray> bytecode_array, | 
| +      MaybeHandle<TypeFeedbackVector> feedback_vector = | 
| +          MaybeHandle<TypeFeedbackVector>(), | 
| +      LanguageMode language_mode = LanguageMode::SLOPPY); | 
| + | 
| Graph* GetCompletedGraph(Handle<BytecodeArray> bytecode_array, | 
| MaybeHandle<TypeFeedbackVector> feedback_vector = | 
| MaybeHandle<TypeFeedbackVector>(), | 
| @@ -63,7 +69,8 @@ class BytecodeGraphBuilderTest : public TestWithIsolateAndZone { | 
| }; | 
|  | 
|  | 
| -Graph* BytecodeGraphBuilderTest::GetCompletedGraph( | 
| +std::pair<Graph*, Handle<SharedFunctionInfo>> | 
| +BytecodeGraphBuilderTest::GetCompletedGraphAndSharedInfo( | 
| Handle<BytecodeArray> bytecode_array, | 
| MaybeHandle<TypeFeedbackVector> feedback_vector, | 
| LanguageMode language_mode) { | 
| @@ -91,7 +98,17 @@ Graph* BytecodeGraphBuilderTest::GetCompletedGraph( | 
|  | 
| BytecodeGraphBuilder graph_builder(zone(), &info, jsgraph); | 
| graph_builder.CreateGraph(); | 
| -  return graph; | 
| +  return std::make_pair(graph_builder.graph(), shared_info); | 
| +} | 
| + | 
| + | 
| +Graph* BytecodeGraphBuilderTest::GetCompletedGraph( | 
| +    Handle<BytecodeArray> bytecode_array, | 
| +    MaybeHandle<TypeFeedbackVector> feedback_vector, | 
| +    LanguageMode language_mode) { | 
| +  return GetCompletedGraphAndSharedInfo(bytecode_array, feedback_vector, | 
| +                                        language_mode) | 
| +      .first; | 
| } | 
|  | 
|  | 
| @@ -807,6 +824,39 @@ TEST_F(BytecodeGraphBuilderTest, New) { | 
| EXPECT_THAT(ret, IsReturn(call_construct, call_construct, IsIfSuccess(_))); | 
| } | 
|  | 
| + | 
| +TEST_F(BytecodeGraphBuilderTest, CreateClosure) { | 
| +  PretenureFlag kPretenureFlags[] = {NOT_TENURED, TENURED}; | 
| +  TRACED_FOREACH(PretenureFlag, pretenure_flag, kPretenureFlags) { | 
| +    interpreter::BytecodeArrayBuilder inner_builder(isolate(), zone()); | 
| +    inner_builder.set_locals_count(0); | 
| +    inner_builder.set_context_count(0); | 
| +    inner_builder.set_parameter_count(3); | 
| +    inner_builder.LoadAccumulatorWithRegister(inner_builder.Parameter(2)) | 
| +        .BinaryOperation(Token::Value::ADD, inner_builder.Parameter(1), | 
| +                         Strength::WEAK) | 
| +        .Return(); | 
| + | 
| +    std::pair<Graph*, Handle<SharedFunctionInfo>> inner_graph_and_shared_info = | 
| +        GetCompletedGraphAndSharedInfo(inner_builder.ToBytecodeArray()); | 
| +    Handle<SharedFunctionInfo> shared_info = inner_graph_and_shared_info.second; | 
| + | 
| +    interpreter::BytecodeArrayBuilder builder(isolate(), zone()); | 
| +    builder.set_locals_count(4); | 
| +    builder.set_context_count(0); | 
| +    builder.set_parameter_count(3); | 
| +    builder.CreateClosure(shared_info, pretenure_flag).Return(); | 
| + | 
| +    Graph* graph = GetCompletedGraph(builder.ToBytecodeArray()); | 
| +    Node* start = graph->start(); | 
| +    Node* ret = graph->end()->InputAt(0); | 
| + | 
| +    Matcher<Node*> create_closure = | 
| +        IsCreateClosure(shared_info, pretenure_flag, start, start); | 
| +    EXPECT_THAT(ret, IsReturn(create_closure, create_closure, start)); | 
| +  } | 
| +} | 
| + | 
| }  // namespace compiler | 
| }  // namespace internal | 
| }  // namespace v8 | 
|  |