|
Lines 2-8
JavaScriptCore/kjs/array_object.cpp_sec1
|
| 2 |
/* |
2 |
/* |
| 3 |
* This file is part of the KDE libraries |
3 |
* This file is part of the KDE libraries |
| 4 |
* Copyright (C) 1999-2000 Harri Porten (porten@kde.org) |
4 |
* Copyright (C) 1999-2000 Harri Porten (porten@kde.org) |
| 5 |
* Copyright (C) 2003 Apple Computer, Inc. |
5 |
* Copyright (C) 2003, 2007 Apple Inc. All rights reserved. |
| 6 |
* Copyright (C) 2003 Peter Kelly (pmk@post.com) |
6 |
* Copyright (C) 2003 Peter Kelly (pmk@post.com) |
| 7 |
* Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
7 |
* Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 8 |
* |
8 |
* |
|
Lines 330-336
static int compareByStringForQSort(const
JavaScriptCore/kjs/array_object.cpp_sec2
|
| 330 |
|
330 |
|
| 331 |
void ArrayInstance::sort(ExecState* exec) |
331 |
void ArrayInstance::sort(ExecState* exec) |
| 332 |
{ |
332 |
{ |
| 333 |
size_t lengthNotIncludingUndefined = pushUndefinedObjectsToEnd(exec); |
333 |
size_t lengthNotIncludingUndefined = compactForSorting(); |
| 334 |
|
334 |
|
| 335 |
ExecState* oldExec = execForCompareByStringForQSort; |
335 |
ExecState* oldExec = execForCompareByStringForQSort; |
| 336 |
execForCompareByStringForQSort = exec; |
336 |
execForCompareByStringForQSort = exec; |
|
Lines 397-403
static int compareWithCompareFunctionFor
JavaScriptCore/kjs/array_object.cpp_sec3
|
| 397 |
|
397 |
|
| 398 |
void ArrayInstance::sort(ExecState* exec, JSObject* compareFunction) |
398 |
void ArrayInstance::sort(ExecState* exec, JSObject* compareFunction) |
| 399 |
{ |
399 |
{ |
| 400 |
size_t lengthNotIncludingUndefined = pushUndefinedObjectsToEnd(exec); |
400 |
size_t lengthNotIncludingUndefined = compactForSorting(); |
| 401 |
|
401 |
|
| 402 |
CompareWithCompareFunctionArguments* oldArgs = compareWithCompareFunctionArguments; |
402 |
CompareWithCompareFunctionArguments* oldArgs = compareWithCompareFunctionArguments; |
| 403 |
CompareWithCompareFunctionArguments args(exec, compareFunction); |
403 |
CompareWithCompareFunctionArguments args(exec, compareFunction); |
|
Lines 422-428
void ArrayInstance::sort(ExecState* exec
JavaScriptCore/kjs/array_object.cpp_sec4
|
| 422 |
compareWithCompareFunctionArguments = oldArgs; |
422 |
compareWithCompareFunctionArguments = oldArgs; |
| 423 |
} |
423 |
} |
| 424 |
|
424 |
|
| 425 |
unsigned ArrayInstance::pushUndefinedObjectsToEnd(ExecState *exec) |
425 |
unsigned ArrayInstance::compactForSorting() |
| 426 |
{ |
426 |
{ |
| 427 |
JSValue *undefined = jsUndefined(); |
427 |
JSValue *undefined = jsUndefined(); |
| 428 |
|
428 |
|
|
Lines 447-454
unsigned ArrayInstance::pushUndefinedObj
JavaScriptCore/kjs/array_object.cpp_sec5
|
| 447 |
PropertyNameArrayIterator end = sparseProperties.end(); |
447 |
PropertyNameArrayIterator end = sparseProperties.end(); |
| 448 |
for (PropertyNameArrayIterator it = sparseProperties.begin(); it != end; ++it) { |
448 |
for (PropertyNameArrayIterator it = sparseProperties.begin(); it != end; ++it) { |
| 449 |
Identifier name = *it; |
449 |
Identifier name = *it; |
| 450 |
storage[o] = get(exec, name); |
450 |
storage[o] = getDirect(name); |
| 451 |
JSObject::deleteProperty(exec, name); |
451 |
_prop.remove(name); |
| 452 |
o++; |
452 |
o++; |
| 453 |
} |
453 |
} |
| 454 |
|
454 |
|