Unverified Commit 449c0ca9 authored by Anna Henningsen's avatar Anna Henningsen
Browse files

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 since 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.

PR-URL: https://github.com/nodejs/node/pull/23689


Reviewed-By: default avatarJames M Snell <jasnell@gmail.com>
Reviewed-By: default avatarGus Caplan <me@gus.host>
Reviewed-By: default avatarMatheus Marchini <mat@mmarchini.me>
Reviewed-By: default avatarBen Noordhuis <info@bnoordhuis.nl>
Reviewed-By: default avatarMichael Dawson <michael_dawson@ca.ibm.com>
parent 205b6672
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment