• Michael Lippautz's avatar
    [heap] Provide async GC for JS · aa7c6e22
    Michael Lippautz authored
    Reuse the existing builtin and extension infrastructure to provide a
    garbage collection mechanism that allows for asynchronous execution.
    
    On --expose-gc, this changes the gc call to parse parameters the
    following:
    (1) Parse options when encountering an options object with known properties.
    (2) No parameters is parsed as
        {type: 'major', execution: 'sync'}.
    (3) Truthy parameter that is not setting options is parsed as
        {type: 'minor', execution: 'sync'}.
    
    (2) and (3) preserve backwards compatibility for existing callers as this may be
    used widely across various test and benchmarking infrastructures.
    
    Valid options:
    - type: 'major' or 'minor' for full GC and Scavenge, respectively.
    - execution: 'sync' or 'async' for synchronous and asynchronous
      execution respectively.
    
    Returns a Promise that resolves when GC is done when asynchronous execution
    is requested, and undefined otherwise.
    
    Note: This is implemented as builtin to avoid having any stack at all. This
    information is also passed to the embedder to allow skipping stack scanning.
    
    Change-Id: Ie5c9b6f0d55238abfeb9051ffa1837501d474934
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1793143
    Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#63659}
    aa7c6e22
gc-extension.cc 4.97 KB