diff options
Diffstat (limited to 'deps/v8/test/unittests/compiler/js-create-lowering-unittest.cc')
-rw-r--r-- | deps/v8/test/unittests/compiler/js-create-lowering-unittest.cc | 86 |
1 files changed, 33 insertions, 53 deletions
diff --git a/deps/v8/test/unittests/compiler/js-create-lowering-unittest.cc b/deps/v8/test/unittests/compiler/js-create-lowering-unittest.cc index 837c5742d9..9c001e9eb2 100644 --- a/deps/v8/test/unittests/compiler/js-create-lowering-unittest.cc +++ b/deps/v8/test/unittests/compiler/js-create-lowering-unittest.cc @@ -4,6 +4,7 @@ #include "src/compiler/js-create-lowering.h" #include "src/code-factory.h" +#include "src/compilation-dependencies.h" #include "src/compiler/access-builder.h" #include "src/compiler/js-graph.h" #include "src/compiler/js-operator.h" @@ -80,95 +81,74 @@ TEST_F(JSCreateLoweringTest, JSCreate) { // ----------------------------------------------------------------------------- // JSCreateArguments -TEST_F(JSCreateLoweringTest, JSCreateArgumentsViaStub) { +TEST_F(JSCreateLoweringTest, JSCreateArgumentsInlinedMapped) { Node* const closure = Parameter(Type::Any()); Node* const context = UndefinedConstant(); Node* const effect = graph()->start(); - Node* const control = graph()->start(); Handle<SharedFunctionInfo> shared(isolate()->object_function()->shared()); - Node* const frame_state = FrameState(shared, graph()->start()); + Node* const frame_state_outer = FrameState(shared, graph()->start()); + Node* const frame_state_inner = FrameState(shared, frame_state_outer); Reduction r = Reduce(graph()->NewNode( - javascript()->CreateArguments(CreateArgumentsType::kUnmappedArguments), - closure, context, frame_state, effect, control)); + javascript()->CreateArguments(CreateArgumentsType::kMappedArguments), + closure, context, frame_state_inner, effect)); ASSERT_TRUE(r.Changed()); EXPECT_THAT( r.replacement(), - IsCall(_, IsHeapConstant( - CodeFactory::FastNewStrictArguments(isolate()).code()), - closure, context, frame_state, effect, control)); + IsFinishRegion( + IsAllocate(IsNumberConstant(JSSloppyArgumentsObject::kSize), _, _), + _)); } -TEST_F(JSCreateLoweringTest, JSCreateArgumentsRestParameterViaStub) { +TEST_F(JSCreateLoweringTest, JSCreateArgumentsInlinedUnmapped) { Node* const closure = Parameter(Type::Any()); Node* const context = UndefinedConstant(); Node* const effect = graph()->start(); - Node* const control = graph()->start(); Handle<SharedFunctionInfo> shared(isolate()->object_function()->shared()); - Node* const frame_state = FrameState(shared, graph()->start()); + Node* const frame_state_outer = FrameState(shared, graph()->start()); + Node* const frame_state_inner = FrameState(shared, frame_state_outer); Reduction r = Reduce(graph()->NewNode( - javascript()->CreateArguments(CreateArgumentsType::kRestParameter), - closure, context, frame_state, effect, control)); + javascript()->CreateArguments(CreateArgumentsType::kUnmappedArguments), + closure, context, frame_state_inner, effect)); ASSERT_TRUE(r.Changed()); EXPECT_THAT( r.replacement(), - IsCall(_, IsHeapConstant( - CodeFactory::FastNewRestParameter(isolate()).code()), - closure, context, frame_state, effect, control)); + IsFinishRegion( + IsAllocate(IsNumberConstant(JSStrictArgumentsObject::kSize), _, _), + _)); } -TEST_F(JSCreateLoweringTest, JSCreateArgumentsInlinedMapped) { +TEST_F(JSCreateLoweringTest, JSCreateArgumentsInlinedRestArray) { Node* const closure = Parameter(Type::Any()); Node* const context = UndefinedConstant(); Node* const effect = graph()->start(); - Node* const control = graph()->start(); Handle<SharedFunctionInfo> shared(isolate()->object_function()->shared()); Node* const frame_state_outer = FrameState(shared, graph()->start()); Node* const frame_state_inner = FrameState(shared, frame_state_outer); Reduction r = Reduce(graph()->NewNode( - javascript()->CreateArguments(CreateArgumentsType::kMappedArguments), - closure, context, frame_state_inner, effect, control)); + javascript()->CreateArguments(CreateArgumentsType::kRestParameter), + closure, context, frame_state_inner, effect)); ASSERT_TRUE(r.Changed()); - EXPECT_THAT(r.replacement(), - IsFinishRegion( - IsAllocate(IsNumberConstant(JSSloppyArgumentsObject::kSize), - _, control), - _)); + EXPECT_THAT( + r.replacement(), + IsFinishRegion(IsAllocate(IsNumberConstant(JSArray::kSize), _, _), _)); } -TEST_F(JSCreateLoweringTest, JSCreateArgumentsInlinedUnmapped) { - Node* const closure = Parameter(Type::Any()); - Node* const context = UndefinedConstant(); - Node* const effect = graph()->start(); - Node* const control = graph()->start(); - Handle<SharedFunctionInfo> shared(isolate()->object_function()->shared()); - Node* const frame_state_outer = FrameState(shared, graph()->start()); - Node* const frame_state_inner = FrameState(shared, frame_state_outer); - Reduction r = Reduce(graph()->NewNode( - javascript()->CreateArguments(CreateArgumentsType::kUnmappedArguments), - closure, context, frame_state_inner, effect, control)); - ASSERT_TRUE(r.Changed()); - EXPECT_THAT(r.replacement(), - IsFinishRegion( - IsAllocate(IsNumberConstant(JSStrictArgumentsObject::kSize), - _, control), - _)); -} +// ----------------------------------------------------------------------------- +// JSCreateClosure -TEST_F(JSCreateLoweringTest, JSCreateArgumentsInlinedRestArray) { - Node* const closure = Parameter(Type::Any()); +TEST_F(JSCreateLoweringTest, JSCreateClosureViaInlinedAllocation) { Node* const context = UndefinedConstant(); Node* const effect = graph()->start(); Node* const control = graph()->start(); - Handle<SharedFunctionInfo> shared(isolate()->object_function()->shared()); - Node* const frame_state_outer = FrameState(shared, graph()->start()); - Node* const frame_state_inner = FrameState(shared, frame_state_outer); - Reduction r = Reduce(graph()->NewNode( - javascript()->CreateArguments(CreateArgumentsType::kRestParameter), - closure, context, frame_state_inner, effect, control)); + Handle<SharedFunctionInfo> shared(isolate()->number_function()->shared()); + Reduction r = + Reduce(graph()->NewNode(javascript()->CreateClosure(shared, NOT_TENURED), + context, effect, control)); ASSERT_TRUE(r.Changed()); EXPECT_THAT(r.replacement(), - IsFinishRegion( - IsAllocate(IsNumberConstant(JSArray::kSize), _, control), _)); + IsFinishRegion(IsAllocate(IsNumberConstant(JSFunction::kSize), + IsBeginRegion(_), control), + _)); } // ----------------------------------------------------------------------------- |