Changeset 156240 in webkit


Ignore:
Timestamp:
Sep 21, 2013 9:02:59 PM (11 years ago)
Author:
Darin Adler
Message:

Add ExecState::uncheckedArgument and use where possible to shrink a bit
https://bugs.webkit.org/show_bug.cgi?id=121750

Reviewed by Andreas Kling.

Source/JavaScriptCore:

  • interpreter/CallFrame.h:

(JSC::ExecState::uncheckedArgument): Added. Like argument, but with an
assertion rather than a runtime check.

  • API/APICallbackFunction.h:

(JSC::APICallbackFunction::call): Use uncheckedArgument because we are
already in a loop over arguments, so don't need a range check.

  • API/JSCallbackConstructor.cpp:

(JSC::constructJSCallback): Ditto.

  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject::construct): Ditto.
(JSC::JSCallbackObject::call): Ditto.

  • jsc.cpp:

(functionPrint): Ditto.
(functionRun): Ditto.
(functionSetSamplingFlags): Ditto.
(functionClearSamplingFlags): Ditto.

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncConcat): Ditto.
(JSC::arrayProtoFuncPush): Use uncheckedArgument because there is already
code that explicitly checks argumentCount.
(JSC::arrayProtoFuncSplice): Ditto.
(JSC::arrayProtoFuncUnShift): Ditto.
(JSC::arrayProtoFuncReduce): Ditto.
(JSC::arrayProtoFuncReduceRight): Ditto.
(JSC::arrayProtoFuncLastIndexOf): Ditto.

  • runtime/DatePrototype.cpp:

(JSC::fillStructuresUsingTimeArgs): Ditto.
(JSC::fillStructuresUsingDateArgs): Ditto.

  • runtime/JSArrayBufferConstructor.cpp:

(JSC::constructArrayBuffer): Ditto.

  • runtime/JSArrayBufferPrototype.cpp:

(JSC::arrayBufferProtoFuncSlice): Ditto.

  • runtime/JSBoundFunction.cpp:

(JSC::boundFunctionCall): Ditto.
(JSC::boundFunctionConstruct): Ditto.

  • runtime/JSDataViewPrototype.cpp:

(JSC::getData): Ditto.
(JSC::setData): Ditto.

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::constructGenericTypedArrayView): Ditto.

  • runtime/JSGenericTypedArrayViewPrototypeInlines.h:

(JSC::genericTypedArrayViewProtoFuncSet): Ditto.
(JSC::genericTypedArrayViewProtoFuncSubarray): Ditto.

  • runtime/JSONObject.cpp:

(JSC::JSONProtoFuncParse): Ditto.
(JSC::JSONProtoFuncStringify): Ditto.

  • runtime/JSPromiseConstructor.cpp:

(JSC::constructPromise): Ditto.
(JSC::JSPromiseConstructorFuncFulfill): Ditto.
(JSC::JSPromiseConstructorFuncResolve): Ditto.
(JSC::JSPromiseConstructorFuncReject): Ditto.

  • runtime/MathObject.cpp:

(JSC::mathProtoFuncMax): Ditto.
(JSC::mathProtoFuncMin): Ditto.

  • runtime/NameConstructor.cpp:

(JSC::constructPrivateName): Removed unneeded check of argumentCout
that simply repeats what argument already does.

  • runtime/NativeErrorConstructor.cpp:

(JSC::Interpreter::constructWithNativeErrorConstructor): Ditto.
(JSC::Interpreter::callNativeErrorConstructor): Ditto.

  • runtime/NumberConstructor.cpp:

(JSC::constructWithNumberConstructor): Use uncheckedArgument since
there is already code that explicitly checks argument count.
(JSC::callNumberConstructor): Ditto.

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorCreate): Small refactoring to not call argument(0)
three times.

  • runtime/SetConstructor.cpp:

(JSC::constructSet): Use uncheckedArgument since we are already in a loop
over arguments.

  • runtime/StringConstructor.cpp:

(JSC::stringFromCharCodeSlowCase): In a loop.
(JSC::stringFromCharCode): Already checked count.
(JSC::constructWithStringConstructor): Ditto.
(JSC::callStringConstructor): Ditto.

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncConcat): Already checked count.

  • runtime/TestRunnerUtils.cpp:

(JSC::numberOfDFGCompiles): Ditto.
(JSC::setNeverInline): Ditto.

Source/WebCore:

  • bindings/js/JSHTMLCanvasElementCustom.cpp:

(WebCore::JSHTMLCanvasElement::probablySupportsContext): Already checked count.
(WebCore::JSHTMLCanvasElement::toDataURL): Ditto.

  • bindings/js/JSHTMLDocumentCustom.cpp:

(WebCore::documentWrite): In a loop.

  • bindings/js/JSInjectedScriptHostCustom.cpp:

(WebCore::JSInjectedScriptHost::inspectedObject): Already checked count.
(WebCore::JSInjectedScriptHost::internalConstructorName): Ditto.
(WebCore::JSInjectedScriptHost::isHTMLAllCollection): Ditto.
(WebCore::JSInjectedScriptHost::type): Ditto.
(WebCore::JSInjectedScriptHost::functionDetails): Ditto.
(WebCore::JSInjectedScriptHost::getEventListeners): Ditto.
(WebCore::JSInjectedScriptHost::inspect): Ditto.
(WebCore::JSInjectedScriptHost::databaseId): Ditto.
(WebCore::JSInjectedScriptHost::storageId): Ditto.

  • bindings/js/JSSQLTransactionSyncCustom.cpp:

(WebCore::JSSQLTransactionSync::executeSql): Ditto.

  • bindings/js/JSSVGLengthCustom.cpp:

(WebCore::JSSVGLength::convertToSpecifiedUnits): Ditto.

  • bindings/js/JSSharedWorkerCustom.cpp:

(WebCore::JSSharedWorkerConstructor::constructJSSharedWorker): Ditto.

  • bindings/js/JSWebGLRenderingContextCustom.cpp:

(WebCore::getObjectParameter): Already checked count.
(WebCore::JSWebGLRenderingContext::getAttachedShaders): Removed tortured code
to triply do the checking that the toWebGLProgram function already does, including
spurious exception checking in code that can't create an exception. Also count is
already checked.
(WebCore::JSWebGLRenderingContext::getExtension): More of the same.
(WebCore::JSWebGLRenderingContext::getFramebufferAttachmentParameter): Ditto.
(WebCore::JSWebGLRenderingContext::getParameter): Ditto.
(WebCore::JSWebGLRenderingContext::getProgramParameter): Ditto.
(WebCore::JSWebGLRenderingContext::getShaderParameter): Ditto.
(WebCore::JSWebGLRenderingContext::getUniform): Ditto.
(WebCore::dataFunctionf): Ditto.
(WebCore::dataFunctioni): Ditto.
(WebCore::dataFunctionMatrix): Ditto.

  • bindings/js/JSWorkerGlobalScopeCustom.cpp:

(WebCore::JSWorkerGlobalScope::importScripts): In a loop.

  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::open): Already checked. Also removed some unneeded
argument count checks.
(WebCore::JSXMLHttpRequest::send): Removed unneeded special case for 0 argument
count that does the same thing as the undefined case, since asking for an
argument past the count yields undefined.

  • bindings/js/JSXSLTProcessorCustom.cpp:

(WebCore::JSXSLTProcessor::setParameter): Already checked.
(WebCore::JSXSLTProcessor::getParameter): Already checked.
(WebCore::JSXSLTProcessor::removeParameter): Already checked.

  • bindings/js/ScheduledAction.cpp:

(WebCore::ScheduledAction::ScheduledAction): In a loop.

  • bindings/js/ScriptCallStackFactory.cpp:

(WebCore::createScriptArguments): Ditto.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateParametersCheck): Removed some excess argumentCount checks.
Used uncheckedArgument in a few places. More needs to be done, especially for
overloaded functions.

  • bridge/c/c_instance.cpp:

(JSC::Bindings::CInstance::invokeMethod): In a loop.
(JSC::Bindings::CInstance::invokeDefaultMethod): Ditto.

  • bridge/objc/objc_instance.mm:

(ObjcInstance::invokeObjcMethod): Ditto.
(ObjcInstance::invokeDefaultMethod): Ditto.

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

Updated.

Source/WebKit2:

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::callMethod): In a loop.
(WebKit::JSNPObject::callObject): Ditto.
(WebKit::JSNPObject::callConstructor): Ditto.

