| 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 |