| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 784 // We just initialized the VM, no heap allocation failure yet. | 784 // We just initialized the VM, no heap allocation failure yet. |
| 785 JSArray::Initialize(array, 0); | 785 JSArray::Initialize(array, 0); |
| 786 | 786 |
| 787 // Set array length to 0. | 787 // Set array length to 0. |
| 788 JSArray::SetLength(array, 0); | 788 JSArray::SetLength(array, 0); |
| 789 CHECK_EQ(Smi::FromInt(0), array->length()); | 789 CHECK_EQ(Smi::FromInt(0), array->length()); |
| 790 // Must be in fast mode. | 790 // Must be in fast mode. |
| 791 CHECK(array->HasFastSmiOrObjectElements()); | 791 CHECK(array->HasFastSmiOrObjectElements()); |
| 792 | 792 |
| 793 // array[length] = name. | 793 // array[length] = name. |
| 794 JSReceiver::SetElement(array, 0, name, SLOPPY).Check(); | 794 JSReceiver::SetElement(isolate, array, 0, name, SLOPPY).Check(); |
| 795 CHECK_EQ(Smi::FromInt(1), array->length()); | 795 CHECK_EQ(Smi::FromInt(1), array->length()); |
| 796 element = i::Object::GetElement(isolate, array, 0).ToHandleChecked(); | 796 element = i::Object::GetElement(isolate, array, 0).ToHandleChecked(); |
| 797 CHECK_EQ(*element, *name); | 797 CHECK_EQ(*element, *name); |
| 798 | 798 |
| 799 // Set array length with larger than smi value. | 799 // Set array length with larger than smi value. |
| 800 JSArray::SetLength(array, static_cast<uint32_t>(Smi::kMaxValue) + 1); | 800 JSArray::SetLength(array, static_cast<uint32_t>(Smi::kMaxValue) + 1); |
| 801 | 801 |
| 802 uint32_t int_length = 0; | 802 uint32_t int_length = 0; |
| 803 CHECK(array->length()->ToArrayIndex(&int_length)); | 803 CHECK(array->length()->ToArrayIndex(&int_length)); |
| 804 CHECK_EQ(static_cast<uint32_t>(Smi::kMaxValue) + 1, int_length); | 804 CHECK_EQ(static_cast<uint32_t>(Smi::kMaxValue) + 1, int_length); |
| 805 CHECK(array->HasDictionaryElements()); // Must be in slow mode. | 805 CHECK(array->HasDictionaryElements()); // Must be in slow mode. |
| 806 | 806 |
| 807 // array[length] = name. | 807 // array[length] = name. |
| 808 JSReceiver::SetElement(array, int_length, name, SLOPPY).Check(); | 808 JSReceiver::SetElement(isolate, array, int_length, name, SLOPPY).Check(); |
| 809 uint32_t new_int_length = 0; | 809 uint32_t new_int_length = 0; |
| 810 CHECK(array->length()->ToArrayIndex(&new_int_length)); | 810 CHECK(array->length()->ToArrayIndex(&new_int_length)); |
| 811 CHECK_EQ(static_cast<double>(int_length), new_int_length - 1); | 811 CHECK_EQ(static_cast<double>(int_length), new_int_length - 1); |
| 812 element = Object::GetElement(isolate, array, int_length).ToHandleChecked(); | 812 element = Object::GetElement(isolate, array, int_length).ToHandleChecked(); |
| 813 CHECK_EQ(*element, *name); | 813 CHECK_EQ(*element, *name); |
| 814 element = Object::GetElement(isolate, array, 0).ToHandleChecked(); | 814 element = Object::GetElement(isolate, array, 0).ToHandleChecked(); |
| 815 CHECK_EQ(*element, *name); | 815 CHECK_EQ(*element, *name); |
| 816 } | 816 } |
| 817 | 817 |
| 818 | 818 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 829 Handle<JSObject> obj = factory->NewJSObject(constructor); | 829 Handle<JSObject> obj = factory->NewJSObject(constructor); |
| 830 Handle<String> first = factory->InternalizeUtf8String("first"); | 830 Handle<String> first = factory->InternalizeUtf8String("first"); |
| 831 Handle<String> second = factory->InternalizeUtf8String("second"); | 831 Handle<String> second = factory->InternalizeUtf8String("second"); |
| 832 | 832 |
| 833 Handle<Smi> one(Smi::FromInt(1), isolate); | 833 Handle<Smi> one(Smi::FromInt(1), isolate); |
| 834 Handle<Smi> two(Smi::FromInt(2), isolate); | 834 Handle<Smi> two(Smi::FromInt(2), isolate); |
| 835 | 835 |
| 836 JSReceiver::SetProperty(obj, first, one, SLOPPY).Check(); | 836 JSReceiver::SetProperty(obj, first, one, SLOPPY).Check(); |
| 837 JSReceiver::SetProperty(obj, second, two, SLOPPY).Check(); | 837 JSReceiver::SetProperty(obj, second, two, SLOPPY).Check(); |
| 838 | 838 |
| 839 JSReceiver::SetElement(obj, 0, first, SLOPPY).Check(); | 839 JSReceiver::SetElement(isolate, obj, 0, first, SLOPPY).Check(); |
| 840 JSReceiver::SetElement(obj, 1, second, SLOPPY).Check(); | 840 JSReceiver::SetElement(isolate, obj, 1, second, SLOPPY).Check(); |
| 841 | 841 |
| 842 // Make the clone. | 842 // Make the clone. |
| 843 Handle<Object> value1, value2; | 843 Handle<Object> value1, value2; |
| 844 Handle<JSObject> clone = factory->CopyJSObject(obj); | 844 Handle<JSObject> clone = factory->CopyJSObject(obj); |
| 845 CHECK(!clone.is_identical_to(obj)); | 845 CHECK(!clone.is_identical_to(obj)); |
| 846 | 846 |
| 847 value1 = Object::GetElement(isolate, obj, 0).ToHandleChecked(); | 847 value1 = Object::GetElement(isolate, obj, 0).ToHandleChecked(); |
| 848 value2 = Object::GetElement(isolate, clone, 0).ToHandleChecked(); | 848 value2 = Object::GetElement(isolate, clone, 0).ToHandleChecked(); |
| 849 CHECK_EQ(*value1, *value2); | 849 CHECK_EQ(*value1, *value2); |
| 850 value1 = Object::GetElement(isolate, obj, 1).ToHandleChecked(); | 850 value1 = Object::GetElement(isolate, obj, 1).ToHandleChecked(); |
| 851 value2 = Object::GetElement(isolate, clone, 1).ToHandleChecked(); | 851 value2 = Object::GetElement(isolate, clone, 1).ToHandleChecked(); |
| 852 CHECK_EQ(*value1, *value2); | 852 CHECK_EQ(*value1, *value2); |
| 853 | 853 |
| 854 value1 = Object::GetProperty(obj, first).ToHandleChecked(); | 854 value1 = Object::GetProperty(obj, first).ToHandleChecked(); |
| 855 value2 = Object::GetProperty(clone, first).ToHandleChecked(); | 855 value2 = Object::GetProperty(clone, first).ToHandleChecked(); |
| 856 CHECK_EQ(*value1, *value2); | 856 CHECK_EQ(*value1, *value2); |
| 857 value1 = Object::GetProperty(obj, second).ToHandleChecked(); | 857 value1 = Object::GetProperty(obj, second).ToHandleChecked(); |
| 858 value2 = Object::GetProperty(clone, second).ToHandleChecked(); | 858 value2 = Object::GetProperty(clone, second).ToHandleChecked(); |
| 859 CHECK_EQ(*value1, *value2); | 859 CHECK_EQ(*value1, *value2); |
| 860 | 860 |
| 861 // Flip the values. | 861 // Flip the values. |
| 862 JSReceiver::SetProperty(clone, first, two, SLOPPY).Check(); | 862 JSReceiver::SetProperty(clone, first, two, SLOPPY).Check(); |
| 863 JSReceiver::SetProperty(clone, second, one, SLOPPY).Check(); | 863 JSReceiver::SetProperty(clone, second, one, SLOPPY).Check(); |
| 864 | 864 |
| 865 JSReceiver::SetElement(clone, 0, second, SLOPPY).Check(); | 865 JSReceiver::SetElement(isolate, clone, 0, second, SLOPPY).Check(); |
| 866 JSReceiver::SetElement(clone, 1, first, SLOPPY).Check(); | 866 JSReceiver::SetElement(isolate, clone, 1, first, SLOPPY).Check(); |
| 867 | 867 |
| 868 value1 = Object::GetElement(isolate, obj, 1).ToHandleChecked(); | 868 value1 = Object::GetElement(isolate, obj, 1).ToHandleChecked(); |
| 869 value2 = Object::GetElement(isolate, clone, 0).ToHandleChecked(); | 869 value2 = Object::GetElement(isolate, clone, 0).ToHandleChecked(); |
| 870 CHECK_EQ(*value1, *value2); | 870 CHECK_EQ(*value1, *value2); |
| 871 value1 = Object::GetElement(isolate, obj, 0).ToHandleChecked(); | 871 value1 = Object::GetElement(isolate, obj, 0).ToHandleChecked(); |
| 872 value2 = Object::GetElement(isolate, clone, 1).ToHandleChecked(); | 872 value2 = Object::GetElement(isolate, clone, 1).ToHandleChecked(); |
| 873 CHECK_EQ(*value1, *value2); | 873 CHECK_EQ(*value1, *value2); |
| 874 | 874 |
| 875 value1 = Object::GetProperty(obj, second).ToHandleChecked(); | 875 value1 = Object::GetProperty(obj, second).ToHandleChecked(); |
| 876 value2 = Object::GetProperty(clone, first).ToHandleChecked(); | 876 value2 = Object::GetProperty(clone, first).ToHandleChecked(); |
| (...skipping 5171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6048 array->address(), | 6048 array->address(), |
| 6049 array->address() + array->Size()); | 6049 array->address() + array->Size()); |
| 6050 DCHECK(reinterpret_cast<void*>(buffer->Get(1)) == | 6050 DCHECK(reinterpret_cast<void*>(buffer->Get(1)) == |
| 6051 HeapObject::RawField(heap->empty_fixed_array(), | 6051 HeapObject::RawField(heap->empty_fixed_array(), |
| 6052 FixedArrayBase::kLengthOffset)); | 6052 FixedArrayBase::kLengthOffset)); |
| 6053 DCHECK(reinterpret_cast<void*>(buffer->Get(2)) == | 6053 DCHECK(reinterpret_cast<void*>(buffer->Get(2)) == |
| 6054 HeapObject::RawField(heap->empty_fixed_array(), | 6054 HeapObject::RawField(heap->empty_fixed_array(), |
| 6055 FixedArrayBase::kLengthOffset)); | 6055 FixedArrayBase::kLengthOffset)); |
| 6056 delete buffer; | 6056 delete buffer; |
| 6057 } | 6057 } |
| OLD | NEW |