Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

src: allocate Buffer memory using ArrayBuffer allocator #26207

Closed
wants to merge 8 commits into from

Commits on Feb 21, 2019

  1. deps: V8: cherry-pick d3308d0

    Original commit message:
    
        [api] Add `Isolate::GetArrayBufferAllocator()`
    
        This allows non-monolithic embedders to always allocate memory
        for ArrayBuffer instances using the right allocation method.
    
        This is based on a patch that Electron is currently using.
    
        Refs: https://github.com/electron/electron/blob/1898f9162073910c05958295c612deec6121a892/patches/common/v8/array_buffer.patch
        Change-Id: I39a614343118a0594aab48699a99cc2aad5b7ba9
        Reviewed-on: https://chromium-review.googlesource.com/c/1462003
        Reviewed-by: Yang Guo <yangguo@chromium.org>
        Commit-Queue: Yang Guo <yangguo@chromium.org>
        Cr-Commit-Position: refs/heads/master@{#59697}
    
    Refs: v8/v8@d3308d0
    addaleax committed Feb 21, 2019
    Configuration menu
    Copy the full SHA
    07cda17 View commit details
    Browse the repository at this point in the history
  2. src: make IsolateData store ArrayBufferAllocator

    This enables us to identify whether we are using an
    allocator that we know more about than what the generic
    `ArrayBuffer::Allocator` API provides, in particular
    whether it is `malloc()`-compatible.
    addaleax committed Feb 21, 2019
    Configuration menu
    Copy the full SHA
    1b6bbca View commit details
    Browse the repository at this point in the history
  3. worker: copy transferList ArrayBuffers on unknown allocator

    If the `ArrayBuffer::Allocator` used to create `ArrayBuffer`s
    in the current `Isolate` is not a Node.js `ArrayBufferAllocator`,
    we cannot know that it is `malloc()`-based, an in particular it might
    not be compatible with the `ArrayBuffer::Allocator` on the receiving
    end of the connection.
    addaleax committed Feb 21, 2019
    Configuration menu
    Copy the full SHA
    814c8a9 View commit details
    Browse the repository at this point in the history
  4. src: add debugging array allocator

    Add a subclass of `ArrayBufferAllocator` that performs additional
    debug checking, which in particular verifies that:
    
    - All `ArrayBuffer` backing stores have been allocated with this
      allocator, or have been explicitly marked as coming from a
      compatible source.
    - All memory allocated by the allocator has been freed once it is
      destroyed.
    addaleax committed Feb 21, 2019
    Configuration menu
    Copy the full SHA
    b2f9bb1 View commit details
    Browse the repository at this point in the history
  5. src: add allocation utils to env

    Add a RAII utility for managing blocks of memory that have
    been allocated with the `ArrayBuffer::Allocator` for a given
    `Isolate`.
    addaleax committed Feb 21, 2019
    Configuration menu
    Copy the full SHA
    41e81b1 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    1e17828 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    5854771 View commit details
    Browse the repository at this point in the history
  8. src: allocate Buffer memory using ArrayBuffer allocator

    Always use the right allocator for memory that is turned into
    an `ArrayBuffer` at a later point.
    
    This enables embedders to use their own `ArrayBuffer::Allocator`s,
    and is inspired by Electron’s electron/node@f61bae3440e. It should
    render their downstream patch unnecessary.
    
    Refs: electron/node@f61bae3
    addaleax committed Feb 21, 2019
    Configuration menu
    Copy the full SHA
    a55092f View commit details
    Browse the repository at this point in the history