| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 "platform/assert.h" | 5 #include "platform/assert.h" |
| 6 #include "vm/assembler.h" | 6 #include "vm/assembler.h" |
| 7 #include "vm/bigint_operations.h" | 7 #include "vm/bigint_operations.h" |
| 8 #include "vm/isolate.h" | 8 #include "vm/isolate.h" |
| 9 #include "vm/object.h" | 9 #include "vm/object.h" |
| 10 #include "vm/object_store.h" | 10 #include "vm/object_store.h" |
| (...skipping 1726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1737 | 1737 |
| 1738 EXPECT_EQ(0, Array::Handle(Array::Empty()).Length()); | 1738 EXPECT_EQ(0, Array::Handle(Array::Empty()).Length()); |
| 1739 } | 1739 } |
| 1740 | 1740 |
| 1741 | 1741 |
| 1742 TEST_CASE(ExternalByteArray) { | 1742 TEST_CASE(ExternalByteArray) { |
| 1743 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; | 1743 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; |
| 1744 intptr_t data_length = ARRAY_SIZE(data); | 1744 intptr_t data_length = ARRAY_SIZE(data); |
| 1745 | 1745 |
| 1746 const ExternalByteArray& array1 = | 1746 const ExternalByteArray& array1 = |
| 1747 ExternalByteArray::Handle(ExternalByteArray::New(data, data_length)); | 1747 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1748 data_length, |
| 1749 NULL, |
| 1750 NULL)); |
| 1748 EXPECT(!array1.IsNull()); | 1751 EXPECT(!array1.IsNull()); |
| 1749 EXPECT_EQ(data_length, array1.Length()); | 1752 EXPECT_EQ(data_length, array1.Length()); |
| 1750 EXPECT_EQ(-3, array1.At<int8_t>(0)); | 1753 EXPECT_EQ(-3, array1.At<int8_t>(0)); |
| 1751 EXPECT_EQ(253, array1.At<uint8_t>(0)); | 1754 EXPECT_EQ(253, array1.At<uint8_t>(0)); |
| 1752 EXPECT_EQ(-2, array1.At<int8_t>(1)); | 1755 EXPECT_EQ(-2, array1.At<int8_t>(1)); |
| 1753 EXPECT_EQ(254, array1.At<uint8_t>(1)); | 1756 EXPECT_EQ(254, array1.At<uint8_t>(1)); |
| 1754 EXPECT_EQ(-1, array1.At<int8_t>(2)); | 1757 EXPECT_EQ(-1, array1.At<int8_t>(2)); |
| 1755 EXPECT_EQ(255, array1.At<uint8_t>(2)); | 1758 EXPECT_EQ(255, array1.At<uint8_t>(2)); |
| 1756 EXPECT_EQ(0, array1.At<int8_t>(3)); | 1759 EXPECT_EQ(0, array1.At<int8_t>(3)); |
| 1757 EXPECT_EQ(0, array1.At<uint8_t>(3)); | 1760 EXPECT_EQ(0, array1.At<uint8_t>(3)); |
| 1758 EXPECT_EQ(1, array1.At<int8_t>(4)); | 1761 EXPECT_EQ(1, array1.At<int8_t>(4)); |
| 1759 EXPECT_EQ(1, array1.At<uint8_t>(4)); | 1762 EXPECT_EQ(1, array1.At<uint8_t>(4)); |
| 1760 EXPECT_EQ(2, array1.At<int8_t>(5)); | 1763 EXPECT_EQ(2, array1.At<int8_t>(5)); |
| 1761 EXPECT_EQ(2, array1.At<uint8_t>(5)); | 1764 EXPECT_EQ(2, array1.At<uint8_t>(5)); |
| 1762 | 1765 |
| 1763 const ExternalByteArray& array2 = | 1766 const ExternalByteArray& array2 = |
| 1764 ExternalByteArray::Handle(ExternalByteArray::New(data, data_length)); | 1767 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1768 data_length, |
| 1769 NULL, |
| 1770 NULL)); |
| 1765 EXPECT(!array1.IsNull()); | 1771 EXPECT(!array1.IsNull()); |
| 1766 EXPECT_EQ(data_length, array2.Length()); | 1772 EXPECT_EQ(data_length, array2.Length()); |
| 1767 for (intptr_t i = 0 ; i < array1.Length(); ++i) { | 1773 for (intptr_t i = 0 ; i < array1.Length(); ++i) { |
| 1768 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); | 1774 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); |
| 1769 } | 1775 } |
| 1770 | 1776 |
| 1771 array1.SetAt<uint8_t>(0, 123); | 1777 array1.SetAt<uint8_t>(0, 123); |
| 1772 array2.SetAt<int8_t>(2, -123); | 1778 array2.SetAt<int8_t>(2, -123); |
| 1773 for (intptr_t i = 0 ; i < array1.Length(); ++i) { | 1779 for (intptr_t i = 0 ; i < array1.Length(); ++i) { |
| 1774 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); | 1780 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); |
| 1775 } | 1781 } |
| 1776 } | 1782 } |
| 1777 | 1783 |
| 1778 | 1784 |
| 1779 TEST_CASE(ExternalByteArrayAlignedAccess) { | 1785 TEST_CASE(ExternalByteArrayAlignedAccess) { |
| 1780 intptr_t length = 16; | 1786 intptr_t length = 16; |
| 1781 uint8_t* data = new uint8_t[length]; | 1787 uint8_t* data = new uint8_t[length]; |
| 1782 | 1788 |
| 1783 const ExternalByteArray& array1 = | 1789 const ExternalByteArray& array1 = |
| 1784 ExternalByteArray::Handle(ExternalByteArray::New(data, length)); | 1790 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1791 length, |
| 1792 NULL, |
| 1793 NULL)); |
| 1785 EXPECT(!array1.IsNull()); | 1794 EXPECT(!array1.IsNull()); |
| 1786 EXPECT_EQ(length, array1.Length()); | 1795 EXPECT_EQ(length, array1.Length()); |
| 1787 | 1796 |
| 1788 const ExternalByteArray& array2 = | 1797 const ExternalByteArray& array2 = |
| 1789 ExternalByteArray::Handle(ExternalByteArray::New(data, length)); | 1798 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1799 length, |
| 1800 NULL, |
| 1801 NULL)); |
| 1790 EXPECT(!array2.IsNull()); | 1802 EXPECT(!array2.IsNull()); |
| 1791 EXPECT_EQ(length, array2.Length()); | 1803 EXPECT_EQ(length, array2.Length()); |
| 1792 | 1804 |
| 1793 memset(data, 0xAA, ARRAY_SIZE(data)); | 1805 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1794 array1.SetAt<float>(0, FLT_MIN); | 1806 array1.SetAt<float>(0, FLT_MIN); |
| 1795 array1.SetAt<float>(4, FLT_MAX); | 1807 array1.SetAt<float>(4, FLT_MAX); |
| 1796 EXPECT_EQ(FLT_MIN, array2.At<float>(0)); | 1808 EXPECT_EQ(FLT_MIN, array2.At<float>(0)); |
| 1797 EXPECT_EQ(FLT_MAX, array2.At<float>(4)); | 1809 EXPECT_EQ(FLT_MAX, array2.At<float>(4)); |
| 1798 | 1810 |
| 1799 memset(data, 0xAA, ARRAY_SIZE(data)); | 1811 memset(data, 0xAA, ARRAY_SIZE(data)); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1816 | 1828 |
| 1817 delete[] data; | 1829 delete[] data; |
| 1818 } | 1830 } |
| 1819 | 1831 |
| 1820 | 1832 |
| 1821 TEST_CASE(ExternalByteArrayUnlignedAccess) { | 1833 TEST_CASE(ExternalByteArrayUnlignedAccess) { |
| 1822 intptr_t length = 24; | 1834 intptr_t length = 24; |
| 1823 uint8_t* data = new uint8_t[length]; | 1835 uint8_t* data = new uint8_t[length]; |
| 1824 | 1836 |
| 1825 const ExternalByteArray& array1 = | 1837 const ExternalByteArray& array1 = |
| 1826 ExternalByteArray::Handle(ExternalByteArray::New(data, length)); | 1838 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1839 length, |
| 1840 NULL, |
| 1841 NULL)); |
| 1827 EXPECT(!array1.IsNull()); | 1842 EXPECT(!array1.IsNull()); |
| 1828 EXPECT_EQ(length, array1.Length()); | 1843 EXPECT_EQ(length, array1.Length()); |
| 1829 | 1844 |
| 1830 const ExternalByteArray& array2 = | 1845 const ExternalByteArray& array2 = |
| 1831 ExternalByteArray::Handle(ExternalByteArray::New(data, length)); | 1846 ExternalByteArray::Handle(ExternalByteArray::New(data, |
| 1847 length, |
| 1848 NULL, |
| 1849 NULL)); |
| 1832 EXPECT(!array2.IsNull()); | 1850 EXPECT(!array2.IsNull()); |
| 1833 EXPECT_EQ(length, array2.Length()); | 1851 EXPECT_EQ(length, array2.Length()); |
| 1834 | 1852 |
| 1835 int float_misalign = 3; | 1853 int float_misalign = 3; |
| 1836 memset(data, 0xAA, ARRAY_SIZE(data)); | 1854 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1837 array1.SetUnalignedAt<float>(float_misalign, FLT_MIN); | 1855 array1.SetUnalignedAt<float>(float_misalign, FLT_MIN); |
| 1838 array1.SetUnalignedAt<float>(4 + float_misalign, FLT_MAX); | 1856 array1.SetUnalignedAt<float>(4 + float_misalign, FLT_MAX); |
| 1839 EXPECT_EQ(FLT_MIN, array2.UnalignedAt<float>(float_misalign)); | 1857 EXPECT_EQ(FLT_MIN, array2.UnalignedAt<float>(float_misalign)); |
| 1840 EXPECT_EQ(FLT_MAX, array2.UnalignedAt<float>(4 + float_misalign)); | 1858 EXPECT_EQ(FLT_MAX, array2.UnalignedAt<float>(4 + float_misalign)); |
| 1841 | 1859 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1863 } | 1881 } |
| 1864 | 1882 |
| 1865 | 1883 |
| 1866 TEST_CASE(ExternalByteArraySkewedUnalignedBaseAccess) { | 1884 TEST_CASE(ExternalByteArraySkewedUnalignedBaseAccess) { |
| 1867 intptr_t length = 24; | 1885 intptr_t length = 24; |
| 1868 uint8_t* data = new uint8_t[length]; | 1886 uint8_t* data = new uint8_t[length]; |
| 1869 | 1887 |
| 1870 int skew = 2; | 1888 int skew = 2; |
| 1871 | 1889 |
| 1872 const ExternalByteArray& array1 = | 1890 const ExternalByteArray& array1 = |
| 1873 ExternalByteArray::Handle(ExternalByteArray::New(data + 3, length)); | 1891 ExternalByteArray::Handle(ExternalByteArray::New(data + 3, |
| 1892 length, |
| 1893 NULL, |
| 1894 NULL)); |
| 1874 EXPECT(!array1.IsNull()); | 1895 EXPECT(!array1.IsNull()); |
| 1875 EXPECT_EQ(length, array1.Length()); | 1896 EXPECT_EQ(length, array1.Length()); |
| 1876 | 1897 |
| 1877 const ExternalByteArray& array2 = | 1898 const ExternalByteArray& array2 = |
| 1878 ExternalByteArray::Handle(ExternalByteArray::New(data + 1, length)); | 1899 ExternalByteArray::Handle(ExternalByteArray::New(data + 1, |
| 1900 length, |
| 1901 NULL, |
| 1902 NULL)); |
| 1879 EXPECT(!array2.IsNull()); | 1903 EXPECT(!array2.IsNull()); |
| 1880 EXPECT_EQ(length, array2.Length()); | 1904 EXPECT_EQ(length, array2.Length()); |
| 1881 | 1905 |
| 1882 memset(data, 0xAA, ARRAY_SIZE(data)); | 1906 memset(data, 0xAA, ARRAY_SIZE(data)); |
| 1883 array1.SetUnalignedAt<float>(0, FLT_MIN); | 1907 array1.SetUnalignedAt<float>(0, FLT_MIN); |
| 1884 array1.SetUnalignedAt<float>(4, FLT_MAX); | 1908 array1.SetUnalignedAt<float>(4, FLT_MAX); |
| 1885 EXPECT_EQ(FLT_MIN, array2.UnalignedAt<float>(0 + skew)); | 1909 EXPECT_EQ(FLT_MIN, array2.UnalignedAt<float>(0 + skew)); |
| 1886 EXPECT_EQ(FLT_MAX, array2.UnalignedAt<float>(4 + skew)); | 1910 EXPECT_EQ(FLT_MAX, array2.UnalignedAt<float>(4 + skew)); |
| 1887 | 1911 |
| 1888 memset(data, 0xAA, ARRAY_SIZE(data)); | 1912 memset(data, 0xAA, ARRAY_SIZE(data)); |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2389 cls = iterator.GetNextClass(); | 2413 cls = iterator.GetNextClass(); |
| 2390 ASSERT((cls.raw() == ae66.raw()) || (cls.raw() == re44.raw())); | 2414 ASSERT((cls.raw() == ae66.raw()) || (cls.raw() == re44.raw())); |
| 2391 count++; | 2415 count++; |
| 2392 } | 2416 } |
| 2393 ASSERT(count == 2); | 2417 ASSERT(count == 2); |
| 2394 } | 2418 } |
| 2395 | 2419 |
| 2396 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 2420 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 2397 | 2421 |
| 2398 } // namespace dart | 2422 } // namespace dart |
| OLD | NEW |