| 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/class_finalizer.h" | 8 #include "vm/class_finalizer.h" |
| 9 #include "vm/isolate.h" | 9 #include "vm/isolate.h" |
| 10 #include "vm/object.h" | 10 #include "vm/object.h" |
| (...skipping 1743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1754 for (intptr_t i = 0; i < 10; i++) { | 1754 for (intptr_t i = 0; i < 10; i++) { |
| 1755 expected_value = Smi::New(i * 10); | 1755 expected_value = Smi::New(i * 10); |
| 1756 value ^= array.At(i); | 1756 value ^= array.At(i); |
| 1757 EXPECT(value.Equals(expected_value)); | 1757 EXPECT(value.Equals(expected_value)); |
| 1758 } | 1758 } |
| 1759 | 1759 |
| 1760 // Test the MakeArray functionality to make sure the resulting array | 1760 // Test the MakeArray functionality to make sure the resulting array |
| 1761 // object is properly setup. | 1761 // object is properly setup. |
| 1762 // 1. Should produce an array of length 2 and a left over int8 array. | 1762 // 1. Should produce an array of length 2 and a left over int8 array. |
| 1763 Array& new_array = Array::Handle(); | 1763 Array& new_array = Array::Handle(); |
| 1764 Int8Array& left_over_array = Int8Array::Handle(); | 1764 TypedData& left_over_array = TypedData::Handle(); |
| 1765 Object& obj = Object::Handle(); | 1765 Object& obj = Object::Handle(); |
| 1766 uword addr = 0; | 1766 uword addr = 0; |
| 1767 intptr_t used_size = 0; | 1767 intptr_t used_size = 0; |
| 1768 | 1768 |
| 1769 array = GrowableObjectArray::New(kArrayLen + 1); | 1769 array = GrowableObjectArray::New(kArrayLen + 1); |
| 1770 EXPECT_EQ(kArrayLen + 1, array.Capacity()); | 1770 EXPECT_EQ(kArrayLen + 1, array.Capacity()); |
| 1771 EXPECT_EQ(0, array.Length()); | 1771 EXPECT_EQ(0, array.Length()); |
| 1772 for (intptr_t i = 0; i < 2; i++) { | 1772 for (intptr_t i = 0; i < 2; i++) { |
| 1773 value = Smi::New(i); | 1773 value = Smi::New(i); |
| 1774 array.Add(value); | 1774 array.Add(value); |
| 1775 } | 1775 } |
| 1776 used_size = Array::InstanceSize(array.Length()); | 1776 used_size = Array::InstanceSize(array.Length()); |
| 1777 new_array = Array::MakeArray(array); | 1777 new_array = Array::MakeArray(array); |
| 1778 addr = RawObject::ToAddr(new_array.raw()); | 1778 addr = RawObject::ToAddr(new_array.raw()); |
| 1779 obj = RawObject::FromAddr(addr); | 1779 obj = RawObject::FromAddr(addr); |
| 1780 EXPECT(obj.IsArray()); | 1780 EXPECT(obj.IsArray()); |
| 1781 new_array ^= obj.raw(); | 1781 new_array ^= obj.raw(); |
| 1782 EXPECT_EQ(2, new_array.Length()); | 1782 EXPECT_EQ(2, new_array.Length()); |
| 1783 addr += used_size; | 1783 addr += used_size; |
| 1784 obj = RawObject::FromAddr(addr); | 1784 obj = RawObject::FromAddr(addr); |
| 1785 EXPECT(obj.IsInt8Array()); | 1785 EXPECT(obj.IsTypedData()); |
| 1786 left_over_array ^= obj.raw(); | 1786 left_over_array ^= obj.raw(); |
| 1787 EXPECT_EQ((2 * kWordSize), left_over_array.Length()); | 1787 EXPECT_EQ((2 * kWordSize), left_over_array.Length()); |
| 1788 | 1788 |
| 1789 // 2. Should produce an array of length 3 and a left over int8 array. | 1789 // 2. Should produce an array of length 3 and a left over int8 array. |
| 1790 array = GrowableObjectArray::New(kArrayLen); | 1790 array = GrowableObjectArray::New(kArrayLen); |
| 1791 EXPECT_EQ(kArrayLen, array.Capacity()); | 1791 EXPECT_EQ(kArrayLen, array.Capacity()); |
| 1792 EXPECT_EQ(0, array.Length()); | 1792 EXPECT_EQ(0, array.Length()); |
| 1793 for (intptr_t i = 0; i < 3; i++) { | 1793 for (intptr_t i = 0; i < 3; i++) { |
| 1794 value = Smi::New(i); | 1794 value = Smi::New(i); |
| 1795 array.Add(value); | 1795 array.Add(value); |
| 1796 } | 1796 } |
| 1797 used_size = Array::InstanceSize(array.Length()); | 1797 used_size = Array::InstanceSize(array.Length()); |
| 1798 new_array = Array::MakeArray(array); | 1798 new_array = Array::MakeArray(array); |
| 1799 addr = RawObject::ToAddr(new_array.raw()); | 1799 addr = RawObject::ToAddr(new_array.raw()); |
| 1800 obj = RawObject::FromAddr(addr); | 1800 obj = RawObject::FromAddr(addr); |
| 1801 EXPECT(obj.IsArray()); | 1801 EXPECT(obj.IsArray()); |
| 1802 new_array ^= obj.raw(); | 1802 new_array ^= obj.raw(); |
| 1803 EXPECT_EQ(3, new_array.Length()); | 1803 EXPECT_EQ(3, new_array.Length()); |
| 1804 addr += used_size; | 1804 addr += used_size; |
| 1805 obj = RawObject::FromAddr(addr); | 1805 obj = RawObject::FromAddr(addr); |
| 1806 EXPECT(obj.IsInt8Array()); | 1806 EXPECT(obj.IsTypedData()); |
| 1807 left_over_array ^= obj.raw(); | 1807 left_over_array ^= obj.raw(); |
| 1808 EXPECT_EQ(0, left_over_array.Length()); | 1808 EXPECT_EQ(0, left_over_array.Length()); |
| 1809 | 1809 |
| 1810 // 3. Should produce an array of length 1 and a left over int8 array. | 1810 // 3. Should produce an array of length 1 and a left over int8 array. |
| 1811 array = GrowableObjectArray::New(kArrayLen + 3); | 1811 array = GrowableObjectArray::New(kArrayLen + 3); |
| 1812 EXPECT_EQ((kArrayLen + 3), array.Capacity()); | 1812 EXPECT_EQ((kArrayLen + 3), array.Capacity()); |
| 1813 EXPECT_EQ(0, array.Length()); | 1813 EXPECT_EQ(0, array.Length()); |
| 1814 for (intptr_t i = 0; i < 1; i++) { | 1814 for (intptr_t i = 0; i < 1; i++) { |
| 1815 value = Smi::New(i); | 1815 value = Smi::New(i); |
| 1816 array.Add(value); | 1816 array.Add(value); |
| 1817 } | 1817 } |
| 1818 used_size = Array::InstanceSize(array.Length()); | 1818 used_size = Array::InstanceSize(array.Length()); |
| 1819 new_array = Array::MakeArray(array); | 1819 new_array = Array::MakeArray(array); |
| 1820 addr = RawObject::ToAddr(new_array.raw()); | 1820 addr = RawObject::ToAddr(new_array.raw()); |
| 1821 obj = RawObject::FromAddr(addr); | 1821 obj = RawObject::FromAddr(addr); |
| 1822 EXPECT(obj.IsArray()); | 1822 EXPECT(obj.IsArray()); |
| 1823 new_array ^= obj.raw(); | 1823 new_array ^= obj.raw(); |
| 1824 EXPECT_EQ(1, new_array.Length()); | 1824 EXPECT_EQ(1, new_array.Length()); |
| 1825 addr += used_size; | 1825 addr += used_size; |
| 1826 obj = RawObject::FromAddr(addr); | 1826 obj = RawObject::FromAddr(addr); |
| 1827 EXPECT(obj.IsInt8Array()); | 1827 EXPECT(obj.IsTypedData()); |
| 1828 left_over_array ^= obj.raw(); | 1828 left_over_array ^= obj.raw(); |
| 1829 EXPECT_EQ((6 * kWordSize), left_over_array.Length()); | 1829 EXPECT_EQ((6 * kWordSize), left_over_array.Length()); |
| 1830 } | 1830 } |
| 1831 | 1831 |
| 1832 | 1832 |
| 1833 TEST_CASE(InternalByteArray) { | 1833 TEST_CASE(InternalTypedData) { |
| 1834 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; | 1834 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; |
| 1835 intptr_t data_length = ARRAY_SIZE(data); | 1835 intptr_t data_length = ARRAY_SIZE(data); |
| 1836 | 1836 |
| 1837 const Int8Array& int8_array = | 1837 const TypedData& int8_array = |
| 1838 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), | 1838 TypedData::Handle(TypedData::New(kTypedDataInt8ArrayCid, data_length)); |
| 1839 data_length)); | |
| 1840 EXPECT(!int8_array.IsNull()); | 1839 EXPECT(!int8_array.IsNull()); |
| 1841 EXPECT_EQ(data_length, int8_array.Length()); | 1840 EXPECT_EQ(data_length, int8_array.Length()); |
| 1841 for (intptr_t i = 0; i < data_length; ++i) { |
| 1842 int8_array.SetInt8(i, data[i]); |
| 1843 } |
| 1842 | 1844 |
| 1843 EXPECT_EQ(-3, int8_array.At(0)); | 1845 EXPECT_EQ(-3, int8_array.GetInt8(0)); |
| 1844 uint8_t at_0; | 1846 EXPECT_EQ(253, int8_array.GetUint8(0)); |
| 1845 ByteArray::Copy(&at_0, int8_array, 0, sizeof(at_0)); | |
| 1846 EXPECT_EQ(253, at_0); | |
| 1847 | 1847 |
| 1848 EXPECT_EQ(-2, int8_array.At(1)); | 1848 EXPECT_EQ(-2, int8_array.GetInt8(1)); |
| 1849 uint8_t at_1; | 1849 EXPECT_EQ(254, int8_array.GetUint8(1)); |
| 1850 ByteArray::Copy(&at_1, int8_array, 1, sizeof(at_1)); | |
| 1851 EXPECT_EQ(254, at_1); | |
| 1852 | 1850 |
| 1853 EXPECT_EQ(-1, int8_array.At(2)); | 1851 EXPECT_EQ(-1, int8_array.GetInt8(2)); |
| 1854 uint8_t at_2; | 1852 EXPECT_EQ(255, int8_array.GetUint8(2)); |
| 1855 ByteArray::Copy(&at_2, int8_array, 2, sizeof(at_2)); | |
| 1856 EXPECT_EQ(255, at_2); | |
| 1857 | 1853 |
| 1858 EXPECT_EQ(0, int8_array.At(3)); | 1854 EXPECT_EQ(0, int8_array.GetInt8(3)); |
| 1859 uint8_t at_3; | 1855 EXPECT_EQ(0, int8_array.GetUint8(3)); |
| 1860 ByteArray::Copy(&at_3, int8_array, 3, sizeof(at_3)); | |
| 1861 EXPECT_EQ(0, at_3); | |
| 1862 | 1856 |
| 1863 EXPECT_EQ(1, int8_array.At(4)); | 1857 EXPECT_EQ(1, int8_array.GetInt8(4)); |
| 1864 uint8_t at_4; | 1858 EXPECT_EQ(1, int8_array.GetUint8(4)); |
| 1865 ByteArray::Copy(&at_4, int8_array, 4, sizeof(at_4)); | |
| 1866 EXPECT_EQ(1, at_4); | |
| 1867 | 1859 |
| 1868 EXPECT_EQ(2, int8_array.At(5)); | 1860 EXPECT_EQ(2, int8_array.GetInt8(5)); |
| 1869 uint8_t at_5; | 1861 EXPECT_EQ(2, int8_array.GetUint8(5)); |
| 1870 ByteArray::Copy(&at_5, int8_array, 5, sizeof(at_5)); | |
| 1871 EXPECT_EQ(2, at_5); | |
| 1872 | 1862 |
| 1873 EXPECT_EQ(3, int8_array.At(6)); | 1863 EXPECT_EQ(3, int8_array.GetInt8(6)); |
| 1874 uint8_t at_6; | 1864 EXPECT_EQ(3, int8_array.GetUint8(6)); |
| 1875 ByteArray::Copy(&at_6, int8_array, 6, sizeof(at_6)); | |
| 1876 EXPECT_EQ(3, at_6); | |
| 1877 | 1865 |
| 1878 EXPECT_EQ(4, int8_array.At(7)); | 1866 EXPECT_EQ(4, int8_array.GetInt8(7)); |
| 1879 uint8_t at_7; | 1867 EXPECT_EQ(4, int8_array.GetUint8(7)); |
| 1880 ByteArray::Copy(&at_7, int8_array, 7, sizeof(at_7)); | |
| 1881 EXPECT_EQ(4, at_7); | |
| 1882 | 1868 |
| 1883 const Int8Array& int8_array2 = | 1869 const TypedData& int8_array2 = |
| 1884 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), | 1870 TypedData::Handle(TypedData::New(kTypedDataInt8ArrayCid, data_length)); |
| 1885 data_length)); | |
| 1886 EXPECT(!int8_array.IsNull()); | 1871 EXPECT(!int8_array.IsNull()); |
| 1887 EXPECT_EQ(data_length, int8_array.Length()); | 1872 EXPECT_EQ(data_length, int8_array.Length()); |
| 1873 for (intptr_t i = 0; i < data_length; ++i) { |
| 1874 int8_array2.SetInt8(i, data[i]); |
| 1875 } |
| 1888 | 1876 |
| 1889 for (intptr_t i = 0; i < data_length; ++i) { | 1877 for (intptr_t i = 0; i < data_length; ++i) { |
| 1890 EXPECT_EQ(int8_array.At(i), int8_array2.At(i)); | 1878 EXPECT_EQ(int8_array.GetInt8(i), int8_array2.GetInt8(i)); |
| 1891 } | 1879 } |
| 1892 for (intptr_t i = 0; i < data_length; ++i) { | 1880 for (intptr_t i = 0; i < data_length; ++i) { |
| 1893 int8_array.SetAt(i, 123 + i); | 1881 int8_array.SetInt8(i, 123 + i); |
| 1894 } | 1882 } |
| 1895 for (intptr_t i = 0; i < data_length; ++i) { | 1883 for (intptr_t i = 0; i < data_length; ++i) { |
| 1896 EXPECT(int8_array.At(i) != int8_array2.At(i)); | 1884 EXPECT(int8_array.GetInt8(i) != int8_array2.GetInt8(i)); |
| 1897 } | 1885 } |
| 1898 } | 1886 } |
| 1899 | 1887 |
| 1900 | 1888 |
| 1901 TEST_CASE(ExternalByteArray) { | 1889 TEST_CASE(ExternalTypedData) { |
| 1902 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; | 1890 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; |
| 1903 intptr_t data_length = ARRAY_SIZE(data); | 1891 intptr_t data_length = ARRAY_SIZE(data); |
| 1904 | 1892 |
| 1905 const ExternalInt8Array& int8_array = | 1893 const ExternalTypedData& int8_array = |
| 1906 ExternalInt8Array::Handle( | 1894 ExternalTypedData::Handle( |
| 1907 ExternalInt8Array::New(reinterpret_cast<int8_t*>(data), | 1895 ExternalTypedData::New(kExternalTypedDataInt8ArrayCid, |
| 1896 data, |
| 1908 data_length)); | 1897 data_length)); |
| 1909 EXPECT(!int8_array.IsNull()); | 1898 EXPECT(!int8_array.IsNull()); |
| 1910 EXPECT_EQ(data_length, int8_array.Length()); | 1899 EXPECT_EQ(data_length, int8_array.Length()); |
| 1911 | 1900 |
| 1912 const ExternalUint8Array& uint8_array = | 1901 const ExternalTypedData& uint8_array = |
| 1913 ExternalUint8Array::Handle( | 1902 ExternalTypedData::Handle( |
| 1914 ExternalUint8Array::New(data, data_length)); | 1903 ExternalTypedData::New(kExternalTypedDataUint8ArrayCid, |
| 1904 data, |
| 1905 data_length)); |
| 1915 EXPECT(!uint8_array.IsNull()); | 1906 EXPECT(!uint8_array.IsNull()); |
| 1916 EXPECT_EQ(data_length, uint8_array.Length()); | 1907 EXPECT_EQ(data_length, uint8_array.Length()); |
| 1917 | 1908 |
| 1918 const ExternalUint8ClampedArray& uint8_clamped_array = | 1909 const ExternalTypedData& uint8_clamped_array = |
| 1919 ExternalUint8ClampedArray::Handle( | 1910 ExternalTypedData::Handle( |
| 1920 ExternalUint8ClampedArray::New(data, data_length)); | 1911 ExternalTypedData::New(kExternalTypedDataUint8ClampedArrayCid, |
| 1912 data, |
| 1913 data_length)); |
| 1921 EXPECT(!uint8_clamped_array.IsNull()); | 1914 EXPECT(!uint8_clamped_array.IsNull()); |
| 1922 EXPECT_EQ(data_length, uint8_clamped_array.Length()); | 1915 EXPECT_EQ(data_length, uint8_clamped_array.Length()); |
| 1923 | 1916 |
| 1924 EXPECT_EQ(-3, int8_array.At(0)); | 1917 EXPECT_EQ(-3, int8_array.GetInt8(0)); |
| 1925 EXPECT_EQ(253, uint8_array.At(0)); | 1918 EXPECT_EQ(253, uint8_array.GetUint8(0)); |
| 1926 EXPECT_EQ(253, uint8_clamped_array.At(0)); | 1919 EXPECT_EQ(253, uint8_clamped_array.GetUint8(0)); |
| 1927 | 1920 |
| 1928 EXPECT_EQ(-2, int8_array.At(1)); | 1921 EXPECT_EQ(-2, int8_array.GetInt8(1)); |
| 1929 EXPECT_EQ(254, uint8_array.At(1)); | 1922 EXPECT_EQ(254, uint8_array.GetUint8(1)); |
| 1930 EXPECT_EQ(254, uint8_clamped_array.At(1)); | 1923 EXPECT_EQ(254, uint8_clamped_array.GetUint8(1)); |
| 1931 | 1924 |
| 1932 EXPECT_EQ(-1, int8_array.At(2)); | 1925 EXPECT_EQ(-1, int8_array.GetInt8(2)); |
| 1933 EXPECT_EQ(255, uint8_array.At(2)); | 1926 EXPECT_EQ(255, uint8_array.GetUint8(2)); |
| 1934 EXPECT_EQ(255, uint8_clamped_array.At(2)); | 1927 EXPECT_EQ(255, uint8_clamped_array.GetUint8(2)); |
| 1935 | 1928 |
| 1936 EXPECT_EQ(0, int8_array.At(3)); | 1929 EXPECT_EQ(0, int8_array.GetInt8(3)); |
| 1937 EXPECT_EQ(0, uint8_array.At(3)); | 1930 EXPECT_EQ(0, uint8_array.GetUint8(3)); |
| 1938 EXPECT_EQ(0, uint8_clamped_array.At(3)); | 1931 EXPECT_EQ(0, uint8_clamped_array.GetUint8(3)); |
| 1939 | 1932 |
| 1940 EXPECT_EQ(1, int8_array.At(4)); | 1933 EXPECT_EQ(1, int8_array.GetInt8(4)); |
| 1941 EXPECT_EQ(1, uint8_array.At(4)); | 1934 EXPECT_EQ(1, uint8_array.GetUint8(4)); |
| 1942 EXPECT_EQ(1, uint8_clamped_array.At(4)); | 1935 EXPECT_EQ(1, uint8_clamped_array.GetUint8(4)); |
| 1943 | 1936 |
| 1944 EXPECT_EQ(2, int8_array.At(5)); | 1937 EXPECT_EQ(2, int8_array.GetInt8(5)); |
| 1945 EXPECT_EQ(2, uint8_array.At(5)); | 1938 EXPECT_EQ(2, uint8_array.GetUint8(5)); |
| 1946 EXPECT_EQ(2, uint8_clamped_array.At(5)); | 1939 EXPECT_EQ(2, uint8_clamped_array.GetUint8(5)); |
| 1947 | 1940 |
| 1948 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { | 1941 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { |
| 1949 uint8_t value = 0; | 1942 EXPECT_EQ(int8_array.GetUint8(i), uint8_array.GetUint8(i)); |
| 1950 ByteArray::Copy(&value, int8_array, i, sizeof(value)); | |
| 1951 EXPECT_EQ(value, uint8_array.At(i)); | |
| 1952 } | 1943 } |
| 1953 | 1944 |
| 1954 int8_array.SetAt(2, -123); | 1945 int8_array.SetInt8(2, -123); |
| 1955 uint8_array.SetAt(0, 123); | 1946 uint8_array.SetUint8(0, 123); |
| 1956 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { | 1947 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { |
| 1957 int8_t value = 0; | 1948 EXPECT_EQ(int8_array.GetInt8(i), uint8_array.GetInt8(i)); |
| 1958 ByteArray::Copy(&value, uint8_array, i, sizeof(value)); | |
| 1959 EXPECT_EQ(int8_array.At(i), value); | |
| 1960 } | 1949 } |
| 1961 | 1950 |
| 1962 uint8_clamped_array.SetAt(0, 123); | 1951 uint8_clamped_array.SetUint8(0, 123); |
| 1963 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { | 1952 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { |
| 1964 int8_t value = 0; | 1953 EXPECT_EQ(int8_array.GetUint8(i), uint8_clamped_array.GetUint8(i)); |
| 1965 ByteArray::Copy(&value, uint8_clamped_array, i, sizeof(value)); | |
| 1966 EXPECT_EQ(int8_array.At(i), value); | |
| 1967 } | 1954 } |
| 1968 } | 1955 } |
| 1969 | 1956 |
| 1970 | 1957 |
| 1971 TEST_CASE(UInt8ByteArrayCopyInternal) { | |
| 1972 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | |
| 1973 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | |
| 1974 | |
| 1975 const Uint8Array& internal = | |
| 1976 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
| 1977 EXPECT(!internal.IsNull()); | |
| 1978 EXPECT_EQ(4, internal.Length()); | |
| 1979 EXPECT_EQ(0, internal.At(0)); | |
| 1980 EXPECT_EQ(1, internal.At(1)); | |
| 1981 EXPECT_EQ(2, internal.At(2)); | |
| 1982 EXPECT_EQ(3, internal.At(3)); | |
| 1983 | |
| 1984 // A zero length copy. | |
| 1985 ByteArray::Copy(internal, 0, b_4_5_6_7, 0); | |
| 1986 EXPECT_EQ(0, internal.At(0)); | |
| 1987 EXPECT_EQ(1, internal.At(1)); | |
| 1988 EXPECT_EQ(2, internal.At(2)); | |
| 1989 EXPECT_EQ(3, internal.At(3)); | |
| 1990 | |
| 1991 // Another zero length copy. | |
| 1992 ByteArray::Copy(internal, 4, b_4_5_6_7, 0); | |
| 1993 EXPECT_EQ(0, internal.At(0)); | |
| 1994 EXPECT_EQ(1, internal.At(1)); | |
| 1995 EXPECT_EQ(2, internal.At(2)); | |
| 1996 EXPECT_EQ(3, internal.At(3)); | |
| 1997 | |
| 1998 // A one element copy. | |
| 1999 ByteArray::Copy(internal, 0, b_4_5_6_7, 1); | |
| 2000 EXPECT_EQ(4, internal.At(0)); | |
| 2001 EXPECT_EQ(1, internal.At(1)); | |
| 2002 EXPECT_EQ(2, internal.At(2)); | |
| 2003 EXPECT_EQ(3, internal.At(3)); | |
| 2004 | |
| 2005 // A two element copy. | |
| 2006 ByteArray::Copy(internal, 2, b_4_5_6_7, 2); | |
| 2007 EXPECT_EQ(4, internal.At(0)); | |
| 2008 EXPECT_EQ(1, internal.At(1)); | |
| 2009 EXPECT_EQ(4, internal.At(2)); | |
| 2010 EXPECT_EQ(5, internal.At(3)); | |
| 2011 | |
| 2012 // A three element copy. | |
| 2013 ByteArray::Copy(internal, 1, b_4_5_6_7, 3); | |
| 2014 EXPECT_EQ(4, internal.At(0)); | |
| 2015 EXPECT_EQ(4, internal.At(1)); | |
| 2016 EXPECT_EQ(5, internal.At(2)); | |
| 2017 EXPECT_EQ(6, internal.At(3)); | |
| 2018 | |
| 2019 // A four element copy. | |
| 2020 ByteArray::Copy(internal, 0, b_0_1_2_3, 4); | |
| 2021 EXPECT_EQ(0, internal.At(0)); | |
| 2022 EXPECT_EQ(1, internal.At(1)); | |
| 2023 EXPECT_EQ(2, internal.At(2)); | |
| 2024 EXPECT_EQ(3, internal.At(3)); | |
| 2025 } | |
| 2026 | |
| 2027 TEST_CASE(ClampedUInt8ByteArrayCopyInternal) { | |
| 2028 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | |
| 2029 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | |
| 2030 | |
| 2031 const Uint8ClampedArray& internal = | |
| 2032 Uint8ClampedArray::Handle( | |
| 2033 Uint8ClampedArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
| 2034 EXPECT(!internal.IsNull()); | |
| 2035 EXPECT_EQ(4, internal.Length()); | |
| 2036 EXPECT_EQ(0, internal.At(0)); | |
| 2037 EXPECT_EQ(1, internal.At(1)); | |
| 2038 EXPECT_EQ(2, internal.At(2)); | |
| 2039 EXPECT_EQ(3, internal.At(3)); | |
| 2040 | |
| 2041 // A zero length copy. | |
| 2042 ByteArray::Copy(internal, 0, b_4_5_6_7, 0); | |
| 2043 EXPECT_EQ(0, internal.At(0)); | |
| 2044 EXPECT_EQ(1, internal.At(1)); | |
| 2045 EXPECT_EQ(2, internal.At(2)); | |
| 2046 EXPECT_EQ(3, internal.At(3)); | |
| 2047 | |
| 2048 // Another zero length copy. | |
| 2049 ByteArray::Copy(internal, 4, b_4_5_6_7, 0); | |
| 2050 EXPECT_EQ(0, internal.At(0)); | |
| 2051 EXPECT_EQ(1, internal.At(1)); | |
| 2052 EXPECT_EQ(2, internal.At(2)); | |
| 2053 EXPECT_EQ(3, internal.At(3)); | |
| 2054 | |
| 2055 // A one element copy. | |
| 2056 ByteArray::Copy(internal, 0, b_4_5_6_7, 1); | |
| 2057 EXPECT_EQ(4, internal.At(0)); | |
| 2058 EXPECT_EQ(1, internal.At(1)); | |
| 2059 EXPECT_EQ(2, internal.At(2)); | |
| 2060 EXPECT_EQ(3, internal.At(3)); | |
| 2061 | |
| 2062 // A two element copy. | |
| 2063 ByteArray::Copy(internal, 2, b_4_5_6_7, 2); | |
| 2064 EXPECT_EQ(4, internal.At(0)); | |
| 2065 EXPECT_EQ(1, internal.At(1)); | |
| 2066 EXPECT_EQ(4, internal.At(2)); | |
| 2067 EXPECT_EQ(5, internal.At(3)); | |
| 2068 | |
| 2069 // A three element copy. | |
| 2070 ByteArray::Copy(internal, 1, b_4_5_6_7, 3); | |
| 2071 EXPECT_EQ(4, internal.At(0)); | |
| 2072 EXPECT_EQ(4, internal.At(1)); | |
| 2073 EXPECT_EQ(5, internal.At(2)); | |
| 2074 EXPECT_EQ(6, internal.At(3)); | |
| 2075 | |
| 2076 // A four element copy. | |
| 2077 ByteArray::Copy(internal, 0, b_0_1_2_3, 4); | |
| 2078 EXPECT_EQ(0, internal.At(0)); | |
| 2079 EXPECT_EQ(1, internal.At(1)); | |
| 2080 EXPECT_EQ(2, internal.At(2)); | |
| 2081 EXPECT_EQ(3, internal.At(3)); | |
| 2082 } | |
| 2083 | |
| 2084 | |
| 2085 TEST_CASE(Uint8ByteArrayCopyExternal) { | |
| 2086 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | |
| 2087 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | |
| 2088 | |
| 2089 uint8_t data[] = { 0, 1, 2, 3 }; | |
| 2090 | |
| 2091 const ExternalUint8Array& external = | |
| 2092 ExternalUint8Array::Handle( | |
| 2093 ExternalUint8Array::New(data, ARRAY_SIZE(data))); | |
| 2094 EXPECT(!external.IsNull()); | |
| 2095 EXPECT_EQ(4, external.Length()); | |
| 2096 EXPECT_EQ(0, external.At(0)); | |
| 2097 EXPECT_EQ(1, external.At(1)); | |
| 2098 EXPECT_EQ(2, external.At(2)); | |
| 2099 EXPECT_EQ(3, external.At(3)); | |
| 2100 | |
| 2101 // A zero length copy. | |
| 2102 ByteArray::Copy(external, 0, b_4_5_6_7, 0); | |
| 2103 EXPECT_EQ(0, external.At(0)); | |
| 2104 EXPECT_EQ(1, external.At(1)); | |
| 2105 EXPECT_EQ(2, external.At(2)); | |
| 2106 EXPECT_EQ(3, external.At(3)); | |
| 2107 | |
| 2108 // Another zero length copy. | |
| 2109 ByteArray::Copy(external, 4, b_4_5_6_7, 0); | |
| 2110 EXPECT_EQ(0, external.At(0)); | |
| 2111 EXPECT_EQ(1, external.At(1)); | |
| 2112 EXPECT_EQ(2, external.At(2)); | |
| 2113 EXPECT_EQ(3, external.At(3)); | |
| 2114 | |
| 2115 // A one element copy. | |
| 2116 ByteArray::Copy(external, 0, b_4_5_6_7, 1); | |
| 2117 EXPECT_EQ(4, external.At(0)); | |
| 2118 EXPECT_EQ(1, external.At(1)); | |
| 2119 EXPECT_EQ(2, external.At(2)); | |
| 2120 EXPECT_EQ(3, external.At(3)); | |
| 2121 | |
| 2122 // A two element copy. | |
| 2123 ByteArray::Copy(external, 2, b_4_5_6_7, 2); | |
| 2124 EXPECT_EQ(4, external.At(0)); | |
| 2125 EXPECT_EQ(1, external.At(1)); | |
| 2126 EXPECT_EQ(4, external.At(2)); | |
| 2127 EXPECT_EQ(5, external.At(3)); | |
| 2128 | |
| 2129 // A three element copy. | |
| 2130 ByteArray::Copy(external, 1, b_4_5_6_7, 3); | |
| 2131 EXPECT_EQ(4, external.At(0)); | |
| 2132 EXPECT_EQ(4, external.At(1)); | |
| 2133 EXPECT_EQ(5, external.At(2)); | |
| 2134 EXPECT_EQ(6, external.At(3)); | |
| 2135 | |
| 2136 // A four element copy. | |
| 2137 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | |
| 2138 EXPECT_EQ(0, external.At(0)); | |
| 2139 EXPECT_EQ(1, external.At(1)); | |
| 2140 EXPECT_EQ(2, external.At(2)); | |
| 2141 EXPECT_EQ(3, external.At(3)); | |
| 2142 } | |
| 2143 | |
| 2144 | |
| 2145 TEST_CASE(ClampedUint8ByteArrayCopyExternal) { | |
| 2146 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | |
| 2147 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | |
| 2148 | |
| 2149 uint8_t data[] = { 0, 1, 2, 3 }; | |
| 2150 | |
| 2151 const ExternalUint8ClampedArray& external = | |
| 2152 ExternalUint8ClampedArray::Handle( | |
| 2153 ExternalUint8ClampedArray::New(data, ARRAY_SIZE(data))); | |
| 2154 EXPECT(!external.IsNull()); | |
| 2155 EXPECT_EQ(4, external.Length()); | |
| 2156 EXPECT_EQ(0, external.At(0)); | |
| 2157 EXPECT_EQ(1, external.At(1)); | |
| 2158 EXPECT_EQ(2, external.At(2)); | |
| 2159 EXPECT_EQ(3, external.At(3)); | |
| 2160 | |
| 2161 // A zero length copy. | |
| 2162 ByteArray::Copy(external, 0, b_4_5_6_7, 0); | |
| 2163 EXPECT_EQ(0, external.At(0)); | |
| 2164 EXPECT_EQ(1, external.At(1)); | |
| 2165 EXPECT_EQ(2, external.At(2)); | |
| 2166 EXPECT_EQ(3, external.At(3)); | |
| 2167 | |
| 2168 // Another zero length copy. | |
| 2169 ByteArray::Copy(external, 4, b_4_5_6_7, 0); | |
| 2170 EXPECT_EQ(0, external.At(0)); | |
| 2171 EXPECT_EQ(1, external.At(1)); | |
| 2172 EXPECT_EQ(2, external.At(2)); | |
| 2173 EXPECT_EQ(3, external.At(3)); | |
| 2174 | |
| 2175 // A one element copy. | |
| 2176 ByteArray::Copy(external, 0, b_4_5_6_7, 1); | |
| 2177 EXPECT_EQ(4, external.At(0)); | |
| 2178 EXPECT_EQ(1, external.At(1)); | |
| 2179 EXPECT_EQ(2, external.At(2)); | |
| 2180 EXPECT_EQ(3, external.At(3)); | |
| 2181 | |
| 2182 // A two element copy. | |
| 2183 ByteArray::Copy(external, 2, b_4_5_6_7, 2); | |
| 2184 EXPECT_EQ(4, external.At(0)); | |
| 2185 EXPECT_EQ(1, external.At(1)); | |
| 2186 EXPECT_EQ(4, external.At(2)); | |
| 2187 EXPECT_EQ(5, external.At(3)); | |
| 2188 | |
| 2189 // A three element copy. | |
| 2190 ByteArray::Copy(external, 1, b_4_5_6_7, 3); | |
| 2191 EXPECT_EQ(4, external.At(0)); | |
| 2192 EXPECT_EQ(4, external.At(1)); | |
| 2193 EXPECT_EQ(5, external.At(2)); | |
| 2194 EXPECT_EQ(6, external.At(3)); | |
| 2195 | |
| 2196 // A four element copy. | |
| 2197 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | |
| 2198 EXPECT_EQ(0, external.At(0)); | |
| 2199 EXPECT_EQ(1, external.At(1)); | |
| 2200 EXPECT_EQ(2, external.At(2)); | |
| 2201 EXPECT_EQ(3, external.At(3)); | |
| 2202 } | |
| 2203 | |
| 2204 | |
| 2205 TEST_CASE(Uint8ByteArrayCopyInternalExternal) { | |
| 2206 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | |
| 2207 uint8_t data[] = { 4, 5, 6, 7 }; | |
| 2208 | |
| 2209 const Uint8Array& internal = | |
| 2210 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
| 2211 EXPECT(!internal.IsNull()); | |
| 2212 EXPECT_EQ(4, internal.Length()); | |
| 2213 EXPECT_EQ(0, internal.At(0)); | |
| 2214 EXPECT_EQ(1, internal.At(1)); | |
| 2215 EXPECT_EQ(2, internal.At(2)); | |
| 2216 EXPECT_EQ(3, internal.At(3)); | |
| 2217 | |
| 2218 const ExternalUint8Array& external = | |
| 2219 ExternalUint8Array::Handle( | |
| 2220 ExternalUint8Array::New(data, ARRAY_SIZE(data))); | |
| 2221 EXPECT(!external.IsNull()); | |
| 2222 EXPECT_EQ(4, external.Length()); | |
| 2223 EXPECT_EQ(4, external.At(0)); | |
| 2224 EXPECT_EQ(5, external.At(1)); | |
| 2225 EXPECT_EQ(6, external.At(2)); | |
| 2226 EXPECT_EQ(7, external.At(3)); | |
| 2227 | |
| 2228 // A zero length copy. | |
| 2229 ByteArray::Copy(internal, 0, external, 0, 0); | |
| 2230 EXPECT_EQ(0, internal.At(0)); | |
| 2231 EXPECT_EQ(1, internal.At(1)); | |
| 2232 EXPECT_EQ(2, internal.At(2)); | |
| 2233 EXPECT_EQ(3, internal.At(3)); | |
| 2234 | |
| 2235 // A zero length copy, take 2. | |
| 2236 ByteArray::Copy(internal, 4, external, 0, 0); | |
| 2237 EXPECT_EQ(0, internal.At(0)); | |
| 2238 EXPECT_EQ(1, internal.At(1)); | |
| 2239 EXPECT_EQ(2, internal.At(2)); | |
| 2240 EXPECT_EQ(3, internal.At(3)); | |
| 2241 | |
| 2242 // A zero length copy, take 3. | |
| 2243 ByteArray::Copy(internal, 0, external, 4, 0); | |
| 2244 EXPECT_EQ(0, internal.At(0)); | |
| 2245 EXPECT_EQ(1, internal.At(1)); | |
| 2246 EXPECT_EQ(2, internal.At(2)); | |
| 2247 EXPECT_EQ(3, internal.At(3)); | |
| 2248 | |
| 2249 // A zero length copy, take 4. | |
| 2250 ByteArray::Copy(internal, 4, external, 4, 0); | |
| 2251 EXPECT_EQ(0, internal.At(0)); | |
| 2252 EXPECT_EQ(1, internal.At(1)); | |
| 2253 EXPECT_EQ(2, internal.At(2)); | |
| 2254 EXPECT_EQ(3, internal.At(3)); | |
| 2255 | |
| 2256 // A four element copy. | |
| 2257 ByteArray::Copy(internal, 0, external, 0, 4); | |
| 2258 EXPECT_EQ(4, internal.At(0)); | |
| 2259 EXPECT_EQ(5, internal.At(1)); | |
| 2260 EXPECT_EQ(6, internal.At(2)); | |
| 2261 EXPECT_EQ(7, internal.At(3)); | |
| 2262 EXPECT_EQ(4, external.At(0)); | |
| 2263 EXPECT_EQ(5, external.At(1)); | |
| 2264 EXPECT_EQ(6, external.At(2)); | |
| 2265 EXPECT_EQ(7, external.At(3)); | |
| 2266 | |
| 2267 // A four element copy, take 2. | |
| 2268 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | |
| 2269 EXPECT_EQ(0, external.At(0)); | |
| 2270 EXPECT_EQ(1, external.At(1)); | |
| 2271 EXPECT_EQ(2, external.At(2)); | |
| 2272 EXPECT_EQ(3, external.At(3)); | |
| 2273 ByteArray::Copy(external, 0, internal, 0, 4); | |
| 2274 EXPECT_EQ(4, internal.At(0)); | |
| 2275 EXPECT_EQ(5, internal.At(1)); | |
| 2276 EXPECT_EQ(6, internal.At(2)); | |
| 2277 EXPECT_EQ(7, internal.At(3)); | |
| 2278 EXPECT_EQ(4, external.At(0)); | |
| 2279 EXPECT_EQ(5, external.At(1)); | |
| 2280 EXPECT_EQ(6, external.At(2)); | |
| 2281 EXPECT_EQ(7, external.At(3)); | |
| 2282 } | |
| 2283 | |
| 2284 | |
| 2285 TEST_CASE(ClampedUint8ByteArrayCopyInternalExternal) { | |
| 2286 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | |
| 2287 uint8_t data[] = { 4, 5, 6, 7 }; | |
| 2288 | |
| 2289 const Uint8ClampedArray& internal = | |
| 2290 Uint8ClampedArray::Handle( | |
| 2291 Uint8ClampedArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
| 2292 EXPECT(!internal.IsNull()); | |
| 2293 EXPECT_EQ(4, internal.Length()); | |
| 2294 EXPECT_EQ(0, internal.At(0)); | |
| 2295 EXPECT_EQ(1, internal.At(1)); | |
| 2296 EXPECT_EQ(2, internal.At(2)); | |
| 2297 EXPECT_EQ(3, internal.At(3)); | |
| 2298 | |
| 2299 const ExternalUint8ClampedArray& external = | |
| 2300 ExternalUint8ClampedArray::Handle( | |
| 2301 ExternalUint8ClampedArray::New(data, ARRAY_SIZE(data))); | |
| 2302 EXPECT(!external.IsNull()); | |
| 2303 EXPECT_EQ(4, external.Length()); | |
| 2304 EXPECT_EQ(4, external.At(0)); | |
| 2305 EXPECT_EQ(5, external.At(1)); | |
| 2306 EXPECT_EQ(6, external.At(2)); | |
| 2307 EXPECT_EQ(7, external.At(3)); | |
| 2308 | |
| 2309 // A zero length copy. | |
| 2310 ByteArray::Copy(internal, 0, external, 0, 0); | |
| 2311 EXPECT_EQ(0, internal.At(0)); | |
| 2312 EXPECT_EQ(1, internal.At(1)); | |
| 2313 EXPECT_EQ(2, internal.At(2)); | |
| 2314 EXPECT_EQ(3, internal.At(3)); | |
| 2315 | |
| 2316 // A zero length copy, take 2. | |
| 2317 ByteArray::Copy(internal, 4, external, 0, 0); | |
| 2318 EXPECT_EQ(0, internal.At(0)); | |
| 2319 EXPECT_EQ(1, internal.At(1)); | |
| 2320 EXPECT_EQ(2, internal.At(2)); | |
| 2321 EXPECT_EQ(3, internal.At(3)); | |
| 2322 | |
| 2323 // A zero length copy, take 3. | |
| 2324 ByteArray::Copy(internal, 0, external, 4, 0); | |
| 2325 EXPECT_EQ(0, internal.At(0)); | |
| 2326 EXPECT_EQ(1, internal.At(1)); | |
| 2327 EXPECT_EQ(2, internal.At(2)); | |
| 2328 EXPECT_EQ(3, internal.At(3)); | |
| 2329 | |
| 2330 // A zero length copy, take 4. | |
| 2331 ByteArray::Copy(internal, 4, external, 4, 0); | |
| 2332 EXPECT_EQ(0, internal.At(0)); | |
| 2333 EXPECT_EQ(1, internal.At(1)); | |
| 2334 EXPECT_EQ(2, internal.At(2)); | |
| 2335 EXPECT_EQ(3, internal.At(3)); | |
| 2336 | |
| 2337 // A four element copy. | |
| 2338 ByteArray::Copy(internal, 0, external, 0, 4); | |
| 2339 EXPECT_EQ(4, internal.At(0)); | |
| 2340 EXPECT_EQ(5, internal.At(1)); | |
| 2341 EXPECT_EQ(6, internal.At(2)); | |
| 2342 EXPECT_EQ(7, internal.At(3)); | |
| 2343 EXPECT_EQ(4, external.At(0)); | |
| 2344 EXPECT_EQ(5, external.At(1)); | |
| 2345 EXPECT_EQ(6, external.At(2)); | |
| 2346 EXPECT_EQ(7, external.At(3)); | |
| 2347 | |
| 2348 // A four element copy, take 2. | |
| 2349 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | |
| 2350 EXPECT_EQ(0, external.At(0)); | |
| 2351 EXPECT_EQ(1, external.At(1)); | |
| 2352 EXPECT_EQ(2, external.At(2)); | |
| 2353 EXPECT_EQ(3, external.At(3)); | |
| 2354 ByteArray::Copy(external, 0, internal, 0, 4); | |
| 2355 EXPECT_EQ(4, internal.At(0)); | |
| 2356 EXPECT_EQ(5, internal.At(1)); | |
| 2357 EXPECT_EQ(6, internal.At(2)); | |
| 2358 EXPECT_EQ(7, internal.At(3)); | |
| 2359 EXPECT_EQ(4, external.At(0)); | |
| 2360 EXPECT_EQ(5, external.At(1)); | |
| 2361 EXPECT_EQ(6, external.At(2)); | |
| 2362 EXPECT_EQ(7, external.At(3)); | |
| 2363 } | |
| 2364 | |
| 2365 | |
| 2366 TEST_CASE(Script) { | 1958 TEST_CASE(Script) { |
| 2367 const char* url_chars = "builtin:test-case"; | 1959 const char* url_chars = "builtin:test-case"; |
| 2368 const char* source_chars = "This will not compile."; | 1960 const char* source_chars = "This will not compile."; |
| 2369 const String& url = String::Handle(String::New(url_chars)); | 1961 const String& url = String::Handle(String::New(url_chars)); |
| 2370 const String& source = String::Handle(String::New(source_chars)); | 1962 const String& source = String::Handle(String::New(source_chars)); |
| 2371 const Script& script = Script::Handle(Script::New(url, | 1963 const Script& script = Script::Handle(Script::New(url, |
| 2372 source, | 1964 source, |
| 2373 RawScript::kSourceTag)); | 1965 RawScript::kSourceTag)); |
| 2374 EXPECT(!script.IsNull()); | 1966 EXPECT(!script.IsNull()); |
| 2375 EXPECT(script.IsScript()); | 1967 EXPECT(script.IsScript()); |
| (...skipping 1210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3586 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); | 3178 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); |
| 3587 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); | 3179 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); |
| 3588 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); | 3180 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); |
| 3589 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); | 3181 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); |
| 3590 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); | 3182 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); |
| 3591 } | 3183 } |
| 3592 | 3184 |
| 3593 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 3185 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 3594 | 3186 |
| 3595 } // namespace dart | 3187 } // namespace dart |
| OLD | NEW |