OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
6 #if defined(TARGET_ARCH_DBC) | 6 #if defined(TARGET_ARCH_DBC) |
7 | 7 |
8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
9 #include "vm/stack_frame.h" | 9 #include "vm/stack_frame.h" |
10 #include "vm/unit_test.h" | 10 #include "vm/unit_test.h" |
(...skipping 1750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1761 } | 1761 } |
1762 | 1762 |
1763 | 1763 |
1764 ASSEMBLER_TEST_RUN(CheckSmiFail, test) { | 1764 ASSEMBLER_TEST_RUN(CheckSmiFail, test) { |
1765 EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); | 1765 EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
1766 } | 1766 } |
1767 | 1767 |
1768 | 1768 |
1769 // - CheckClassId rA, D | 1769 // - CheckClassId rA, D |
1770 // | 1770 // |
1771 // If the object at FP[rA]'s class id matches hthe class id in PP[D], then | 1771 // If the object at FP[rA]'s class id matches the class id in PP[D], then |
1772 // skip the following instruction. | 1772 // skip the following instruction. |
1773 ASSEMBLER_TEST_GENERATE(CheckClassIdSmiPass, assembler) { | 1773 ASSEMBLER_TEST_GENERATE(CheckClassIdSmiPass, assembler) { |
1774 __ Frame(2); | 1774 __ Frame(2); |
1775 __ LoadConstant(0, Smi::Handle(Smi::New(42))); | 1775 __ LoadConstant(0, Smi::Handle(Smi::New(42))); |
1776 __ LoadClassId(1, 0); | 1776 __ LoadClassId(1, 0); |
1777 __ CheckClassId(1, kSmiCid); | 1777 __ CheckClassId(1, kSmiCid); |
1778 __ LoadConstant(0, Smi::Handle(Smi::New(-1))); | 1778 __ LoadConstant(0, Smi::Handle(Smi::New(-1))); |
1779 __ Return(0); | 1779 __ Return(0); |
1780 } | 1780 } |
1781 | 1781 |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1876 | 1876 |
1877 ASSEMBLER_TEST_RUN(IfNeNullNotNull, test) { | 1877 ASSEMBLER_TEST_RUN(IfNeNullNotNull, test) { |
1878 EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); | 1878 EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
1879 } | 1879 } |
1880 | 1880 |
1881 // - If<Cond> rA, rD | 1881 // - If<Cond> rA, rD |
1882 // | 1882 // |
1883 // Cond is Le, Lt, Ge, Gt, unsigned variants ULe, ULt, UGe, UGt, and | 1883 // Cond is Le, Lt, Ge, Gt, unsigned variants ULe, ULt, UGe, UGt, and |
1884 // unboxed double variants DEq, DNe, DLe, DLt, DGe, DGt. | 1884 // unboxed double variants DEq, DNe, DLe, DLt, DGe, DGt. |
1885 // Skips the next instruction unless FP[rA] <Cond> FP[rD]. Assumes that | 1885 // Skips the next instruction unless FP[rA] <Cond> FP[rD]. Assumes that |
1886 // FP[rA] and FP[rD] are Smis or unboxed doubles as inidcated by <Cond>. | 1886 // FP[rA] and FP[rD] are Smis or unboxed doubles as indicated by <Cond>. |
1887 ASSEMBLER_TEST_GENERATE(IfLeTrue, assembler) { | 1887 ASSEMBLER_TEST_GENERATE(IfLeTrue, assembler) { |
1888 __ Frame(3); | 1888 __ Frame(3); |
1889 __ LoadConstant(0, Smi::Handle(Smi::New(-1))); | 1889 __ LoadConstant(0, Smi::Handle(Smi::New(-1))); |
1890 __ LoadConstant(1, Smi::Handle(Smi::New(-5))); | 1890 __ LoadConstant(1, Smi::Handle(Smi::New(-5))); |
1891 __ LoadConstant(2, Smi::Handle(Smi::New(100))); | 1891 __ LoadConstant(2, Smi::Handle(Smi::New(100))); |
1892 __ IfLe(1, 2); | 1892 __ IfLe(1, 2); |
1893 __ LoadConstant(0, Smi::Handle(Smi::New(42))); | 1893 __ LoadConstant(0, Smi::Handle(Smi::New(42))); |
1894 __ Return(0); | 1894 __ Return(0); |
1895 } | 1895 } |
1896 | 1896 |
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2581 } | 2581 } |
2582 | 2582 |
2583 | 2583 |
2584 ASSEMBLER_TEST_RUN(CheckedUnboxFail, test) { | 2584 ASSEMBLER_TEST_RUN(CheckedUnboxFail, test) { |
2585 EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); | 2585 EXPECT_EQ(42, EXECUTE_TEST_CODE_INTPTR(test->code())); |
2586 } | 2586 } |
2587 | 2587 |
2588 | 2588 |
2589 // - DAdd, DSub, DMul, DDiv rA, rB, rC | 2589 // - DAdd, DSub, DMul, DDiv rA, rB, rC |
2590 // | 2590 // |
2591 // Arithmetic operaions on unboxed doubles. FP[rA] <- FP[rB] op FP[rC]. | 2591 // Arithmetic operations on unboxed doubles. FP[rA] <- FP[rB] op FP[rC]. |
2592 ASSEMBLER_TEST_GENERATE(DAdd, assembler) { | 2592 ASSEMBLER_TEST_GENERATE(DAdd, assembler) { |
2593 __ Frame(3); | 2593 __ Frame(3); |
2594 __ LoadConstant(0, Double::Handle(Double::New(41.0, Heap::kOld))); | 2594 __ LoadConstant(0, Double::Handle(Double::New(41.0, Heap::kOld))); |
2595 __ LoadConstant(1, Double::Handle(Double::New(1.0, Heap::kOld))); | 2595 __ LoadConstant(1, Double::Handle(Double::New(1.0, Heap::kOld))); |
2596 __ UnboxDouble(0, 0); | 2596 __ UnboxDouble(0, 0); |
2597 __ UnboxDouble(1, 1); | 2597 __ UnboxDouble(1, 1); |
2598 __ DAdd(2, 1, 0); | 2598 __ DAdd(2, 1, 0); |
2599 __ Return(2); | 2599 __ Return(2); |
2600 } | 2600 } |
2601 | 2601 |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2816 | 2816 |
2817 ASSEMBLER_TEST_RUN(DMax, test) { | 2817 ASSEMBLER_TEST_RUN(DMax, test) { |
2818 EXPECT_EQ(42.0, EXECUTE_TEST_CODE_DOUBLE(test->code())); | 2818 EXPECT_EQ(42.0, EXECUTE_TEST_CODE_DOUBLE(test->code())); |
2819 } | 2819 } |
2820 | 2820 |
2821 #endif // defined(ARCH_IS_64_BIT) | 2821 #endif // defined(ARCH_IS_64_BIT) |
2822 | 2822 |
2823 } // namespace dart | 2823 } // namespace dart |
2824 | 2824 |
2825 #endif // defined(TARGET_ARCH_DBC) | 2825 #endif // defined(TARGET_ARCH_DBC) |
OLD | NEW |