Changeset 30040 in webkit for trunk/JavaScriptCore/kjs/array_object.cpp
- Timestamp:
- Feb 6, 2008, 9:33:07 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/array_object.cpp
r29817 r30040 103 103 104 104 unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec); 105 for (unsigned intk = 0; k < length; k++) {105 for (unsigned k = 0; k < length; k++) { 106 106 if (k >= 1) 107 107 str += separator; … … 145 145 146 146 unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec); 147 for (unsigned intk = 0; k < length; k++) {147 for (unsigned k = 0; k < length; k++) { 148 148 if (k >= 1) 149 149 str += separator; … … 192 192 193 193 unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec); 194 for (unsigned intk = 0; k < length; k++) {194 for (unsigned k = 0; k < length; k++) { 195 195 if (k >= 1) 196 196 str += separator; … … 227 227 List::const_iterator it = args.begin(); 228 228 List::const_iterator end = args.end(); 229 unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec);230 229 while (1) { 231 230 if (curArg->isObject() && curObj->inherits(&ArrayInstance::info)) { 232 unsigned intk = 0;231 unsigned k = 0; 233 232 // Older versions tried to optimize out getting the length of thisObj 234 233 // by checking for n != 0, but that doesn't work if thisObj is an empty array. 235 length = curObj->get(exec, exec->propertyNames().length)->toUInt32(exec);234 unsigned length = curObj->get(exec, exec->propertyNames().length)->toUInt32(exec); 236 235 while (k < length) { 237 236 if (JSValue* v = getProperty(exec, curObj, k)) … … 271 270 { 272 271 unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec); 273 for (unsigned intn = 0; n < args.size(); n++)272 for (unsigned n = 0; n < args.size(); n++) 274 273 thisObj->put(exec, length + n, args[n]); 275 274 length += args.size(); … … 281 280 { 282 281 unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec); 283 unsigned intmiddle = length / 2;284 285 for (unsigned intk = 0; k < middle; k++) {282 unsigned middle = length / 2; 283 284 for (unsigned k = 0; k < middle; k++) { 286 285 unsigned lk1 = length - k - 1; 287 286 JSValue* obj2 = getProperty(exec, thisObj, lk1); … … 311 310 } else { 312 311 result = thisObj->get(exec, 0); 313 for (unsigned intk = 1; k < length; k++) {312 for (unsigned k = 1; k < length; k++) { 314 313 if (JSValue* obj = getProperty(exec, thisObj, k)) 315 314 thisObj->put(exec, k - 1, obj); … … 392 391 // "Min" sort. Not the fastest, but definitely less code than heapsort 393 392 // or quicksort, and much less swapping than bubblesort/insertionsort. 394 for (unsigned i nt i= 0 ; i < length - 1 ; ++i) {393 for (unsigned i = 0 ; i < length - 1 ; ++i) { 395 394 JSValue* iObj = thisObj->get(exec, i); 396 unsigned intthemin = i;395 unsigned themin = i; 397 396 JSValue* minObj = iObj; 398 for (unsigned intj = i + 1 ; j < length ; ++j) {397 for (unsigned j = i + 1 ; j < length ; ++j) { 399 398 JSValue* jObj = thisObj->get(exec, j); 400 399 double compareResult; … … 439 438 begin = std::min<int>(begin, length); 440 439 441 unsigned intdeleteCount;440 unsigned deleteCount; 442 441 if (args.size() > 1) 443 442 deleteCount = std::min<int>(std::max<int>(args[1]->toUInt32(exec), 0), length - begin); … … 445 444 deleteCount = length - begin; 446 445 447 for (unsigned intk = 0; k < deleteCount; k++) {446 for (unsigned k = 0; k < deleteCount; k++) { 448 447 if (JSValue* v = getProperty(exec, thisObj, k + begin)) 449 448 resObj->put(exec, k, v); … … 451 450 resObj->put(exec, exec->propertyNames().length, jsNumber(deleteCount), DontEnum | DontDelete); 452 451 453 unsigned intadditionalArgs = std::max<int>(args.size() - 2, 0);452 unsigned additionalArgs = std::max<int>(args.size() - 2, 0); 454 453 if (additionalArgs != deleteCount) { 455 454 if (additionalArgs < deleteCount) { 456 for (unsigned intk = begin; k < length - deleteCount; ++k) {455 for (unsigned k = begin; k < length - deleteCount; ++k) { 457 456 if (JSValue* v = getProperty(exec, thisObj, k + deleteCount)) 458 457 thisObj->put(exec, k + additionalArgs, v); … … 460 459 thisObj->deleteProperty(exec, k + additionalArgs); 461 460 } 462 for (unsigned intk = length ; k > length - deleteCount + additionalArgs; --k)461 for (unsigned k = length ; k > length - deleteCount + additionalArgs; --k) 463 462 thisObj->deleteProperty(exec, k - 1); 464 463 } else { 465 for (unsigned intk = length - deleteCount; (int)k > begin; --k) {464 for (unsigned k = length - deleteCount; (int)k > begin; --k) { 466 465 if (JSValue* obj = getProperty(exec, thisObj, k + deleteCount - 1)) 467 466 thisObj->put(exec, k + additionalArgs - 1, obj); … … 471 470 } 472 471 } 473 for (unsigned intk = 0; k < additionalArgs; ++k)472 for (unsigned k = 0; k < additionalArgs; ++k) 474 473 thisObj->put(exec, k + begin, args[k + 2]); 475 474 … … 482 481 // 15.4.4.13 483 482 unsigned length = thisObj->get(exec, exec->propertyNames().length)->toUInt32(exec); 484 unsigned intnrArgs = args.size();485 for (unsigned intk = length; k > 0; --k) {483 unsigned nrArgs = args.size(); 484 for (unsigned k = length; k > 0; --k) { 486 485 if (JSValue* v = getProperty(exec, thisObj, k - 1)) 487 486 thisObj->put(exec, k + nrArgs-1, v); … … 489 488 thisObj->deleteProperty(exec, k + nrArgs-1); 490 489 } 491 for (unsigned intk = 0; k < nrArgs; ++k)490 for (unsigned k = 0; k < nrArgs; ++k) 492 491 thisObj->put(exec, k, args[k]); 493 492 JSValue* result = jsNumber(length + nrArgs); … … 725 724 { 726 725 // ECMA 15.4.3.1 Array.prototype 727 put (exec,exec->propertyNames().prototype, arrayProto, DontEnum|DontDelete|ReadOnly);726 putDirect(exec->propertyNames().prototype, arrayProto, DontEnum|DontDelete|ReadOnly); 728 727 729 728 // no. of arguments for constructor 730 put (exec,exec->propertyNames().length, jsNumber(1), ReadOnly|DontDelete|DontEnum);729 putDirect(exec->propertyNames().length, jsNumber(1), ReadOnly|DontDelete|DontEnum); 731 730 } 732 731
Note:
See TracChangeset
for help on using the changeset viewer.