diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-02-17 23:45:14 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-02-22 21:42:09 +0100 |
commit | 8ebd339031cf9826629ad780dd35fee130e95985 (patch) | |
tree | 6a8a1b59040f55404e3cb3e3cf2860bd4879bd40 /test/node-api/test_worker_terminate | |
parent | 455b927be0111a6aa8f1e30ae5b21659afeba40d (diff) | |
download | android-node-v8-8ebd339031cf9826629ad780dd35fee130e95985.tar.gz android-node-v8-8ebd339031cf9826629ad780dd35fee130e95985.tar.bz2 android-node-v8-8ebd339031cf9826629ad780dd35fee130e95985.zip |
worker: improve integration with native addons
Allow loading add-ons from multiple Node.js instances if they are
declared context-aware; in particular, this applies to N-API addons.
Also, plug a memory leak that occurred when registering N-API addons.
Refs: https://github.com/nodejs/node/pull/23319
PR-URL: https://github.com/nodejs/node/pull/26175
Fixes: https://github.com/nodejs/node/issues/21481
Fixes: https://github.com/nodejs/node/issues/21783
Fixes: https://github.com/nodejs/node/issues/25662
Fixes: https://github.com/nodejs/node/issues/20239
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Diffstat (limited to 'test/node-api/test_worker_terminate')
-rw-r--r-- | test/node-api/test_worker_terminate/test.js | 5 | ||||
-rw-r--r-- | test/node-api/test_worker_terminate/test_worker_terminate.c | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/test/node-api/test_worker_terminate/test.js b/test/node-api/test_worker_terminate/test.js index 2bfaab8e8e..7c7224c073 100644 --- a/test/node-api/test_worker_terminate/test.js +++ b/test/node-api/test_worker_terminate/test.js @@ -4,6 +4,11 @@ const assert = require('assert'); const { Worker, isMainThread, workerData } = require('worker_threads'); if (isMainThread) { + // Load the addon in the main thread first. + // This checks that N-API addons can be loaded from multiple contexts + // when they are not loaded through NAPI_MODULE(). + require(`./build/${common.buildType}/test_worker_terminate`); + const counter = new Int32Array(new SharedArrayBuffer(4)); const worker = new Worker(__filename, { workerData: { counter } }); worker.on('exit', common.mustCall(() => { diff --git a/test/node-api/test_worker_terminate/test_worker_terminate.c b/test/node-api/test_worker_terminate/test_worker_terminate.c index a88d936293..517cae4203 100644 --- a/test/node-api/test_worker_terminate/test_worker_terminate.c +++ b/test/node-api/test_worker_terminate/test_worker_terminate.c @@ -36,4 +36,6 @@ napi_value Init(napi_env env, napi_value exports) { return exports; } +// Do not start using NAPI_MODULE_INIT() here, so that we can test +// compatibility of Workers with NAPI_MODULE(). NAPI_MODULE(NODE_GYP_MODULE_NAME, Init) |