Changeset 64937 in webkit for trunk/JavaScriptCore/runtime/JSArray.h
- Timestamp:
- Aug 7, 2010, 10:29:38 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/JSArray.h
r64602 r64937 78 78 static JS_EXPORTDATA const ClassInfo info; 79 79 80 unsigned length() const { return arrayStorage()->m_length; }80 unsigned length() const { return m_storage->m_length; } 81 81 void setLength(unsigned); // OK to use on new arrays, but not if it might be a RegExpMatchArray. 82 82 … … 91 91 void unshiftCount(ExecState*, int count); 92 92 93 bool canGetIndex(unsigned i) { return i < m_vectorLength && m_ vector[i]; }93 bool canGetIndex(unsigned i) { return i < m_vectorLength && m_storage->m_vector[i]; } 94 94 JSValue getIndex(unsigned i) 95 95 { 96 96 ASSERT(canGetIndex(i)); 97 return m_ vector[i];97 return m_storage->m_vector[i]; 98 98 } 99 99 … … 103 103 ASSERT(canSetIndex(i)); 104 104 105 JSValue& x = m_ vector[i];105 JSValue& x = m_storage->m_vector[i]; 106 106 if (!x) { 107 ArrayStorage *storage = arrayStorage();107 ArrayStorage *storage = m_storage; 108 108 ++storage->m_numValuesInVector; 109 109 if (i >= storage->m_length) … … 116 116 { 117 117 ASSERT(canSetIndex(i)); 118 ArrayStorage *storage = arrayStorage();118 ArrayStorage *storage = m_storage; 119 119 #if CHECK_ARRAY_CONSISTENCY 120 120 ASSERT(storage->m_inCompactInitialization); … … 144 144 void setSubclassData(void*); 145 145 146 inline ArrayStorage *arrayStorage() const147 {148 return reinterpret_cast<ArrayStorage*>(reinterpret_cast<char*>(m_vector) - (sizeof(ArrayStorage) - sizeof(JSValue)));149 }150 151 inline void setArrayStorage(ArrayStorage *storage)152 {153 m_vector = &storage->m_vector[0];154 }155 156 146 private: 157 147 virtual const ClassInfo* classInfo() const { return &info; } … … 171 161 unsigned m_vectorLength; // The valid length of m_vector 172 162 int m_indexBias; // The number of JSValue sized blocks before ArrayStorage. 173 JSValue* m_vector; // Copy of ArrayStorage.m_vector. Used for quick vector access and to materialize ArrayStorage ptr.163 ArrayStorage *m_storage; 174 164 }; 175 165 … … 197 187 JSObject::markChildrenDirect(markStack); 198 188 199 ArrayStorage* storage = arrayStorage();189 ArrayStorage* storage = m_storage; 200 190 201 191 unsigned usedVectorLength = std::min(storage->m_length, m_vectorLength);
Note:
See TracChangeset
for help on using the changeset viewer.