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 d8380036d4ae5b13b77962c8f85877915205b14b..4c99654a6878d4ed56e84495da7dd026ffe9d8e8 100644 |
--- a/test/unittests/compiler/js-intrinsic-lowering-unittest.cc |
+++ b/test/unittests/compiler/js-intrinsic-lowering-unittest.cc |
@@ -174,6 +174,37 @@ TEST_F(JSIntrinsicLoweringTest, InlineIsArray) { |
// ----------------------------------------------------------------------------- |
+// %_IsTypedArray |
+ |
+ |
+TEST_F(JSIntrinsicLoweringTest, InlineIsTypedArray) { |
+ 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::kInlineIsTypedArray, 1), input, |
+ context, effect, control)); |
+ ASSERT_TRUE(r.Changed()); |
+ |
+ Node* phi = r.replacement(); |
+ Capture<Node*> branch, if_false; |
+ EXPECT_THAT( |
+ phi, |
+ IsPhi( |
+ static_cast<MachineType>(kTypeBool | kRepTagged), IsFalseConstant(), |
+ IsWord32Equal(IsLoadField(AccessBuilder::ForMapInstanceType(), |
+ IsLoadField(AccessBuilder::ForMap(), input, |
+ effect, CaptureEq(&if_false)), |
+ effect, _), |
+ IsInt32Constant(JS_TYPED_ARRAY_TYPE)), |
+ IsMerge(IsIfTrue(AllOf(CaptureEq(&branch), |
+ IsBranch(IsObjectIsSmi(input), control))), |
+ AllOf(CaptureEq(&if_false), IsIfFalse(CaptureEq(&branch)))))); |
+} |
+ |
+ |
+// ----------------------------------------------------------------------------- |
// %_IsFunction |