Revision: 8927 Author: [email protected] Date: Fri Aug 12 06:54:27 2011 Log: Change JSObject elements to be of type FixedArrayBase
[email protected] BUG=none TEST=none Review URL: http://codereview.chromium.org/7617010 http://code.google.com/p/v8/source/detail?r=8927 Modified: /branches/bleeding_edge/src/objects-inl.h /branches/bleeding_edge/src/objects.cc /branches/bleeding_edge/src/objects.h /branches/bleeding_edge/src/runtime.cc ======================================= --- /branches/bleeding_edge/src/objects-inl.h Thu Aug 11 09:29:28 2011 +++ /branches/bleeding_edge/src/objects-inl.h Fri Aug 12 06:54:27 2011 @@ -1343,14 +1343,14 @@ ACCESSORS(JSObject, properties, FixedArray, kPropertiesOffset) -HeapObject* JSObject::elements() { +FixedArrayBase* JSObject::elements() { Object* array = READ_FIELD(this, kElementsOffset); ASSERT(array->HasValidElements()); - return reinterpret_cast<HeapObject*>(array); + return static_cast<FixedArrayBase*>(array); } -void JSObject::set_elements(HeapObject* value, WriteBarrierMode mode) { +void JSObject::set_elements(FixedArrayBase* value, WriteBarrierMode mode) { ASSERT(map()->has_fast_elements() == (value->map() == GetHeap()->fixed_array_map() || value->map() == GetHeap()->fixed_cow_array_map())); ======================================= --- /branches/bleeding_edge/src/objects.cc Thu Aug 11 06:56:09 2011 +++ /branches/bleeding_edge/src/objects.cc Fri Aug 12 06:54:27 2011 @@ -8407,14 +8407,14 @@ return isolate->Throw(*error); } } - Object* new_dictionary; + FixedArrayBase* new_dictionary; MaybeObject* maybe = dictionary->AtNumberPut(index, value); - if (!maybe->ToObject(&new_dictionary)) return maybe; + if (!maybe->To<FixedArrayBase>(&new_dictionary)) return maybe; if (dictionary != NumberDictionary::cast(new_dictionary)) { if (is_arguments) { elements->set(1, new_dictionary); } else { - set_elements(HeapObject::cast(new_dictionary)); + set_elements(new_dictionary); } dictionary = NumberDictionary::cast(new_dictionary); } ======================================= --- /branches/bleeding_edge/src/objects.h Thu Aug 11 09:29:28 2011 +++ /branches/bleeding_edge/src/objects.h Fri Aug 12 06:54:27 2011 @@ -635,10 +635,11 @@ WriteBarrierMode mode = UPDATE_WRITE_BARRIER); \ +class DictionaryElementsAccessor; class ElementsAccessor; -class StringStream; +class FixedArrayBase; class ObjectVisitor; -class DictionaryElementsAccessor; +class StringStream; struct ValueInfo : public Malloced { ValueInfo() : type(FIRST_TYPE), ptr(NULL), str(NULL), number(0) { } @@ -1493,7 +1494,7 @@ // In the slow mode the elements is either a NumberDictionary, an // ExternalArray, or a FixedArray parameter map for a (non-strict) // arguments object. - DECL_ACCESSORS(elements, HeapObject) + DECL_ACCESSORS(elements, FixedArrayBase) inline void initialize_elements(); MUST_USE_RESULT inline MaybeObject* ResetElements(); inline ElementsKind GetElementsKind(); ======================================= --- /branches/bleeding_edge/src/runtime.cc Thu Aug 11 09:29:28 2011 +++ /branches/bleeding_edge/src/runtime.cc Fri Aug 12 06:54:27 2011 @@ -9680,7 +9680,7 @@ ASSERT(args.length() == 2); CONVERT_CHECKED(JSArray, from, args[0]); CONVERT_CHECKED(JSArray, to, args[1]); - HeapObject* new_elements = from->elements(); + FixedArrayBase* new_elements = from->elements(); MaybeObject* maybe_new_map; if (new_elements->map() == isolate->heap()->fixed_array_map() || new_elements->map() == isolate->heap()->fixed_cow_array_map()) { -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
