1944 JSC::JSValue array = d->engine->scriptValueToJSCValue(arguments); |
1944 JSC::JSValue array = d->engine->scriptValueToJSCValue(arguments); |
1945 // copied from runtime/FunctionPrototype.cpp, functionProtoFuncApply() |
1945 // copied from runtime/FunctionPrototype.cpp, functionProtoFuncApply() |
1946 JSC::MarkedArgumentBuffer applyArgs; |
1946 JSC::MarkedArgumentBuffer applyArgs; |
1947 if (!array.isUndefinedOrNull()) { |
1947 if (!array.isUndefinedOrNull()) { |
1948 if (!array.isObject()) { |
1948 if (!array.isObject()) { |
1949 return d->engine->scriptValueFromJSCValue(JSC::throwError(exec, JSC::TypeError)); |
1949 return d->engine->scriptValueFromJSCValue(JSC::throwError(exec, JSC::TypeError, "Arguments must be an array")); |
1950 } |
1950 } |
1951 if (JSC::asObject(array)->classInfo() == &JSC::Arguments::info) |
1951 if (JSC::asObject(array)->classInfo() == &JSC::Arguments::info) |
1952 JSC::asArguments(array)->fillArgList(exec, applyArgs); |
1952 JSC::asArguments(array)->fillArgList(exec, applyArgs); |
1953 else if (JSC::isJSArray(&exec->globalData(), array)) |
1953 else if (JSC::isJSArray(&exec->globalData(), array)) |
1954 JSC::asArray(array)->fillArgList(exec, applyArgs); |
1954 JSC::asArray(array)->fillArgList(exec, applyArgs); |
1955 else if (JSC::asObject(array)->inherits(&JSC::JSArray::info)) { |
1955 else if (JSC::asObject(array)->inherits(&JSC::JSArray::info)) { |
1956 unsigned length = JSC::asArray(array)->get(exec, exec->propertyNames().length).toUInt32(exec); |
1956 unsigned length = JSC::asArray(array)->get(exec, exec->propertyNames().length).toUInt32(exec); |
1957 for (unsigned i = 0; i < length; ++i) |
1957 for (unsigned i = 0; i < length; ++i) |
1958 applyArgs.append(JSC::asArray(array)->get(exec, i)); |
1958 applyArgs.append(JSC::asArray(array)->get(exec, i)); |
1959 } else { |
1959 } else { |
1960 Q_ASSERT_X(false, Q_FUNC_INFO, "implement me"); |
1960 return d->engine->scriptValueFromJSCValue(JSC::throwError(exec, JSC::TypeError, "Arguments must be an array")); |
1961 // return JSC::throwError(exec, JSC::TypeError); |
|
1962 } |
1961 } |
1963 } |
1962 } |
1964 |
1963 |
1965 JSC::JSValue savedException; |
1964 JSC::JSValue savedException; |
1966 QScriptValuePrivate::saveException(exec, &savedException); |
1965 QScriptValuePrivate::saveException(exec, &savedException); |