• Seth Brenith's avatar
    [torque] Stricter object field verification, part 1 · 3834c637
    Seth Brenith authored
    This change adjusts object initialization order for a few classes so
    that the GC can never see those objects in an invalid, partially-
    initialized state.
    
    AccessorInfo: Just zeros out a few fields upon construction. This is the
    simplest case.
    
    FunctionTemplateInfo: Slightly changes the order in which fields are
    set, so that the Smi field is set ahead of the call to SetCallHandler,
    which can GC. Also a pretty simple case.
    
    JSListFormat, JSPluralRules, JSRelativeTimeFormat, JSSegmenter: The spec
    requires that we start with OrdinaryCreateFromConstructor, which has
    observable side effects (it fetches the prototype from the new.target).
    So we split JSObject::New in half: the first half does all of the user-
    visible things and returns a Map, which we can pass to the second half
    when we're ready to actually allocate the object.
    
    JSTypedArray: Extends the pattern from JSListFormat into Torque code:
    start with a Map and don't allocate the object until we're ready to set
    all of its properties.
    
    Bug: v8:9311
    Change-Id: Id7703e8a0727ec756c774cfbb56af787658a111a
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1646844
    Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#62123}
    3834c637
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...