| Index: test/unittests/compiler/js-intrinsic-lowering-unittest.cc
|
| diff --git a/test/unittests/compiler/js-intrinsic-lowering-unittest.cc b/test/unittests/compiler/js-intrinsic-lowering-unittest.cc
|
| index ae9c89a82c83ee95ef95b4dde57fd4125c458e75..70421f3ec4bead53f3a7822f5dd831ab5b10f154 100644
|
| --- a/test/unittests/compiler/js-intrinsic-lowering-unittest.cc
|
| +++ b/test/unittests/compiler/js-intrinsic-lowering-unittest.cc
|
| @@ -176,6 +176,50 @@
|
| EXPECT_THAT(r.replacement(), IsObjectIsReceiver(input));
|
| }
|
|
|
| +
|
| +// -----------------------------------------------------------------------------
|
| +// %_ValueOf
|
| +
|
| +
|
| +TEST_F(JSIntrinsicLoweringTest, InlineValueOf) {
|
| + Node* const input = Parameter(0);
|
| + Node* const context = Parameter(1);
|
| + Node* const effect = graph()->start();
|
| + Node* const control = graph()->start();
|
| + Reduction const r = Reduce(
|
| + graph()->NewNode(javascript()->CallRuntime(Runtime::kInlineValueOf, 1),
|
| + input, context, effect, control));
|
| + ASSERT_TRUE(r.Changed());
|
| +
|
| + Node* phi = r.replacement();
|
| + Capture<Node*> branch0, if_false0, branch1, if_true1;
|
| + EXPECT_THAT(
|
| + phi,
|
| + IsPhi(
|
| + MachineRepresentation::kTagged, input,
|
| + IsPhi(MachineRepresentation::kTagged,
|
| + IsLoadField(AccessBuilder::ForValue(), input, effect,
|
| + CaptureEq(&if_true1)),
|
| + input,
|
| + IsMerge(
|
| + AllOf(CaptureEq(&if_true1), IsIfTrue(CaptureEq(&branch1))),
|
| + IsIfFalse(AllOf(
|
| + CaptureEq(&branch1),
|
| + IsBranch(
|
| + IsWord32Equal(
|
| + IsLoadField(
|
| + AccessBuilder::ForMapInstanceType(),
|
| + IsLoadField(AccessBuilder::ForMap(), input,
|
| + effect, CaptureEq(&if_false0)),
|
| + effect, _),
|
| + IsInt32Constant(JS_VALUE_TYPE)),
|
| + CaptureEq(&if_false0)))))),
|
| + IsMerge(
|
| + IsIfTrue(AllOf(CaptureEq(&branch0),
|
| + IsBranch(IsObjectIsSmi(input), control))),
|
| + AllOf(CaptureEq(&if_false0), IsIfFalse(CaptureEq(&branch0))))));
|
| +}
|
| +
|
| } // namespace compiler
|
| } // namespace internal
|
| } // namespace v8
|
|
|