• Seth Brenith's avatar
    [torque] Strict verification of abstract types · 50d474a2
    Seth Brenith authored
    Originally, the Torque-generated verifier for a field with type
    Undefined|Zero|NonNullForeign would check `f.IsUndefined() || f.IsZero()
    || f.IsNonNullForeign()`. At some point, we changed Torque so that it
    now generates the much weaker `f.IsOddball() || f.IsSmi() ||
    f.IsForeign()`. This change returns the verifiers to their initial
    precision. Mostly we can use the names of abstract types to build up the
    correct type check expression, but a few abstract types like
    PodArrayOfWasmValueType have no way that we can tell them apart from
    their parent type at runtime. It would be confusing to have a function
    Object::IsPodArrayOfWasmValueType which actually just checks whether the
    object is a ByteArray, so this change introduces a new annotation which
    allows abstract type declarations to state that they should use their
    parent type during verification.
    
    This change also adds new test cases to help avoid future regressions of
    this logic.
    
    Bug: v8:7793
    Change-Id: Ie5046d742fd45e0e0f6c2ba387d909e9f2ac6df1
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2469960Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
    Cr-Commit-Position: refs/heads/master@{#70698}
    50d474a2
Name
Last commit
Last update
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...
.flake8 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...
DEPS Loading commit data...
DIR_METADATA 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...
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...