Changeset 34754 in webkit for trunk/JavaScriptCore/kjs/JSArray.cpp
- Timestamp:
- Jun 23, 2008, 10:23:17 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/JSArray.cpp
r34659 r34754 24 24 #include "JSArray.h" 25 25 26 #include "ArrayPrototype.h" 26 27 #include "PropertyNameArray.h" 27 28 #include <wtf/Assertions.h> … … 558 559 Vector<AVLTreeNodeForArrayCompare> m_nodes; 559 560 ExecState* m_exec; 560 JSObject* m_compareFunction; 561 JSObject* m_globalThisValue; 561 JSValue* m_compareFunction; 562 CallType m_compareCallType; 563 const CallData* m_compareCallData; 564 JSValue* m_globalThisValue; 562 565 563 566 handle get_less(handle h) { return m_nodes[h].lt & 0x7FFFFFFF; } … … 596 599 arguments.append(va); 597 600 arguments.append(vb); 598 double compareResult = m_compareFunction->callAsFunction(m_exec, m_globalThisValue, arguments)->toNumber(m_exec);601 double compareResult = call(m_exec, m_compareFunction, m_compareCallType, *m_compareCallData, m_globalThisValue, arguments)->toNumber(m_exec); 599 602 return (compareResult < 0) ? -1 : 1; // Not passing equality through, because we need to store all values, even if equivalent. 600 603 } … … 606 609 }; 607 610 608 void JSArray::sort(ExecState* exec, JS Object* compareFunction)611 void JSArray::sort(ExecState* exec, JSValue* compareFunction, CallType callType, const CallData& callData) 609 612 { 610 613 checkConsistency(); … … 626 629 tree.abstractor().m_exec = exec; 627 630 tree.abstractor().m_compareFunction = compareFunction; 631 tree.abstractor().m_compareCallType = callType; 632 tree.abstractor().m_compareCallData = &callData; 628 633 tree.abstractor().m_globalThisValue = exec->globalThisValue(); 629 634 tree.abstractor().m_nodes.resize(usedVectorLength + (m_storage->m_sparseValueMap ? m_storage->m_sparseValueMap->size() : 0)); … … 811 816 #endif 812 817 813 } 818 JSArray* constructEmptyArray(ExecState* exec) 819 { 820 return new (exec) JSArray(exec->lexicalGlobalObject()->arrayPrototype(), 0); 821 } 822 823 JSArray* constructEmptyArray(ExecState* exec, unsigned initialLength) 824 { 825 return new (exec) JSArray(exec->lexicalGlobalObject()->arrayPrototype(), initialLength); 826 } 827 828 JSArray* constructArray(ExecState* exec, JSValue* singleItemValue) 829 { 830 ArgList values; 831 values.append(singleItemValue); 832 return new (exec) JSArray(exec->lexicalGlobalObject()->arrayPrototype(), values); 833 } 834 835 JSArray* constructArray(ExecState* exec, const ArgList& values) 836 { 837 return new (exec) JSArray(exec->lexicalGlobalObject()->arrayPrototype(), values); 838 } 839 840 }
Note:
See TracChangeset
for help on using the changeset viewer.