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 1836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1847 new_array ^= obj.raw(); | 1847 new_array ^= obj.raw(); |
1848 EXPECT_EQ(1, new_array.Length()); | 1848 EXPECT_EQ(1, new_array.Length()); |
1849 addr += used_size; | 1849 addr += used_size; |
1850 obj = RawObject::FromAddr(addr); | 1850 obj = RawObject::FromAddr(addr); |
1851 EXPECT(obj.IsArray()); | 1851 EXPECT(obj.IsArray()); |
1852 new_array ^= obj.raw(); | 1852 new_array ^= obj.raw(); |
1853 EXPECT_EQ(2, new_array.Length()); | 1853 EXPECT_EQ(2, new_array.Length()); |
1854 } | 1854 } |
1855 | 1855 |
1856 | 1856 |
| 1857 TEST_CASE(InternalByteArray) { |
| 1858 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; |
| 1859 intptr_t data_length = ARRAY_SIZE(data); |
| 1860 |
| 1861 const Int8Array& int8_array = |
| 1862 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), |
| 1863 data_length)); |
| 1864 EXPECT(!int8_array.IsNull()); |
| 1865 EXPECT_EQ(data_length, int8_array.Length()); |
| 1866 |
| 1867 EXPECT_EQ(-3, int8_array.At(0)); |
| 1868 uint8_t at_0; |
| 1869 ByteArray::Copy(&at_0, int8_array, 0, sizeof(at_0)); |
| 1870 EXPECT_EQ(253, at_0); |
| 1871 |
| 1872 EXPECT_EQ(-2, int8_array.At(1)); |
| 1873 uint8_t at_1; |
| 1874 ByteArray::Copy(&at_1, int8_array, 1, sizeof(at_1)); |
| 1875 EXPECT_EQ(254, at_1); |
| 1876 |
| 1877 EXPECT_EQ(-1, int8_array.At(2)); |
| 1878 uint8_t at_2; |
| 1879 ByteArray::Copy(&at_2, int8_array, 2, sizeof(at_2)); |
| 1880 EXPECT_EQ(255, at_2); |
| 1881 |
| 1882 EXPECT_EQ(0, int8_array.At(3)); |
| 1883 uint8_t at_3; |
| 1884 ByteArray::Copy(&at_3, int8_array, 3, sizeof(at_3)); |
| 1885 EXPECT_EQ(0, at_3); |
| 1886 |
| 1887 EXPECT_EQ(1, int8_array.At(4)); |
| 1888 uint8_t at_4; |
| 1889 ByteArray::Copy(&at_4, int8_array, 4, sizeof(at_4)); |
| 1890 EXPECT_EQ(1, at_4); |
| 1891 |
| 1892 EXPECT_EQ(2, int8_array.At(5)); |
| 1893 uint8_t at_5; |
| 1894 ByteArray::Copy(&at_5, int8_array, 5, sizeof(at_5)); |
| 1895 EXPECT_EQ(2, at_5); |
| 1896 |
| 1897 EXPECT_EQ(3, int8_array.At(6)); |
| 1898 uint8_t at_6; |
| 1899 ByteArray::Copy(&at_6, int8_array, 6, sizeof(at_6)); |
| 1900 EXPECT_EQ(3, at_6); |
| 1901 |
| 1902 EXPECT_EQ(4, int8_array.At(7)); |
| 1903 uint8_t at_7; |
| 1904 ByteArray::Copy(&at_7, int8_array, 7, sizeof(at_7)); |
| 1905 EXPECT_EQ(4, at_7); |
| 1906 |
| 1907 const Int8Array& int8_array2 = |
| 1908 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), |
| 1909 data_length)); |
| 1910 EXPECT(!int8_array.IsNull()); |
| 1911 EXPECT_EQ(data_length, int8_array.Length()); |
| 1912 |
| 1913 for (intptr_t i = 0; i < data_length; ++i) { |
| 1914 EXPECT_EQ(int8_array.At(i), int8_array2.At(i)); |
| 1915 } |
| 1916 for (intptr_t i = 0; i < data_length; ++i) { |
| 1917 int8_array.SetAt(i, 123 + i); |
| 1918 } |
| 1919 for (intptr_t i = 0; i < data_length; ++i) { |
| 1920 EXPECT(int8_array.At(i) != int8_array2.At(i)); |
| 1921 } |
| 1922 } |
| 1923 |
| 1924 |
1857 TEST_CASE(ExternalByteArray) { | 1925 TEST_CASE(ExternalByteArray) { |
1858 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; | 1926 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; |
1859 intptr_t data_length = ARRAY_SIZE(data); | 1927 intptr_t data_length = ARRAY_SIZE(data); |
1860 | 1928 |
1861 const ExternalByteArray& array1 = | 1929 const ExternalInt8Array& int8_array = |
1862 ExternalByteArray::Handle(ExternalByteArray::New(data, | 1930 ExternalInt8Array::Handle( |
1863 data_length, | 1931 ExternalInt8Array::New(reinterpret_cast<int8_t*>(data), |
1864 NULL, | 1932 data_length, NULL, NULL)); |
1865 NULL)); | 1933 EXPECT(!int8_array.IsNull()); |
1866 EXPECT(!array1.IsNull()); | 1934 EXPECT_EQ(data_length, int8_array.Length()); |
1867 EXPECT_EQ(data_length, array1.Length()); | 1935 |
1868 EXPECT_EQ(-3, array1.At<int8_t>(0)); | 1936 const ExternalUint8Array& uint8_array = |
1869 EXPECT_EQ(253, array1.At<uint8_t>(0)); | 1937 ExternalUint8Array::Handle( |
1870 EXPECT_EQ(-2, array1.At<int8_t>(1)); | 1938 ExternalUint8Array::New(data, data_length, NULL, NULL)); |
1871 EXPECT_EQ(254, array1.At<uint8_t>(1)); | 1939 EXPECT(!uint8_array.IsNull()); |
1872 EXPECT_EQ(-1, array1.At<int8_t>(2)); | 1940 EXPECT_EQ(data_length, uint8_array.Length()); |
1873 EXPECT_EQ(255, array1.At<uint8_t>(2)); | 1941 |
1874 EXPECT_EQ(0, array1.At<int8_t>(3)); | 1942 EXPECT_EQ(-3, int8_array.At(0)); |
1875 EXPECT_EQ(0, array1.At<uint8_t>(3)); | 1943 EXPECT_EQ(253, uint8_array.At(0)); |
1876 EXPECT_EQ(1, array1.At<int8_t>(4)); | 1944 |
1877 EXPECT_EQ(1, array1.At<uint8_t>(4)); | 1945 EXPECT_EQ(-2, int8_array.At(1)); |
1878 EXPECT_EQ(2, array1.At<int8_t>(5)); | 1946 EXPECT_EQ(254, uint8_array.At(1)); |
1879 EXPECT_EQ(2, array1.At<uint8_t>(5)); | 1947 |
1880 | 1948 EXPECT_EQ(-1, int8_array.At(2)); |
1881 const ExternalByteArray& array2 = | 1949 EXPECT_EQ(255, uint8_array.At(2)); |
1882 ExternalByteArray::Handle(ExternalByteArray::New(data, | 1950 |
1883 data_length, | 1951 EXPECT_EQ(0, int8_array.At(3)); |
1884 NULL, | 1952 EXPECT_EQ(0, uint8_array.At(3)); |
1885 NULL)); | 1953 |
1886 EXPECT(!array1.IsNull()); | 1954 EXPECT_EQ(1, int8_array.At(4)); |
1887 EXPECT_EQ(data_length, array2.Length()); | 1955 EXPECT_EQ(1, uint8_array.At(4)); |
1888 for (intptr_t i = 0 ; i < array1.Length(); ++i) { | 1956 |
1889 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); | 1957 EXPECT_EQ(2, int8_array.At(5)); |
1890 } | 1958 EXPECT_EQ(2, uint8_array.At(5)); |
1891 | 1959 |
1892 array1.SetAt<uint8_t>(0, 123); | 1960 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { |
1893 array2.SetAt<int8_t>(2, -123); | 1961 uint8_t value = 0; |
1894 for (intptr_t i = 0 ; i < array1.Length(); ++i) { | 1962 ByteArray::Copy(&value, int8_array, i, sizeof(value)); |
1895 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); | 1963 EXPECT_EQ(value, uint8_array.At(i)); |
1896 } | 1964 } |
1897 } | 1965 |
1898 | 1966 int8_array.SetAt(2, -123); |
1899 | 1967 uint8_array.SetAt(0, 123); |
1900 TEST_CASE(ExternalByteArrayAlignedAccess) { | 1968 for (intptr_t i = 0 ; i < int8_array.Length(); ++i) { |
1901 intptr_t length = 16; | 1969 int8_t value = 0; |
1902 uint8_t* data = new uint8_t[length]; | 1970 ByteArray::Copy(&value, uint8_array, i, sizeof(value)); |
1903 | 1971 EXPECT_EQ(int8_array.At(i), value); |
1904 const ExternalByteArray& array1 = | 1972 } |
1905 ExternalByteArray::Handle(ExternalByteArray::New(data, | 1973 } |
1906 length, | 1974 |
1907 NULL, | 1975 |
1908 NULL)); | 1976 TEST_CASE(ByteArrayCopyInternal) { |
1909 EXPECT(!array1.IsNull()); | |
1910 EXPECT_EQ(length, array1.Length()); | |
1911 | |
1912 const ExternalByteArray& array2 = | |
1913 ExternalByteArray::Handle(ExternalByteArray::New(data, | |
1914 length, | |
1915 NULL, | |
1916 NULL)); | |
1917 EXPECT(!array2.IsNull()); | |
1918 EXPECT_EQ(length, array2.Length()); | |
1919 | |
1920 memset(data, 0xAA, ARRAY_SIZE(data)); | |
1921 array1.SetAt<float>(0, FLT_MIN); | |
1922 array1.SetAt<float>(4, FLT_MAX); | |
1923 EXPECT_EQ(FLT_MIN, array2.At<float>(0)); | |
1924 EXPECT_EQ(FLT_MAX, array2.At<float>(4)); | |
1925 | |
1926 memset(data, 0xAA, ARRAY_SIZE(data)); | |
1927 array1.SetAt<float>(0, 0.0f); | |
1928 EXPECT_EQ(0.0f, array2.At<float>(0)); | |
1929 array1.SetAt<float>(4, 1.0f); | |
1930 EXPECT_EQ(1.0f, array2.At<float>(4)); | |
1931 | |
1932 memset(data, 0xAA, ARRAY_SIZE(data)); | |
1933 array1.SetAt<double>(0, DBL_MIN); | |
1934 EXPECT_EQ(DBL_MIN, array2.At<double>(0)); | |
1935 array1.SetAt<double>(8, DBL_MAX); | |
1936 EXPECT_EQ(DBL_MAX, array2.At<double>(8)); | |
1937 | |
1938 memset(data, 0xAA, ARRAY_SIZE(data)); | |
1939 array1.SetAt<double>(0, 0.0); | |
1940 EXPECT_EQ(0.0, array2.At<double>(0)); | |
1941 array1.SetAt<double>(8, 1.0); | |
1942 EXPECT_EQ(1.0, array2.At<double>(8)); | |
1943 | |
1944 delete[] data; | |
1945 } | |
1946 | |
1947 | |
1948 TEST_CASE(ExternalByteArrayUnlignedAccess) { | |
1949 intptr_t length = 24; | |
1950 uint8_t* data = new uint8_t[length]; | |
1951 | |
1952 const ExternalByteArray& array1 = | |
1953 ExternalByteArray::Handle(ExternalByteArray::New(data, | |
1954 length, | |
1955 NULL, | |
1956 NULL)); | |
1957 EXPECT(!array1.IsNull()); | |
1958 EXPECT_EQ(length, array1.Length()); | |
1959 | |
1960 const ExternalByteArray& array2 = | |
1961 ExternalByteArray::Handle(ExternalByteArray::New(data, | |
1962 length, | |
1963 NULL, | |
1964 NULL)); | |
1965 EXPECT(!array2.IsNull()); | |
1966 EXPECT_EQ(length, array2.Length()); | |
1967 | |
1968 int float_misalign = 3; | |
1969 memset(data, 0xAA, ARRAY_SIZE(data)); | |
1970 array1.SetUnalignedAt<float>(float_misalign, FLT_MIN); | |
1971 array1.SetUnalignedAt<float>(4 + float_misalign, FLT_MAX); | |
1972 EXPECT_EQ(FLT_MIN, array2.UnalignedAt<float>(float_misalign)); | |
1973 EXPECT_EQ(FLT_MAX, array2.UnalignedAt<float>(4 + float_misalign)); | |
1974 | |
1975 memset(data, 0xAA, ARRAY_SIZE(data)); | |
1976 array1.SetUnalignedAt<float>(float_misalign, 0.0f); | |
1977 EXPECT_EQ(0.0f, array2.UnalignedAt<float>(float_misalign)); | |
1978 array1.SetUnalignedAt<float>(4 + float_misalign, 1.0f); | |
1979 EXPECT_EQ(1.0f, array2.UnalignedAt<float>(4 + float_misalign)); | |
1980 | |
1981 int double_misalign = 5; | |
1982 memset(data, 0xAA, ARRAY_SIZE(data)); | |
1983 array1.SetUnalignedAt<double>(double_misalign, DBL_MIN); | |
1984 EXPECT_EQ(DBL_MIN, array2.UnalignedAt<double>(double_misalign)); | |
1985 array1.SetUnalignedAt<double>(8 + double_misalign, DBL_MAX); | |
1986 EXPECT_EQ(DBL_MAX, | |
1987 array2.UnalignedAt<double>(8 + double_misalign)); | |
1988 | |
1989 memset(data, 0xAA, ARRAY_SIZE(data)); | |
1990 array1.SetUnalignedAt<double>(double_misalign, 0.0); | |
1991 EXPECT_EQ(0.0, array2.UnalignedAt<double>(double_misalign)); | |
1992 array1.SetUnalignedAt<double>(8 + double_misalign, 1.0); | |
1993 EXPECT_EQ(1.0, array2.UnalignedAt<double>(8 + double_misalign)); | |
1994 | |
1995 delete[] data; | |
1996 } | |
1997 | |
1998 | |
1999 TEST_CASE(ExternalByteArraySkewedUnalignedBaseAccess) { | |
2000 intptr_t length = 24; | |
2001 uint8_t* data = new uint8_t[length]; | |
2002 | |
2003 int skew = 2; | |
2004 | |
2005 const ExternalByteArray& array1 = | |
2006 ExternalByteArray::Handle(ExternalByteArray::New(data + 3, | |
2007 length, | |
2008 NULL, | |
2009 NULL)); | |
2010 EXPECT(!array1.IsNull()); | |
2011 EXPECT_EQ(length, array1.Length()); | |
2012 | |
2013 const ExternalByteArray& array2 = | |
2014 ExternalByteArray::Handle(ExternalByteArray::New(data + 1, | |
2015 length, | |
2016 NULL, | |
2017 NULL)); | |
2018 EXPECT(!array2.IsNull()); | |
2019 EXPECT_EQ(length, array2.Length()); | |
2020 | |
2021 memset(data, 0xAA, ARRAY_SIZE(data)); | |
2022 array1.SetUnalignedAt<float>(0, FLT_MIN); | |
2023 array1.SetUnalignedAt<float>(4, FLT_MAX); | |
2024 EXPECT_EQ(FLT_MIN, array2.UnalignedAt<float>(0 + skew)); | |
2025 EXPECT_EQ(FLT_MAX, array2.UnalignedAt<float>(4 + skew)); | |
2026 | |
2027 memset(data, 0xAA, ARRAY_SIZE(data)); | |
2028 array1.SetUnalignedAt<float>(0, 0.0f); | |
2029 EXPECT_EQ(0.0f, array2.UnalignedAt<float>(0 + skew)); | |
2030 array2.SetUnalignedAt<float>(4 + skew, 1.0f); | |
2031 EXPECT_EQ(1.0f, array1.UnalignedAt<float>(4)); | |
2032 | |
2033 memset(data, 0xAA, ARRAY_SIZE(data)); | |
2034 array1.SetUnalignedAt<double>(0, DBL_MIN); | |
2035 EXPECT_EQ(DBL_MIN, array2.UnalignedAt<double>(0 + skew)); | |
2036 array2.SetUnalignedAt<double>(8 + skew, DBL_MAX); | |
2037 EXPECT_EQ(DBL_MAX, array1.UnalignedAt<double>(8)); | |
2038 | |
2039 memset(data, 0xAA, ARRAY_SIZE(data)); | |
2040 array1.SetUnalignedAt<double>(0, 0.0); | |
2041 EXPECT_EQ(0.0, array2.UnalignedAt<double>(0 + skew)); | |
2042 array2.SetUnalignedAt<double>(8 + skew, 1.0); | |
2043 EXPECT_EQ(1.0, array1.UnalignedAt<double>(8)); | |
2044 | |
2045 delete[] data; | |
2046 } | |
2047 | |
2048 | |
2049 TEST_CASE(ExternalByteArrayCopy) { | |
2050 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | 1977 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; |
2051 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | 1978 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; |
2052 | 1979 |
| 1980 const Uint8Array& internal = |
| 1981 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); |
| 1982 EXPECT(!internal.IsNull()); |
| 1983 EXPECT_EQ(4, internal.Length()); |
| 1984 EXPECT_EQ(0, internal.At(0)); |
| 1985 EXPECT_EQ(1, internal.At(1)); |
| 1986 EXPECT_EQ(2, internal.At(2)); |
| 1987 EXPECT_EQ(3, internal.At(3)); |
| 1988 |
| 1989 // A zero length copy. |
| 1990 ByteArray::Copy(internal, 0, b_4_5_6_7, 0); |
| 1991 EXPECT_EQ(0, internal.At(0)); |
| 1992 EXPECT_EQ(1, internal.At(1)); |
| 1993 EXPECT_EQ(2, internal.At(2)); |
| 1994 EXPECT_EQ(3, internal.At(3)); |
| 1995 |
| 1996 // Another zero length copy. |
| 1997 ByteArray::Copy(internal, 4, b_4_5_6_7, 0); |
| 1998 EXPECT_EQ(0, internal.At(0)); |
| 1999 EXPECT_EQ(1, internal.At(1)); |
| 2000 EXPECT_EQ(2, internal.At(2)); |
| 2001 EXPECT_EQ(3, internal.At(3)); |
| 2002 |
| 2003 // A one element copy. |
| 2004 ByteArray::Copy(internal, 0, b_4_5_6_7, 1); |
| 2005 EXPECT_EQ(4, internal.At(0)); |
| 2006 EXPECT_EQ(1, internal.At(1)); |
| 2007 EXPECT_EQ(2, internal.At(2)); |
| 2008 EXPECT_EQ(3, internal.At(3)); |
| 2009 |
| 2010 // A two element copy. |
| 2011 ByteArray::Copy(internal, 2, b_4_5_6_7, 2); |
| 2012 EXPECT_EQ(4, internal.At(0)); |
| 2013 EXPECT_EQ(1, internal.At(1)); |
| 2014 EXPECT_EQ(4, internal.At(2)); |
| 2015 EXPECT_EQ(5, internal.At(3)); |
| 2016 |
| 2017 // A three element copy. |
| 2018 ByteArray::Copy(internal, 1, b_4_5_6_7, 3); |
| 2019 EXPECT_EQ(4, internal.At(0)); |
| 2020 EXPECT_EQ(4, internal.At(1)); |
| 2021 EXPECT_EQ(5, internal.At(2)); |
| 2022 EXPECT_EQ(6, internal.At(3)); |
| 2023 |
| 2024 // A four element copy. |
| 2025 ByteArray::Copy(internal, 0, b_0_1_2_3, 4); |
| 2026 EXPECT_EQ(0, internal.At(0)); |
| 2027 EXPECT_EQ(1, internal.At(1)); |
| 2028 EXPECT_EQ(2, internal.At(2)); |
| 2029 EXPECT_EQ(3, internal.At(3)); |
| 2030 } |
| 2031 |
| 2032 |
| 2033 TEST_CASE(ByteArrayCopyExternal) { |
| 2034 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; |
| 2035 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; |
| 2036 |
2053 uint8_t data[] = { 0, 1, 2, 3 }; | 2037 uint8_t data[] = { 0, 1, 2, 3 }; |
2054 const ExternalByteArray& external = | 2038 const ExternalUint8Array& external = |
2055 ExternalByteArray::Handle( | 2039 ExternalUint8Array::Handle( |
2056 ExternalByteArray::New(data, ARRAY_SIZE(data), NULL, NULL)); | 2040 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); |
2057 EXPECT(!external.IsNull()); | 2041 EXPECT(!external.IsNull()); |
2058 EXPECT_EQ(4, external.Length()); | 2042 EXPECT_EQ(4, external.Length()); |
2059 EXPECT_EQ(0, external.At<uint8_t>(0)); | 2043 EXPECT_EQ(0, external.At(0)); |
2060 EXPECT_EQ(1, external.At<uint8_t>(1)); | 2044 EXPECT_EQ(1, external.At(1)); |
2061 EXPECT_EQ(2, external.At<uint8_t>(2)); | 2045 EXPECT_EQ(2, external.At(2)); |
2062 EXPECT_EQ(3, external.At<uint8_t>(3)); | 2046 EXPECT_EQ(3, external.At(3)); |
2063 | 2047 |
2064 // A zero length copy. | 2048 // A zero length copy. |
2065 ByteArray::Copy(external, 0, b_4_5_6_7, 0); | 2049 ByteArray::Copy(external, 0, b_4_5_6_7, 0); |
2066 EXPECT_EQ(0, external.At<uint8_t>(0)); | 2050 EXPECT_EQ(0, external.At(0)); |
2067 EXPECT_EQ(1, external.At<uint8_t>(1)); | 2051 EXPECT_EQ(1, external.At(1)); |
2068 EXPECT_EQ(2, external.At<uint8_t>(2)); | 2052 EXPECT_EQ(2, external.At(2)); |
2069 EXPECT_EQ(3, external.At<uint8_t>(3)); | 2053 EXPECT_EQ(3, external.At(3)); |
2070 | 2054 |
2071 // Another zero length copy. | 2055 // Another zero length copy. |
2072 ByteArray::Copy(external, 4, b_4_5_6_7, 0); | 2056 ByteArray::Copy(external, 4, b_4_5_6_7, 0); |
2073 EXPECT_EQ(0, external.At<uint8_t>(0)); | 2057 EXPECT_EQ(0, external.At(0)); |
2074 EXPECT_EQ(1, external.At<uint8_t>(1)); | 2058 EXPECT_EQ(1, external.At(1)); |
2075 EXPECT_EQ(2, external.At<uint8_t>(2)); | 2059 EXPECT_EQ(2, external.At(2)); |
2076 EXPECT_EQ(3, external.At<uint8_t>(3)); | 2060 EXPECT_EQ(3, external.At(3)); |
2077 | 2061 |
2078 // A one element copy. | 2062 // A one element copy. |
2079 ByteArray::Copy(external, 0, b_4_5_6_7, 1); | 2063 ByteArray::Copy(external, 0, b_4_5_6_7, 1); |
2080 EXPECT_EQ(4, external.At<uint8_t>(0)); | 2064 EXPECT_EQ(4, external.At(0)); |
2081 EXPECT_EQ(1, external.At<uint8_t>(1)); | 2065 EXPECT_EQ(1, external.At(1)); |
2082 EXPECT_EQ(2, external.At<uint8_t>(2)); | 2066 EXPECT_EQ(2, external.At(2)); |
2083 EXPECT_EQ(3, external.At<uint8_t>(3)); | 2067 EXPECT_EQ(3, external.At(3)); |
2084 | 2068 |
2085 // A two element copy. | 2069 // A two element copy. |
2086 ByteArray::Copy(external, 2, b_4_5_6_7, 2); | 2070 ByteArray::Copy(external, 2, b_4_5_6_7, 2); |
2087 EXPECT_EQ(4, external.At<uint8_t>(0)); | 2071 EXPECT_EQ(4, external.At(0)); |
2088 EXPECT_EQ(1, external.At<uint8_t>(1)); | 2072 EXPECT_EQ(1, external.At(1)); |
2089 EXPECT_EQ(4, external.At<uint8_t>(2)); | 2073 EXPECT_EQ(4, external.At(2)); |
2090 EXPECT_EQ(5, external.At<uint8_t>(3)); | 2074 EXPECT_EQ(5, external.At(3)); |
2091 | 2075 |
2092 // A three element copy. | 2076 // A three element copy. |
2093 ByteArray::Copy(external, 1, b_4_5_6_7, 3); | 2077 ByteArray::Copy(external, 1, b_4_5_6_7, 3); |
2094 EXPECT_EQ(4, external.At<uint8_t>(0)); | 2078 EXPECT_EQ(4, external.At(0)); |
2095 EXPECT_EQ(4, external.At<uint8_t>(1)); | 2079 EXPECT_EQ(4, external.At(1)); |
2096 EXPECT_EQ(5, external.At<uint8_t>(2)); | 2080 EXPECT_EQ(5, external.At(2)); |
2097 EXPECT_EQ(6, external.At<uint8_t>(3)); | 2081 EXPECT_EQ(6, external.At(3)); |
2098 | 2082 |
2099 // A four element copy. | 2083 // A four element copy. |
2100 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | 2084 ByteArray::Copy(external, 0, b_0_1_2_3, 4); |
2101 EXPECT_EQ(0, external.At<uint8_t>(0)); | 2085 EXPECT_EQ(0, external.At(0)); |
2102 EXPECT_EQ(1, external.At<uint8_t>(1)); | 2086 EXPECT_EQ(1, external.At(1)); |
2103 EXPECT_EQ(2, external.At<uint8_t>(2)); | 2087 EXPECT_EQ(2, external.At(2)); |
2104 EXPECT_EQ(3, external.At<uint8_t>(3)); | 2088 EXPECT_EQ(3, external.At(3)); |
2105 } | 2089 } |
2106 | 2090 |
2107 | 2091 |
2108 TEST_CASE(InternalByteArray) { | 2092 TEST_CASE(ByteArrayCopyInternalExternal) { |
2109 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; | |
2110 intptr_t data_length = ARRAY_SIZE(data); | |
2111 | |
2112 const InternalByteArray& array1 = | |
2113 InternalByteArray::Handle(InternalByteArray::New(data, data_length)); | |
2114 EXPECT(!array1.IsNull()); | |
2115 EXPECT_EQ(data_length, array1.Length()); | |
2116 EXPECT_EQ(-3, array1.At<int8_t>(0)); | |
2117 EXPECT_EQ(253, array1.At<uint8_t>(0)); | |
2118 EXPECT_EQ(-2, array1.At<int8_t>(1)); | |
2119 EXPECT_EQ(254, array1.At<uint8_t>(1)); | |
2120 EXPECT_EQ(-1, array1.At<int8_t>(2)); | |
2121 EXPECT_EQ(255, array1.At<uint8_t>(2)); | |
2122 EXPECT_EQ(0, array1.At<int8_t>(3)); | |
2123 EXPECT_EQ(0, array1.At<uint8_t>(3)); | |
2124 EXPECT_EQ(1, array1.At<int8_t>(4)); | |
2125 EXPECT_EQ(1, array1.At<uint8_t>(4)); | |
2126 EXPECT_EQ(2, array1.At<int8_t>(5)); | |
2127 EXPECT_EQ(2, array1.At<uint8_t>(5)); | |
2128 | |
2129 const InternalByteArray& array2 = | |
2130 InternalByteArray::Handle(InternalByteArray::New(data, data_length)); | |
2131 EXPECT(!array1.IsNull()); | |
2132 EXPECT_EQ(data_length, array2.Length()); | |
2133 for (intptr_t i = 0; i < array1.Length(); ++i) { | |
2134 EXPECT_EQ(array1.At<uint8_t>(i), array2.At<uint8_t>(i)); | |
2135 } | |
2136 | |
2137 array1.SetAt<uint8_t>(0, 123); | |
2138 array2.SetAt<int8_t>(2, -123); | |
2139 | |
2140 EXPECT(array1.At<uint8_t>(0) != array2.At<uint8_t>(0)); | |
2141 EXPECT(array1.At<uint8_t>(1) == array2.At<uint8_t>(1)); | |
2142 EXPECT(array1.At<uint8_t>(2) != array2.At<uint8_t>(2)); | |
2143 for (intptr_t i = 3; i < array1.Length(); ++i) { | |
2144 EXPECT(array1.At<uint8_t>(i) == array2.At<uint8_t>(i)); | |
2145 } | |
2146 } | |
2147 | |
2148 | |
2149 TEST_CASE(InternalByteArrayAlignedAccess) { | |
2150 const intptr_t length = 16; | |
2151 const InternalByteArray& byte_array = | |
2152 InternalByteArray::Handle(InternalByteArray::New(length)); | |
2153 EXPECT(!byte_array.IsNull()); | |
2154 EXPECT_EQ(length, byte_array.Length()); | |
2155 | |
2156 byte_array.SetAt<float>(0, FLT_MIN); | |
2157 byte_array.SetAt<float>(4, FLT_MAX); | |
2158 EXPECT_EQ(FLT_MIN, byte_array.At<float>(0)); | |
2159 EXPECT_EQ(FLT_MAX, byte_array.At<float>(4)); | |
2160 | |
2161 byte_array.SetAt<float>(0, 0.0f); | |
2162 EXPECT_EQ(0.0f, byte_array.At<float>(0)); | |
2163 byte_array.SetAt<float>(4, 1.0f); | |
2164 EXPECT_EQ(1.0f, byte_array.At<float>(4)); | |
2165 | |
2166 byte_array.SetAt<double>(0, DBL_MIN); | |
2167 EXPECT_EQ(DBL_MIN, byte_array.At<double>(0)); | |
2168 byte_array.SetAt<double>(8, DBL_MAX); | |
2169 EXPECT_EQ(DBL_MAX, byte_array.At<double>(8)); | |
2170 | |
2171 byte_array.SetAt<double>(0, 0.0); | |
2172 EXPECT_EQ(0.0, byte_array.At<double>(0)); | |
2173 byte_array.SetAt<double>(8, 1.0); | |
2174 EXPECT_EQ(1.0, byte_array.At<double>(8)); | |
2175 } | |
2176 | |
2177 | |
2178 TEST_CASE(InternalByteArrayUnlignedAccess) { | |
2179 const intptr_t length = 24; | |
2180 const InternalByteArray& byte_array = | |
2181 InternalByteArray::Handle(InternalByteArray::New(length)); | |
2182 EXPECT(!byte_array.IsNull()); | |
2183 EXPECT_EQ(length, byte_array.Length()); | |
2184 | |
2185 int float_misalign = 3; | |
2186 byte_array.SetUnalignedAt<float>(float_misalign, FLT_MIN); | |
2187 byte_array.SetUnalignedAt<float>(4 + float_misalign, FLT_MAX); | |
2188 EXPECT_EQ(FLT_MIN, byte_array.UnalignedAt<float>(float_misalign)); | |
2189 EXPECT_EQ(FLT_MAX, byte_array.UnalignedAt<float>(4 + float_misalign)); | |
2190 | |
2191 byte_array.SetUnalignedAt<float>(float_misalign, 0.0f); | |
2192 EXPECT_EQ(0.0f, byte_array.UnalignedAt<float>(float_misalign)); | |
2193 byte_array.SetUnalignedAt<float>(4 + float_misalign, 1.0f); | |
2194 EXPECT_EQ(1.0f, byte_array.UnalignedAt<float>(4 + float_misalign)); | |
2195 | |
2196 int double_misalign = 5; | |
2197 byte_array.SetUnalignedAt<double>(double_misalign, DBL_MIN); | |
2198 EXPECT_EQ(DBL_MIN, byte_array.UnalignedAt<double>(double_misalign)); | |
2199 byte_array.SetUnalignedAt<double>(8 + double_misalign, DBL_MAX); | |
2200 EXPECT_EQ(DBL_MAX, | |
2201 byte_array.UnalignedAt<double>(8 + double_misalign)); | |
2202 | |
2203 byte_array.SetUnalignedAt<double>(double_misalign, 0.0); | |
2204 EXPECT_EQ(0.0, byte_array.UnalignedAt<double>(double_misalign)); | |
2205 byte_array.SetUnalignedAt<double>(8 + double_misalign, 1.0); | |
2206 EXPECT_EQ(1.0, byte_array.UnalignedAt<double>(8 + double_misalign)); | |
2207 } | |
2208 | |
2209 | |
2210 TEST_CASE(InternalByteArrayCopy) { | |
2211 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | 2093 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; |
2212 const uint8_t b_4_5_6_7[] = { 4, 5, 6, 7 }; | 2094 |
2213 | 2095 const Uint8Array& internal = |
2214 const InternalByteArray& internal = | 2096 Uint8Array::Handle(Uint8Array::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); |
2215 InternalByteArray::Handle( | |
2216 InternalByteArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
2217 EXPECT(!internal.IsNull()); | 2097 EXPECT(!internal.IsNull()); |
2218 EXPECT_EQ(4, internal.Length()); | 2098 EXPECT_EQ(4, internal.Length()); |
2219 EXPECT_EQ(0, internal.At<uint8_t>(0)); | 2099 EXPECT_EQ(0, internal.At(0)); |
2220 EXPECT_EQ(1, internal.At<uint8_t>(1)); | 2100 EXPECT_EQ(1, internal.At(1)); |
2221 EXPECT_EQ(2, internal.At<uint8_t>(2)); | 2101 EXPECT_EQ(2, internal.At(2)); |
2222 EXPECT_EQ(3, internal.At<uint8_t>(3)); | 2102 EXPECT_EQ(3, internal.At(3)); |
2223 | |
2224 // A zero length copy. | |
2225 ByteArray::Copy(internal, 0, b_4_5_6_7, 0); | |
2226 EXPECT_EQ(0, internal.At<uint8_t>(0)); | |
2227 EXPECT_EQ(1, internal.At<uint8_t>(1)); | |
2228 EXPECT_EQ(2, internal.At<uint8_t>(2)); | |
2229 EXPECT_EQ(3, internal.At<uint8_t>(3)); | |
2230 | |
2231 // Another zero length copy. | |
2232 ByteArray::Copy(internal, 4, b_4_5_6_7, 0); | |
2233 EXPECT_EQ(0, internal.At<uint8_t>(0)); | |
2234 EXPECT_EQ(1, internal.At<uint8_t>(1)); | |
2235 EXPECT_EQ(2, internal.At<uint8_t>(2)); | |
2236 EXPECT_EQ(3, internal.At<uint8_t>(3)); | |
2237 | |
2238 // A one element copy. | |
2239 ByteArray::Copy(internal, 0, b_4_5_6_7, 1); | |
2240 EXPECT_EQ(4, internal.At<uint8_t>(0)); | |
2241 EXPECT_EQ(1, internal.At<uint8_t>(1)); | |
2242 EXPECT_EQ(2, internal.At<uint8_t>(2)); | |
2243 EXPECT_EQ(3, internal.At<uint8_t>(3)); | |
2244 | |
2245 // A two element copy. | |
2246 ByteArray::Copy(internal, 2, b_4_5_6_7, 2); | |
2247 EXPECT_EQ(4, internal.At<uint8_t>(0)); | |
2248 EXPECT_EQ(1, internal.At<uint8_t>(1)); | |
2249 EXPECT_EQ(4, internal.At<uint8_t>(2)); | |
2250 EXPECT_EQ(5, internal.At<uint8_t>(3)); | |
2251 | |
2252 // A three element copy. | |
2253 ByteArray::Copy(internal, 1, b_4_5_6_7, 3); | |
2254 EXPECT_EQ(4, internal.At<uint8_t>(0)); | |
2255 EXPECT_EQ(4, internal.At<uint8_t>(1)); | |
2256 EXPECT_EQ(5, internal.At<uint8_t>(2)); | |
2257 EXPECT_EQ(6, internal.At<uint8_t>(3)); | |
2258 | |
2259 // A four element copy. | |
2260 ByteArray::Copy(internal, 0, b_0_1_2_3, 4); | |
2261 EXPECT_EQ(0, internal.At<uint8_t>(0)); | |
2262 EXPECT_EQ(1, internal.At<uint8_t>(1)); | |
2263 EXPECT_EQ(2, internal.At<uint8_t>(2)); | |
2264 EXPECT_EQ(3, internal.At<uint8_t>(3)); | |
2265 } | |
2266 | |
2267 | |
2268 TEST_CASE(ByteArrayCopy) { | |
2269 const uint8_t b_0_1_2_3[] = { 0, 1, 2, 3 }; | |
2270 | |
2271 const InternalByteArray& internal = | |
2272 InternalByteArray::Handle( | |
2273 InternalByteArray::New(b_0_1_2_3, ARRAY_SIZE(b_0_1_2_3))); | |
2274 EXPECT(!internal.IsNull()); | |
2275 EXPECT_EQ(4, internal.Length()); | |
2276 EXPECT_EQ(0, internal.At<uint8_t>(0)); | |
2277 EXPECT_EQ(1, internal.At<uint8_t>(1)); | |
2278 EXPECT_EQ(2, internal.At<uint8_t>(2)); | |
2279 EXPECT_EQ(3, internal.At<uint8_t>(3)); | |
2280 | 2103 |
2281 uint8_t data[] = { 4, 5, 6, 7 }; | 2104 uint8_t data[] = { 4, 5, 6, 7 }; |
2282 const ExternalByteArray& external = | 2105 const ExternalUint8Array& external = |
2283 ExternalByteArray::Handle( | 2106 ExternalUint8Array::Handle( |
2284 ExternalByteArray::New(data, ARRAY_SIZE(data), NULL, NULL)); | 2107 ExternalUint8Array::New(data, ARRAY_SIZE(data), NULL, NULL)); |
2285 EXPECT(!external.IsNull()); | 2108 EXPECT(!external.IsNull()); |
2286 EXPECT_EQ(4, external.Length()); | 2109 EXPECT_EQ(4, external.Length()); |
2287 EXPECT_EQ(4, external.At<uint8_t>(0)); | 2110 EXPECT_EQ(4, external.At(0)); |
2288 EXPECT_EQ(5, external.At<uint8_t>(1)); | 2111 EXPECT_EQ(5, external.At(1)); |
2289 EXPECT_EQ(6, external.At<uint8_t>(2)); | 2112 EXPECT_EQ(6, external.At(2)); |
2290 EXPECT_EQ(7, external.At<uint8_t>(3)); | 2113 EXPECT_EQ(7, external.At(3)); |
2291 | 2114 |
2292 // A zero length copy. | 2115 // A zero length copy. |
2293 ByteArray::Copy(internal, 0, external, 0, 0); | 2116 ByteArray::Copy(internal, 0, external, 0, 0); |
2294 EXPECT_EQ(0, internal.At<uint8_t>(0)); | 2117 EXPECT_EQ(0, internal.At(0)); |
2295 EXPECT_EQ(1, internal.At<uint8_t>(1)); | 2118 EXPECT_EQ(1, internal.At(1)); |
2296 EXPECT_EQ(2, internal.At<uint8_t>(2)); | 2119 EXPECT_EQ(2, internal.At(2)); |
2297 EXPECT_EQ(3, internal.At<uint8_t>(3)); | 2120 EXPECT_EQ(3, internal.At(3)); |
2298 | 2121 |
2299 // A zero length copy, take 2. | 2122 // A zero length copy, take 2. |
2300 ByteArray::Copy(internal, 4, external, 0, 0); | 2123 ByteArray::Copy(internal, 4, external, 0, 0); |
2301 EXPECT_EQ(0, internal.At<uint8_t>(0)); | 2124 EXPECT_EQ(0, internal.At(0)); |
2302 EXPECT_EQ(1, internal.At<uint8_t>(1)); | 2125 EXPECT_EQ(1, internal.At(1)); |
2303 EXPECT_EQ(2, internal.At<uint8_t>(2)); | 2126 EXPECT_EQ(2, internal.At(2)); |
2304 EXPECT_EQ(3, internal.At<uint8_t>(3)); | 2127 EXPECT_EQ(3, internal.At(3)); |
2305 | 2128 |
2306 // A zero length copy, take 3. | 2129 // A zero length copy, take 3. |
2307 ByteArray::Copy(internal, 0, external, 4, 0); | 2130 ByteArray::Copy(internal, 0, external, 4, 0); |
2308 EXPECT_EQ(0, internal.At<uint8_t>(0)); | 2131 EXPECT_EQ(0, internal.At(0)); |
2309 EXPECT_EQ(1, internal.At<uint8_t>(1)); | 2132 EXPECT_EQ(1, internal.At(1)); |
2310 EXPECT_EQ(2, internal.At<uint8_t>(2)); | 2133 EXPECT_EQ(2, internal.At(2)); |
2311 EXPECT_EQ(3, internal.At<uint8_t>(3)); | 2134 EXPECT_EQ(3, internal.At(3)); |
2312 | 2135 |
2313 // A zero length copy, take 4. | 2136 // A zero length copy, take 4. |
2314 ByteArray::Copy(internal, 4, external, 4, 0); | 2137 ByteArray::Copy(internal, 4, external, 4, 0); |
2315 EXPECT_EQ(0, internal.At<uint8_t>(0)); | 2138 EXPECT_EQ(0, internal.At(0)); |
2316 EXPECT_EQ(1, internal.At<uint8_t>(1)); | 2139 EXPECT_EQ(1, internal.At(1)); |
2317 EXPECT_EQ(2, internal.At<uint8_t>(2)); | 2140 EXPECT_EQ(2, internal.At(2)); |
2318 EXPECT_EQ(3, internal.At<uint8_t>(3)); | 2141 EXPECT_EQ(3, internal.At(3)); |
2319 | 2142 |
2320 // A four element copy. | 2143 // A four element copy. |
2321 ByteArray::Copy(internal, 0, external, 0, 4); | 2144 ByteArray::Copy(internal, 0, external, 0, 4); |
2322 EXPECT_EQ(4, internal.At<uint8_t>(0)); | 2145 EXPECT_EQ(4, internal.At(0)); |
2323 EXPECT_EQ(5, internal.At<uint8_t>(1)); | 2146 EXPECT_EQ(5, internal.At(1)); |
2324 EXPECT_EQ(6, internal.At<uint8_t>(2)); | 2147 EXPECT_EQ(6, internal.At(2)); |
2325 EXPECT_EQ(7, internal.At<uint8_t>(3)); | 2148 EXPECT_EQ(7, internal.At(3)); |
2326 EXPECT_EQ(4, external.At<uint8_t>(0)); | 2149 EXPECT_EQ(4, external.At(0)); |
2327 EXPECT_EQ(5, external.At<uint8_t>(1)); | 2150 EXPECT_EQ(5, external.At(1)); |
2328 EXPECT_EQ(6, external.At<uint8_t>(2)); | 2151 EXPECT_EQ(6, external.At(2)); |
2329 EXPECT_EQ(7, external.At<uint8_t>(3)); | 2152 EXPECT_EQ(7, external.At(3)); |
2330 | 2153 |
2331 // A four element copy, take 2. | 2154 // A four element copy, take 2. |
2332 ByteArray::Copy(external, 0, b_0_1_2_3, 4); | 2155 ByteArray::Copy(external, 0, b_0_1_2_3, 4); |
2333 EXPECT_EQ(0, external.At<uint8_t>(0)); | 2156 EXPECT_EQ(0, external.At(0)); |
2334 EXPECT_EQ(1, external.At<uint8_t>(1)); | 2157 EXPECT_EQ(1, external.At(1)); |
2335 EXPECT_EQ(2, external.At<uint8_t>(2)); | 2158 EXPECT_EQ(2, external.At(2)); |
2336 EXPECT_EQ(3, external.At<uint8_t>(3)); | 2159 EXPECT_EQ(3, external.At(3)); |
2337 ByteArray::Copy(external, 0, internal, 0, 4); | 2160 ByteArray::Copy(external, 0, internal, 0, 4); |
2338 EXPECT_EQ(4, internal.At<uint8_t>(0)); | 2161 EXPECT_EQ(4, internal.At(0)); |
2339 EXPECT_EQ(5, internal.At<uint8_t>(1)); | 2162 EXPECT_EQ(5, internal.At(1)); |
2340 EXPECT_EQ(6, internal.At<uint8_t>(2)); | 2163 EXPECT_EQ(6, internal.At(2)); |
2341 EXPECT_EQ(7, internal.At<uint8_t>(3)); | 2164 EXPECT_EQ(7, internal.At(3)); |
2342 EXPECT_EQ(4, external.At<uint8_t>(0)); | 2165 EXPECT_EQ(4, external.At(0)); |
2343 EXPECT_EQ(5, external.At<uint8_t>(1)); | 2166 EXPECT_EQ(5, external.At(1)); |
2344 EXPECT_EQ(6, external.At<uint8_t>(2)); | 2167 EXPECT_EQ(6, external.At(2)); |
2345 EXPECT_EQ(7, external.At<uint8_t>(3)); | 2168 EXPECT_EQ(7, external.At(3)); |
2346 } | 2169 } |
2347 | 2170 |
2348 | 2171 |
2349 TEST_CASE(Script) { | 2172 TEST_CASE(Script) { |
2350 const char* url_chars = "builtin:test-case"; | 2173 const char* url_chars = "builtin:test-case"; |
2351 const char* source_chars = "This will not compile."; | 2174 const char* source_chars = "This will not compile."; |
2352 const String& url = String::Handle(String::New(url_chars)); | 2175 const String& url = String::Handle(String::New(url_chars)); |
2353 const String& source = String::Handle(String::New(source_chars)); | 2176 const String& source = String::Handle(String::New(source_chars)); |
2354 const Script& script = Script::Handle(Script::New(url, | 2177 const Script& script = Script::Handle(Script::New(url, |
2355 source, | 2178 source, |
2356 RawScript::kSource)); | 2179 RawScript::kSource)); |
2357 EXPECT(!script.IsNull()); | 2180 EXPECT(!script.IsNull()); |
2358 EXPECT(script.IsScript()); | 2181 EXPECT(script.IsScript()); |
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2822 cache.GetCheck(0, &test_class, &test_targ_0, &test_targ_1, &test_result); | 2645 cache.GetCheck(0, &test_class, &test_targ_0, &test_targ_1, &test_result); |
2823 EXPECT_EQ(empty_class.raw(), test_class.raw()); | 2646 EXPECT_EQ(empty_class.raw(), test_class.raw()); |
2824 EXPECT_EQ(targ_0.raw(), test_targ_0.raw()); | 2647 EXPECT_EQ(targ_0.raw(), test_targ_0.raw()); |
2825 EXPECT_EQ(targ_1.raw(), test_targ_1.raw()); | 2648 EXPECT_EQ(targ_1.raw(), test_targ_1.raw()); |
2826 EXPECT_EQ(Bool::True(), test_result.raw()); | 2649 EXPECT_EQ(Bool::True(), test_result.raw()); |
2827 } | 2650 } |
2828 | 2651 |
2829 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 2652 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
2830 | 2653 |
2831 } // namespace dart | 2654 } // namespace dart |
OLD | NEW |