Changeset 49065 in webkit for trunk/JavaScriptCore/runtime/JSArray.h
- Timestamp:
- Oct 3, 2009, 10:01:14 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/JSArray.h
r48836 r49065 30 30 struct ArrayStorage { 31 31 unsigned m_length; 32 unsigned m_vectorLength;33 32 unsigned m_numValuesInVector; 34 33 SparseArrayValueMap* m_sparseValueMap; … … 64 63 JSValue pop(); 65 64 66 bool canGetIndex(unsigned i) { return i < m_ fastAccessCutoff; }65 bool canGetIndex(unsigned i) { return i < m_vectorLength && m_storage->m_vector[i]; } 67 66 JSValue getIndex(unsigned i) 68 67 { … … 71 70 } 72 71 73 bool canSetIndex(unsigned i) { return i < m_ fastAccessCutoff; }74 JSValuesetIndex(unsigned i, JSValue v)72 bool canSetIndex(unsigned i) { return i < m_vectorLength; } 73 void setIndex(unsigned i, JSValue v) 75 74 { 76 75 ASSERT(canSetIndex(i)); 77 return m_storage->m_vector[i] = v; 76 JSValue& x = m_storage->m_vector[i]; 77 if (!x) { 78 ++m_storage->m_numValuesInVector; 79 if (i >= m_storage->m_length) 80 m_storage->m_length = i + 1; 81 } 82 x = v; 78 83 } 79 84 … … 111 116 void checkConsistency(ConsistencyCheckType = NormalConsistencyCheck); 112 117 113 unsigned m_ fastAccessCutoff;118 unsigned m_vectorLength; 114 119 ArrayStorage* m_storage; 115 120 }; … … 140 145 ArrayStorage* storage = m_storage; 141 146 142 unsigned usedVectorLength = std::min(storage->m_length, storage->m_vectorLength);147 unsigned usedVectorLength = std::min(storage->m_length, m_vectorLength); 143 148 markStack.appendValues(storage->m_vector, usedVectorLength, MayContainNullValues); 144 149
Note:
See TracChangeset
for help on using the changeset viewer.