Skip to content

n-api: make per-Context-ness of napi_env explicit

Rodrigo Muino Tomonari requested to merge github/fork/addaleax/napi-context into master

Because instances of napi_env are created on a per-global-object basis and because most N-API functions refer to builtin JS objects, napi_env is essentially in 1:1 correspondence with v8::Context.

This was not clear from the implementation by itself, but has emerged from conversations with the N-API team.

This patch changes the napi_env implementation to:

  • Actually store the v8::Context it represents.
  • Provide more direct access to the node::Environment to which the Context belongs.
  • Do not store the uv_loop_t* explicitly, since it can be inferred from the node::Environment and we actually have an N-API method for that.
  • Replace calls to isolate->GetCurrentContext() with the more appropriate napi_env Context.
  • Implement a better (although not perfect) way of cleaning up napi_env instances.
Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • commit message follows commit guidelines

Merge request reports

Loading