Changeset 207241 in webkit


Ignore:
Timestamp:
Oct 12, 2016 2:01:00 PM (8 years ago)
Author:
mark.lam@apple.com
Message:

Rename variables in arrayProtoFuncSplice() to match names in the spec.
https://bugs.webkit.org/show_bug.cgi?id=163354

Reviewed by Saam Barati.

This will make it easier to see whether the code matches the spec or not.
Ref: https://tc39.github.io/ecma262/#sec-array.prototype.splice

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncSplice):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r207239 r207241  
     12016-10-12  Mark Lam  <mark.lam@apple.com>
     2
     3        Rename variables in arrayProtoFuncSplice() to match names in the spec.
     4        https://bugs.webkit.org/show_bug.cgi?id=163354
     5
     6        Reviewed by Saam Barati.
     7
     8        This will make it easier to see whether the code matches the spec or not.
     9        Ref: https://tc39.github.io/ecma262/#sec-array.prototype.splice
     10
     11        * runtime/ArrayPrototype.cpp:
     12        (JSC::arrayProtoFuncSplice):
     13
    1142016-10-12  Yusuke Suzuki  <utatane.tea@gmail.com>
    215
  • trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp

    r207226 r207241  
    922922    }
    923923
    924     unsigned begin = argumentClampedIndexFromStartOrEnd(exec, 0, length);
    925 
    926     unsigned deleteCount = length - begin;
     924    unsigned actualStart = argumentClampedIndexFromStartOrEnd(exec, 0, length);
     925
     926    unsigned actualDeleteCount = length - actualStart;
    927927    if (exec->argumentCount() > 1) {
    928         double deleteDouble = exec->uncheckedArgument(1).toInteger(exec);
    929         if (deleteDouble < 0)
    930             deleteCount = 0;
    931         else if (deleteDouble > length - begin)
    932             deleteCount = length - begin;
     928        double deleteCount = exec->uncheckedArgument(1).toInteger(exec);
     929        if (deleteCount < 0)
     930            actualDeleteCount = 0;
     931        else if (deleteCount > length - actualStart)
     932            actualDeleteCount = length - actualStart;
    933933        else
    934             deleteCount = static_cast<unsigned>(deleteDouble);
    935     }
    936 
    937     std::pair<SpeciesConstructResult, JSObject*> speciesResult = speciesConstructArray(exec, thisObj, deleteCount);
     934            actualDeleteCount = static_cast<unsigned>(deleteCount);
     935    }
     936
     937    std::pair<SpeciesConstructResult, JSObject*> speciesResult = speciesConstructArray(exec, thisObj, actualDeleteCount);
    938938    if (speciesResult.first == SpeciesConstructResult::Exception)
    939939        return JSValue::encode(jsUndefined());
     
    941941    JSObject* result = nullptr;
    942942    if (speciesResult.first == SpeciesConstructResult::FastPath && isJSArray(thisObj) && length == getLength(exec, thisObj))
    943         result = asArray(thisObj)->fastSlice(*exec, begin, deleteCount);
     943        result = asArray(thisObj)->fastSlice(*exec, actualStart, actualDeleteCount);
    944944
    945945    if (!result) {
     
    947947            result = speciesResult.second;
    948948           
    949             for (unsigned k = 0; k < deleteCount; ++k) {
    950                 JSValue v = getProperty(exec, thisObj, k + begin);
     949            for (unsigned k = 0; k < actualDeleteCount; ++k) {
     950                JSValue v = getProperty(exec, thisObj, k + actualStart);
    951951                RETURN_IF_EXCEPTION(scope, encodedJSValue());
    952952                if (UNLIKELY(!v))
     
    956956            }
    957957        } else {
    958             result = JSArray::tryCreateUninitialized(vm, exec->lexicalGlobalObject()->arrayStructureForIndexingTypeDuringAllocation(ArrayWithUndecided), deleteCount);
     958            result = JSArray::tryCreateUninitialized(vm, exec->lexicalGlobalObject()->arrayStructureForIndexingTypeDuringAllocation(ArrayWithUndecided), actualDeleteCount);
    959959            if (!result)
    960960                return JSValue::encode(throwOutOfMemoryError(exec, scope));
    961961           
    962             for (unsigned k = 0; k < deleteCount; ++k) {
    963                 JSValue v = getProperty(exec, thisObj, k + begin);
     962            for (unsigned k = 0; k < actualDeleteCount; ++k) {
     963                JSValue v = getProperty(exec, thisObj, k + actualStart);
    964964                RETURN_IF_EXCEPTION(scope, encodedJSValue());
    965965                if (UNLIKELY(!v))
     
    970970    }
    971971
    972     unsigned additionalArgs = std::max<int>(exec->argumentCount() - 2, 0);
    973     if (additionalArgs < deleteCount) {
    974         shift<JSArray::ShiftCountForSplice>(exec, thisObj, begin, deleteCount, additionalArgs, length);
    975         RETURN_IF_EXCEPTION(scope, encodedJSValue());
    976     } else if (additionalArgs > deleteCount) {
    977         unshift<JSArray::ShiftCountForSplice>(exec, thisObj, begin, deleteCount, additionalArgs, length);
    978         RETURN_IF_EXCEPTION(scope, encodedJSValue());
    979     }
    980     for (unsigned k = 0; k < additionalArgs; ++k) {
    981         thisObj->putByIndexInline(exec, k + begin, exec->uncheckedArgument(k + 2), true);
     972    unsigned itemCount = std::max<int>(exec->argumentCount() - 2, 0);
     973    if (itemCount < actualDeleteCount) {
     974        shift<JSArray::ShiftCountForSplice>(exec, thisObj, actualStart, actualDeleteCount, itemCount, length);
     975        RETURN_IF_EXCEPTION(scope, encodedJSValue());
     976    } else if (itemCount > actualDeleteCount) {
     977        unshift<JSArray::ShiftCountForSplice>(exec, thisObj, actualStart, actualDeleteCount, itemCount, length);
     978        RETURN_IF_EXCEPTION(scope, encodedJSValue());
     979    }
     980    for (unsigned k = 0; k < itemCount; ++k) {
     981        thisObj->putByIndexInline(exec, k + actualStart, exec->uncheckedArgument(k + 2), true);
    982982        RETURN_IF_EXCEPTION(scope, encodedJSValue());
    983983    }
    984984   
    985985    scope.release();
    986     setLength(exec, vm, thisObj, length - deleteCount + additionalArgs);
     986    setLength(exec, vm, thisObj, length - actualDeleteCount + itemCount);
    987987    return JSValue::encode(result);
    988988}
Note: See TracChangeset for help on using the changeset viewer.