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 1741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1752 } | 1752 } |
1753 EXPECT_EQ(10, array.Length()); | 1753 EXPECT_EQ(10, array.Length()); |
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 remainder array of length 1. | 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 Object& obj = Object::Handle(); | 1765 Object& obj = Object::Handle(); |
1765 uword addr = 0; | 1766 uword addr = 0; |
1766 intptr_t used_size = 0; | 1767 intptr_t used_size = 0; |
1767 | 1768 |
1768 array = GrowableObjectArray::New(kArrayLen + 1); | 1769 array = GrowableObjectArray::New(kArrayLen + 1); |
1769 EXPECT_EQ(kArrayLen + 1, array.Capacity()); | 1770 EXPECT_EQ(kArrayLen + 1, array.Capacity()); |
1770 EXPECT_EQ(0, array.Length()); | 1771 EXPECT_EQ(0, array.Length()); |
1771 for (intptr_t i = 0; i < 2; i++) { | 1772 for (intptr_t i = 0; i < 2; i++) { |
1772 value = Smi::New(i); | 1773 value = Smi::New(i); |
1773 array.Add(value); | 1774 array.Add(value); |
1774 } | 1775 } |
1775 used_size = Array::InstanceSize(array.Length()); | 1776 used_size = Array::InstanceSize(array.Length()); |
1776 new_array = Array::MakeArray(array); | 1777 new_array = Array::MakeArray(array); |
1777 addr = RawObject::ToAddr(new_array.raw()); | 1778 addr = RawObject::ToAddr(new_array.raw()); |
1778 obj = RawObject::FromAddr(addr); | 1779 obj = RawObject::FromAddr(addr); |
1779 EXPECT(obj.IsArray()); | 1780 EXPECT(obj.IsArray()); |
1780 new_array ^= obj.raw(); | 1781 new_array ^= obj.raw(); |
1781 EXPECT_EQ(2, new_array.Length()); | 1782 EXPECT_EQ(2, new_array.Length()); |
1782 addr += used_size; | 1783 addr += used_size; |
1783 obj = RawObject::FromAddr(addr); | 1784 obj = RawObject::FromAddr(addr); |
1784 EXPECT(obj.IsArray()); | 1785 EXPECT(obj.IsInt8Array()); |
1785 new_array ^= obj.raw(); | 1786 left_over_array ^= obj.raw(); |
1786 EXPECT_EQ(0, new_array.Length()); | 1787 EXPECT_EQ((2 * kWordSize), left_over_array.Length()); |
1787 | 1788 |
1788 // 2. Should produce an array of length 3 and a remainder object. | 1789 // 2. Should produce an array of length 3 and a left over int8 array. |
1789 array = GrowableObjectArray::New(kArrayLen); | 1790 array = GrowableObjectArray::New(kArrayLen); |
1790 EXPECT_EQ(kArrayLen, array.Capacity()); | 1791 EXPECT_EQ(kArrayLen, array.Capacity()); |
1791 EXPECT_EQ(0, array.Length()); | 1792 EXPECT_EQ(0, array.Length()); |
1792 for (intptr_t i = 0; i < 3; i++) { | 1793 for (intptr_t i = 0; i < 3; i++) { |
1793 value = Smi::New(i); | 1794 value = Smi::New(i); |
1794 array.Add(value); | 1795 array.Add(value); |
1795 } | 1796 } |
1796 used_size = Array::InstanceSize(array.Length()); | 1797 used_size = Array::InstanceSize(array.Length()); |
1797 new_array = Array::MakeArray(array); | 1798 new_array = Array::MakeArray(array); |
1798 addr = RawObject::ToAddr(new_array.raw()); | 1799 addr = RawObject::ToAddr(new_array.raw()); |
1799 obj = RawObject::FromAddr(addr); | 1800 obj = RawObject::FromAddr(addr); |
1800 EXPECT(obj.IsArray()); | 1801 EXPECT(obj.IsArray()); |
1801 new_array ^= obj.raw(); | 1802 new_array ^= obj.raw(); |
1802 EXPECT_EQ(3, new_array.Length()); | 1803 EXPECT_EQ(3, new_array.Length()); |
1803 addr += used_size; | 1804 addr += used_size; |
1804 obj = RawObject::FromAddr(addr); | 1805 obj = RawObject::FromAddr(addr); |
1805 EXPECT(!obj.IsArray()); | 1806 EXPECT(obj.IsInt8Array()); |
| 1807 left_over_array ^= obj.raw(); |
| 1808 EXPECT_EQ(0, left_over_array.Length()); |
1806 | 1809 |
1807 // 3. Should produce an array of length 1 and a remainder array of length 2. | 1810 // 3. Should produce an array of length 1 and a left over int8 array. |
1808 array = GrowableObjectArray::New(kArrayLen + 3); | 1811 array = GrowableObjectArray::New(kArrayLen + 3); |
1809 EXPECT_EQ((kArrayLen + 3), array.Capacity()); | 1812 EXPECT_EQ((kArrayLen + 3), array.Capacity()); |
1810 EXPECT_EQ(0, array.Length()); | 1813 EXPECT_EQ(0, array.Length()); |
1811 for (intptr_t i = 0; i < 1; i++) { | 1814 for (intptr_t i = 0; i < 1; i++) { |
1812 value = Smi::New(i); | 1815 value = Smi::New(i); |
1813 array.Add(value); | 1816 array.Add(value); |
1814 } | 1817 } |
1815 used_size = Array::InstanceSize(array.Length()); | 1818 used_size = Array::InstanceSize(array.Length()); |
1816 new_array = Array::MakeArray(array); | 1819 new_array = Array::MakeArray(array); |
1817 addr = RawObject::ToAddr(new_array.raw()); | 1820 addr = RawObject::ToAddr(new_array.raw()); |
1818 obj = RawObject::FromAddr(addr); | 1821 obj = RawObject::FromAddr(addr); |
1819 EXPECT(obj.IsArray()); | 1822 EXPECT(obj.IsArray()); |
1820 new_array ^= obj.raw(); | 1823 new_array ^= obj.raw(); |
1821 EXPECT_EQ(1, new_array.Length()); | 1824 EXPECT_EQ(1, new_array.Length()); |
1822 addr += used_size; | 1825 addr += used_size; |
1823 obj = RawObject::FromAddr(addr); | 1826 obj = RawObject::FromAddr(addr); |
1824 EXPECT(obj.IsArray()); | 1827 EXPECT(obj.IsInt8Array()); |
1825 new_array ^= obj.raw(); | 1828 left_over_array ^= obj.raw(); |
1826 EXPECT_EQ(4, new_array.Length()); | 1829 EXPECT_EQ((6 * kWordSize), left_over_array.Length()); |
1827 } | 1830 } |
1828 | 1831 |
1829 | 1832 |
1830 TEST_CASE(InternalByteArray) { | 1833 TEST_CASE(InternalByteArray) { |
1831 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; | 1834 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; |
1832 intptr_t data_length = ARRAY_SIZE(data); | 1835 intptr_t data_length = ARRAY_SIZE(data); |
1833 | 1836 |
1834 const Int8Array& int8_array = | 1837 const Int8Array& int8_array = |
1835 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), | 1838 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), |
1836 data_length)); | 1839 data_length)); |
(...skipping 1716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3553 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); | 3556 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); |
3554 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); | 3557 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); |
3555 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); | 3558 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); |
3556 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); | 3559 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); |
3557 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); | 3560 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); |
3558 } | 3561 } |
3559 | 3562 |
3560 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 3563 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
3561 | 3564 |
3562 } // namespace dart | 3565 } // namespace dart |
OLD | NEW |