Changeset 2738 in webkit for trunk/JavaScriptCore/kjs/array_object.cpp
- Timestamp:
- Nov 18, 2002, 2:49:26 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/array_object.cpp
r2736 r2738 203 203 void ArrayInstanceImp::sort(ExecState *exec) 204 204 { 205 int lengthNotIncludingUndefined = pushUndefinedObjectsToEnd(); 206 205 207 execForCompareByStringForQSort = exec; 206 qsort(storage, length , sizeof(ValueImp *), compareByStringForQSort);208 qsort(storage, lengthNotIncludingUndefined, sizeof(ValueImp *), compareByStringForQSort); 207 209 execForCompareByStringForQSort = 0; 208 210 } … … 236 238 void ArrayInstanceImp::sort(ExecState *exec, Object &compareFunction) 237 239 { 240 int lengthNotIncludingUndefined = pushUndefinedObjectsToEnd(); 241 238 242 CompareWithCompareFunctionArguments args(exec, compareFunction.imp()); 239 243 compareWithCompareFunctionArguments = &args; 240 qsort(storage, length , sizeof(ValueImp *), compareWithCompareFunctionForQSort);244 qsort(storage, lengthNotIncludingUndefined, sizeof(ValueImp *), compareWithCompareFunctionForQSort); 241 245 compareWithCompareFunctionArguments = 0; 246 } 247 248 unsigned ArrayInstanceImp::pushUndefinedObjectsToEnd() 249 { 250 ValueImp *undefined = UndefinedImp::staticUndefined; 251 252 unsigned o = 0; 253 for (unsigned i = 0; i != length; ++i) { 254 ValueImp *v = storage[i]; 255 if (v && v != undefined) { 256 if (o != i) 257 storage[o] = v; 258 o++; 259 } 260 } 261 if (o != length) 262 memset(storage + o, 0, sizeof(ValueImp *) * (length - o)); 263 return o; 242 264 } 243 265
Note:
See TracChangeset
for help on using the changeset viewer.