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

Reply via email to