• Dan Elphick's avatar
    [api] Create v8::String::NewFromLiteral that returns Local<String> · b097a8e5
    Dan Elphick authored
    String::NewFromLiteral is a templated function that takes a char[N]
    argument that can be used as an alternative to String::NewFromUtf8 and
    returns a Local<String> rather than a MaybeLocal<String> reducing the
    number of ToLocalChecked() or other checks.
    
    Since the string length is known at compile time, it can statically
    assert that the length is less than String::kMaxLength, which means that
    it can never fail at runtime.
    
    This also converts all found uses of NewFromUtf8 taking a string literal
    or a variable initialized from a string literal to use the new API. In
    some cases the types of stored string literals are changed from const
    char* to const char[] to ensure the size is retained.
    
    This API does introduce a small difference compared to NewFromUtf8. For
    a case like "abc\0def", NewFromUtf8 (using length -1 to infer length)
    would treat this as a 3 character string, whereas the new API will treat
    it as a 7 character string.
    
    As a drive-by fix, this also fixes all redundant uses of
    v8::NewStringType::kNormal when passed to any of the String::New*
    functions.
    
    Change-Id: Id96a44bc068d9c4eaa634aea688e024675a0e5b3
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2089935
    Commit-Queue: Dan Elphick <delphick@chromium.org>
    Reviewed-by: 's avatarMathias Bynens <mathias@chromium.org>
    Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
    Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#66622}
    b097a8e5
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...
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...