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

[v12.x] src: render N-API weak callbacks as cleanup hooks #30070

Commits on Oct 22, 2019

  1. src: render N-API weak callbacks as cleanup hooks

    Since worker threads are complete Node.js environments, including the
    ability to load native addons, and since those native addons can
    allocate resources to be freed when objects go out of scope, and since,
    upon worker thread exit, the engine does not invoke the weak callbacks
    responsible for freeing resources which still have references, this
    modification introduces tracking for weak references such that a list
    of outstanding weak references is maintained. This list is traversed
    during environment teardown. The callbacks for the remaining weak
    references are called.
    
    This change is also relevant for Node.js embedder scenarios, because in
    those cases the process also outlives the `node::Environment` and
    therefore weak callbacks should also be rendered as environment cleanup
    hooks to ensure proper cleanup after native addons. This changes
    introduces the means by which this can be accomplished.
    
    A benchmark is included which measures the time it takes to execute the
    weak reference callback for a given number of weak references.
    
    Re: tc39/proposal-weakrefs#125 (comment)
    PR-URL: nodejs#28428
    Reviewed-By: Anna Henningsen <anna@addaleax.net>
    Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
    Gabriel Schulhof committed Oct 22, 2019
    Configuration menu
    Copy the full SHA
    063c2ff View commit details
    Browse the repository at this point in the history