• Clemens Backes's avatar
    [flags] Store all flag values in a single struct · e99b43f8
    Clemens Backes authored
    Instead of defining one global (FLAG_foo) per flag, define all flag
    values as fields in a global {v8_flags} struct. This guarantees that the
    memory is contiguous, and together with proper alignment allows us to
    later memory-protect that memory space.
    
    In order to avoid rewriting all existing code that uses the {FLAG_foo}
    syntax, we define global aliases: {FLAG_foo} is a reference to
    {v8_flags.foo}.
    
    After the next branch cut (v10.6), follow-up CLs will rewrite all
    existing code to use the {v8_flags.foo} syntax, and after another branch
    cut (v10.7) the aliases will be removed.
    This should allow us to merge back most fixes to the previous branch
    (N-1). Merges to stable (N-2) might still require resolving merge
    conflicts manually, if they modify code that reads flags.
    
    R=cbruni@chromium.org
    CC=​sroettger@chromium.org
    
    Bug: v8:12887
    Change-Id: I8bc44429767f611484fe345d7268af1d55c98124
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3810187
    Commit-Queue: Clemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#82423}
    e99b43f8
flags.cc 28.9 KB