n-api: make per-Context-ness of napi_env explicit
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 theContext
belongs. - Do not store the
uv_loop_t*
explicitly, since it can be inferred from thenode::Environment
and we actually have an N-API method for that. - Replace calls to
isolate->GetCurrentContext()
with the more appropriatenapi_env
Context
. - Implement a better (although not perfect) way of cleaning
up
napi_env
instances.
Checklist
-
make -j4 test
(UNIX), orvcbuild test
(Windows) passes -
commit message follows commit guidelines