• Mathias Bynens's avatar
    [js] Remove CHECK_OBJECT_COERCIBLE for Array methods · 35b6aa38
    Mathias Bynens authored
    The spec got rid of `CheckObjectCoercible` a while back, and so should
    we. This change is not observable in most of the affected cases since
    `ToObject` is up near the top of most Array method algorithms. An
    example of an observable effect of this change occurs for the following
    input:
    
        Array.prototype.sort.call(null, 1);
    
    Behavior before applying the patch (incorrect message):
    
        TypeError: Array.prototype.sort called on null or undefined
    
    Expected behavior:
    
        TypeError: The comparison function must be either a function or
                   undefined
    
    This patch removes `CheckObjectCoercible` and adds tests to ensure the
    few observable cases are addressed correctly.
    
    The patch also adds a missing `ToObject(this)` to
    `Array.prototype.lastIndexOf` which would otherwise become observable
    as a result of `CheckObjectCoercible` being removed.
    
    BUG=v8:3577,v8:6921
    
    Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
    Change-Id: Ia086095076c4bf4d8d58dab26bc28df02994ed01
    Reviewed-on: https://chromium-review.googlesource.com/718577Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
    Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
    Commit-Queue: Mathias Bynens <mathias@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#48800}
    35b6aa38
array.js 37.6 KB