From 48f411a22518cddf43a94a98eb9b8209f3f15cef Mon Sep 17 00:00:00 2001 From: "danno@chromium.org" Date: Fri, 12 Aug 2011 13:54:27 +0000 Subject: [PATCH] Change JSObject elements to be of type FixedArrayBase R=kmillikin@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org/7617010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8927 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/objects-inl.h | 6 +++--- src/objects.cc | 6 +++--- src/objects.h | 7 ++++--- src/runtime.cc | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/objects-inl.h b/src/objects-inl.h index 4aa59fc..c5fda89 100644 --- a/src/objects-inl.h +++ b/src/objects-inl.h @@ -1343,14 +1343,14 @@ int HeapNumber::get_sign() { ACCESSORS(JSObject, properties, FixedArray, kPropertiesOffset) -HeapObject* JSObject::elements() { +FixedArrayBase* JSObject::elements() { Object* array = READ_FIELD(this, kElementsOffset); ASSERT(array->HasValidElements()); - return reinterpret_cast(array); + return static_cast(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())); diff --git a/src/objects.cc b/src/objects.cc index 4424b62..d68b872 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -8407,14 +8407,14 @@ MaybeObject* JSObject::SetDictionaryElement(uint32_t index, 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(&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); } diff --git a/src/objects.h b/src/objects.h index f4f079e..c963f6f 100644 --- a/src/objects.h +++ b/src/objects.h @@ -635,10 +635,11 @@ enum CompareResult { 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 @@ class JSObject: public JSReceiver { // 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(); diff --git a/src/runtime.cc b/src/runtime.cc index 6d41760..ff099fc 100644 --- a/src/runtime.cc +++ b/src/runtime.cc @@ -9680,7 +9680,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_MoveArrayContents) { 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()) { -- 2.7.4