Index: runtime/vm/assembler_dbc_test.cc |
diff --git a/runtime/vm/assembler_dbc_test.cc b/runtime/vm/assembler_dbc_test.cc |
index 9e4e2cdab4300fe276a5d6504b3ff0b804be6fec..8222143f1ddf9ae4e052a01c908915053dd16683 100644 |
--- a/runtime/vm/assembler_dbc_test.cc |
+++ b/runtime/vm/assembler_dbc_test.cc |
@@ -1635,6 +1635,70 @@ ASSEMBLER_TEST_RUN(CheckClassIdFail, test) { |
EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
} |
+ |
+// - CheckNull rA, D |
+// |
+// If D == 1, skip the following instruction when FP[rA] is non-null. |
+// If D == 0, skip the following instruction when FP[rA] is null. |
+ASSEMBLER_TEST_GENERATE(CheckIsNotNullSucceed, assembler) { |
+ __ Frame(2); |
+ __ LoadConstant(0, Smi::Handle(Smi::New(-1))); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(42))); |
+ __ CheckNull(0, 1); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(-1))); |
+ __ Return(1); |
+} |
+ |
+ |
+ASSEMBLER_TEST_RUN(CheckIsNotNullSucceed, test) { |
+ EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
+} |
+ |
+ |
+ASSEMBLER_TEST_GENERATE(CheckIsNotNullFail, assembler) { |
+ __ Frame(2); |
+ __ LoadConstant(0, Object::null_object()); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(-1))); |
+ __ CheckNull(0, 1); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(42))); |
+ __ Return(1); |
+} |
+ |
+ |
+ASSEMBLER_TEST_RUN(CheckIsNotNullFail, test) { |
+ EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
+} |
+ |
+ |
+ASSEMBLER_TEST_GENERATE(CheckIsNullSucceed, assembler) { |
+ __ Frame(2); |
+ __ LoadConstant(0, Object::null_object()); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(42))); |
+ __ CheckNull(0, 0); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(-1))); |
+ __ Return(1); |
+} |
+ |
+ |
+ASSEMBLER_TEST_RUN(CheckIsNullSucceed, test) { |
+ EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
+} |
+ |
+ |
+ASSEMBLER_TEST_GENERATE(CheckIsNullFail, assembler) { |
+ __ Frame(2); |
+ __ LoadConstant(0, Smi::Handle(Smi::New(-1))); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(-1))); |
+ __ CheckNull(0, 0); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(42))); |
+ __ Return(1); |
+} |
+ |
+ |
+ASSEMBLER_TEST_RUN(CheckIsNullFail, test) { |
+ EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
+} |
+ |
} // namespace dart |
#endif // defined(TARGET_ARCH_DBC) |