• Leszek Swirski's avatar
    [destructuring] Get non-coercible message contents in runtime · 5e2c23e2
    Leszek Swirski authored
    For desrtucturing assignments from null/undefined, we throw an error
    that references the destructuring object literal's property name, e.g.
    for
      var { x } = null;
    we report that we cannot destructure 'x' from null.
    
    Rather than calculating this property during bytecode generation (and
    including it in the bytecode as an argument to the type error
    constructor), we can calculate it at exception throwing time, by
    re-parsing the source in a similar way to the existing call site
    rendering.
    
    This slightly decreases bytecode size and slightly decreases the amount
    of work the bytecode compiler needs to do. In the future, it could also
    allow us to give more detailed error messages, as we now have access to
    the entire AST and are on the slow path anyway.
    
    Bug: v8:6499
    Change-Id: Icdbd4667db548b4e5e62ef97797a3771b5c1bf72
    Reviewed-on: https://chromium-review.googlesource.com/c/1396080Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
    Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#58706}
    5e2c23e2
Name
Last commit
Last update
..
ArrayLiterals.golden Loading commit data...
AssignmentsInBinaryExpression.golden Loading commit data...
AsyncGenerators.golden Loading commit data...
BasicBlockToBoolean.golden Loading commit data...
BasicLoops.golden Loading commit data...
BreakableBlocks.golden Loading commit data...
CallAndSpread.golden Loading commit data...
CallGlobal.golden Loading commit data...
CallLookupSlot.golden Loading commit data...
CallNew.golden Loading commit data...
CallRuntime.golden Loading commit data...
ClassAndSuperClass.golden Loading commit data...
ClassDeclarations.golden Loading commit data...
CompareNil.golden Loading commit data...
CompareTypeOf.golden Loading commit data...
CompoundExpressions.golden Loading commit data...
Conditional.golden Loading commit data...
ConstVariable.golden Loading commit data...
ConstVariableContextSlot.golden Loading commit data...
ContextParameters.golden Loading commit data...
ContextVariables.golden Loading commit data...
CountOperators.golden Loading commit data...
CreateArguments.golden Loading commit data...
CreateRestParameter.golden Loading commit data...
DeadCodeRemoval.golden Loading commit data...
DeclareGlobals.golden Loading commit data...
Delete.golden Loading commit data...
DeleteLookupSlotInEval.golden Loading commit data...
DestructuringAssignment.golden Loading commit data...
DoDebugger.golden Loading commit data...
Eval.golden Loading commit data...
ForAwaitOf.golden Loading commit data...
ForIn.golden Loading commit data...
ForOf.golden Loading commit data...
ForOfLoop.golden Loading commit data...
FunctionLiterals.golden Loading commit data...
GenerateTestUndetectable.golden Loading commit data...
Generators.golden Loading commit data...
GlobalCompoundExpressions.golden Loading commit data...
GlobalCountOperators.golden Loading commit data...
GlobalDelete.golden Loading commit data...
HeapNumberConstants.golden Loading commit data...
IIFEWithOneshotOpt.golden Loading commit data...
IIFEWithoutOneshotOpt.golden Loading commit data...
IfConditions.golden Loading commit data...
IntegerConstants.golden Loading commit data...
LetVariable.golden Loading commit data...
LetVariableContextSlot.golden Loading commit data...
LoadGlobal.golden Loading commit data...
LogicalExpressions.golden Loading commit data...
LookupSlot.golden Loading commit data...
LookupSlotInEval.golden Loading commit data...
Modules.golden Loading commit data...
NewAndSpread.golden Loading commit data...
NewTarget.golden Loading commit data...
ObjectLiterals.golden Loading commit data...
OuterContextVariables.golden Loading commit data...
Parameters.golden Loading commit data...
PrimitiveExpressions.golden Loading commit data...
PrimitiveReturnStatements.golden Loading commit data...
PrivateClassFields.golden Loading commit data...
PropertyCall.golden Loading commit data...
PropertyLoadStoreOneShot.golden Loading commit data...
PropertyLoadStoreWithoutOneShot.golden Loading commit data...
PropertyLoads.golden Loading commit data...
PropertyStores.golden Loading commit data...
PublicClassFields.golden Loading commit data...
RegExpLiterals.golden Loading commit data...
RemoveRedundantLdar.golden Loading commit data...
StandardForLoop.golden Loading commit data...
StaticClassFields.golden Loading commit data...
StoreGlobal.golden Loading commit data...
StringConcat.golden Loading commit data...
StringConstants.golden Loading commit data...
SuperCallAndSpread.golden Loading commit data...
Switch.golden Loading commit data...
TemplateLiterals.golden Loading commit data...
ThisFunction.golden Loading commit data...
Throw.golden Loading commit data...
TopLevelObjectLiterals.golden Loading commit data...
TryCatch.golden Loading commit data...
TryFinally.golden Loading commit data...
Typeof.golden Loading commit data...
UnaryOperators.golden Loading commit data...
WideRegisters.golden Loading commit data...
WithStatement.golden Loading commit data...