• Sathya Gunasekaran's avatar
    [class] Fix class field name initialization · bc324dbd
    Sathya Gunasekaran authored
    Previously when class names were computed and set as part of
    StoreDataPropertyInLiteral calls, it was observable to static fields
    as these static fields are initialized right after the classes were
    constructed but before the class names were installed.
    This caused the name property to be undefined for this case.
    
    Instead, this patch always forces the creation of a name property on
    the class constructor when static class fields are used. This patch
    does kill the class boilerplate optimization, but currently all static
    class fields are installed using a runtime call to CreateDataProperty
    so this isn't any worse when using static class fields.
    
    In the future, this can be optimized away by storing the name on the
    boilerplate.
    
    There is spec discussion here:
    https://github.com/tc39/proposal-class-fields/issues/85
    
    There isn't a resolution yet, there's still discussion about whether
    to have the name be undefined always for static class field
    initializers. But, I don't think that's useful as it would always kill
    our boilerplate optimization (like this patch does ..., but without the
    future optimization potential).
    
    Bug: v8:5367
    Change-Id: I14afdf7ece3f2d9fa3c659d2c0bc3806e0b17abb
    Reviewed-on: https://chromium-review.googlesource.com/c/1281002Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
    Reviewed-by: 's avatarDaniel Ehrenberg <littledan@chromium.org>
    Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
    Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#56686}
    bc324dbd
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-spec-tests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...