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..d5662aee8ad1968964ac1f8f27f32d9e2ca97512 100644 |
--- a/runtime/vm/assembler_dbc_test.cc |
+++ b/runtime/vm/assembler_dbc_test.cc |
@@ -121,11 +121,11 @@ ASSEMBLER_TEST_RUN(Simple, test) { |
ASSEMBLER_TEST_GENERATE(Nop, assembler) { |
__ PushConstant(Smi::Handle(Smi::New(42))); |
- __ Nop(); |
- __ Nop(); |
- __ Nop(); |
- __ Nop(); |
- __ Nop(); |
+ __ Nop(0); |
+ __ Nop(0); |
+ __ Nop(0); |
+ __ Nop(0); |
+ __ Nop(0); |
__ ReturnTOS(); |
} |
@@ -1635,6 +1635,70 @@ ASSEMBLER_TEST_RUN(CheckClassIdFail, test) { |
EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
} |
+ |
+// - If<Cond>Null rA |
+// |
+// Cond is Eq or Ne. Skips the next instruction unless the given condition |
+// holds. |
+ASSEMBLER_TEST_GENERATE(IfEqNullNotNull, assembler) { |
+ __ Frame(2); |
+ __ LoadConstant(0, Smi::Handle(Smi::New(-1))); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(42))); |
+ __ IfEqNull(0); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(-1))); |
+ __ Return(1); |
+} |
+ |
+ |
+ASSEMBLER_TEST_RUN(IfEqNullNotNull, test) { |
+ EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
+} |
+ |
+ |
+ASSEMBLER_TEST_GENERATE(IfEqNullIsNull, assembler) { |
+ __ Frame(2); |
+ __ LoadConstant(0, Object::null_object()); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(-1))); |
+ __ IfEqNull(0); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(42))); |
+ __ Return(1); |
+} |
+ |
+ |
+ASSEMBLER_TEST_RUN(IfEqNullIsNull, test) { |
+ EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
+} |
+ |
+ |
+ASSEMBLER_TEST_GENERATE(IfNeNullIsNull, assembler) { |
+ __ Frame(2); |
+ __ LoadConstant(0, Object::null_object()); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(42))); |
+ __ IfNeNull(0); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(-1))); |
+ __ Return(1); |
+} |
+ |
+ |
+ASSEMBLER_TEST_RUN(IfNeNullIsNull, test) { |
+ EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
+} |
+ |
+ |
+ASSEMBLER_TEST_GENERATE(IfNeNullNotNull, assembler) { |
+ __ Frame(2); |
+ __ LoadConstant(0, Smi::Handle(Smi::New(-1))); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(-1))); |
+ __ IfNeNull(0); |
+ __ LoadConstant(1, Smi::Handle(Smi::New(42))); |
+ __ Return(1); |
+} |
+ |
+ |
+ASSEMBLER_TEST_RUN(IfNeNullNotNull, test) { |
+ EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
+} |
+ |
} // namespace dart |
#endif // defined(TARGET_ARCH_DBC) |