• Leszek Swirski's avatar
    Reland "[destructuring] Elide coercible check for simple keys" · ef2df57a
    Leszek Swirski authored
    This is a reland of 1fba0441
    Chromium expectation tests have been disabled, and will be enabled
    
    Original change's description:
    > [destructuring] Elide coercible check for simple keys
    >
    > Simple object destructuring, such as `let {a,b} = o`, is less efficient
    > than the equivalent assignments `let a = o.a; let b = o.b`. This is
    > because it does a nil check of `o` before the assignments. However, this
    > nil check is not strictly necessary for simple (i.e. non-computed) names,
    > as there will be an equivalent nil check on the first access to o in
    > `o.a`. For computed names the computation is unfortunately obervable.
    >
    > So, we can elide the nil check when the first property (if any) of the
    > destructuring target is a non-computed name. This messes a bit with our
    > error messages, so we re-use the CallPrinter to also find destructuring
    > assignment based errors, and fiddle with the error message there. As
    > a side-effect, we also get out the object name in the AST, so we can
    > output a slightly nicer error message.
    >
    > Change-Id: Iafa858e27ed771a146cd3ba57903cc73bb46951d
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1773254
    > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
    > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
    > Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#63453}
    
    TBR=verwaest@chromium.org
    
    Bug: chromium:999473
    Change-Id: Ib0b2e4be433c50521ba1722e1c06b672bfefa405
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1777702Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#63477}
    ef2df57a
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
debugger Loading commit data...
fuzzer Loading commit data...
inspector Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mkgrokdump Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
test262 Loading commit data...
torque Loading commit data...
unittests Loading commit data...
wasm-api-tests Loading commit data...
wasm-js Loading commit data...
wasm-spec-tests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
OWNERS Loading commit data...