Changeset 1821 in webkit for trunk/JavaScriptCore/kjs/array_object.cpp
- Timestamp:
- Aug 14, 2002, 5:59:18 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/array_object.cpp
r1799 r1821 44 44 , length(initialLength) 45 45 , capacity(length) 46 , storage(length ? new Undefined[length] : 0) 47 { 46 , storage(length ? new (ValueImp *)[length] : 0) 47 { 48 unsigned l = length; 49 for (unsigned i = 0; i < l; ++i) { 50 storage[i] = Undefined().imp(); 51 } 48 52 } 49 53 … … 52 56 , length(list.size()) 53 57 , capacity(length) 54 , storage(length ? new Undefined[length] : 0)58 , storage(length ? new (ValueImp *)[length] : 0) 55 59 { 56 60 ListIterator it = list.begin(); 57 61 const unsigned l = length; 58 62 for (unsigned i = 0; i < l; ++i) { 59 storage[i] = it++;63 storage[i] = (it++).imp(); 60 64 } 61 65 } … … 76 80 if (index >= length) 77 81 return Undefined(); 78 return storage[index];82 return Value(storage[index]); 79 83 } 80 84 … … 86 90 if (index >= length) 87 91 return Undefined(); 88 return storage[index];92 return Value(storage[index]); 89 93 } 90 94 … … 101 105 if (ok) { 102 106 setLength(index + 1); 103 storage[index] = value ;107 storage[index] = value.imp(); 104 108 return; 105 109 } … … 111 115 { 112 116 setLength(index + 1); 113 storage[index] = value ;117 storage[index] = value.imp(); 114 118 } 115 119 … … 124 128 if (index >= length) 125 129 return false; 126 return !storage[index].isA(UndefinedType);130 return storage[index]->type() != UndefinedType; 127 131 } 128 132 … … 134 138 if (index >= length) 135 139 return false; 136 return !storage[index].isA(UndefinedType);140 return storage[index]->type() != UndefinedType; 137 141 } 138 142 … … 147 151 if (index >= length) 148 152 return true; 149 storage[index] = Undefined() ;153 storage[index] = Undefined().imp(); 150 154 return true; 151 155 } … … 158 162 if (index >= length) 159 163 return true; 160 storage[index] = Undefined() ;164 storage[index] = Undefined().imp(); 161 165 return true; 162 166 } … … 167 171 const unsigned l = length; 168 172 for (unsigned i = newLength; i < l; ++i) 169 storage[i] = Undefined() ;173 storage[i] = Undefined().imp(); 170 174 } 171 175 if (newLength > capacity) { 172 176 unsigned newCapacity = (newLength * 3 + 1) / 2; 173 Value *newStorage = new Undefined[newCapacity];177 ValueImp **newStorage = new (ValueImp *)[newCapacity]; 174 178 const unsigned l = length; 175 179 for (unsigned i = 0; i < l; ++i) 176 180 newStorage[i] = storage[i]; 181 for (unsigned i = l; i < newLength; i++) 182 newStorage[i] = Undefined().imp(); 177 183 delete [] storage; 178 184 storage = newStorage; … … 187 193 const unsigned l = length; 188 194 for (unsigned i = 0; i < l; ++i) { 189 ValueImp *imp = storage[i] .imp();195 ValueImp *imp = storage[i]; 190 196 if (!imp->marked()) 191 197 imp->mark();
Note:
See TracChangeset
for help on using the changeset viewer.