• 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
runtime-test.cc 52.5 KB