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 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 object. |
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.IsArray()); |
1806 | 1807 |
1807 // 3. Should produce an array of length 1 and a remainder array of length 2. | 1808 // 3. Should produce an array of length 1 and a left over array. |
1808 array = GrowableObjectArray::New(kArrayLen + 3); | 1809 array = GrowableObjectArray::New(kArrayLen + 3); |
1809 EXPECT_EQ((kArrayLen + 3), array.Capacity()); | 1810 EXPECT_EQ((kArrayLen + 3), array.Capacity()); |
1810 EXPECT_EQ(0, array.Length()); | 1811 EXPECT_EQ(0, array.Length()); |
1811 for (intptr_t i = 0; i < 1; i++) { | 1812 for (intptr_t i = 0; i < 1; i++) { |
1812 value = Smi::New(i); | 1813 value = Smi::New(i); |
1813 array.Add(value); | 1814 array.Add(value); |
1814 } | 1815 } |
1815 used_size = Array::InstanceSize(array.Length()); | 1816 used_size = Array::InstanceSize(array.Length()); |
1816 new_array = Array::MakeArray(array); | 1817 new_array = Array::MakeArray(array); |
1817 addr = RawObject::ToAddr(new_array.raw()); | 1818 addr = RawObject::ToAddr(new_array.raw()); |
1818 obj = RawObject::FromAddr(addr); | 1819 obj = RawObject::FromAddr(addr); |
1819 EXPECT(obj.IsArray()); | 1820 EXPECT(obj.IsArray()); |
1820 new_array ^= obj.raw(); | 1821 new_array ^= obj.raw(); |
1821 EXPECT_EQ(1, new_array.Length()); | 1822 EXPECT_EQ(1, new_array.Length()); |
1822 addr += used_size; | 1823 addr += used_size; |
1823 obj = RawObject::FromAddr(addr); | 1824 obj = RawObject::FromAddr(addr); |
1824 EXPECT(obj.IsArray()); | 1825 EXPECT(obj.IsInt8Array()); |
1825 new_array ^= obj.raw(); | 1826 left_over_array ^= obj.raw(); |
1826 EXPECT_EQ(4, new_array.Length()); | 1827 EXPECT_EQ((6 * kWordSize), left_over_array.Length()); |
1827 } | 1828 } |
1828 | 1829 |
1829 | 1830 |
1830 TEST_CASE(InternalByteArray) { | 1831 TEST_CASE(InternalByteArray) { |
1831 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; | 1832 uint8_t data[] = { 253, 254, 255, 0, 1, 2, 3, 4 }; |
1832 intptr_t data_length = ARRAY_SIZE(data); | 1833 intptr_t data_length = ARRAY_SIZE(data); |
1833 | 1834 |
1834 const Int8Array& int8_array = | 1835 const Int8Array& int8_array = |
1835 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), | 1836 Int8Array::Handle(Int8Array::New(reinterpret_cast<int8_t*>(data), |
1836 data_length)); | 1837 data_length)); |
(...skipping 1716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3553 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); | 3554 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); |
3554 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); | 3555 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); |
3555 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); | 3556 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); |
3556 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); | 3557 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); |
3557 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); | 3558 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); |
3558 } | 3559 } |
3559 | 3560 |
3560 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 3561 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
3561 | 3562 |
3562 } // namespace dart | 3563 } // namespace dart |
OLD | NEW |