• 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
..
OWNERS Loading commit data...
runtime-array.cc Loading commit data...
runtime-atomics.cc Loading commit data...
runtime-bigint.cc Loading commit data...
runtime-classes.cc Loading commit data...
runtime-collections.cc Loading commit data...
runtime-compiler.cc Loading commit data...
runtime-date.cc Loading commit data...
runtime-debug.cc Loading commit data...
runtime-forin.cc Loading commit data...
runtime-function.cc Loading commit data...
runtime-futex.cc Loading commit data...
runtime-generator.cc Loading commit data...
runtime-internal.cc Loading commit data...
runtime-interpreter.cc Loading commit data...
runtime-intl.cc Loading commit data...
runtime-literals.cc Loading commit data...
runtime-module.cc Loading commit data...
runtime-numbers.cc Loading commit data...
runtime-object.cc Loading commit data...
runtime-operators.cc Loading commit data...
runtime-promise.cc Loading commit data...
runtime-proxy.cc Loading commit data...
runtime-regexp.cc Loading commit data...
runtime-scopes.cc Loading commit data...
runtime-strings.cc Loading commit data...
runtime-symbol.cc Loading commit data...
runtime-test.cc Loading commit data...
runtime-typedarray.cc Loading commit data...
runtime-utils.h Loading commit data...
runtime-wasm.cc Loading commit data...
runtime.cc Loading commit data...
runtime.h Loading commit data...