emnapi 0.42.0 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/library_napi.js +204 -36
- package/include/emnapi.h +2 -1
- package/include/js_native_api.h +10 -0
- package/lib/wasm32/libemnapi-basic-mt.a +0 -0
- package/lib/wasm32/libemnapi-basic.a +0 -0
- package/lib/wasm32/libemnapi.a +0 -0
- package/lib/wasm32-emscripten/libemnapi-basic.a +0 -0
- package/lib/wasm32-emscripten/libemnapi-mt.a +0 -0
- package/lib/wasm32-emscripten/libemnapi.a +0 -0
- package/lib/wasm32-wasi/libemnapi-basic-mt.a +0 -0
- package/lib/wasm32-wasi/libemnapi-basic.a +0 -0
- package/lib/wasm32-wasi/libemnapi.a +0 -0
- package/lib/wasm32-wasi-threads/libemnapi-basic-mt.a +0 -0
- package/lib/wasm32-wasi-threads/libemnapi-basic.a +0 -0
- package/lib/wasm32-wasi-threads/libemnapi-mt.a +0 -0
- package/lib/wasm32-wasi-threads/libemnapi.a +0 -0
- package/package.json +1 -1
- package/src/async_cleanup_hook.c +1 -1
- package/src/async_context.c +2 -0
- package/src/async_work.c +2 -0
- package/src/emnapi_internal.h +3 -0
- package/src/node_api.c +1 -1
- package/src/threadsafe_function.c +1 -0
package/dist/library_napi.js
CHANGED
|
@@ -150,6 +150,7 @@ function _emnapi_create_memory_view(env, typedarray_type, external_data, byte_le
|
|
|
150
150
|
if (!env)
|
|
151
151
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
152
152
|
var envObject = emnapiCtx.envStore.get(env);
|
|
153
|
+
envObject.checkGCAccess();
|
|
153
154
|
if (envObject.tryCatch.hasCaught())
|
|
154
155
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
155
156
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -311,6 +312,7 @@ function emnapi_sync_memory(env, js_to_wasm, arraybuffer_or_view, offset, len) {
|
|
|
311
312
|
if (!env)
|
|
312
313
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
313
314
|
var envObject = emnapiCtx.envStore.get(env);
|
|
315
|
+
envObject.checkGCAccess();
|
|
314
316
|
if (envObject.tryCatch.hasCaught())
|
|
315
317
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
316
318
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -368,6 +370,7 @@ function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership,
|
|
|
368
370
|
if (!env)
|
|
369
371
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
370
372
|
var envObject = emnapiCtx.envStore.get(env);
|
|
373
|
+
envObject.checkGCAccess();
|
|
371
374
|
if (envObject.tryCatch.hasCaught())
|
|
372
375
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
373
376
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -457,6 +460,7 @@ function napi_throw(env, error) {
|
|
|
457
460
|
if (!env)
|
|
458
461
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
459
462
|
var envObject = emnapiCtx.envStore.get(env);
|
|
463
|
+
envObject.checkGCAccess();
|
|
460
464
|
if (envObject.tryCatch.hasCaught())
|
|
461
465
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
462
466
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -478,6 +482,7 @@ function napi_throw_error(env, code, msg) {
|
|
|
478
482
|
if (!env)
|
|
479
483
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
480
484
|
var envObject = emnapiCtx.envStore.get(env);
|
|
485
|
+
envObject.checkGCAccess();
|
|
481
486
|
if (envObject.tryCatch.hasCaught())
|
|
482
487
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
483
488
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -504,6 +509,7 @@ function napi_throw_type_error(env, code, msg) {
|
|
|
504
509
|
if (!env)
|
|
505
510
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
506
511
|
var envObject = emnapiCtx.envStore.get(env);
|
|
512
|
+
envObject.checkGCAccess();
|
|
507
513
|
if (envObject.tryCatch.hasCaught())
|
|
508
514
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
509
515
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -530,6 +536,7 @@ function napi_throw_range_error(env, code, msg) {
|
|
|
530
536
|
if (!env)
|
|
531
537
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
532
538
|
var envObject = emnapiCtx.envStore.get(env);
|
|
539
|
+
envObject.checkGCAccess();
|
|
533
540
|
if (envObject.tryCatch.hasCaught())
|
|
534
541
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
535
542
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -556,6 +563,7 @@ function node_api_throw_syntax_error(env, code, msg) {
|
|
|
556
563
|
if (!env)
|
|
557
564
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
558
565
|
var envObject = emnapiCtx.envStore.get(env);
|
|
566
|
+
envObject.checkGCAccess();
|
|
559
567
|
if (envObject.tryCatch.hasCaught())
|
|
560
568
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
561
569
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -582,6 +590,7 @@ function napi_is_exception_pending(env, result) {
|
|
|
582
590
|
if (!env)
|
|
583
591
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
584
592
|
var envObject = emnapiCtx.envStore.get(env);
|
|
593
|
+
envObject.checkGCAccess();
|
|
585
594
|
if (!result)
|
|
586
595
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
587
596
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -594,6 +603,7 @@ function napi_create_error(env, code, msg, result) {
|
|
|
594
603
|
if (!env)
|
|
595
604
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
596
605
|
var envObject = emnapiCtx.envStore.get(env);
|
|
606
|
+
envObject.checkGCAccess();
|
|
597
607
|
if (!msg)
|
|
598
608
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
599
609
|
if (!result)
|
|
@@ -620,6 +630,7 @@ function napi_create_type_error(env, code, msg, result) {
|
|
|
620
630
|
if (!env)
|
|
621
631
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
622
632
|
var envObject = emnapiCtx.envStore.get(env);
|
|
633
|
+
envObject.checkGCAccess();
|
|
623
634
|
if (!msg)
|
|
624
635
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
625
636
|
if (!result)
|
|
@@ -646,6 +657,7 @@ function napi_create_range_error(env, code, msg, result) {
|
|
|
646
657
|
if (!env)
|
|
647
658
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
648
659
|
var envObject = emnapiCtx.envStore.get(env);
|
|
660
|
+
envObject.checkGCAccess();
|
|
649
661
|
if (!msg)
|
|
650
662
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
651
663
|
if (!result)
|
|
@@ -672,6 +684,7 @@ function node_api_create_syntax_error(env, code, msg, result) {
|
|
|
672
684
|
if (!env)
|
|
673
685
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
674
686
|
var envObject = emnapiCtx.envStore.get(env);
|
|
687
|
+
envObject.checkGCAccess();
|
|
675
688
|
if (!msg)
|
|
676
689
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
677
690
|
if (!result)
|
|
@@ -698,6 +711,7 @@ function napi_get_and_clear_last_exception(env, result) {
|
|
|
698
711
|
if (!env)
|
|
699
712
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
700
713
|
var envObject = emnapiCtx.envStore.get(env);
|
|
714
|
+
envObject.checkGCAccess();
|
|
701
715
|
if (!result)
|
|
702
716
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
703
717
|
{{{ from64('result') }}};
|
|
@@ -732,6 +746,7 @@ function napi_fatal_exception(env, err) {
|
|
|
732
746
|
if (!env)
|
|
733
747
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
734
748
|
var envObject = emnapiCtx.envStore.get(env);
|
|
749
|
+
envObject.checkGCAccess();
|
|
735
750
|
if (envObject.tryCatch.hasCaught())
|
|
736
751
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
737
752
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -775,6 +790,7 @@ function napi_create_function(env, utf8name, length, cb, data, result) {
|
|
|
775
790
|
if (!env)
|
|
776
791
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
777
792
|
var envObject = emnapiCtx.envStore.get(env);
|
|
793
|
+
envObject.checkGCAccess();
|
|
778
794
|
if (envObject.tryCatch.hasCaught())
|
|
779
795
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
780
796
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -806,6 +822,8 @@ function napi_get_cb_info(env, cbinfo, argc, argv, this_arg, data) {
|
|
|
806
822
|
if (!env)
|
|
807
823
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
808
824
|
var envObject = emnapiCtx.envStore.get(env);
|
|
825
|
+
if (!cbinfo)
|
|
826
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
809
827
|
var cbinfoValue = emnapiCtx.cbinfoStack.get(cbinfo);
|
|
810
828
|
{{{ from64('argc') }}};
|
|
811
829
|
{{{ from64('argv') }}};
|
|
@@ -850,6 +868,7 @@ function napi_call_function(env, recv, func, argc, argv, result) {
|
|
|
850
868
|
if (!env)
|
|
851
869
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
852
870
|
var envObject = emnapiCtx.envStore.get(env);
|
|
871
|
+
envObject.checkGCAccess();
|
|
853
872
|
if (envObject.tryCatch.hasCaught())
|
|
854
873
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
855
874
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -897,6 +916,7 @@ function napi_new_instance(env, constructor, argc, argv, result) {
|
|
|
897
916
|
if (!env)
|
|
898
917
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
899
918
|
var envObject = emnapiCtx.envStore.get(env);
|
|
919
|
+
envObject.checkGCAccess();
|
|
900
920
|
if (envObject.tryCatch.hasCaught())
|
|
901
921
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
902
922
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -953,8 +973,11 @@ function napi_get_new_target(env, cbinfo, result) {
|
|
|
953
973
|
if (!env)
|
|
954
974
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
955
975
|
var envObject = emnapiCtx.envStore.get(env);
|
|
976
|
+
if (!cbinfo)
|
|
977
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
956
978
|
if (!result)
|
|
957
979
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
980
|
+
envObject.checkGCAccess();
|
|
958
981
|
{{{ from64('result') }}};
|
|
959
982
|
var cbinfoValue = emnapiCtx.cbinfoStack.get(cbinfo);
|
|
960
983
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -1079,6 +1102,7 @@ function emnapiWrap(env, js_object, native_object, finalize_cb, finalize_hint, r
|
|
|
1079
1102
|
if (!env)
|
|
1080
1103
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1081
1104
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1105
|
+
envObject.checkGCAccess();
|
|
1082
1106
|
if (envObject.tryCatch.hasCaught())
|
|
1083
1107
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1084
1108
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -1130,6 +1154,7 @@ function emnapiUnwrap(env, js_object, result, action) {
|
|
|
1130
1154
|
if (!env)
|
|
1131
1155
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1132
1156
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1157
|
+
envObject.checkGCAccess();
|
|
1133
1158
|
if (envObject.tryCatch.hasCaught())
|
|
1134
1159
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1135
1160
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -1184,6 +1209,7 @@ function napi_open_handle_scope(env, result) {
|
|
|
1184
1209
|
if (!env)
|
|
1185
1210
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1186
1211
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1212
|
+
envObject.checkGCAccess();
|
|
1187
1213
|
if (!result)
|
|
1188
1214
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1189
1215
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -1196,6 +1222,7 @@ function napi_close_handle_scope(env, scope) {
|
|
|
1196
1222
|
if (!env)
|
|
1197
1223
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1198
1224
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1225
|
+
envObject.checkGCAccess();
|
|
1199
1226
|
if (!scope)
|
|
1200
1227
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1201
1228
|
if ((envObject.openHandleScopes === 0)) {
|
|
@@ -1208,6 +1235,7 @@ function napi_open_escapable_handle_scope(env, result) {
|
|
|
1208
1235
|
if (!env)
|
|
1209
1236
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1210
1237
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1238
|
+
envObject.checkGCAccess();
|
|
1211
1239
|
if (!result)
|
|
1212
1240
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1213
1241
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -1220,6 +1248,7 @@ function napi_close_escapable_handle_scope(env, scope) {
|
|
|
1220
1248
|
if (!env)
|
|
1221
1249
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1222
1250
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1251
|
+
envObject.checkGCAccess();
|
|
1223
1252
|
if (!scope)
|
|
1224
1253
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1225
1254
|
if ((envObject.openHandleScopes === 0)) {
|
|
@@ -1232,6 +1261,7 @@ function napi_escape_handle(env, scope, escapee, result) {
|
|
|
1232
1261
|
if (!env)
|
|
1233
1262
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1234
1263
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1264
|
+
envObject.checkGCAccess();
|
|
1235
1265
|
if (!scope)
|
|
1236
1266
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1237
1267
|
if (!escapee)
|
|
@@ -1254,6 +1284,7 @@ function napi_create_reference(env, value, initial_refcount, result) {
|
|
|
1254
1284
|
if (!env)
|
|
1255
1285
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1256
1286
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1287
|
+
envObject.checkGCAccess();
|
|
1257
1288
|
if (!value)
|
|
1258
1289
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1259
1290
|
if (!result)
|
|
@@ -1274,6 +1305,7 @@ function napi_delete_reference(env, ref) {
|
|
|
1274
1305
|
if (!env)
|
|
1275
1306
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1276
1307
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1308
|
+
envObject.checkGCAccess();
|
|
1277
1309
|
if (!ref)
|
|
1278
1310
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1279
1311
|
emnapiCtx.refStore.get(ref).dispose();
|
|
@@ -1283,6 +1315,7 @@ function napi_reference_ref(env, ref, result) {
|
|
|
1283
1315
|
if (!env)
|
|
1284
1316
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1285
1317
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1318
|
+
envObject.checkGCAccess();
|
|
1286
1319
|
if (!ref)
|
|
1287
1320
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1288
1321
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -1297,6 +1330,7 @@ function napi_reference_unref(env, ref, result) {
|
|
|
1297
1330
|
if (!env)
|
|
1298
1331
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1299
1332
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1333
|
+
envObject.checkGCAccess();
|
|
1300
1334
|
if (!ref)
|
|
1301
1335
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1302
1336
|
var reference = emnapiCtx.refStore.get(ref);
|
|
@@ -1316,6 +1350,7 @@ function napi_get_reference_value(env, ref, result) {
|
|
|
1316
1350
|
if (!env)
|
|
1317
1351
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1318
1352
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1353
|
+
envObject.checkGCAccess();
|
|
1319
1354
|
if (!ref)
|
|
1320
1355
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1321
1356
|
if (!result)
|
|
@@ -1640,6 +1675,7 @@ function napi_make_callback(env, async_context, recv, func, argc, argv, result)
|
|
|
1640
1675
|
if (!env)
|
|
1641
1676
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1642
1677
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1678
|
+
envObject.checkGCAccess();
|
|
1643
1679
|
if (envObject.tryCatch.hasCaught())
|
|
1644
1680
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1645
1681
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -1692,6 +1728,10 @@ function napi_make_callback(env, async_context, recv, func, argc, argv, result)
|
|
|
1692
1728
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1693
1729
|
}
|
|
1694
1730
|
}
|
|
1731
|
+
function __emnapi_env_check_gc_access(env) {
|
|
1732
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
1733
|
+
envObject.checkGCAccess();
|
|
1734
|
+
}
|
|
1695
1735
|
emnapiImplementInternal('_emnapi_node_emit_async_init', 'vppdp', __emnapi_node_emit_async_init);
|
|
1696
1736
|
emnapiImplementInternal('_emnapi_node_emit_async_destroy', 'vdd', __emnapi_node_emit_async_destroy);
|
|
1697
1737
|
// emnapiImplementInternal('_emnapi_node_open_callback_scope', 'vpddp', __emnapi_node_open_callback_scope)
|
|
@@ -1699,6 +1739,7 @@ emnapiImplementInternal('_emnapi_node_emit_async_destroy', 'vdd', __emnapi_node_
|
|
|
1699
1739
|
emnapiImplementInternal('_emnapi_node_make_callback', 'ipppppddp', __emnapi_node_make_callback);
|
|
1700
1740
|
emnapiImplementInternal('_emnapi_async_init_js', 'ippp', __emnapi_async_init_js);
|
|
1701
1741
|
emnapiImplementInternal('_emnapi_async_destroy_js', 'ip', __emnapi_async_destroy_js);
|
|
1742
|
+
emnapiImplementInternal('_emnapi_env_check_gc_access', 'vp', __emnapi_env_check_gc_access);
|
|
1702
1743
|
emnapiImplement('napi_open_callback_scope', 'ipppp', napi_open_callback_scope);
|
|
1703
1744
|
emnapiImplement('napi_close_callback_scope', 'ipp', napi_close_callback_scope);
|
|
1704
1745
|
emnapiImplement('napi_make_callback', 'ippppppp', napi_make_callback);
|
|
@@ -1708,6 +1749,7 @@ function napi_create_promise(env, deferred, promise) {
|
|
|
1708
1749
|
if (!env)
|
|
1709
1750
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1710
1751
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1752
|
+
envObject.checkGCAccess();
|
|
1711
1753
|
if (envObject.tryCatch.hasCaught())
|
|
1712
1754
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1713
1755
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -1740,6 +1782,7 @@ function napi_resolve_deferred(env, deferred, resolution) {
|
|
|
1740
1782
|
if (!env)
|
|
1741
1783
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1742
1784
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1785
|
+
envObject.checkGCAccess();
|
|
1743
1786
|
if (envObject.tryCatch.hasCaught())
|
|
1744
1787
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1745
1788
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -1764,6 +1807,7 @@ function napi_reject_deferred(env, deferred, resolution) {
|
|
|
1764
1807
|
if (!env)
|
|
1765
1808
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1766
1809
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1810
|
+
envObject.checkGCAccess();
|
|
1767
1811
|
if (envObject.tryCatch.hasCaught())
|
|
1768
1812
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1769
1813
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -1788,6 +1832,7 @@ function napi_is_promise(env, value, is_promise) {
|
|
|
1788
1832
|
if (!env)
|
|
1789
1833
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1790
1834
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1835
|
+
envObject.checkGCAccess();
|
|
1791
1836
|
if (!value)
|
|
1792
1837
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
1793
1838
|
if (!is_promise)
|
|
@@ -1809,6 +1854,7 @@ function _napi_get_all_property_names(env, object, key_mode, key_filter, key_con
|
|
|
1809
1854
|
if (!env)
|
|
1810
1855
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1811
1856
|
var envObject = emnapiCtx.envStore.get(env);
|
|
1857
|
+
envObject.checkGCAccess();
|
|
1812
1858
|
if (envObject.tryCatch.hasCaught())
|
|
1813
1859
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1814
1860
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -1953,6 +1999,7 @@ function napi_set_property(env, object, key, value) {
|
|
|
1953
1999
|
if (!env)
|
|
1954
2000
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1955
2001
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2002
|
+
envObject.checkGCAccess();
|
|
1956
2003
|
if (envObject.tryCatch.hasCaught())
|
|
1957
2004
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1958
2005
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -1984,6 +2031,7 @@ function napi_has_property(env, object, key, result) {
|
|
|
1984
2031
|
if (!env)
|
|
1985
2032
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
1986
2033
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2034
|
+
envObject.checkGCAccess();
|
|
1987
2035
|
if (envObject.tryCatch.hasCaught())
|
|
1988
2036
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
1989
2037
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2024,6 +2072,7 @@ function napi_get_property(env, object, key, result) {
|
|
|
2024
2072
|
if (!env)
|
|
2025
2073
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2026
2074
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2075
|
+
envObject.checkGCAccess();
|
|
2027
2076
|
if (envObject.tryCatch.hasCaught())
|
|
2028
2077
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2029
2078
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2065,6 +2114,7 @@ function napi_delete_property(env, object, key, result) {
|
|
|
2065
2114
|
if (!env)
|
|
2066
2115
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2067
2116
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2117
|
+
envObject.checkGCAccess();
|
|
2068
2118
|
if (envObject.tryCatch.hasCaught())
|
|
2069
2119
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2070
2120
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2109,6 +2159,7 @@ function napi_has_own_property(env, object, key, result) {
|
|
|
2109
2159
|
if (!env)
|
|
2110
2160
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2111
2161
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2162
|
+
envObject.checkGCAccess();
|
|
2112
2163
|
if (envObject.tryCatch.hasCaught())
|
|
2113
2164
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2114
2165
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2151,6 +2202,7 @@ function napi_set_named_property(env, object, cname, value) {
|
|
|
2151
2202
|
if (!env)
|
|
2152
2203
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2153
2204
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2205
|
+
envObject.checkGCAccess();
|
|
2154
2206
|
if (envObject.tryCatch.hasCaught())
|
|
2155
2207
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2156
2208
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2184,6 +2236,7 @@ function napi_has_named_property(env, object, utf8name, result) {
|
|
|
2184
2236
|
if (!env)
|
|
2185
2237
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2186
2238
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2239
|
+
envObject.checkGCAccess();
|
|
2187
2240
|
if (envObject.tryCatch.hasCaught())
|
|
2188
2241
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2189
2242
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2226,6 +2279,7 @@ function napi_get_named_property(env, object, utf8name, result) {
|
|
|
2226
2279
|
if (!env)
|
|
2227
2280
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2228
2281
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2282
|
+
envObject.checkGCAccess();
|
|
2229
2283
|
if (envObject.tryCatch.hasCaught())
|
|
2230
2284
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2231
2285
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2267,6 +2321,7 @@ function napi_set_element(env, object, index, value) {
|
|
|
2267
2321
|
if (!env)
|
|
2268
2322
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2269
2323
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2324
|
+
envObject.checkGCAccess();
|
|
2270
2325
|
if (envObject.tryCatch.hasCaught())
|
|
2271
2326
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2272
2327
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2296,6 +2351,7 @@ function napi_has_element(env, object, index, result) {
|
|
|
2296
2351
|
if (!env)
|
|
2297
2352
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2298
2353
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2354
|
+
envObject.checkGCAccess();
|
|
2299
2355
|
if (envObject.tryCatch.hasCaught())
|
|
2300
2356
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2301
2357
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2334,6 +2390,7 @@ function napi_get_element(env, object, index, result) {
|
|
|
2334
2390
|
if (!env)
|
|
2335
2391
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2336
2392
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2393
|
+
envObject.checkGCAccess();
|
|
2337
2394
|
if (envObject.tryCatch.hasCaught())
|
|
2338
2395
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2339
2396
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2373,6 +2430,7 @@ function napi_delete_element(env, object, index, result) {
|
|
|
2373
2430
|
if (!env)
|
|
2374
2431
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2375
2432
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2433
|
+
envObject.checkGCAccess();
|
|
2376
2434
|
if (envObject.tryCatch.hasCaught())
|
|
2377
2435
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2378
2436
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2414,6 +2472,7 @@ function napi_define_properties(env, object, property_count, properties) {
|
|
|
2414
2472
|
if (!env)
|
|
2415
2473
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2416
2474
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2475
|
+
envObject.checkGCAccess();
|
|
2417
2476
|
if (envObject.tryCatch.hasCaught())
|
|
2418
2477
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2419
2478
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2473,6 +2532,7 @@ function napi_object_freeze(env, object) {
|
|
|
2473
2532
|
if (!env)
|
|
2474
2533
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2475
2534
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2535
|
+
envObject.checkGCAccess();
|
|
2476
2536
|
if (envObject.tryCatch.hasCaught())
|
|
2477
2537
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2478
2538
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2499,6 +2559,7 @@ function napi_object_seal(env, object) {
|
|
|
2499
2559
|
if (!env)
|
|
2500
2560
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2501
2561
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2562
|
+
envObject.checkGCAccess();
|
|
2502
2563
|
if (envObject.tryCatch.hasCaught())
|
|
2503
2564
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2504
2565
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2540,12 +2601,14 @@ emnapiImplement('napi_object_freeze', 'ipp', napi_object_freeze);
|
|
|
2540
2601
|
emnapiImplement('napi_object_seal', 'ipp', napi_object_seal);
|
|
2541
2602
|
/* eslint-disable @typescript-eslint/indent */
|
|
2542
2603
|
function napi_run_script(env, script, result) {
|
|
2604
|
+
var status;
|
|
2543
2605
|
#if DYNAMIC_EXECUTION
|
|
2544
2606
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2545
2607
|
var value;
|
|
2546
2608
|
if (!env)
|
|
2547
2609
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2548
2610
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2611
|
+
envObject.checkGCAccess();
|
|
2549
2612
|
if (envObject.tryCatch.hasCaught())
|
|
2550
2613
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2551
2614
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -2567,14 +2630,14 @@ function napi_run_script(env, script, result) {
|
|
|
2567
2630
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2568
2631
|
value = envObject.ensureHandleId(ret);
|
|
2569
2632
|
{{{ makeSetValue('result', 0, 'value', '*') }}};
|
|
2570
|
-
|
|
2633
|
+
status = envObject.getReturnStatus();
|
|
2571
2634
|
}
|
|
2572
2635
|
catch (err) {
|
|
2573
2636
|
envObject.tryCatch.setError(err);
|
|
2574
2637
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
2575
2638
|
}
|
|
2576
2639
|
#else
|
|
2577
|
-
|
|
2640
|
+
status = _napi_set_last_error(env, 9 /* napi_status.napi_generic_failure */, 0, 0);
|
|
2578
2641
|
#endif
|
|
2579
2642
|
return status;
|
|
2580
2643
|
}
|
|
@@ -2836,6 +2899,7 @@ var emnapiString = {
|
|
|
2836
2899
|
if (!env)
|
|
2837
2900
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
2838
2901
|
var envObject = emnapiCtx.envStore.get(env);
|
|
2902
|
+
envObject.checkGCAccess();
|
|
2839
2903
|
{{{ from64('length') }}};
|
|
2840
2904
|
var autoLength = length === -1;
|
|
2841
2905
|
var sizelength = length >>> 0;
|
|
@@ -2857,14 +2921,16 @@ var emnapiString = {
|
|
|
2857
2921
|
return envObject.clearLastError();
|
|
2858
2922
|
},
|
|
2859
2923
|
newExternalString: function (env, str, length, finalize_callback, finalize_hint, result, copied, createApi, stringMaker) {
|
|
2924
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
2925
|
+
envObject.checkGCAccess();
|
|
2860
2926
|
var status = createApi(env, str, length, result);
|
|
2861
2927
|
if (status === 0 /* napi_status.napi_ok */) {
|
|
2862
2928
|
if (copied) {
|
|
2863
2929
|
{{{ makeSetValue('copied', 0, '1', 'i8') }}};
|
|
2864
2930
|
}
|
|
2865
2931
|
if (finalize_callback) {
|
|
2866
|
-
var
|
|
2867
|
-
|
|
2932
|
+
var envObject_1 = emnapiCtx.envStore.get(env);
|
|
2933
|
+
envObject_1.callFinalizer(finalize_callback, str, finalize_hint);
|
|
2868
2934
|
}
|
|
2869
2935
|
}
|
|
2870
2936
|
return status;
|
|
@@ -3419,10 +3485,10 @@ var emnapiTSFN = {
|
|
|
3419
3485
|
});
|
|
3420
3486
|
if (popped_value) {
|
|
3421
3487
|
var env = emnapiTSFN.getEnv(func);
|
|
3422
|
-
var
|
|
3423
|
-
emnapiCtx.openScope(
|
|
3488
|
+
var envObject_2 = emnapiCtx.envStore.get(env);
|
|
3489
|
+
emnapiCtx.openScope(envObject_2);
|
|
3424
3490
|
var f = function () {
|
|
3425
|
-
|
|
3491
|
+
envObject_2.callbackIntoModule(false, function () {
|
|
3426
3492
|
var callJsCb = emnapiTSFN.getCallJSCb(func);
|
|
3427
3493
|
var ref = emnapiTSFN.getRef(func);
|
|
3428
3494
|
var js_callback = ref ? emnapiCtx.refStore.get(ref).get() : 0;
|
|
@@ -3455,7 +3521,7 @@ var emnapiTSFN = {
|
|
|
3455
3521
|
}
|
|
3456
3522
|
}
|
|
3457
3523
|
finally {
|
|
3458
|
-
emnapiCtx.closeScope(
|
|
3524
|
+
emnapiCtx.closeScope(envObject_2);
|
|
3459
3525
|
}
|
|
3460
3526
|
}
|
|
3461
3527
|
return has_more;
|
|
@@ -3502,6 +3568,7 @@ function _napi_create_threadsafe_function(env, func, async_resource, async_resou
|
|
|
3502
3568
|
if (!env)
|
|
3503
3569
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3504
3570
|
var envObject = emnapiCtx.envStore.get(env);
|
|
3571
|
+
envObject.checkGCAccess();
|
|
3505
3572
|
if (!async_resource_name)
|
|
3506
3573
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3507
3574
|
{{{ from64('max_queue_size') }}};
|
|
@@ -3778,6 +3845,7 @@ function napi_typeof(env, value, result) {
|
|
|
3778
3845
|
if (!env)
|
|
3779
3846
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3780
3847
|
var envObject = emnapiCtx.envStore.get(env);
|
|
3848
|
+
envObject.checkGCAccess();
|
|
3781
3849
|
if (!value)
|
|
3782
3850
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3783
3851
|
if (!result)
|
|
@@ -3833,6 +3901,7 @@ function napi_coerce_to_bool(env, value, result) {
|
|
|
3833
3901
|
if (!env)
|
|
3834
3902
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3835
3903
|
var envObject = emnapiCtx.envStore.get(env);
|
|
3904
|
+
envObject.checkGCAccess();
|
|
3836
3905
|
if (envObject.tryCatch.hasCaught())
|
|
3837
3906
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3838
3907
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -3861,6 +3930,7 @@ function napi_coerce_to_number(env, value, result) {
|
|
|
3861
3930
|
if (!env)
|
|
3862
3931
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3863
3932
|
var envObject = emnapiCtx.envStore.get(env);
|
|
3933
|
+
envObject.checkGCAccess();
|
|
3864
3934
|
if (envObject.tryCatch.hasCaught())
|
|
3865
3935
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3866
3936
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -3893,6 +3963,7 @@ function napi_coerce_to_object(env, value, result) {
|
|
|
3893
3963
|
if (!env)
|
|
3894
3964
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3895
3965
|
var envObject = emnapiCtx.envStore.get(env);
|
|
3966
|
+
envObject.checkGCAccess();
|
|
3896
3967
|
if (envObject.tryCatch.hasCaught())
|
|
3897
3968
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3898
3969
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -3925,6 +3996,7 @@ function napi_coerce_to_string(env, value, result) {
|
|
|
3925
3996
|
if (!env)
|
|
3926
3997
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3927
3998
|
var envObject = emnapiCtx.envStore.get(env);
|
|
3999
|
+
envObject.checkGCAccess();
|
|
3928
4000
|
if (envObject.tryCatch.hasCaught())
|
|
3929
4001
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3930
4002
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -3957,6 +4029,7 @@ function napi_instanceof(env, object, constructor, result) {
|
|
|
3957
4029
|
if (!env)
|
|
3958
4030
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3959
4031
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4032
|
+
envObject.checkGCAccess();
|
|
3960
4033
|
if (envObject.tryCatch.hasCaught())
|
|
3961
4034
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
3962
4035
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -3991,6 +4064,7 @@ function napi_is_array(env, value, result) {
|
|
|
3991
4064
|
if (!env)
|
|
3992
4065
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
3993
4066
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4067
|
+
envObject.checkGCAccess();
|
|
3994
4068
|
if (!value)
|
|
3995
4069
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
3996
4070
|
if (!result)
|
|
@@ -4006,6 +4080,7 @@ function napi_is_arraybuffer(env, value, result) {
|
|
|
4006
4080
|
if (!env)
|
|
4007
4081
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4008
4082
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4083
|
+
envObject.checkGCAccess();
|
|
4009
4084
|
if (!value)
|
|
4010
4085
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4011
4086
|
if (!result)
|
|
@@ -4021,6 +4096,7 @@ function napi_is_date(env, value, result) {
|
|
|
4021
4096
|
if (!env)
|
|
4022
4097
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4023
4098
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4099
|
+
envObject.checkGCAccess();
|
|
4024
4100
|
if (!value)
|
|
4025
4101
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4026
4102
|
if (!result)
|
|
@@ -4036,6 +4112,7 @@ function napi_is_error(env, value, result) {
|
|
|
4036
4112
|
if (!env)
|
|
4037
4113
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4038
4114
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4115
|
+
envObject.checkGCAccess();
|
|
4039
4116
|
if (!value)
|
|
4040
4117
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4041
4118
|
if (!result)
|
|
@@ -4051,6 +4128,7 @@ function napi_is_typedarray(env, value, result) {
|
|
|
4051
4128
|
if (!env)
|
|
4052
4129
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4053
4130
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4131
|
+
envObject.checkGCAccess();
|
|
4054
4132
|
if (!value)
|
|
4055
4133
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4056
4134
|
if (!result)
|
|
@@ -4066,6 +4144,7 @@ function napi_is_buffer(env, value, result) {
|
|
|
4066
4144
|
if (!env)
|
|
4067
4145
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4068
4146
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4147
|
+
envObject.checkGCAccess();
|
|
4069
4148
|
if (!value)
|
|
4070
4149
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4071
4150
|
if (!result)
|
|
@@ -4081,6 +4160,7 @@ function napi_is_dataview(env, value, result) {
|
|
|
4081
4160
|
if (!env)
|
|
4082
4161
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4083
4162
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4163
|
+
envObject.checkGCAccess();
|
|
4084
4164
|
if (!value)
|
|
4085
4165
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4086
4166
|
if (!result)
|
|
@@ -4098,6 +4178,7 @@ function napi_strict_equals(env, lhs, rhs, result) {
|
|
|
4098
4178
|
if (!env)
|
|
4099
4179
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4100
4180
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4181
|
+
envObject.checkGCAccess();
|
|
4101
4182
|
if (envObject.tryCatch.hasCaught())
|
|
4102
4183
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4103
4184
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -4127,6 +4208,7 @@ function napi_detach_arraybuffer(env, arraybuffer) {
|
|
|
4127
4208
|
if (!env)
|
|
4128
4209
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4129
4210
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4211
|
+
envObject.checkGCAccess();
|
|
4130
4212
|
if (!arraybuffer)
|
|
4131
4213
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4132
4214
|
var value = emnapiCtx.handleStore.get(arraybuffer).value;
|
|
@@ -4150,6 +4232,7 @@ function napi_is_detached_arraybuffer(env, arraybuffer, result) {
|
|
|
4150
4232
|
if (!env)
|
|
4151
4233
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4152
4234
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4235
|
+
envObject.checkGCAccess();
|
|
4153
4236
|
if (envObject.tryCatch.hasCaught())
|
|
4154
4237
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4155
4238
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -4157,6 +4240,7 @@ function napi_is_detached_arraybuffer(env, arraybuffer, result) {
|
|
|
4157
4240
|
}
|
|
4158
4241
|
envObject.clearLastError();
|
|
4159
4242
|
try {
|
|
4243
|
+
envObject.checkGCAccess();
|
|
4160
4244
|
if (!arraybuffer)
|
|
4161
4245
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4162
4246
|
if (!result)
|
|
@@ -4215,6 +4299,7 @@ function napi_define_class(env, utf8name, length, constructor, callback_data, pr
|
|
|
4215
4299
|
if (!env)
|
|
4216
4300
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4217
4301
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4302
|
+
envObject.checkGCAccess();
|
|
4218
4303
|
if (envObject.tryCatch.hasCaught())
|
|
4219
4304
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4220
4305
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -4297,6 +4382,7 @@ function napi_type_tag_object(env, object, type_tag) {
|
|
|
4297
4382
|
if (!env)
|
|
4298
4383
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4299
4384
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4385
|
+
envObject.checkGCAccess();
|
|
4300
4386
|
if (envObject.tryCatch.hasCaught())
|
|
4301
4387
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4302
4388
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -4338,6 +4424,7 @@ function napi_check_object_type_tag(env, object, type_tag, result) {
|
|
|
4338
4424
|
if (!env)
|
|
4339
4425
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4340
4426
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4427
|
+
envObject.checkGCAccess();
|
|
4341
4428
|
if (envObject.tryCatch.hasCaught())
|
|
4342
4429
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4343
4430
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -4386,6 +4473,7 @@ function _napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finaliz
|
|
|
4386
4473
|
if (!env)
|
|
4387
4474
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4388
4475
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4476
|
+
envObject.checkGCAccess();
|
|
4389
4477
|
if (!emnapiCtx.feature.supportFinalizer) {
|
|
4390
4478
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
4391
4479
|
}
|
|
@@ -4411,6 +4499,13 @@ function _napi_add_finalizer(env, js_object, finalize_data, finalize_cb, finaliz
|
|
|
4411
4499
|
}
|
|
4412
4500
|
return envObject.clearLastError();
|
|
4413
4501
|
}
|
|
4502
|
+
function _node_api_post_finalizer(env, finalize_cb, finalize_data, finalize_hint) {
|
|
4503
|
+
if (!env)
|
|
4504
|
+
return 1 /* napi_status.napi_invalid_arg */;
|
|
4505
|
+
var envObject = emnapiCtx.envStore.get(env);
|
|
4506
|
+
envObject.enqueueFinalizer(emnapiCtx.createTrackedFinalizer(envObject, finalize_cb, finalize_data, finalize_hint));
|
|
4507
|
+
return envObject.clearLastError();
|
|
4508
|
+
}
|
|
4414
4509
|
emnapiImplement('napi_define_class', 'ipppppppp', napi_define_class, ['$emnapiCreateFunction', '$emnapiDefineProperty', '$emnapiString']);
|
|
4415
4510
|
emnapiImplement('napi_wrap', 'ipppppp', napi_wrap, ['$emnapiWrap']);
|
|
4416
4511
|
emnapiImplement('napi_unwrap', 'ippp', napi_unwrap, ['$emnapiUnwrap']);
|
|
@@ -4418,28 +4513,43 @@ emnapiImplement('napi_remove_wrap', 'ippp', napi_remove_wrap, ['$emnapiUnwrap'])
|
|
|
4418
4513
|
emnapiImplement('napi_type_tag_object', 'ippp', napi_type_tag_object);
|
|
4419
4514
|
emnapiImplement('napi_check_object_type_tag', 'ipppp', napi_check_object_type_tag);
|
|
4420
4515
|
emnapiImplement('napi_add_finalizer', 'ipppppp', _napi_add_finalizer, ['$emnapiGetHandle']);
|
|
4516
|
+
emnapiImplement('node_api_post_finalizer', 'ipppp', _node_api_post_finalizer);
|
|
4421
4517
|
function napi_get_array_length(env, value, result) {
|
|
4422
4518
|
if (!env)
|
|
4423
4519
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4424
4520
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4521
|
+
envObject.checkGCAccess();
|
|
4522
|
+
if (envObject.tryCatch.hasCaught())
|
|
4523
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4524
|
+
if (!envObject.canCallIntoJs()) {
|
|
4525
|
+
return envObject.setLastError(envObject.moduleApiVersion === 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */ ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
4526
|
+
}
|
|
4527
|
+
envObject.clearLastError();
|
|
4528
|
+
try {
|
|
4529
|
+
if (!value)
|
|
4530
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4531
|
+
if (!result)
|
|
4532
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4533
|
+
var handle = emnapiCtx.handleStore.get(value);
|
|
4534
|
+
if (!handle.isArray()) {
|
|
4535
|
+
return envObject.setLastError(8 /* napi_status.napi_array_expected */);
|
|
4536
|
+
}
|
|
4537
|
+
{{{ from64('result') }}};
|
|
4538
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4539
|
+
var v = handle.value.length >>> 0;
|
|
4540
|
+
{{{ makeSetValue('result', 0, 'v', 'u32') }}};
|
|
4541
|
+
return envObject.getReturnStatus();
|
|
4542
|
+
}
|
|
4543
|
+
catch (err) {
|
|
4544
|
+
envObject.tryCatch.setError(err);
|
|
4545
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4432
4546
|
}
|
|
4433
|
-
{{{ from64('result') }}};
|
|
4434
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4435
|
-
var v = handle.value.length >>> 0;
|
|
4436
|
-
{{{ makeSetValue('result', 0, 'v', 'u32') }}};
|
|
4437
|
-
return envObject.clearLastError();
|
|
4438
4547
|
}
|
|
4439
4548
|
function napi_get_arraybuffer_info(env, arraybuffer, data, byte_length) {
|
|
4440
4549
|
if (!env)
|
|
4441
4550
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4442
4551
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4552
|
+
envObject.checkGCAccess();
|
|
4443
4553
|
if (!arraybuffer)
|
|
4444
4554
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4445
4555
|
var handle = emnapiCtx.handleStore.get(arraybuffer);
|
|
@@ -4462,32 +4572,45 @@ function napi_get_prototype(env, value, result) {
|
|
|
4462
4572
|
if (!env)
|
|
4463
4573
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4464
4574
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
if (!result)
|
|
4468
|
-
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4469
|
-
var handle = emnapiCtx.handleStore.get(value);
|
|
4470
|
-
if (handle.value == null) {
|
|
4471
|
-
envObject.tryCatch.setError(new TypeError('Cannot convert undefined or null to object'));
|
|
4575
|
+
envObject.checkGCAccess();
|
|
4576
|
+
if (envObject.tryCatch.hasCaught())
|
|
4472
4577
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4578
|
+
if (!envObject.canCallIntoJs()) {
|
|
4579
|
+
return envObject.setLastError(envObject.moduleApiVersion === 2147483647 /* Version.NAPI_VERSION_EXPERIMENTAL */ ? 23 /* napi_status.napi_cannot_run_js */ : 10 /* napi_status.napi_pending_exception */);
|
|
4473
4580
|
}
|
|
4474
|
-
|
|
4581
|
+
envObject.clearLastError();
|
|
4475
4582
|
try {
|
|
4476
|
-
|
|
4583
|
+
if (!value)
|
|
4584
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4585
|
+
if (!result)
|
|
4586
|
+
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4587
|
+
var handle = emnapiCtx.handleStore.get(value);
|
|
4588
|
+
if (handle.value == null) {
|
|
4589
|
+
throw new TypeError('Cannot convert undefined or null to object');
|
|
4590
|
+
}
|
|
4591
|
+
var v = void 0;
|
|
4592
|
+
try {
|
|
4593
|
+
v = handle.isObject() || handle.isFunction() ? handle.value : Object(handle.value);
|
|
4594
|
+
}
|
|
4595
|
+
catch (_) {
|
|
4596
|
+
return envObject.setLastError(2 /* napi_status.napi_object_expected */);
|
|
4597
|
+
}
|
|
4598
|
+
{{{ from64('result') }}};
|
|
4599
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4600
|
+
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
4601
|
+
{{{ makeSetValue('result', 0, 'p', '*') }}};
|
|
4602
|
+
return envObject.getReturnStatus();
|
|
4477
4603
|
}
|
|
4478
|
-
catch (
|
|
4479
|
-
|
|
4604
|
+
catch (err) {
|
|
4605
|
+
envObject.tryCatch.setError(err);
|
|
4606
|
+
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4480
4607
|
}
|
|
4481
|
-
{{{ from64('result') }}};
|
|
4482
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4483
|
-
var p = envObject.ensureHandleId(Object.getPrototypeOf(v));
|
|
4484
|
-
{{{ makeSetValue('result', 0, 'p', '*') }}};
|
|
4485
|
-
return envObject.clearLastError();
|
|
4486
4608
|
}
|
|
4487
4609
|
function _napi_get_typedarray_info(env, typedarray, type, length, data, arraybuffer, byte_offset) {
|
|
4488
4610
|
if (!env)
|
|
4489
4611
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4490
4612
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4613
|
+
envObject.checkGCAccess();
|
|
4491
4614
|
if (!typedarray)
|
|
4492
4615
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4493
4616
|
var handle = emnapiCtx.handleStore.get(typedarray);
|
|
@@ -4567,6 +4690,7 @@ function napi_get_buffer_info(env, buffer, data, length) {
|
|
|
4567
4690
|
if (!env)
|
|
4568
4691
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4569
4692
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4693
|
+
envObject.checkGCAccess();
|
|
4570
4694
|
if (!buffer)
|
|
4571
4695
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4572
4696
|
var handle = emnapiCtx.handleStore.get(buffer);
|
|
@@ -4579,6 +4703,7 @@ function napi_get_dataview_info(env, dataview, byte_length, data, arraybuffer, b
|
|
|
4579
4703
|
if (!env)
|
|
4580
4704
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4581
4705
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4706
|
+
envObject.checkGCAccess();
|
|
4582
4707
|
if (!dataview)
|
|
4583
4708
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4584
4709
|
var handle = emnapiCtx.handleStore.get(dataview);
|
|
@@ -4618,6 +4743,7 @@ function napi_get_date_value(env, value, result) {
|
|
|
4618
4743
|
if (!env)
|
|
4619
4744
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4620
4745
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4746
|
+
envObject.checkGCAccess();
|
|
4621
4747
|
if (envObject.tryCatch.hasCaught())
|
|
4622
4748
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
4623
4749
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -4625,6 +4751,7 @@ function napi_get_date_value(env, value, result) {
|
|
|
4625
4751
|
}
|
|
4626
4752
|
envObject.clearLastError();
|
|
4627
4753
|
try {
|
|
4754
|
+
envObject.checkGCAccess();
|
|
4628
4755
|
if (!value)
|
|
4629
4756
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4630
4757
|
if (!result)
|
|
@@ -4647,6 +4774,7 @@ function napi_get_value_bool(env, value, result) {
|
|
|
4647
4774
|
if (!env)
|
|
4648
4775
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4649
4776
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4777
|
+
envObject.checkGCAccess();
|
|
4650
4778
|
if (!value)
|
|
4651
4779
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4652
4780
|
if (!result)
|
|
@@ -4665,6 +4793,7 @@ function napi_get_value_double(env, value, result) {
|
|
|
4665
4793
|
if (!env)
|
|
4666
4794
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4667
4795
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4796
|
+
envObject.checkGCAccess();
|
|
4668
4797
|
if (!value)
|
|
4669
4798
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4670
4799
|
if (!result)
|
|
@@ -4683,6 +4812,7 @@ function napi_get_value_bigint_int64(env, value, result, lossless) {
|
|
|
4683
4812
|
if (!env)
|
|
4684
4813
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4685
4814
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4815
|
+
envObject.checkGCAccess();
|
|
4686
4816
|
if (!emnapiCtx.feature.supportBigInt) {
|
|
4687
4817
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
4688
4818
|
}
|
|
@@ -4721,6 +4851,7 @@ function napi_get_value_bigint_uint64(env, value, result, lossless) {
|
|
|
4721
4851
|
if (!env)
|
|
4722
4852
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4723
4853
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4854
|
+
envObject.checkGCAccess();
|
|
4724
4855
|
if (!emnapiCtx.feature.supportBigInt) {
|
|
4725
4856
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
4726
4857
|
}
|
|
@@ -4756,6 +4887,7 @@ function napi_get_value_bigint_words(env, value, sign_bit, word_count, words) {
|
|
|
4756
4887
|
if (!env)
|
|
4757
4888
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4758
4889
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4890
|
+
envObject.checkGCAccess();
|
|
4759
4891
|
if (!emnapiCtx.feature.supportBigInt) {
|
|
4760
4892
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
4761
4893
|
}
|
|
@@ -4813,6 +4945,7 @@ function napi_get_value_external(env, value, result) {
|
|
|
4813
4945
|
if (!env)
|
|
4814
4946
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4815
4947
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4948
|
+
envObject.checkGCAccess();
|
|
4816
4949
|
if (!value)
|
|
4817
4950
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4818
4951
|
if (!result)
|
|
@@ -4831,6 +4964,7 @@ function napi_get_value_int32(env, value, result) {
|
|
|
4831
4964
|
if (!env)
|
|
4832
4965
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4833
4966
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4967
|
+
envObject.checkGCAccess();
|
|
4834
4968
|
if (!value)
|
|
4835
4969
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4836
4970
|
if (!result)
|
|
@@ -4847,6 +4981,7 @@ function napi_get_value_int64(env, value, result) {
|
|
|
4847
4981
|
if (!env)
|
|
4848
4982
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4849
4983
|
var envObject = emnapiCtx.envStore.get(env);
|
|
4984
|
+
envObject.checkGCAccess();
|
|
4850
4985
|
if (!value)
|
|
4851
4986
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4852
4987
|
if (!result)
|
|
@@ -4885,6 +5020,7 @@ function napi_get_value_string_latin1(env, value, buf, buf_size, result) {
|
|
|
4885
5020
|
if (!env)
|
|
4886
5021
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4887
5022
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5023
|
+
envObject.checkGCAccess();
|
|
4888
5024
|
if (!value)
|
|
4889
5025
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4890
5026
|
{{{ from64('result') }}};
|
|
@@ -4924,6 +5060,7 @@ function napi_get_value_string_utf8(env, value, buf, buf_size, result) {
|
|
|
4924
5060
|
if (!env)
|
|
4925
5061
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4926
5062
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5063
|
+
envObject.checkGCAccess();
|
|
4927
5064
|
if (!value)
|
|
4928
5065
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4929
5066
|
{{{ from64('result') }}};
|
|
@@ -4957,6 +5094,7 @@ function napi_get_value_string_utf16(env, value, buf, buf_size, result) {
|
|
|
4957
5094
|
if (!env)
|
|
4958
5095
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4959
5096
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5097
|
+
envObject.checkGCAccess();
|
|
4960
5098
|
if (!value)
|
|
4961
5099
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4962
5100
|
{{{ from64('result') }}};
|
|
@@ -4988,6 +5126,7 @@ function napi_get_value_uint32(env, value, result) {
|
|
|
4988
5126
|
if (!env)
|
|
4989
5127
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
4990
5128
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5129
|
+
envObject.checkGCAccess();
|
|
4991
5130
|
if (!value)
|
|
4992
5131
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
4993
5132
|
if (!result)
|
|
@@ -5024,6 +5163,7 @@ function napi_create_int32(env, value, result) {
|
|
|
5024
5163
|
if (!env)
|
|
5025
5164
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5026
5165
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5166
|
+
envObject.checkGCAccess();
|
|
5027
5167
|
if (!result)
|
|
5028
5168
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5029
5169
|
{{{ from64('result') }}};
|
|
@@ -5036,6 +5176,7 @@ function napi_create_uint32(env, value, result) {
|
|
|
5036
5176
|
if (!env)
|
|
5037
5177
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5038
5178
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5179
|
+
envObject.checkGCAccess();
|
|
5039
5180
|
if (!result)
|
|
5040
5181
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5041
5182
|
{{{ from64('result') }}};
|
|
@@ -5048,6 +5189,7 @@ function napi_create_int64(env, low, high, result) {
|
|
|
5048
5189
|
if (!env)
|
|
5049
5190
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5050
5191
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5192
|
+
envObject.checkGCAccess();
|
|
5051
5193
|
var value;
|
|
5052
5194
|
#if WASM_BIGINT
|
|
5053
5195
|
if (!high)
|
|
@@ -5071,6 +5213,7 @@ function napi_create_double(env, value, result) {
|
|
|
5071
5213
|
if (!env)
|
|
5072
5214
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5073
5215
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5216
|
+
envObject.checkGCAccess();
|
|
5074
5217
|
if (!result)
|
|
5075
5218
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5076
5219
|
{{{ from64('result') }}};
|
|
@@ -5125,6 +5268,7 @@ function napi_create_bigint_int64(env, low, high, result) {
|
|
|
5125
5268
|
if (!env)
|
|
5126
5269
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5127
5270
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5271
|
+
envObject.checkGCAccess();
|
|
5128
5272
|
if (!emnapiCtx.feature.supportBigInt) {
|
|
5129
5273
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
5130
5274
|
}
|
|
@@ -5151,6 +5295,7 @@ function napi_create_bigint_uint64(env, low, high, result) {
|
|
|
5151
5295
|
if (!env)
|
|
5152
5296
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5153
5297
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5298
|
+
envObject.checkGCAccess();
|
|
5154
5299
|
if (!emnapiCtx.feature.supportBigInt) {
|
|
5155
5300
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
5156
5301
|
}
|
|
@@ -5179,6 +5324,7 @@ function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
|
|
|
5179
5324
|
if (!env)
|
|
5180
5325
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5181
5326
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5327
|
+
envObject.checkGCAccess();
|
|
5182
5328
|
if (envObject.tryCatch.hasCaught())
|
|
5183
5329
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5184
5330
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5189,6 +5335,7 @@ function napi_create_bigint_words(env, sign_bit, word_count, words, result) {
|
|
|
5189
5335
|
if (!emnapiCtx.feature.supportBigInt) {
|
|
5190
5336
|
return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
|
|
5191
5337
|
}
|
|
5338
|
+
envObject.checkGCAccess();
|
|
5192
5339
|
if (!result)
|
|
5193
5340
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5194
5341
|
{{{ from64('words') }}};
|
|
@@ -5234,6 +5381,7 @@ function napi_create_array(env, result) {
|
|
|
5234
5381
|
if (!env)
|
|
5235
5382
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5236
5383
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5384
|
+
envObject.checkGCAccess();
|
|
5237
5385
|
if (!result)
|
|
5238
5386
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5239
5387
|
{{{ from64('result') }}};
|
|
@@ -5246,6 +5394,7 @@ function napi_create_array_with_length(env, length, result) {
|
|
|
5246
5394
|
if (!env)
|
|
5247
5395
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5248
5396
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5397
|
+
envObject.checkGCAccess();
|
|
5249
5398
|
if (!result)
|
|
5250
5399
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5251
5400
|
{{{ from64('length') }}};
|
|
@@ -5274,6 +5423,7 @@ function napi_create_arraybuffer(env, byte_length, data, result) {
|
|
|
5274
5423
|
if (!env)
|
|
5275
5424
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5276
5425
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5426
|
+
envObject.checkGCAccess();
|
|
5277
5427
|
if (envObject.tryCatch.hasCaught())
|
|
5278
5428
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5279
5429
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5300,6 +5450,7 @@ function napi_create_date(env, time, result) {
|
|
|
5300
5450
|
if (!env)
|
|
5301
5451
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5302
5452
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5453
|
+
envObject.checkGCAccess();
|
|
5303
5454
|
if (envObject.tryCatch.hasCaught())
|
|
5304
5455
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5305
5456
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5326,6 +5477,7 @@ function napi_create_external(env, data, finalize_cb, finalize_hint, result) {
|
|
|
5326
5477
|
if (!env)
|
|
5327
5478
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5328
5479
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5480
|
+
envObject.checkGCAccess();
|
|
5329
5481
|
if (envObject.tryCatch.hasCaught())
|
|
5330
5482
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5331
5483
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5358,6 +5510,7 @@ function napi_create_external_arraybuffer(env, external_data, byte_length, final
|
|
|
5358
5510
|
if (!env)
|
|
5359
5511
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5360
5512
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5513
|
+
envObject.checkGCAccess();
|
|
5361
5514
|
if (envObject.tryCatch.hasCaught())
|
|
5362
5515
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5363
5516
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5423,6 +5576,7 @@ function napi_create_object(env, result) {
|
|
|
5423
5576
|
if (!env)
|
|
5424
5577
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5425
5578
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5579
|
+
envObject.checkGCAccess();
|
|
5426
5580
|
if (!result)
|
|
5427
5581
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5428
5582
|
{{{ from64('result') }}};
|
|
@@ -5435,6 +5589,7 @@ function napi_create_symbol(env, description, result) {
|
|
|
5435
5589
|
if (!env)
|
|
5436
5590
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5437
5591
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5592
|
+
envObject.checkGCAccess();
|
|
5438
5593
|
if (!result)
|
|
5439
5594
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5440
5595
|
{{{ from64('result') }}};
|
|
@@ -5461,6 +5616,7 @@ function napi_create_typedarray(env, type, length, arraybuffer, byte_offset, res
|
|
|
5461
5616
|
if (!env)
|
|
5462
5617
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5463
5618
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5619
|
+
envObject.checkGCAccess();
|
|
5464
5620
|
if (envObject.tryCatch.hasCaught())
|
|
5465
5621
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5466
5622
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5554,6 +5710,7 @@ function napi_create_buffer(env, size, data, result) {
|
|
|
5554
5710
|
if (!env)
|
|
5555
5711
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5556
5712
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5713
|
+
envObject.checkGCAccess();
|
|
5557
5714
|
if (envObject.tryCatch.hasCaught())
|
|
5558
5715
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5559
5716
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5609,6 +5766,7 @@ function napi_create_buffer_copy(env, length, data, result_data, result) {
|
|
|
5609
5766
|
if (!env)
|
|
5610
5767
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5611
5768
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5769
|
+
envObject.checkGCAccess();
|
|
5612
5770
|
if (envObject.tryCatch.hasCaught())
|
|
5613
5771
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5614
5772
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5646,6 +5804,7 @@ function napi_create_dataview(env, byte_length, arraybuffer, byte_offset, result
|
|
|
5646
5804
|
if (!env)
|
|
5647
5805
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5648
5806
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5807
|
+
envObject.checkGCAccess();
|
|
5649
5808
|
if (envObject.tryCatch.hasCaught())
|
|
5650
5809
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5651
5810
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5698,6 +5857,7 @@ function node_api_symbol_for(env, utf8description, length, result) {
|
|
|
5698
5857
|
if (!env)
|
|
5699
5858
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5700
5859
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5860
|
+
envObject.checkGCAccess();
|
|
5701
5861
|
if (!result)
|
|
5702
5862
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5703
5863
|
{{{ from64('length') }}};
|
|
@@ -5737,6 +5897,7 @@ function napi_get_boolean(env, value, result) {
|
|
|
5737
5897
|
if (!env)
|
|
5738
5898
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5739
5899
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5900
|
+
envObject.checkGCAccess();
|
|
5740
5901
|
if (!result)
|
|
5741
5902
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5742
5903
|
{{{ from64('result') }}};
|
|
@@ -5749,6 +5910,7 @@ function napi_get_global(env, result) {
|
|
|
5749
5910
|
if (!env)
|
|
5750
5911
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5751
5912
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5913
|
+
envObject.checkGCAccess();
|
|
5752
5914
|
if (!result)
|
|
5753
5915
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5754
5916
|
{{{ from64('result') }}};
|
|
@@ -5761,6 +5923,7 @@ function napi_get_null(env, result) {
|
|
|
5761
5923
|
if (!env)
|
|
5762
5924
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5763
5925
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5926
|
+
envObject.checkGCAccess();
|
|
5764
5927
|
if (!result)
|
|
5765
5928
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5766
5929
|
{{{ from64('result') }}};
|
|
@@ -5773,6 +5936,7 @@ function napi_get_undefined(env, result) {
|
|
|
5773
5936
|
if (!env)
|
|
5774
5937
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5775
5938
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5939
|
+
envObject.checkGCAccess();
|
|
5776
5940
|
if (!result)
|
|
5777
5941
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5778
5942
|
{{{ from64('result') }}};
|
|
@@ -5789,6 +5953,7 @@ function _napi_create_async_work(env, resource, resource_name, execute, complete
|
|
|
5789
5953
|
if (!env)
|
|
5790
5954
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5791
5955
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5956
|
+
envObject.checkGCAccess();
|
|
5792
5957
|
if (!execute)
|
|
5793
5958
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5794
5959
|
if (!result)
|
|
@@ -5812,6 +5977,7 @@ function _napi_delete_async_work(env, work) {
|
|
|
5812
5977
|
if (!env)
|
|
5813
5978
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5814
5979
|
var envObject = emnapiCtx.envStore.get(env);
|
|
5980
|
+
envObject.checkGCAccess();
|
|
5815
5981
|
if (!work)
|
|
5816
5982
|
return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
|
|
5817
5983
|
emnapiAWST.remove(work);
|
|
@@ -5935,6 +6101,7 @@ function emnapi_get_module_object(env, result) {
|
|
|
5935
6101
|
if (!env)
|
|
5936
6102
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5937
6103
|
var envObject = emnapiCtx.envStore.get(env);
|
|
6104
|
+
envObject.checkGCAccess();
|
|
5938
6105
|
if (envObject.tryCatch.hasCaught())
|
|
5939
6106
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5940
6107
|
if (!envObject.canCallIntoJs()) {
|
|
@@ -5961,6 +6128,7 @@ function emnapi_get_module_property(env, utf8name, result) {
|
|
|
5961
6128
|
if (!env)
|
|
5962
6129
|
return 1 /* napi_status.napi_invalid_arg */;
|
|
5963
6130
|
var envObject = emnapiCtx.envStore.get(env);
|
|
6131
|
+
envObject.checkGCAccess();
|
|
5964
6132
|
if (envObject.tryCatch.hasCaught())
|
|
5965
6133
|
return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
|
|
5966
6134
|
if (!envObject.canCallIntoJs()) {
|
package/include/emnapi.h
CHANGED
package/include/js_native_api.h
CHANGED
|
@@ -523,6 +523,16 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_add_finalizer(napi_env env,
|
|
|
523
523
|
|
|
524
524
|
#endif // NAPI_VERSION >= 5
|
|
525
525
|
|
|
526
|
+
#ifdef NAPI_EXPERIMENTAL
|
|
527
|
+
|
|
528
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
529
|
+
node_api_post_finalizer(napi_env env,
|
|
530
|
+
napi_finalize finalize_cb,
|
|
531
|
+
void* finalize_data,
|
|
532
|
+
void* finalize_hint);
|
|
533
|
+
|
|
534
|
+
#endif // NAPI_EXPERIMENTAL
|
|
535
|
+
|
|
526
536
|
#if NAPI_VERSION >= 6
|
|
527
537
|
|
|
528
538
|
// BigInt
|
|
Binary file
|
|
Binary file
|
package/lib/wasm32/libemnapi.a
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/src/async_cleanup_hook.c
CHANGED
package/src/async_context.c
CHANGED
|
@@ -21,6 +21,7 @@ napi_async_init(napi_env env,
|
|
|
21
21
|
napi_value async_resource_name,
|
|
22
22
|
napi_async_context* result) {
|
|
23
23
|
CHECK_ENV(env);
|
|
24
|
+
_emnapi_env_check_gc_access(env);
|
|
24
25
|
CHECK_ARG(env, async_resource_name);
|
|
25
26
|
CHECK_ARG(env, result);
|
|
26
27
|
|
|
@@ -39,6 +40,7 @@ napi_async_init(napi_env env,
|
|
|
39
40
|
napi_status napi_async_destroy(napi_env env,
|
|
40
41
|
napi_async_context async_context) {
|
|
41
42
|
CHECK_ENV(env);
|
|
43
|
+
_emnapi_env_check_gc_access(env);
|
|
42
44
|
CHECK_ARG(env, async_context);
|
|
43
45
|
|
|
44
46
|
napi_status status = _emnapi_async_destroy_js(async_context);
|
package/src/async_work.c
CHANGED
|
@@ -149,6 +149,7 @@ napi_status napi_create_async_work(napi_env env,
|
|
|
149
149
|
napi_async_work* result) {
|
|
150
150
|
#if EMNAPI_HAVE_THREADS
|
|
151
151
|
CHECK_ENV(env);
|
|
152
|
+
_emnapi_env_check_gc_access(env);
|
|
152
153
|
CHECK_ARG(env, execute);
|
|
153
154
|
CHECK_ARG(env, result);
|
|
154
155
|
|
|
@@ -188,6 +189,7 @@ napi_status napi_create_async_work(napi_env env,
|
|
|
188
189
|
napi_status napi_delete_async_work(napi_env env, napi_async_work work) {
|
|
189
190
|
#if EMNAPI_HAVE_THREADS
|
|
190
191
|
CHECK_ENV(env);
|
|
192
|
+
_emnapi_env_check_gc_access(env);
|
|
191
193
|
CHECK_ARG(env, work);
|
|
192
194
|
|
|
193
195
|
async_work_delete(work);
|
package/src/emnapi_internal.h
CHANGED
|
@@ -156,6 +156,9 @@ napi_status _emnapi_node_make_callback(napi_env env,
|
|
|
156
156
|
double trigger_async_id,
|
|
157
157
|
napi_value* result);
|
|
158
158
|
|
|
159
|
+
EMNAPI_INTERNAL_EXTERN
|
|
160
|
+
void _emnapi_env_check_gc_access(napi_env env);
|
|
161
|
+
|
|
159
162
|
#define EMNAPI_ASYNC_RESOURCE_CTOR(env, res, name, ar) \
|
|
160
163
|
do { \
|
|
161
164
|
EMNAPI_ASSERT_CALL(napi_create_reference((env), (res), 1, &(ar)->resource_)); \
|
package/src/node_api.c
CHANGED
|
@@ -409,6 +409,7 @@ napi_create_threadsafe_function(napi_env env,
|
|
|
409
409
|
napi_threadsafe_function* result) {
|
|
410
410
|
#if EMNAPI_HAVE_THREADS
|
|
411
411
|
CHECK_ENV(env);
|
|
412
|
+
_emnapi_env_check_gc_access(env);
|
|
412
413
|
CHECK_ARG(env, async_resource_name);
|
|
413
414
|
RETURN_STATUS_IF_FALSE(env, initial_thread_count > 0, napi_invalid_arg);
|
|
414
415
|
CHECK_ARG(env, result);
|