Location:
trunk/Source
Files:
46 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/API/APICallbackFunction.h

    r154797 r156240  
    5151    arguments.reserveInitialCapacity(argumentCount);
    5252    for (int i = 0; i < argumentCount; i++)
    53         arguments.uncheckedAppend(toRef(exec, exec->argument(i)));
     53        arguments.uncheckedAppend(toRef(exec, exec->uncheckedArgument(i)));
    5454
    5555    JSValueRef exception = 0;
  • trunk/Source/JavaScriptCore/API/JSCallbackConstructor.cpp

    r154797 r156240  
    7878        arguments.reserveInitialCapacity(argumentCount);
    7979        for (size_t i = 0; i < argumentCount; ++i)
    80             arguments.uncheckedAppend(toRef(exec, exec->argument(i)));
     80            arguments.uncheckedAppend(toRef(exec, exec->uncheckedArgument(i)));
    8181
    8282        JSValueRef exception = 0;
  • trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h

    r154797 r156240  
    408408            arguments.reserveInitialCapacity(argumentCount);
    409409            for (size_t i = 0; i < argumentCount; ++i)
    410                 arguments.uncheckedAppend(toRef(exec, exec->argument(i)));
     410                arguments.uncheckedAppend(toRef(exec, exec->uncheckedArgument(i)));
    411411            JSValueRef exception = 0;
    412412            JSObject* result;
     
    475475            arguments.reserveInitialCapacity(argumentCount);
    476476            for (size_t i = 0; i < argumentCount; ++i)
    477                 arguments.uncheckedAppend(toRef(exec, exec->argument(i)));
     477                arguments.uncheckedAppend(toRef(exec, exec->uncheckedArgument(i)));
    478478            JSValueRef exception = 0;
    479479            JSValue result;
  • trunk/Source/JavaScriptCore/ChangeLog

    r156239 r156240  
     12013-09-21  Darin Adler  <darin@apple.com>
     2
     3        Add ExecState::uncheckedArgument and use where possible to shrink a bit
     4        https://bugs.webkit.org/show_bug.cgi?id=121750
     5
     6        Reviewed by Andreas Kling.
     7
     8        * interpreter/CallFrame.h:
     9        (JSC::ExecState::uncheckedArgument): Added. Like argument, but with an
     10        assertion rather than a runtime check.
     11
     12        * API/APICallbackFunction.h:
     13        (JSC::APICallbackFunction::call): Use uncheckedArgument because we are
     14        already in a loop over arguments, so don't need a range check.
     15        * API/JSCallbackConstructor.cpp:
     16        (JSC::constructJSCallback): Ditto.
     17        * API/JSCallbackObjectFunctions.h:
     18        (JSC::JSCallbackObject::construct): Ditto.
     19        (JSC::JSCallbackObject::call): Ditto.
     20        * jsc.cpp:
     21        (functionPrint): Ditto.
     22        (functionRun): Ditto.
     23        (functionSetSamplingFlags): Ditto.
     24        (functionClearSamplingFlags): Ditto.
     25        * runtime/ArrayPrototype.cpp:
     26        (JSC::arrayProtoFuncConcat): Ditto.
     27        (JSC::arrayProtoFuncPush): Use uncheckedArgument because there is already
     28        code that explicitly checks argumentCount.
     29        (JSC::arrayProtoFuncSplice): Ditto.
     30        (JSC::arrayProtoFuncUnShift): Ditto.
     31        (JSC::arrayProtoFuncReduce): Ditto.
     32        (JSC::arrayProtoFuncReduceRight): Ditto.
     33        (JSC::arrayProtoFuncLastIndexOf): Ditto.
     34        * runtime/DatePrototype.cpp:
     35        (JSC::fillStructuresUsingTimeArgs): Ditto.
     36        (JSC::fillStructuresUsingDateArgs): Ditto.
     37        * runtime/JSArrayBufferConstructor.cpp:
     38        (JSC::constructArrayBuffer): Ditto.
     39        * runtime/JSArrayBufferPrototype.cpp:
     40        (JSC::arrayBufferProtoFuncSlice): Ditto.
     41        * runtime/JSBoundFunction.cpp:
     42        (JSC::boundFunctionCall): Ditto.
     43        (JSC::boundFunctionConstruct): Ditto.
     44        * runtime/JSDataViewPrototype.cpp:
     45        (JSC::getData): Ditto.
     46        (JSC::setData): Ditto.
     47        * runtime/JSGenericTypedArrayViewConstructorInlines.h:
     48        (JSC::constructGenericTypedArrayView): Ditto.
     49        * runtime/JSGenericTypedArrayViewPrototypeInlines.h:
     50        (JSC::genericTypedArrayViewProtoFuncSet): Ditto.
     51        (JSC::genericTypedArrayViewProtoFuncSubarray): Ditto.
     52        * runtime/JSONObject.cpp:
     53        (JSC::JSONProtoFuncParse): Ditto.
     54        (JSC::JSONProtoFuncStringify): Ditto.
     55        * runtime/JSPromiseConstructor.cpp:
     56        (JSC::constructPromise): Ditto.
     57        (JSC::JSPromiseConstructorFuncFulfill): Ditto.
     58        (JSC::JSPromiseConstructorFuncResolve): Ditto.
     59        (JSC::JSPromiseConstructorFuncReject): Ditto.
     60        * runtime/MathObject.cpp:
     61        (JSC::mathProtoFuncMax): Ditto.
     62        (JSC::mathProtoFuncMin): Ditto.
     63
     64        * runtime/NameConstructor.cpp:
     65        (JSC::constructPrivateName): Removed unneeded check of argumentCout
     66        that simply repeats what argument already does.
     67        * runtime/NativeErrorConstructor.cpp:
     68        (JSC::Interpreter::constructWithNativeErrorConstructor): Ditto.
     69        (JSC::Interpreter::callNativeErrorConstructor): Ditto.
     70
     71        * runtime/NumberConstructor.cpp:
     72        (JSC::constructWithNumberConstructor): Use uncheckedArgument since
     73        there is already code that explicitly checks argument count.
     74        (JSC::callNumberConstructor): Ditto.
     75
     76        * runtime/ObjectConstructor.cpp:
     77        (JSC::objectConstructorCreate): Small refactoring to not call argument(0)
     78        three times.
     79
     80        * runtime/SetConstructor.cpp:
     81        (JSC::constructSet): Use uncheckedArgument since we are already in a loop
     82        over arguments.
     83
     84        * runtime/StringConstructor.cpp:
     85        (JSC::stringFromCharCodeSlowCase): In a loop.
     86        (JSC::stringFromCharCode): Already checked count.
     87        (JSC::constructWithStringConstructor): Ditto.
     88        (JSC::callStringConstructor): Ditto.
     89        * runtime/StringPrototype.cpp:
     90        (JSC::stringProtoFuncConcat): Already checked count.
     91        * runtime/TestRunnerUtils.cpp:
     92        (JSC::numberOfDFGCompiles): Ditto.
     93        (JSC::setNeverInline): Ditto.
     94
    1952013-09-21  Filip Pizlo  <fpizlo@apple.com>
    296
  • trunk/Source/JavaScriptCore/interpreter/CallFrame.h

    r156239 r156240  
    230230            if (argument >= argumentCount())
    231231                 return jsUndefined();
    232             return this[argumentOffset(argument)].jsValue();
     232            return getArgumentUnsafe(argument);
     233        }
     234        JSValue uncheckedArgument(size_t argument)
     235        {
     236            ASSERT(argument < argumentCount());
     237            return getArgumentUnsafe(argument);
    233238        }
    234239        void setArgument(size_t argument, JSValue value)
  • trunk/Source/JavaScriptCore/jsc.cpp

    r156067 r156240  
    301301            putchar(' ');
    302302
    303         printf("%s", exec->argument(i).toString(exec)->value(exec).utf8().data());
     303        printf("%s", exec->uncheckedArgument(i).toString(exec)->value(exec).utf8().data());
    304304    }
    305305
     
    392392    JSArray* array = constructEmptyArray(globalObject->globalExec(), 0);
    393393    for (unsigned i = 1; i < exec->argumentCount(); ++i)
    394         array->putDirectIndex(globalObject->globalExec(), i - 1, exec->argument(i));
     394        array->putDirectIndex(globalObject->globalExec(), i - 1, exec->uncheckedArgument(i));
    395395    globalObject->putDirect(
    396396        exec->vm(), Identifier(globalObject->globalExec(), "arguments"), array);
     
    451451{
    452452    for (unsigned i = 0; i < exec->argumentCount(); ++i) {
    453         unsigned flag = static_cast<unsigned>(exec->argument(i).toNumber(exec));
     453        unsigned flag = static_cast<unsigned>(exec->uncheckedArgument(i).toNumber(exec));
    454454        if ((flag >= 1) && (flag <= 32))
    455455            SamplingFlags::setFlag(flag);
     
    461461{
    462462    for (unsigned i = 0; i < exec->argumentCount(); ++i) {
    463         unsigned flag = static_cast<unsigned>(exec->argument(i).toNumber(exec));
     463        unsigned flag = static_cast<unsigned>(exec->uncheckedArgument(i).toNumber(exec));
    464464        if ((flag >= 1) && (flag <= 32))
    465465            SamplingFlags::clearFlag(flag);
  • trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp

    r154935 r156240  
    440440        if (i == argCount)
    441441            break;
    442         curArg = (exec->argument(i));
     442        curArg = exec->uncheckedArgument(i);
    443443        ++i;
    444444    }
     
    482482    if (isJSArray(thisValue) && exec->argumentCount() == 1) {
    483483        JSArray* array = asArray(thisValue);
    484         array->push(exec, exec->argument(0));
     484        array->push(exec, exec->uncheckedArgument(0));
    485485        return JSValue::encode(jsNumber(array->length()));
    486486    }
     
    494494        // Check for integer overflow; where safe we can do a fast put by index.
    495495        if (length + n >= length)
    496             thisObj->methodTable()->putByIndex(thisObj, exec, length + n, exec->argument(n), true);
     496            thisObj->methodTable()->putByIndex(thisObj, exec, length + n, exec->uncheckedArgument(n), true);
    497497        else {
    498498            PutPropertySlot slot;
    499499            Identifier propertyName(exec, JSValue(static_cast<int64_t>(length) + static_cast<int64_t>(n)).toWTFString(exec));
    500             thisObj->methodTable()->put(thisObj, exec, propertyName, exec->argument(n), slot);
     500            thisObj->methodTable()->put(thisObj, exec, propertyName, exec->uncheckedArgument(n), slot);
    501501        }
    502502        if (exec->hadException())
     
    768768    unsigned deleteCount = length - begin;
    769769    if (exec->argumentCount() > 1) {
    770         double deleteDouble = exec->argument(1).toInteger(exec);
     770        double deleteDouble = exec->uncheckedArgument(1).toInteger(exec);
    771771        if (deleteDouble < 0)
    772772            deleteCount = 0;
     
    801801    }
    802802    for (unsigned k = 0; k < additionalArgs; ++k) {
    803         thisObj->methodTable()->putByIndex(thisObj, exec, k + begin, exec->argument(k + 2), true);
     803        thisObj->methodTable()->putByIndex(thisObj, exec, k + begin, exec->uncheckedArgument(k + 2), true);
    804804        if (exec->hadException())
    805805            return JSValue::encode(jsUndefined());
     
    826826    }
    827827    for (unsigned k = 0; k < nrArgs; ++k) {
    828         thisObj->methodTable()->putByIndex(thisObj, exec, k, exec->argument(k), true);
     828        thisObj->methodTable()->putByIndex(thisObj, exec, k, exec->uncheckedArgument(k), true);
    829829        if (exec->hadException())
    830830            return JSValue::encode(jsUndefined());
     
    11441144
    11451145    if (exec->argumentCount() >= 2)
    1146         rv = exec->argument(1);
     1146        rv = exec->uncheckedArgument(1);
    11471147    else if (array && array->canGetIndexQuickly(0)) {
    11481148        rv = array->getIndexQuickly(0);
     
    12211221   
    12221222    if (exec->argumentCount() >= 2)
    1223         rv = exec->argument(1);
     1223        rv = exec->uncheckedArgument(1);
    12241224    else if (array && array->canGetIndexQuickly(length - 1)) {
    12251225        rv = array->getIndexQuickly(length - 1);
     
    13071307    unsigned index = length - 1;
    13081308    if (exec->argumentCount() >= 2) {
    1309         JSValue fromValue = exec->argument(1);
     1309        JSValue fromValue = exec->uncheckedArgument(1);
    13101310        double fromDouble = fromValue.toInteger(exec);
    13111311        if (fromDouble < 0) {
  • trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp

    r154373 r156240  
    374374    if (maxArgs >= 4 && idx < numArgs) {
    375375        t->setHour(0);
    376         double hours = exec->argument(idx++).toIntegerPreserveNaN(exec);
     376        double hours = exec->uncheckedArgument(idx++).toIntegerPreserveNaN(exec);
    377377        ok = std::isfinite(hours);
    378378        milliseconds += hours * msPerHour;
     
    382382    if (maxArgs >= 3 && idx < numArgs && ok) {
    383383        t->setMinute(0);
    384         double minutes = exec->argument(idx++).toIntegerPreserveNaN(exec);
     384        double minutes = exec->uncheckedArgument(idx++).toIntegerPreserveNaN(exec);
    385385        ok = std::isfinite(minutes);
    386386        milliseconds += minutes * msPerMinute;
     
    390390    if (maxArgs >= 2 && idx < numArgs && ok) {
    391391        t->setSecond(0);
    392         double seconds = exec->argument(idx++).toIntegerPreserveNaN(exec);
     392        double seconds = exec->uncheckedArgument(idx++).toIntegerPreserveNaN(exec);
    393393        ok = std::isfinite(seconds);
    394394        milliseconds += seconds * msPerSecond;
     
    400400    // milliseconds
    401401    if (idx < numArgs) {
    402         double millis = exec->argument(idx).toIntegerPreserveNaN(exec);
     402        double millis = exec->uncheckedArgument(idx).toIntegerPreserveNaN(exec);
    403403        ok = std::isfinite(millis);
    404404        milliseconds += millis;
     
    426426    // years
    427427    if (maxArgs >= 3 && idx < numArgs) {
    428         double years = exec->argument(idx++).toIntegerPreserveNaN(exec);
     428        double years = exec->uncheckedArgument(idx++).toIntegerPreserveNaN(exec);
    429429        ok = std::isfinite(years);
    430430        t->setYear(toInt32(years));
     
    432432    // months
    433433    if (maxArgs >= 2 && idx < numArgs && ok) {
    434         double months = exec->argument(idx++).toIntegerPreserveNaN(exec);
     434        double months = exec->uncheckedArgument(idx++).toIntegerPreserveNaN(exec);
    435435        ok = std::isfinite(months);
    436436        t->setMonth(toInt32(months));
     
    438438    // days
    439439    if (idx < numArgs && ok) {
    440         double days = exec->argument(idx++).toIntegerPreserveNaN(exec);
     440        double days = exec->uncheckedArgument(idx++).toIntegerPreserveNaN(exec);
    441441        ok = std::isfinite(days);
    442442        t->setMonthDay(0);
  • trunk/Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp

    r155177 r156240  
    7878    unsigned length;
    7979    if (exec->argumentCount()) {
    80         length = exec->argument(0).toUInt32(exec);
     80        length = exec->uncheckedArgument(0).toUInt32(exec);
    8181        if (exec->hadException())
    8282            return JSValue::encode(jsUndefined());
  • trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp

    r154127 r156240  
    5353    int32_t end;
    5454    if (exec->argumentCount() >= 2) {
    55         end = exec->argument(1).toInt32(exec);
     55        end = exec->uncheckedArgument(1).toInt32(exec);
    5656        if (exec->hadException())
    5757            return JSValue::encode(jsUndefined());
  • trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp

    r154038 r156240  
    4646        args.append(boundArgs->getIndexQuickly(i));
    4747    for (unsigned i = 0; i < exec->argumentCount(); ++i)
    48         args.append(exec->argument(i));
     48        args.append(exec->uncheckedArgument(i));
    4949
    5050    JSObject* targetFunction = boundFunction->targetFunction();
     
    6666        args.append(boundArgs->getIndexQuickly(i));
    6767    for (unsigned i = 0; i < exec->argumentCount(); ++i)
    68         args.append(exec->argument(i));
     68        args.append(exec->uncheckedArgument(i));
    6969
    7070    JSObject* targetFunction = boundFunction->targetFunction();
  • trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp

    r154569 r156240  
    102102        return throwVMError(exec, createTypeError(exec, "Need at least one argument (the byteOffset)"));
    103103   
    104     unsigned byteOffset = exec->argument(0).toUInt32(exec);
     104    unsigned byteOffset = exec->uncheckedArgument(0).toUInt32(exec);
    105105    if (exec->hadException())
    106106        return JSValue::encode(jsUndefined());
     
    109109    unsigned elementSize = sizeof(typename Adaptor::Type);
    110110    if (elementSize > 1 && exec->argumentCount() >= 2) {
    111         littleEndian = exec->argument(1).toBoolean(exec);
     111        littleEndian = exec->uncheckedArgument(1).toBoolean(exec);
    112112        if (exec->hadException())
    113113            return JSValue::encode(jsUndefined());
     
    136136        return throwVMError(exec, createTypeError(exec, "Need at least two argument (the byteOffset and value)"));
    137137   
    138     unsigned byteOffset = exec->argument(0).toUInt32(exec);
     138    unsigned byteOffset = exec->uncheckedArgument(0).toUInt32(exec);
    139139    if (exec->hadException())
    140140        return JSValue::encode(jsUndefined());
    141141   
    142     typename Adaptor::Type value = toNativeFromValue<Adaptor>(exec, exec->argument(1));
     142    typename Adaptor::Type value = toNativeFromValue<Adaptor>(exec, exec->uncheckedArgument(1));
    143143    if (exec->hadException())
    144144        return JSValue::encode(jsUndefined());
     
    147147    unsigned elementSize = sizeof(typename Adaptor::Type);
    148148    if (elementSize > 1 && exec->argumentCount() >= 3) {
    149         littleEndian = exec->argument(2).toBoolean(exec);
     149        littleEndian = exec->uncheckedArgument(2).toBoolean(exec);
    150150        if (exec->hadException())
    151151            return JSValue::encode(jsUndefined());
  • trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h

    r154403 r156240  
    9191        RefPtr<ArrayBuffer> buffer = jsBuffer->impl();
    9292       
    93         unsigned offset = (exec->argumentCount() > 1) ? exec->argument(1).toUInt32(exec) : 0;
     93        unsigned offset = (exec->argumentCount() > 1) ? exec->uncheckedArgument(1).toUInt32(exec) : 0;
    9494        if (exec->hadException())
    9595            return JSValue::encode(jsUndefined());
    9696        unsigned length = 0;
    9797        if (exec->argumentCount() > 2) {
    98             length = exec->argument(2).toUInt32(exec);
     98            length = exec->uncheckedArgument(2).toUInt32(exec);
    9999            if (exec->hadException())
    100100                return JSValue::encode(jsUndefined());
     
    114114    // - An integer. This creates a new typed array of that length and zero-initializes it.
    115115   
    116     if (JSObject* object = jsDynamicCast<JSObject*>(exec->argument(0))) {
     116    if (JSObject* object = jsDynamicCast<JSObject*>(exec->uncheckedArgument(0))) {
    117117        unsigned length =
    118118            object->get(exec, exec->vm().propertyNames->length).toUInt32(exec);
     
    133133   
    134134    int length;
    135     if (exec->argument(0).isInt32())
    136         length = exec->argument(0).asInt32();
    137     else if (!exec->argument(0).isNumber())
     135    if (exec->uncheckedArgument(0).isInt32())
     136        length = exec->uncheckedArgument(0).asInt32();
     137    else if (!exec->uncheckedArgument(0).isNumber())
    138138        return throwVMError(exec, createTypeError(exec, "Invalid array length argument"));
    139139    else {
    140         length = static_cast<int>(exec->argument(0).asNumber());
    141         if (length != exec->argument(0).asNumber())
     140        length = static_cast<int>(exec->uncheckedArgument(0).asNumber());
     141        if (length != exec->uncheckedArgument(0).asNumber())
    142142            return throwVMError(exec, createTypeError(exec, "Invalid array length argument (fractional lengths not allowed)"));
    143143    }
  • trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h

    r154127 r156240  
    4545        return throwVMError(exec, createTypeError(exec, "Expected at least one argument"));
    4646   
    47     JSObject* sourceArray = jsDynamicCast<JSObject*>(exec->argument(0));
     47    JSObject* sourceArray = jsDynamicCast<JSObject*>(exec->uncheckedArgument(0));
    4848    if (!sourceArray)
    4949        return throwVMError(exec, createTypeError(exec, "First argument should be an object"));
     
    5151    unsigned offset;
    5252    if (exec->argumentCount() >= 2) {
    53         offset = exec->argument(1).toUInt32(exec);
     53        offset = exec->uncheckedArgument(1).toUInt32(exec);
    5454        if (exec->hadException())
    5555            return JSValue::encode(jsUndefined());
     
    7777        return throwVMError(exec, createTypeError(exec, "Expected at least one argument"));
    7878   
    79     int32_t begin = exec->argument(0).toInt32(exec);
     79    int32_t begin = exec->uncheckedArgument(0).toInt32(exec);
    8080    if (exec->hadException())
    8181        return JSValue::encode(jsUndefined());
     
    8383    int32_t end;
    8484    if (exec->argumentCount() >= 2) {
    85         end = exec->argument(1).toInt32(exec);
     85        end = exec->uncheckedArgument(1).toInt32(exec);
    8686        if (exec->hadException())
    8787            return JSValue::encode(jsUndefined());
  • trunk/Source/JavaScriptCore/runtime/JSONObject.cpp

    r155143 r156240  
    778778    if (!exec->argumentCount())
    779779        return throwVMError(exec, createError(exec, ASCIILiteral("JSON.parse requires at least one parameter")));
    780     String source = exec->argument(0).toString(exec)->value(exec);
     780    String source = exec->uncheckedArgument(0).toString(exec)->value(exec);
    781781    if (exec->hadException())
    782782        return JSValue::encode(jsNull());
     
    799799        return JSValue::encode(unfiltered);
    800800   
    801     JSValue function = exec->argument(1);
     801    JSValue function = exec->uncheckedArgument(1);
    802802    CallData callData;
    803803    CallType callType = getCallData(function, callData);
     
    813813        return throwVMError(exec, createError(exec, ASCIILiteral("No input to stringify")));
    814814    LocalScope scope(exec->vm());
    815     Local<Unknown> value(exec->vm(), exec->argument(0));
     815    Local<Unknown> value(exec->vm(), exec->uncheckedArgument(0));
    816816    Local<Unknown> replacer(exec->vm(), exec->argument(1));
    817817    Local<Unknown> space(exec->vm(), exec->argument(2));
  • trunk/Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp

    r155143 r156240  
    9595        return throwVMError(exec, createTypeError(exec, "Expected at least one argument"));
    9696
    97     JSValue function = exec->argument(0);
     97    JSValue function = exec->uncheckedArgument(0);
    9898
    9999    CallData callData;
     
    152152
    153153    JSPromise* promise = JSPromise::createWithResolver(exec->vm(), globalObject);
    154     promise->resolver()->fulfill(exec, exec->argument(0));
     154    promise->resolver()->fulfill(exec, exec->uncheckedArgument(0));
    155155
    156156    return JSValue::encode(promise);
     
    165165
    166166    JSPromise* promise = JSPromise::createWithResolver(exec->vm(), globalObject);
    167     promise->resolver()->resolve(exec, exec->argument(0));
     167    promise->resolver()->resolve(exec, exec->uncheckedArgument(0));
    168168
    169169    return JSValue::encode(promise);
     
    178178
    179179    JSPromise* promise = JSPromise::createWithResolver(exec->vm(), globalObject);
    180     promise->resolver()->reject(exec, exec->argument(0));
     180    promise->resolver()->reject(exec, exec->uncheckedArgument(0));
    181181
    182182    return JSValue::encode(promise);
  • trunk/Source/JavaScriptCore/runtime/MathObject.cpp

    r155143 r156240  
    160160    double result = -std::numeric_limits<double>::infinity();
    161161    for (unsigned k = 0; k < argsCount; ++k) {
    162         double val = exec->argument(k).toNumber(exec);
     162        double val = exec->uncheckedArgument(k).toNumber(exec);
    163163        if (std::isnan(val)) {
    164164            result = QNaN;
     
    176176    double result = +std::numeric_limits<double>::infinity();
    177177    for (unsigned k = 0; k < argsCount; ++k) {
    178         double val = exec->argument(k).toNumber(exec);
     178        double val = exec->uncheckedArgument(k).toNumber(exec);
    179179        if (std::isnan(val)) {
    180180            result = QNaN;
  • trunk/Source/JavaScriptCore/runtime/NameConstructor.cpp

    r155143 r156240  
    5151static EncodedJSValue JSC_HOST_CALL constructPrivateName(ExecState* exec)
    5252{
    53     JSValue publicName = exec->argumentCount() ? exec->argument(0) : jsUndefined();
     53    JSValue publicName = exec->argument(0);
    5454    return JSValue::encode(NameInstance::create(exec->vm(), exec->lexicalGlobalObject()->privateNameStructure(), publicName.toString(exec)));
    5555}
  • trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp

    r155143 r156240  
    5252EncodedJSValue JSC_HOST_CALL Interpreter::constructWithNativeErrorConstructor(ExecState* exec)
    5353{
    54     JSValue message = exec->argumentCount() ? exec->argument(0) : jsUndefined();
     54    JSValue message = exec->argument(0);
    5555    Structure* errorStructure = static_cast<NativeErrorConstructor*>(exec->callee())->errorStructure();
    5656    ASSERT(errorStructure);
     
    6969EncodedJSValue JSC_HOST_CALL Interpreter::callNativeErrorConstructor(ExecState* exec)
    7070{
    71     JSValue message = exec->argumentCount() ? exec->argument(0) : jsUndefined();
     71    JSValue message = exec->argument(0);
    7272    Structure* errorStructure = static_cast<NativeErrorConstructor*>(exec->callee())->errorStructure();
    7373    Vector<StackFrame> stackTrace;
  • trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp

    r155143 r156240  
    112112{
    113113    NumberObject* object = NumberObject::create(exec->vm(), asInternalFunction(exec->callee())->globalObject()->numberObjectStructure());
    114     double n = exec->argumentCount() ? exec->argument(0).toNumber(exec) : 0;
     114    double n = exec->argumentCount() ? exec->uncheckedArgument(0).toNumber(exec) : 0;
    115115    object->setInternalValue(exec->vm(), jsNumber(n));
    116116    return JSValue::encode(object);
     
    126126static EncodedJSValue JSC_HOST_CALL callNumberConstructor(ExecState* exec)
    127127{
    128     return JSValue::encode(jsNumber(!exec->argumentCount() ? 0 : exec->argument(0).toNumber(exec)));
     128    return JSValue::encode(jsNumber(!exec->argumentCount() ? 0 : exec->uncheckedArgument(0).toNumber(exec)));
    129129}
    130130
  • trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp

    r155143 r156240  
    372372EncodedJSValue JSC_HOST_CALL objectConstructorCreate(ExecState* exec)
    373373{
    374     if (!exec->argument(0).isObject() && !exec->argument(0).isNull())
     374    JSValue proto = exec->argument(0);
     375    if (!proto.isObject() && !proto.isNull())
    375376        return throwVMError(exec, createTypeError(exec, ASCIILiteral("Object prototype may only be an Object or null.")));
    376     JSValue proto = exec->argument(0);
    377377    JSObject* newObject = proto.isObject()
    378378        ? constructEmptyObject(exec, asObject(proto))
  • trunk/Source/JavaScriptCore/runtime/SetConstructor.cpp

    r154916 r156240  
    6868    size_t count = callFrame->argumentCount();
    6969    for (size_t i = 0; i < count; i++) {
    70         JSValue item = callFrame->argument(i);
     70        JSValue item = callFrame->uncheckedArgument(i);
    7171        mapData->set(callFrame, item, item);
    7272    }
  • trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp

    r155143 r156240  
    7474    PassRefPtr<StringImpl> impl = StringImpl::createUninitialized(length, buf);
    7575    for (unsigned i = 0; i < length; ++i)
    76         buf[i] = static_cast<UChar>(exec->argument(i).toUInt32(exec));
     76        buf[i] = static_cast<UChar>(exec->uncheckedArgument(i).toUInt32(exec));
    7777    return jsString(exec, impl);
    7878}
     
    8181{
    8282    if (LIKELY(exec->argumentCount() == 1))
    83         return JSValue::encode(jsSingleCharacterString(exec, exec->argument(0).toUInt32(exec)));
     83        return JSValue::encode(jsSingleCharacterString(exec, exec->uncheckedArgument(0).toUInt32(exec)));
    8484    return JSValue::encode(stringFromCharCodeSlowCase(exec));
    8585}
     
    9696        return JSValue::encode(StringObject::create(exec, globalObject->stringObjectStructure()));
    9797   
    98     return JSValue::encode(StringObject::create(exec, globalObject->stringObjectStructure(), exec->argument(0).toString(exec)));
     98    return JSValue::encode(StringObject::create(exec, globalObject->stringObjectStructure(), exec->uncheckedArgument(0).toString(exec)));
    9999}
    100100
     
    109109    if (!exec->argumentCount())
    110110        return JSValue::encode(jsEmptyString(exec));
    111     return JSValue::encode(exec->argument(0).toString(exec));
     111    return JSValue::encode(exec->uncheckedArgument(0).toString(exec));
    112112}
    113113
  • trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp

    r155143 r156240  
    751751{
    752752    JSValue thisValue = exec->hostThisValue();
    753     if (thisValue.isString() && (exec->argumentCount() == 1))
    754         return JSValue::encode(jsString(exec, asString(thisValue), exec->argument(0).toString(exec)));
     753    if (thisValue.isString() && exec->argumentCount() == 1)
     754        return JSValue::encode(jsString(exec, asString(thisValue), exec->uncheckedArgument(0).toString(exec)));
    755755
    756756    if (!checkObjectCoercible(thisValue))
  • trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp

    r155096 r156240  
    8282    if (exec->argumentCount() < 1)
    8383        return jsUndefined();
    84     return numberOfDFGCompiles(exec->argument(0));
     84    return numberOfDFGCompiles(exec->uncheckedArgument(0));
    8585}
    8686
     
    8989    if (exec->argumentCount() < 1)
    9090        return jsUndefined();
    91     return setNeverInline(exec->argument(0));
     91    return setNeverInline(exec->uncheckedArgument(0));
    9292}
    9393
  • trunk/Source/WebCore/ChangeLog

    r156236 r156240  
     12013-09-21  Darin Adler  <darin@apple.com>
     2
     3        Add ExecState::uncheckedArgument and use where possible to shrink a bit
     4        https://bugs.webkit.org/show_bug.cgi?id=121750
     5
     6        Reviewed by Andreas Kling.
     7
     8        * bindings/js/JSHTMLCanvasElementCustom.cpp:
     9        (WebCore::JSHTMLCanvasElement::probablySupportsContext): Already checked count.
     10        (WebCore::JSHTMLCanvasElement::toDataURL): Ditto.
     11        * bindings/js/JSHTMLDocumentCustom.cpp:
     12        (WebCore::documentWrite): In a loop.
     13        * bindings/js/JSInjectedScriptHostCustom.cpp:
     14        (WebCore::JSInjectedScriptHost::inspectedObject): Already checked count.
     15        (WebCore::JSInjectedScriptHost::internalConstructorName): Ditto.
     16        (WebCore::JSInjectedScriptHost::isHTMLAllCollection): Ditto.
     17        (WebCore::JSInjectedScriptHost::type): Ditto.
     18        (WebCore::JSInjectedScriptHost::functionDetails): Ditto.
     19        (WebCore::JSInjectedScriptHost::getEventListeners): Ditto.
     20        (WebCore::JSInjectedScriptHost::inspect): Ditto.
     21        (WebCore::JSInjectedScriptHost::databaseId): Ditto.
     22        (WebCore::JSInjectedScriptHost::storageId): Ditto.
     23        * bindings/js/JSSQLTransactionSyncCustom.cpp:
     24        (WebCore::JSSQLTransactionSync::executeSql): Ditto.
     25        * bindings/js/JSSVGLengthCustom.cpp:
     26        (WebCore::JSSVGLength::convertToSpecifiedUnits): Ditto.
     27        * bindings/js/JSSharedWorkerCustom.cpp:
     28        (WebCore::JSSharedWorkerConstructor::constructJSSharedWorker): Ditto.
     29
     30        * bindings/js/JSWebGLRenderingContextCustom.cpp:
     31        (WebCore::getObjectParameter): Already checked count.
     32        (WebCore::JSWebGLRenderingContext::getAttachedShaders): Removed tortured code
     33        to triply do the checking that the toWebGLProgram function already does, including
     34        spurious exception checking in code that can't create an exception. Also count is
     35        already checked.
     36        (WebCore::JSWebGLRenderingContext::getExtension): More of the same.
     37        (WebCore::JSWebGLRenderingContext::getFramebufferAttachmentParameter): Ditto.
     38        (WebCore::JSWebGLRenderingContext::getParameter): Ditto.
     39        (WebCore::JSWebGLRenderingContext::getProgramParameter): Ditto.
     40        (WebCore::JSWebGLRenderingContext::getShaderParameter): Ditto.
     41        (WebCore::JSWebGLRenderingContext::getUniform): Ditto.
     42        (WebCore::dataFunctionf): Ditto.
     43        (WebCore::dataFunctioni): Ditto.
     44        (WebCore::dataFunctionMatrix): Ditto.
     45
     46        * bindings/js/JSWorkerGlobalScopeCustom.cpp:
     47        (WebCore::JSWorkerGlobalScope::importScripts): In a loop.
     48        * bindings/js/JSXMLHttpRequestCustom.cpp:
     49        (WebCore::JSXMLHttpRequest::open): Already checked. Also removed some unneeded
     50        argument count checks.
     51        (WebCore::JSXMLHttpRequest::send): Removed unneeded special case for 0 argument
     52        count that does the same thing as the undefined case, since asking for an
     53        argument past the count yields undefined.
     54
     55        * bindings/js/JSXSLTProcessorCustom.cpp:
     56        (WebCore::JSXSLTProcessor::setParameter): Already checked.
     57        (WebCore::JSXSLTProcessor::getParameter): Already checked.
     58        (WebCore::JSXSLTProcessor::removeParameter): Already checked.
     59
     60        * bindings/js/ScheduledAction.cpp:
     61        (WebCore::ScheduledAction::ScheduledAction): In a loop.
     62        * bindings/js/ScriptCallStackFactory.cpp:
     63        (WebCore::createScriptArguments): Ditto.
     64
     65        * bindings/scripts/CodeGeneratorJS.pm:
     66        (GenerateParametersCheck): Removed some excess argumentCount checks.
     67        Used uncheckedArgument in a few places. More needs to be done, especially for
     68        overloaded functions.
     69
     70        * bridge/c/c_instance.cpp:
     71        (JSC::Bindings::CInstance::invokeMethod): In a loop.
     72        (JSC::Bindings::CInstance::invokeDefaultMethod): Ditto.
     73        * bridge/objc/objc_instance.mm:
     74        (ObjcInstance::invokeObjcMethod): Ditto.
     75        (ObjcInstance::invokeDefaultMethod): Ditto.
     76
     77        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
     78        * bindings/scripts/test/JS/JSTestObj.cpp:
     79        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
     80        Updated.
     81
    1822013-09-21  Jon Lee  <jonlee@apple.com>
    283
  • trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp

    r155137 r156240  
    105105    if (!exec->argumentCount())
    106106        return jsBoolean(false);
    107     const String& contextId = exec->argument(0).toString(exec)->value(exec);
     107    const String& contextId = exec->uncheckedArgument(0).toString(exec)->value(exec);
    108108    if (exec->hadException())
    109109        return jsUndefined();
     
    130130    double* qualityPtr = 0;
    131131    if (exec->argumentCount() > 1) {
    132         JSValue v = exec->argument(1);
     132        JSValue v = exec->uncheckedArgument(1);
    133133        if (v.isNumber()) {
    134134            quality = v.toNumber(exec);
  • trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp

    r153970 r156240  
    145145        else {
    146146            for (size_t i = 1; i < size; ++i) {
    147                 String subsequentString = exec->argument(i).toString(exec)->value(exec);
     147                String subsequentString = exec->uncheckedArgument(i).toString(exec)->value(exec);
    148148                segmentedString.append(SegmentedString(subsequentString));
    149149            }
  • trunk/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp

    r155736 r156240  
    9191        return jsUndefined();
    9292
    93     InjectedScriptHost::InspectableObject* object = impl()->inspectedObject(exec->argument(0).toInt32(exec));
     93    InjectedScriptHost::InspectableObject* object = impl()->inspectedObject(exec->uncheckedArgument(0).toInt32(exec));
    9494    if (!object)
    9595        return jsUndefined();
     
    108108        return jsUndefined();
    109109
    110     JSObject* thisObject = jsCast<JSObject*>(exec->argument(0).toThis(exec, NotStrictMode));
     110    JSObject* thisObject = jsCast<JSObject*>(exec->uncheckedArgument(0).toThis(exec, NotStrictMode));
    111111    String result = thisObject->methodTable()->className(thisObject);
    112112    return jsStringWithCache(exec, result);
     
    118118        return jsUndefined();
    119119
    120     JSValue value = exec->argument(0);
     120    JSValue value = exec->uncheckedArgument(0);
    121121    return jsBoolean(value.inherits(JSHTMLAllCollection::info()));
    122122}
     
    127127        return jsUndefined();
    128128
    129     JSValue value = exec->argument(0);
     129    JSValue value = exec->uncheckedArgument(0);
    130130    if (value.isString())
    131131        return jsString(exec, String("string"));
     
    159159    if (exec->argumentCount() < 1)
    160160        return jsUndefined();
    161     JSValue value = exec->argument(0);
     161    JSValue value = exec->uncheckedArgument(0);
    162162    if (!value.asCell()->inherits(JSFunction::info()))
    163163        return jsUndefined();
     
    223223    if (exec->argumentCount() < 1)
    224224        return jsUndefined();
    225     JSValue value = exec->argument(0);
     225    JSValue value = exec->uncheckedArgument(0);
    226226    if (!value.isObject() || value.isNull())
    227227        return jsUndefined();
     
    248248{
    249249    if (exec->argumentCount() >= 2) {
    250         ScriptValue object(exec->vm(), exec->argument(0));
    251         ScriptValue hints(exec->vm(), exec->argument(1));
     250        ScriptValue object(exec->vm(), exec->uncheckedArgument(0));
     251        ScriptValue hints(exec->vm(), exec->uncheckedArgument(1));
    252252        impl()->inspectImpl(object.toInspectorValue(exec), hints.toInspectorValue(exec));
    253253    }
     
    260260        return jsUndefined();
    261261#if ENABLE(SQL_DATABASE)
    262     Database* database = toDatabase(exec->argument(0));
     262    Database* database = toDatabase(exec->uncheckedArgument(0));
    263263    if (database)
    264264        return jsStringWithCache(exec, impl()->databaseIdImpl(database));
     
    271271    if (exec->argumentCount() < 1)
    272272        return jsUndefined();
    273     Storage* storage = toStorage(exec->argument(0));
     273    Storage* storage = toStorage(exec->uncheckedArgument(0));
    274274    if (storage)
    275275        return jsStringWithCache(exec, impl()->storageIdImpl(storage));
  • trunk/Source/WebCore/bindings/js/JSSQLTransactionSyncCustom.cpp

    r134440 r156240  
    5050    }
    5151
    52     String sqlStatement = exec->argument(0).toString(exec)->value(exec);
     52    String sqlStatement = exec->uncheckedArgument(0).toString(exec)->value(exec);
    5353    if (exec->hadException())
    5454        return jsUndefined();
  • trunk/Source/WebCore/bindings/js/JSSVGLengthCustom.cpp

    r154797 r156240  
    8484        return exec->vm().throwException(exec, createNotEnoughArgumentsError(exec));
    8585
    86     unsigned short unitType = exec->argument(0).toUInt32(exec);
     86    unsigned short unitType = exec->uncheckedArgument(0).toUInt32(exec);
    8787    if (exec->hadException())
    8888        return jsUndefined();
  • trunk/Source/WebCore/bindings/js/JSSharedWorkerCustom.cpp

    r155229 r156240  
    6464        return throwVMError(exec, createNotEnoughArgumentsError(exec));
    6565
    66     String scriptURL = exec->argument(0).toString(exec)->value(exec);
     66    String scriptURL = exec->uncheckedArgument(0).toString(exec)->value(exec);
    6767    String name;
    6868    if (exec->argumentCount() > 1)
    69         name = exec->argument(1).toString(exec)->value(exec);
     69        name = exec->uncheckedArgument(1).toString(exec)->value(exec);
    7070
    7171    if (exec->hadException())
  • trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp

    r154797 r156240  
    157157    ExceptionCode ec = 0;
    158158    WebGLRenderingContext* context = static_cast<WebGLRenderingContext*>(obj->impl());
    159     unsigned target = exec->argument(0).toInt32(exec);
    160     if (exec->hadException())
    161         return jsUndefined();
    162     unsigned pname = exec->argument(1).toInt32(exec);
     159    unsigned target = exec->uncheckedArgument(0).toInt32(exec);
     160    if (exec->hadException())
     161        return jsUndefined();
     162    unsigned pname = exec->uncheckedArgument(1).toInt32(exec);
    163163    if (exec->hadException())
    164164        return jsUndefined();
     
    247247    ExceptionCode ec = 0;
    248248    WebGLRenderingContext* context = static_cast<WebGLRenderingContext*>(impl());
    249     if (exec->argumentCount() > 0 && !exec->argument(0).isUndefinedOrNull() && !exec->argument(0).inherits(JSWebGLProgram::info()))
    250         return throwTypeError(exec);
    251     WebGLProgram* program = toWebGLProgram(exec->argument(0));
    252     if (exec->hadException())
    253         return jsNull();
     249    WebGLProgram* program = toWebGLProgram(exec->uncheckedArgument(0));
     250    if (!program)
     251        return throwTypeError(exec);
    254252    Vector<RefPtr<WebGLShader> > shaders;
    255253    bool succeed = context->getAttachedShaders(program, shaders, ec);
     
    272270
    273271    WebGLRenderingContext* context = static_cast<WebGLRenderingContext*>(impl());
    274     const String name = exec->argument(0).toString(exec)->value(exec);
     272    const String name = exec->uncheckedArgument(0).toString(exec)->value(exec);
    275273    if (exec->hadException())
    276274        return jsUndefined();
     
    291289    ExceptionCode ec = 0;
    292290    WebGLRenderingContext* context = static_cast<WebGLRenderingContext*>(impl());
    293     unsigned target = exec->argument(0).toInt32(exec);
    294     if (exec->hadException())
    295         return jsUndefined();
    296     unsigned attachment = exec->argument(1).toInt32(exec);
    297     if (exec->hadException())
    298         return jsUndefined();
    299     unsigned pname = exec->argument(2).toInt32(exec);
     291    unsigned target = exec->uncheckedArgument(0).toInt32(exec);
     292    if (exec->hadException())
     293        return jsUndefined();
     294    unsigned attachment = exec->uncheckedArgument(1).toInt32(exec);
     295    if (exec->hadException())
     296        return jsUndefined();
     297    unsigned pname = exec->uncheckedArgument(2).toInt32(exec);
    300298    if (exec->hadException())
    301299        return jsUndefined();
     
    315313    ExceptionCode ec = 0;
    316314    WebGLRenderingContext* context = static_cast<WebGLRenderingContext*>(impl());
    317     unsigned pname = exec->argument(0).toInt32(exec);
     315    unsigned pname = exec->uncheckedArgument(0).toInt32(exec);
    318316    if (exec->hadException())
    319317        return jsUndefined();
     
    333331    ExceptionCode ec = 0;
    334332    WebGLRenderingContext* context = static_cast<WebGLRenderingContext*>(impl());
    335     if (exec->argumentCount() > 0 && !exec->argument(0).isUndefinedOrNull() && !exec->argument(0).inherits(JSWebGLProgram::info()))
    336         return throwTypeError(exec);
    337     WebGLProgram* program = toWebGLProgram(exec->argument(0));
    338     unsigned pname = exec->argument(1).toInt32(exec);
     333    WebGLProgram* program = toWebGLProgram(exec->uncheckedArgument(0));
     334    if (!program)
     335        return throwTypeError(exec);
     336    unsigned pname = exec->uncheckedArgument(1).toInt32(exec);
    339337    if (exec->hadException())
    340338        return jsUndefined();
     
    359357    ExceptionCode ec = 0;
    360358    WebGLRenderingContext* context = static_cast<WebGLRenderingContext*>(impl());
    361     if (exec->argumentCount() > 0 && !exec->argument(0).isUndefinedOrNull() && !exec->argument(0).inherits(JSWebGLShader::info()))
    362         return throwTypeError(exec);
    363     WebGLShader* shader = toWebGLShader(exec->argument(0));
    364     unsigned pname = exec->argument(1).toInt32(exec);
     359    if (!exec->uncheckedArgument(0).isUndefinedOrNull() && !exec->uncheckedArgument(0).inherits(JSWebGLShader::info()))
     360        return throwTypeError(exec);
     361    WebGLShader* shader = toWebGLShader(exec->uncheckedArgument(0));
     362    unsigned pname = exec->uncheckedArgument(1).toInt32(exec);
    365363    if (exec->hadException())
    366364        return jsUndefined();
     
    397395    ExceptionCode ec = 0;
    398396    WebGLRenderingContext* context = static_cast<WebGLRenderingContext*>(impl());
    399     if (exec->argumentCount() > 0 && !exec->argument(0).isUndefinedOrNull() && !exec->argument(0).inherits(JSWebGLProgram::info()))
    400         return throwTypeError(exec);
    401     WebGLProgram* program = toWebGLProgram(exec->argument(0));
    402     if (exec->argumentCount() > 1 && !exec->argument(1).isUndefinedOrNull() && !exec->argument(1).inherits(JSWebGLUniformLocation::info()))
    403         return throwTypeError(exec);
    404     WebGLUniformLocation* loc = toWebGLUniformLocation(exec->argument(1));
    405     if (exec->hadException())
    406         return jsUndefined();
    407     WebGLGetInfo info = context->getUniform(program, loc, ec);
     397    WebGLProgram* program = toWebGLProgram(exec->uncheckedArgument(0));
     398    if (!program)
     399        return throwTypeError(exec);
     400    WebGLUniformLocation* location = toWebGLUniformLocation(exec->uncheckedArgument(1));
     401    if (!location)
     402        return throwTypeError(exec);
     403    WebGLGetInfo info = context->getUniform(program, location, ec);
    408404    if (ec) {
    409405        setDOMException(exec, ec);
     
    473469   
    474470    if (functionForUniform(f)) {
    475         if (exec->argumentCount() > 0 && !exec->argument(0).isUndefinedOrNull() && !exec->argument(0).inherits(JSWebGLUniformLocation::info()))
     471        location = toWebGLUniformLocation(exec->uncheckedArgument(0));
     472        if (!location)
    476473            return throwTypeError(exec);
    477         location = toWebGLUniformLocation(exec->argument(0));
    478474    } else
    479         index = exec->argument(0).toInt32(exec);
     475        index = exec->uncheckedArgument(0).toInt32(exec);
    480476
    481477    if (exec->hadException())
    482478        return jsUndefined();
    483479       
    484     RefPtr<Float32Array> webGLArray = toFloat32Array(exec->argument(1));
     480    RefPtr<Float32Array> webGLArray = toFloat32Array(exec->uncheckedArgument(1));
    485481    if (exec->hadException())   
    486482        return jsUndefined();
     
    520516
    521517    Vector<float, 64> array;
    522     if (!toVector(exec, exec->argument(1), array))
     518    if (!toVector(exec, exec->uncheckedArgument(1), array))
    523519        return throwTypeError(exec);
    524520
     
    559555        return exec->vm().throwException(exec, createNotEnoughArgumentsError(exec));
    560556
    561     if (exec->argumentCount() > 0 && !exec->argument(0).isUndefinedOrNull() && !exec->argument(0).inherits(JSWebGLUniformLocation::info()))
    562         return throwTypeError(exec);
    563     WebGLUniformLocation* location = toWebGLUniformLocation(exec->argument(0));
     557    WebGLUniformLocation* location = toWebGLUniformLocation(exec->uncheckedArgument(0));
     558    if (!location)
     559        return throwTypeError(exec);
    564560 
    565     if (exec->hadException())
    566         return jsUndefined();
    567        
    568     RefPtr<Int32Array> webGLArray = toInt32Array(exec->argument(1));
    569     if (exec->hadException())   
    570         return jsUndefined();
    571        
     561    RefPtr<Int32Array> webGLArray = toInt32Array(exec->uncheckedArgument(1));
     562
    572563    ExceptionCode ec = 0;
    573564    if (webGLArray) {
     
    595586
    596587    Vector<int, 64> array;
    597     if (!toVector(exec, exec->argument(1), array))
     588    if (!toVector(exec, exec->uncheckedArgument(1), array))
    598589        return throwTypeError(exec);
    599590
     
    624615        return exec->vm().throwException(exec, createNotEnoughArgumentsError(exec));
    625616
    626     if (exec->argumentCount() > 0 && !exec->argument(0).isUndefinedOrNull() && !exec->argument(0).inherits(JSWebGLUniformLocation::info()))
    627         return throwTypeError(exec);
    628     WebGLUniformLocation* location = toWebGLUniformLocation(exec->argument(0));
    629 
     617    WebGLUniformLocation* location = toWebGLUniformLocation(exec->uncheckedArgument(0));
     618    if (!location)
     619        return throwTypeError(exec);
     620
     621    bool transpose = exec->uncheckedArgument(1).toBoolean(exec);
    630622    if (exec->hadException())   
    631623        return jsUndefined();
    632624       
    633     bool transpose = exec->argument(1).toBoolean(exec);
    634     if (exec->hadException())   
    635         return jsUndefined();
    636        
    637     RefPtr<Float32Array> webGLArray = toFloat32Array(exec->argument(2));
    638     if (exec->hadException())   
    639         return jsUndefined();
     625    RefPtr<Float32Array> webGLArray = toFloat32Array(exec->uncheckedArgument(2));
    640626       
    641627    ExceptionCode ec = 0;
     
    658644
    659645    Vector<float, 64> array;
    660     if (!toVector(exec, exec->argument(2), array))
     646    if (!toVector(exec, exec->uncheckedArgument(2), array))
    661647        return throwTypeError(exec);
    662648
  • trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp

    r154300 r156240  
    8585    Vector<String> urls;
    8686    for (unsigned i = 0; i < exec->argumentCount(); i++) {
    87         urls.append(exec->argument(i).toString(exec)->value(exec));
     87        urls.append(exec->uncheckedArgument(i).toString(exec)->value(exec));
    8888        if (exec->hadException())
    8989            return jsUndefined();
  • trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp

    r155081 r156240  
    8989        return exec->vm().throwException(exec, createNotEnoughArgumentsError(exec));
    9090
    91     const KURL& url = impl()->scriptExecutionContext()->completeURL(exec->argument(1).toString(exec)->value(exec));
    92     String method = exec->argument(0).toString(exec)->value(exec);
     91    const KURL& url = impl()->scriptExecutionContext()->completeURL(exec->uncheckedArgument(1).toString(exec)->value(exec));
     92    String method = exec->uncheckedArgument(0).toString(exec)->value(exec);
    9393
    9494    ExceptionCode ec = 0;
    9595    if (exec->argumentCount() >= 3) {
    96         bool async = exec->argument(2).toBoolean(exec);
    97 
    98         if (exec->argumentCount() >= 4 && !exec->argument(3).isUndefined()) {
    99             String user = valueToStringWithNullCheck(exec, exec->argument(3));
    100 
    101             if (exec->argumentCount() >= 5 && !exec->argument(4).isUndefined()) {
    102                 String password = valueToStringWithNullCheck(exec, exec->argument(4));
     96        bool async = exec->uncheckedArgument(2).toBoolean(exec);
     97        if (!exec->argument(3).isUndefined()) {
     98            String user = valueToStringWithNullCheck(exec, exec->uncheckedArgument(3));
     99
     100            if (!exec->argument(4).isUndefined()) {
     101                String password = valueToStringWithNullCheck(exec, exec->uncheckedArgument(4));
    103102                impl()->open(method, url, async, user, password, ec);
    104103            } else
     
    150149
    151150    ExceptionCode ec = 0;
    152     if (!exec->argumentCount())
     151    JSValue val = exec->argument(0);
     152    if (val.isUndefinedOrNull())
    153153        impl()->send(ec);
    154     else {
    155         JSValue val = exec->argument(0);
    156         if (val.isUndefinedOrNull())
    157             impl()->send(ec);
    158         else if (val.inherits(JSDocument::info()))
    159             impl()->send(toDocument(val), ec);
    160         else if (val.inherits(JSBlob::info()))
    161             impl()->send(toBlob(val), ec);
    162         else if (val.inherits(JSDOMFormData::info()))
    163             impl()->send(toDOMFormData(val), ec);
    164         else if (val.inherits(JSArrayBuffer::info()))
    165             impl()->send(toArrayBuffer(val), ec);
    166         else if (val.inherits(JSArrayBufferView::info())) {
    167             RefPtr<ArrayBufferView> view = toArrayBufferView(val);
    168             impl()->send(view.get(), ec);
    169         } else
    170             impl()->send(val.toString(exec)->value(exec), ec);
    171     }
     154    else if (val.inherits(JSDocument::info()))
     155        impl()->send(toDocument(val), ec);
     156    else if (val.inherits(JSBlob::info()))
     157        impl()->send(toBlob(val), ec);
     158    else if (val.inherits(JSDOMFormData::info()))
     159        impl()->send(toDOMFormData(val), ec);
     160    else if (val.inherits(JSArrayBuffer::info()))
     161        impl()->send(toArrayBuffer(val), ec);
     162    else if (val.inherits(JSArrayBufferView::info())) {
     163        RefPtr<ArrayBufferView> view = toArrayBufferView(val);
     164        impl()->send(view.get(), ec);
     165    } else
     166        impl()->send(val.toString(exec)->value(exec), ec);
    172167
    173168    SendFunctor functor;
  • trunk/Source/WebCore/bindings/js/JSXSLTProcessorCustom.cpp

    r127757 r156240  
    5151    if (exec->argument(1).isUndefinedOrNull() || exec->argument(2).isUndefinedOrNull())
    5252        return jsUndefined(); // Throw exception?
    53     String namespaceURI = exec->argument(0).toString(exec)->value(exec);
    54     String localName = exec->argument(1).toString(exec)->value(exec);
    55     String value = exec->argument(2).toString(exec)->value(exec);
     53    String namespaceURI = exec->uncheckedArgument(0).toString(exec)->value(exec);
     54    String localName = exec->uncheckedArgument(1).toString(exec)->value(exec);
     55    String value = exec->uncheckedArgument(2).toString(exec)->value(exec);
    5656    impl()->setParameter(namespaceURI, localName, value);
    5757    return jsUndefined();
     
    6262    if (exec->argument(1).isUndefinedOrNull())
    6363        return jsUndefined();
    64     String namespaceURI = exec->argument(0).toString(exec)->value(exec);
    65     String localName = exec->argument(1).toString(exec)->value(exec);
     64    String namespaceURI = exec->uncheckedArgument(0).toString(exec)->value(exec);
     65    String localName = exec->uncheckedArgument(1).toString(exec)->value(exec);
    6666    String value = impl()->getParameter(namespaceURI, localName);
    6767    return jsStringOrUndefined(exec, value);
     
    7272    if (exec->argument(1).isUndefinedOrNull())
    7373        return jsUndefined();
    74     String namespaceURI = exec->argument(0).toString(exec)->value(exec);
    75     String localName = exec->argument(1).toString(exec)->value(exec);
     74    String namespaceURI = exec->uncheckedArgument(0).toString(exec)->value(exec);
     75    String localName = exec->uncheckedArgument(1).toString(exec)->value(exec);
    7676    impl()->removeParameter(namespaceURI, localName);
    7777    return jsUndefined();
  • trunk/Source/WebCore/bindings/js/ScheduledAction.cpp

    r155217 r156240  
    7373    // Start at 2 to skip function and interval.
    7474    for (size_t i = 2; i < exec->argumentCount(); ++i)
    75         m_args.append(Strong<JSC::Unknown>(exec->vm(), exec->argument(i)));
     75        m_args.append(Strong<JSC::Unknown>(exec->vm(), exec->uncheckedArgument(i)));
    7676}
    7777
  • trunk/Source/WebCore/bindings/js/ScriptCallStackFactory.cpp

    r155081 r156240  
    203203    size_t argumentCount = exec->argumentCount();
    204204    for (size_t i = skipArgumentCount; i < argumentCount; ++i)
    205         arguments.append(ScriptValue(exec->vm(), exec->argument(i)));
     205        arguments.append(ScriptValue(exec->vm(), exec->uncheckedArgument(i)));
    206206    return ScriptArguments::create(exec, arguments);
    207207}
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r156157 r156240  
    28452845            if ($optional) {
    28462846                push(@$outputArray, "    RefPtr<$argType> $name;\n");
    2847                 push(@$outputArray, "    if (exec->argumentCount() > $argsIndex && !exec->argument($argsIndex).isUndefinedOrNull()) {\n");
    2848                 push(@$outputArray, "        if (!exec->argument($argsIndex).isFunction())\n");
     2847                push(@$outputArray, "    if (!exec->argument($argsIndex).isUndefinedOrNull()) {\n");
     2848                push(@$outputArray, "        if (!exec->uncheckedArgument($argsIndex).isFunction())\n");
    28492849                push(@$outputArray, "            return throwVMTypeError(exec);\n");
    28502850                if ($function->isStatic) {
    28512851                    AddToImplIncludes("CallbackFunction.h");
    2852                     push(@$outputArray, "        $name = createFunctionOnlyCallback<${callbackClassName}>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument($argsIndex));\n");
     2852                    push(@$outputArray, "        $name = createFunctionOnlyCallback<${callbackClassName}>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->uncheckedArgument($argsIndex));\n");
    28532853                } else {
    2854                     push(@$outputArray, "        $name = ${callbackClassName}::create(asObject(exec->argument($argsIndex)), castedThis->globalObject());\n");
     2854                    push(@$outputArray, "        $name = ${callbackClassName}::create(asObject(exec->uncheckedArgument($argsIndex)), castedThis->globalObject());\n");
    28552855                }
    28562856                push(@$outputArray, "    }\n");
    28572857            } else {
    2858                 push(@$outputArray, "    if (exec->argumentCount() <= $argsIndex || !exec->argument($argsIndex).isFunction())\n");
     2858                push(@$outputArray, "    if (!exec->argument($argsIndex).isFunction())\n");
    28592859                push(@$outputArray, "        return throwVMTypeError(exec);\n");
    28602860                if ($function->isStatic) {
    28612861                    AddToImplIncludes("CallbackFunction.h");
    2862                     push(@$outputArray, "    RefPtr<$argType> $name = createFunctionOnlyCallback<${callbackClassName}>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument($argsIndex));\n");
     2862                    push(@$outputArray, "    RefPtr<$argType> $name = createFunctionOnlyCallback<${callbackClassName}>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->uncheckedArgument($argsIndex));\n");
    28632863                } else {
    2864                     push(@$outputArray, "    RefPtr<$argType> $name = ${callbackClassName}::create(asObject(exec->argument($argsIndex)), castedThis->globalObject());\n");
     2864                    push(@$outputArray, "    RefPtr<$argType> $name = ${callbackClassName}::create(asObject(exec->uncheckedArgument($argsIndex)), castedThis->globalObject());\n");
    28652865                }
    28662866            }
     
    28872887                push(@$outputArray, "    Vector<$nativeElementType> $name;\n");
    28882888                push(@$outputArray, "    for (unsigned i = $argsIndex; i < exec->argumentCount(); ++i) {\n");
    2889                 push(@$outputArray, "        if (!exec->argument(i).inherits(JS${argType}::info()))\n");
     2889                push(@$outputArray, "        if (!exec->uncheckedArgument(i).inherits(JS${argType}::info()))\n");
    28902890                push(@$outputArray, "            return throwVMTypeError(exec);\n");
    2891                 push(@$outputArray, "        $name.append(to$argType(exec->argument(i)));\n");
     2891                push(@$outputArray, "        $name.append(to$argType(exec->uncheckedArgument(i)));\n");
    28922892                push(@$outputArray, "    }\n")
    28932893            } else {
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp

    r156009 r156240  
    150150    if (exec->argumentCount() < 1)
    151151        return throwVMError(exec, createNotEnoughArgumentsError(exec));
    152     if (exec->argumentCount() <= 0 || !exec->argument(0).isFunction())
     152    if (!exec->argument(0).isFunction())
    153153        return throwVMTypeError(exec);
    154     RefPtr<MediaQueryListListener> listener = JSMediaQueryListListener::create(asObject(exec->argument(0)), castedThis->globalObject());
     154    RefPtr<MediaQueryListListener> listener = JSMediaQueryListListener::create(asObject(exec->uncheckedArgument(0)), castedThis->globalObject());
    155155    impl->method(listener);
    156156    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp

    r156157 r156240  
    214214    if (exec->argumentCount() < 1)
    215215        return throwVMError(exec, createNotEnoughArgumentsError(exec));
    216     if (exec->argumentCount() <= 0 || !exec->argument(0).isFunction())
    217         return throwVMTypeError(exec);
    218     RefPtr<TestCallback> testCallback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
     216    if (!exec->argument(0).isFunction())
     217        return throwVMTypeError(exec);
     218    RefPtr<TestCallback> testCallback = JSTestCallback::create(asObject(exec->uncheckedArgument(0)), castedThis->globalObject());
    219219    RefPtr<TestObj> object = TestObj::create(testCallback);
    220220    return JSValue::encode(asObject(toJS(exec, castedThis->globalObject(), object.get())));
     
    23762376    if (exec->argumentCount() < 1)
    23772377        return throwVMError(exec, createNotEnoughArgumentsError(exec));
    2378     if (exec->argumentCount() <= 0 || !exec->argument(0).isFunction())
    2379         return throwVMTypeError(exec);
    2380     RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
     2378    if (!exec->argument(0).isFunction())
     2379        return throwVMTypeError(exec);
     2380    RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->uncheckedArgument(0)), castedThis->globalObject());
    23812381    impl->methodWithCallbackArg(callback);
    23822382    return JSValue::encode(jsUndefined());
     
    23962396    if (exec->hadException())
    23972397        return JSValue::encode(jsUndefined());
    2398     if (exec->argumentCount() <= 1 || !exec->argument(1).isFunction())
    2399         return throwVMTypeError(exec);
    2400     RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(1)), castedThis->globalObject());
     2398    if (!exec->argument(1).isFunction())
     2399        return throwVMTypeError(exec);
     2400    RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->uncheckedArgument(1)), castedThis->globalObject());
    24012401    impl->methodWithNonCallbackArgAndCallbackArg(nonCallback, callback);
    24022402    return JSValue::encode(jsUndefined());
     
    24122412    TestObj* impl = static_cast<TestObj*>(castedThis->impl());
    24132413    RefPtr<TestCallback> callback;
    2414     if (exec->argumentCount() > 0 && !exec->argument(0).isUndefinedOrNull()) {
    2415         if (!exec->argument(0).isFunction())
     2414    if (!exec->argument(0).isUndefinedOrNull()) {
     2415        if (!exec->uncheckedArgument(0).isFunction())
    24162416            return throwVMTypeError(exec);
    2417         callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
     2417        callback = JSTestCallback::create(asObject(exec->uncheckedArgument(0)), castedThis->globalObject());
    24182418    }
    24192419    impl->methodWithCallbackAndOptionalArg(callback);
     
    24242424{
    24252425    RefPtr<TestCallback> callback;
    2426     if (exec->argumentCount() > 0 && !exec->argument(0).isUndefinedOrNull()) {
    2427         if (!exec->argument(0).isFunction())
     2426    if (!exec->argument(0).isUndefinedOrNull()) {
     2427        if (!exec->uncheckedArgument(0).isFunction())
    24282428            return throwVMTypeError(exec);
    2429         callback = createFunctionOnlyCallback<JSTestCallback>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(0));
     2429        callback = createFunctionOnlyCallback<JSTestCallback>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->uncheckedArgument(0));
    24302430    }
    24312431    TestObj::staticMethodWithCallbackAndOptionalArg(callback);
     
    24372437    if (exec->argumentCount() < 1)
    24382438        return throwVMError(exec, createNotEnoughArgumentsError(exec));
    2439     if (exec->argumentCount() <= 0 || !exec->argument(0).isFunction())
    2440         return throwVMTypeError(exec);
    2441     RefPtr<TestCallback> callback = createFunctionOnlyCallback<JSTestCallback>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(0));
     2439    if (!exec->argument(0).isFunction())
     2440        return throwVMTypeError(exec);
     2441    RefPtr<TestCallback> callback = createFunctionOnlyCallback<JSTestCallback>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->uncheckedArgument(0));
    24422442    TestObj::staticMethodWithCallbackArg(callback);
    24432443    return JSValue::encode(jsUndefined());
     
    25812581    if (exec->argumentCount() < 1)
    25822582        return throwVMError(exec, createNotEnoughArgumentsError(exec));
    2583     if (exec->argumentCount() <= 0 || !exec->argument(0).isFunction())
    2584         return throwVMTypeError(exec);
    2585     RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->argument(0)), castedThis->globalObject());
     2583    if (!exec->argument(0).isFunction())
     2584        return throwVMTypeError(exec);
     2585    RefPtr<TestCallback> callback = JSTestCallback::create(asObject(exec->uncheckedArgument(0)), castedThis->globalObject());
    25862586    impl->overloadedMethod(callback);
    25872587    return JSValue::encode(jsUndefined());
     
    31353135    Vector<Node*> tail;
    31363136    for (unsigned i = 1; i < exec->argumentCount(); ++i) {
    3137         if (!exec->argument(i).inherits(JSNode::info()))
     3137        if (!exec->uncheckedArgument(i).inherits(JSNode::info()))
    31383138            return throwVMTypeError(exec);
    3139         tail.append(toNode(exec->argument(i)));
     3139        tail.append(toNode(exec->uncheckedArgument(i)));
    31403140    }
    31413141    impl->variadicNodeMethod(head, tail);
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp

    r156157 r156240  
    7676    if (exec->hadException())
    7777        return JSValue::encode(jsUndefined());
    78     if (exec->argumentCount() <= 1 || !exec->argument(1).isFunction())
    79         return throwVMTypeError(exec);
    80     RefPtr<TestCallback> testCallback = JSTestCallback::create(asObject(exec->argument(1)), castedThis->globalObject());
     78    if (!exec->argument(1).isFunction())
     79        return throwVMTypeError(exec);
     80    RefPtr<TestCallback> testCallback = JSTestCallback::create(asObject(exec->uncheckedArgument(1)), castedThis->globalObject());
    8181    RefPtr<TestTypedefs> object = TestTypedefs::create(hello, testCallback);
    8282    return JSValue::encode(asObject(toJS(exec, castedThis->globalObject(), object.get())));
  • trunk/Source/WebCore/bridge/c/c_instance.cpp

    r154797 r156240  
    168168    unsigned i;
    169169    for (i = 0; i < count; i++)
    170         convertValueToNPVariant(exec, exec->argument(i), &cArgs[i]);
     170        convertValueToNPVariant(exec, exec->uncheckedArgument(i), &cArgs[i]);
    171171
    172172    // Invoke the 'C' method.
     
    204204    unsigned i;
    205205    for (i = 0; i < count; i++)
    206         convertValueToNPVariant(exec, exec->argument(i), &cArgs[i]);
     206        convertValueToNPVariant(exec, exec->uncheckedArgument(i), &cArgs[i]);
    207207
    208208    // Invoke the 'C' method.
  • trunk/Source/WebCore/bridge/objc/objc_instance.mm

    r154797 r156240  
    261261        int count = exec->argumentCount();
    262262        for (int i = 0; i < count; i++) {
    263             ObjcValue value = convertValueToObjcValue(exec, exec->argument(i), ObjcObjectType);
     263            ObjcValue value = convertValueToObjcValue(exec, exec->uncheckedArgument(i), ObjcObjectType);
    264264            [objcArgs addObject:value.objectValue];
    265265        }
     
    267267    } else {
    268268        unsigned count = [signature numberOfArguments];
    269         for (unsigned i = 2; i < count ; i++) {
     269        for (unsigned i = 2; i < count; ++i) {
    270270            const char* type = [signature getArgumentTypeAtIndex:i];
    271271            ObjcValueType objcValueType = objcValueTypeForType(type);
     
    276276            ASSERT(objcValueType != ObjcInvalidType && objcValueType != ObjcVoidType);
    277277
    278             ObjcValue value = convertValueToObjcValue(exec, exec->argument(i-2), objcValueType);
     278            ObjcValue value = convertValueToObjcValue(exec, exec->argument(i - 2), objcValueType);
    279279
    280280            switch (objcValueType) {
     
    375375    unsigned count = exec->argumentCount();
    376376    for (unsigned i = 0; i < count; i++) {
    377         ObjcValue value = convertValueToObjcValue(exec, exec->argument(i), ObjcObjectType);
     377        ObjcValue value = convertValueToObjcValue(exec, exec->uncheckedArgument(i), ObjcObjectType);
    378378        [objcArgs addObject:value.objectValue];
    379379    }
  • trunk/Source/WebKit2/ChangeLog

    r156069 r156240  
     12013-09-21  Darin Adler  <darin@apple.com>
     2
     3        Add ExecState::uncheckedArgument and use where possible to shrink a bit
     4        https://bugs.webkit.org/show_bug.cgi?id=121750
     5
     6        Reviewed by Andreas Kling.
     7
     8        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
     9        (WebKit::JSNPObject::callMethod): In a loop.
     10        (WebKit::JSNPObject::callObject): Ditto.
     11        (WebKit::JSNPObject::callConstructor): Ditto.
     12
    1132013-09-18  Anders Carlsson  <andersca@apple.com>
    214
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp

    r154797 r156240  
    116116    // Convert all arguments to NPVariants.
    117117    for (size_t i = 0; i < argumentCount; ++i)
    118         m_objectMap->convertJSValueToNPVariant(exec, exec->argument(i), arguments[i]);
     118        m_objectMap->convertJSValueToNPVariant(exec, exec->uncheckedArgument(i), arguments[i]);
    119119
    120120    // Calling NPClass::invoke will call into plug-in code, and there's no telling what the plug-in can do.
     
    156156    // Convert all arguments to NPVariants.
    157157    for (size_t i = 0; i < argumentCount; ++i)
    158         m_objectMap->convertJSValueToNPVariant(exec, exec->argument(i), arguments[i]);
     158        m_objectMap->convertJSValueToNPVariant(exec, exec->uncheckedArgument(i), arguments[i]);
    159159
    160160    // Calling NPClass::invokeDefault will call into plug-in code, and there's no telling what the plug-in can do.
     
    196196    // Convert all arguments to NPVariants.
    197197    for (size_t i = 0; i < argumentCount; ++i)
    198         m_objectMap->convertJSValueToNPVariant(exec, exec->argument(i), arguments[i]);
     198        m_objectMap->convertJSValueToNPVariant(exec, exec->uncheckedArgument(i), arguments[i]);
    199199
    200200    // Calling NPClass::construct will call into plug-in code, and there's no telling what the plug-in can do.
Note: See TracChangeset for help on using the changeset viewer.