| 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 |