• Adam Klein's avatar
    Revert "[destructuring] Elide coercible check for simple keys" · 28fa4cb4
    Adam Klein authored
    This reverts commit 1fba0441.
    
    Reason for revert: blocks V8 roll due to layout test failures caused by error message changes:
    https://ci.chromium.org/p/v8/builders/ci/V8%20Blink%20Linux/347
    
    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=leszeks@chromium.org,verwaest@chromium.org
    
    Change-Id: I74cf06ebd987e5b8bbe1831b0042c085edf37f5b
    No-Presubmit: true
    No-Tree-Checks: true
    No-Try: true
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1776994Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
    Commit-Queue: Adam Klein <adamk@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#63465}
    28fa4cb4
Name
Last commit
Last update
..
fail Loading commit data...
mjsunit Loading commit data...
regress/fail Loading commit data...
BUILD.gn Loading commit data...
README.md Loading commit data...
asm-assignment-undeclared.js Loading commit data...
asm-assignment-undeclared.out Loading commit data...
asm-function-mismatch-def.js Loading commit data...
asm-function-mismatch-def.out Loading commit data...
asm-function-mismatch-use.js Loading commit data...
asm-function-mismatch-use.out Loading commit data...
asm-function-redefined.js Loading commit data...
asm-function-redefined.out Loading commit data...
asm-function-undefined.js Loading commit data...
asm-function-undefined.out Loading commit data...
asm-function-variable-collision.js Loading commit data...
asm-function-variable-collision.out Loading commit data...
asm-import-wrong-annotation.js Loading commit data...
asm-import-wrong-annotation.out Loading commit data...
asm-import-wrong-object.js Loading commit data...
asm-import-wrong-object.out Loading commit data...
asm-linking-bogus-heap.js Loading commit data...
asm-linking-bogus-heap.out Loading commit data...
asm-linking-bogus-stdlib.js Loading commit data...
asm-linking-bogus-stdlib.out Loading commit data...
asm-linking-missing-heap.js Loading commit data...
asm-linking-missing-heap.out Loading commit data...
asm-missing-parameter-annotation.js Loading commit data...
asm-missing-parameter-annotation.out Loading commit data...
asm-missing-return-annotation.js Loading commit data...
asm-missing-return-annotation.out Loading commit data...
asm-table-mismatch-def.js Loading commit data...
asm-table-mismatch-def.out Loading commit data...
asm-table-mismatch-use.js Loading commit data...
asm-table-mismatch-use.out Loading commit data...
asm-table-redefined.js Loading commit data...
asm-table-redefined.out Loading commit data...
asm-table-undefined.js Loading commit data...
asm-table-undefined.out Loading commit data...
asm-table-variable-collision.js Loading commit data...
asm-table-variable-collision.out Loading commit data...
empty.js Loading commit data...
empty.out Loading commit data...
message.status Loading commit data...
non-use-strict-hex-escape.js Loading commit data...
non-use-strict-hex-escape.out Loading commit data...
non-use-strict-octal-escape.js Loading commit data...
non-use-strict-octal-escape.out Loading commit data...
non-use-strict-uhex-escape.js Loading commit data...
non-use-strict-uhex-escape.out Loading commit data...
nonstrict-arguments.js Loading commit data...
nonstrict-arguments.out Loading commit data...
nonstrict-eval.js Loading commit data...
nonstrict-eval.out Loading commit data...
nonstrict-with.js Loading commit data...
nonstrict-with.out Loading commit data...
object-binding-pattern-await-computed-name.js Loading commit data...
object-binding-pattern-await-computed-name.out Loading commit data...
strict-octal-indirect-regexp.js Loading commit data...
strict-octal-indirect-regexp.out Loading commit data...
strict-octal-regexp.js Loading commit data...
strict-octal-regexp.out Loading commit data...
testcfg.py Loading commit data...
try-catch-finally-no-message.js Loading commit data...
try-catch-finally-no-message.out Loading commit data...
try-catch-finally-return-in-finally.js Loading commit data...
try-catch-finally-return-in-finally.out Loading commit data...
try-finally-return-in-finally.js Loading commit data...
try-finally-return-in-finally.out Loading commit data...
wasm-finish-compilation.js Loading commit data...
wasm-finish-compilation.out Loading commit data...
wasm-function-name-async.js Loading commit data...
wasm-function-name-async.out Loading commit data...
wasm-function-name-streaming.js Loading commit data...
wasm-function-name-streaming.out Loading commit data...
wasm-module-and-function-name-async.js Loading commit data...
wasm-module-and-function-name-async.out Loading commit data...
wasm-module-and-function-name-streaming.js Loading commit data...
wasm-module-and-function-name-streaming.out Loading commit data...
wasm-module-name-async.js Loading commit data...
wasm-module-name-async.out Loading commit data...
wasm-module-name-streaming.js Loading commit data...
wasm-module-name-streaming.out Loading commit data...
wasm-no-name-async.js Loading commit data...
wasm-no-name-async.out Loading commit data...
wasm-no-name-streaming.js Loading commit data...
wasm-no-name-streaming.out Loading commit data...
wasm-trace-memory-interpreted.js Loading commit data...
wasm-trace-memory-interpreted.out Loading commit data...
wasm-trace-memory-liftoff.js Loading commit data...
wasm-trace-memory-liftoff.out Loading commit data...
wasm-trace-memory.js Loading commit data...
wasm-trace-memory.out Loading commit data...