koffi 0.9.4 → 0.9.5
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/CMakeLists.txt +60 -60
- package/README.md +163 -153
- package/package.json +19 -18
- package/src/call.hh +27 -27
- package/src/call_arm64.cc +482 -482
- package/src/call_arm64_fwd.S +115 -115
- package/src/call_x64_sysv.cc +477 -477
- package/src/call_x64_sysv_fwd.S +131 -131
- package/src/call_x64_win.cc +243 -243
- package/src/call_x64_win_fwd.asm +105 -105
- package/src/call_x86.cc +259 -259
- package/src/call_x86_fwd.S +48 -48
- package/src/call_x86_fwd.asm +50 -50
- package/src/ffi.cc +504 -504
- package/src/ffi.hh +135 -135
- package/src/util.cc +296 -296
- package/src/util.hh +80 -80
- package/vendor/dragonbox/CMakeLists.txt +122 -122
- package/vendor/dragonbox/LICENSE-Apache2-LLVM +218 -218
- package/vendor/dragonbox/LICENSE-Boost +23 -23
- package/vendor/dragonbox/README.md +277 -277
- package/vendor/dragonbox/cmake/dragonboxConfig.cmake +1 -1
- package/vendor/dragonbox/include/dragonbox/dragonbox.h +2670 -2670
- package/vendor/dragonbox/include/dragonbox/dragonbox_to_chars.h +108 -108
- package/vendor/dragonbox/other_files/unknown_win64_vc2019.html +539 -539
- package/vendor/dragonbox/source/dragonbox_to_chars.cpp +303 -303
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/CMakeLists.txt +23 -23
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.cpp +238 -238
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.h +95 -95
- package/vendor/dragonbox/subproject/3rdparty/grisu_exact/grisu_exact.h +2666 -2666
- package/vendor/dragonbox/subproject/3rdparty/ryu/CMakeLists.txt +16 -16
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/common.h +114 -114
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s.c +509 -509
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_full_table.h +367 -367
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_intrinsics.h +357 -357
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/digit_table.h +35 -35
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s.c +345 -345
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_full_table.h +55 -55
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_intrinsics.h +128 -128
- package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/ryu.h +46 -46
- package/vendor/dragonbox/subproject/3rdparty/schubfach/CMakeLists.txt +21 -21
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.cc +699 -699
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.h +31 -31
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.cc +1354 -1354
- package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.h +31 -31
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/example_shaded_plots.m +68 -68
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/license.txt +25 -25
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution.m +92 -92
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution_prctile.m +121 -121
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_histogram_shaded.m +99 -99
- package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_shaded.m +93 -93
- package/vendor/dragonbox/subproject/benchmark/CMakeLists.txt +64 -64
- package/vendor/dragonbox/subproject/benchmark/include/benchmark.h +40 -40
- package/vendor/dragonbox/subproject/benchmark/matlab/plot_benchmarks.m +21 -21
- package/vendor/dragonbox/subproject/benchmark/matlab/plot_digit_benchmark.m +78 -78
- package/vendor/dragonbox/subproject/benchmark/matlab/plot_uniform_benchmark.m +95 -95
- package/vendor/dragonbox/subproject/benchmark/source/benchmark.cpp +237 -237
- package/vendor/dragonbox/subproject/benchmark/source/dragonbox.cpp +30 -30
- package/vendor/dragonbox/subproject/benchmark/source/grisu_exact.cpp +36 -36
- package/vendor/dragonbox/subproject/benchmark/source/ryu.cpp +27 -27
- package/vendor/dragonbox/subproject/benchmark/source/schubfach.cpp +31 -31
- package/vendor/dragonbox/subproject/common/CMakeLists.txt +41 -41
- package/vendor/dragonbox/subproject/common/include/best_rational_approx.h +96 -96
- package/vendor/dragonbox/subproject/common/include/big_uint.h +217 -217
- package/vendor/dragonbox/subproject/common/include/continued_fractions.h +173 -173
- package/vendor/dragonbox/subproject/common/include/good_rational_approx.h +266 -266
- package/vendor/dragonbox/subproject/common/include/random_float.h +182 -182
- package/vendor/dragonbox/subproject/common/include/rational_continued_fractions.h +56 -56
- package/vendor/dragonbox/subproject/common/source/big_uint.cpp +601 -601
- package/vendor/dragonbox/subproject/meta/CMakeLists.txt +40 -40
- package/vendor/dragonbox/subproject/meta/results/binary32_generated_cache.txt +81 -81
- package/vendor/dragonbox/subproject/meta/results/binary64_compressed_cache_error_table.txt +9 -9
- package/vendor/dragonbox/subproject/meta/results/binary64_generated_cache.txt +622 -622
- package/vendor/dragonbox/subproject/meta/source/generate_cache.cpp +126 -126
- package/vendor/dragonbox/subproject/meta/source/live_test.cpp +81 -81
- package/vendor/dragonbox/subproject/meta/source/perf_test.cpp +104 -104
- package/vendor/dragonbox/subproject/meta/source/sandbox.cpp +20 -20
- package/vendor/dragonbox/subproject/test/CMakeLists.txt +69 -69
- package/vendor/dragonbox/subproject/test/results/binary32.csv +255 -255
- package/vendor/dragonbox/subproject/test/results/binary64.csv +2047 -2047
- package/vendor/dragonbox/subproject/test/results/plot_required_bits.m +17 -17
- package/vendor/dragonbox/subproject/test/source/test_all_shorter_interval_cases.cpp +88 -88
- package/vendor/dragonbox/subproject/test/source/uniform_random_test.cpp +95 -95
- package/vendor/dragonbox/subproject/test/source/verify_cache_precision.cpp +337 -337
- package/vendor/dragonbox/subproject/test/source/verify_compressed_cache.cpp +154 -154
- package/vendor/dragonbox/subproject/test/source/verify_fast_multiplication.cpp +168 -168
- package/vendor/dragonbox/subproject/test/source/verify_log_computation.cpp +251 -251
- package/vendor/dragonbox/subproject/test/source/verify_magic_division.cpp +113 -113
- package/vendor/libcc/libcc.cc +7651 -7651
- package/vendor/libcc/libcc.hh +4312 -4312
- package/vendor/node-addon-api/CHANGELOG.md +859 -859
- package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -4
- package/vendor/node-addon-api/CONTRIBUTING.md +93 -93
- package/vendor/node-addon-api/LICENSE.md +12 -12
- package/vendor/node-addon-api/README.md +293 -293
- package/vendor/node-addon-api/appveyor.yml +37 -37
- package/vendor/node-addon-api/benchmark/README.md +47 -47
- package/vendor/node-addon-api/benchmark/binding.gyp +25 -25
- package/vendor/node-addon-api/benchmark/function_args.cc +217 -217
- package/vendor/node-addon-api/benchmark/function_args.js +60 -60
- package/vendor/node-addon-api/benchmark/index.js +34 -34
- package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -91
- package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -37
- package/vendor/node-addon-api/common.gypi +21 -21
- package/vendor/node-addon-api/doc/addon.md +163 -163
- package/vendor/node-addon-api/doc/array.md +81 -81
- package/vendor/node-addon-api/doc/array_buffer.md +155 -155
- package/vendor/node-addon-api/doc/async_context.md +86 -86
- package/vendor/node-addon-api/doc/async_operations.md +31 -31
- package/vendor/node-addon-api/doc/async_worker.md +427 -427
- package/vendor/node-addon-api/doc/async_worker_variants.md +557 -557
- package/vendor/node-addon-api/doc/bigint.md +97 -97
- package/vendor/node-addon-api/doc/boolean.md +68 -68
- package/vendor/node-addon-api/doc/buffer.md +150 -150
- package/vendor/node-addon-api/doc/callback_scope.md +54 -54
- package/vendor/node-addon-api/doc/callbackinfo.md +97 -97
- package/vendor/node-addon-api/doc/checker-tool.md +32 -32
- package/vendor/node-addon-api/doc/class_property_descriptor.md +115 -115
- package/vendor/node-addon-api/doc/cmake-js.md +68 -68
- package/vendor/node-addon-api/doc/conversion-tool.md +27 -27
- package/vendor/node-addon-api/doc/creating_a_release.md +62 -62
- package/vendor/node-addon-api/doc/dataview.md +248 -248
- package/vendor/node-addon-api/doc/date.md +68 -68
- package/vendor/node-addon-api/doc/env.md +196 -196
- package/vendor/node-addon-api/doc/error.md +120 -120
- package/vendor/node-addon-api/doc/error_handling.md +254 -254
- package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -80
- package/vendor/node-addon-api/doc/external.md +63 -63
- package/vendor/node-addon-api/doc/function.md +402 -402
- package/vendor/node-addon-api/doc/function_reference.md +238 -238
- package/vendor/node-addon-api/doc/generator.md +13 -13
- package/vendor/node-addon-api/doc/handle_scope.md +63 -63
- package/vendor/node-addon-api/doc/hierarchy.md +91 -91
- package/vendor/node-addon-api/doc/instance_wrap.md +408 -408
- package/vendor/node-addon-api/doc/maybe.md +76 -76
- package/vendor/node-addon-api/doc/memory_management.md +27 -27
- package/vendor/node-addon-api/doc/name.md +29 -29
- package/vendor/node-addon-api/doc/node-gyp.md +82 -82
- package/vendor/node-addon-api/doc/number.md +163 -163
- package/vendor/node-addon-api/doc/object.md +432 -432
- package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -83
- package/vendor/node-addon-api/doc/object_reference.md +117 -117
- package/vendor/node-addon-api/doc/object_wrap.md +561 -561
- package/vendor/node-addon-api/doc/prebuild_tools.md +16 -16
- package/vendor/node-addon-api/doc/promises.md +79 -79
- package/vendor/node-addon-api/doc/property_descriptor.md +286 -286
- package/vendor/node-addon-api/doc/propertylvalue.md +50 -50
- package/vendor/node-addon-api/doc/range_error.md +59 -59
- package/vendor/node-addon-api/doc/reference.md +113 -113
- package/vendor/node-addon-api/doc/setup.md +110 -110
- package/vendor/node-addon-api/doc/string.md +93 -93
- package/vendor/node-addon-api/doc/symbol.md +60 -60
- package/vendor/node-addon-api/doc/threadsafe.md +121 -121
- package/vendor/node-addon-api/doc/threadsafe_function.md +290 -290
- package/vendor/node-addon-api/doc/type_error.md +59 -59
- package/vendor/node-addon-api/doc/typed_array.md +78 -78
- package/vendor/node-addon-api/doc/typed_array_of.md +137 -137
- package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -306
- package/vendor/node-addon-api/doc/value.md +340 -340
- package/vendor/node-addon-api/doc/version_management.md +43 -43
- package/vendor/node-addon-api/except.gypi +25 -25
- package/vendor/node-addon-api/index.js +11 -11
- package/vendor/node-addon-api/napi-inl.deprecated.h +192 -192
- package/vendor/node-addon-api/napi-inl.h +6209 -6209
- package/vendor/node-addon-api/napi.h +2983 -2983
- package/vendor/node-addon-api/node_api.gyp +9 -9
- package/vendor/node-addon-api/noexcept.gypi +26 -26
- package/vendor/node-addon-api/package-support.json +21 -21
- package/vendor/node-addon-api/package.json +399 -399
- package/vendor/node-addon-api/test/README.md +91 -91
- package/vendor/node-addon-api/test/addon.cc +36 -36
- package/vendor/node-addon-api/test/addon.js +11 -11
- package/vendor/node-addon-api/test/addon_build/index.js +49 -49
- package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -17
- package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -62
- package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -9
- package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -11
- package/vendor/node-addon-api/test/addon_data.cc +99 -99
- package/vendor/node-addon-api/test/addon_data.js +46 -46
- package/vendor/node-addon-api/test/array_buffer.cc +243 -243
- package/vendor/node-addon-api/test/array_buffer.js +69 -69
- package/vendor/node-addon-api/test/async_context.cc +21 -21
- package/vendor/node-addon-api/test/async_context.js +86 -86
- package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -83
- package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -46
- package/vendor/node-addon-api/test/async_progress_worker.cc +134 -134
- package/vendor/node-addon-api/test/async_progress_worker.js +61 -61
- package/vendor/node-addon-api/test/async_worker.cc +106 -106
- package/vendor/node-addon-api/test/async_worker.js +179 -179
- package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -13
- package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -63
- package/vendor/node-addon-api/test/async_worker_persistent.js +24 -24
- package/vendor/node-addon-api/test/basic_types/array.cc +40 -40
- package/vendor/node-addon-api/test/basic_types/array.js +35 -35
- package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -38
- package/vendor/node-addon-api/test/basic_types/boolean.js +35 -35
- package/vendor/node-addon-api/test/basic_types/number.cc +99 -99
- package/vendor/node-addon-api/test/basic_types/number.js +114 -114
- package/vendor/node-addon-api/test/basic_types/value.cc +120 -120
- package/vendor/node-addon-api/test/basic_types/value.js +133 -133
- package/vendor/node-addon-api/test/bigint.cc +91 -91
- package/vendor/node-addon-api/test/bigint.js +53 -53
- package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -12
- package/vendor/node-addon-api/test/binding.cc +171 -171
- package/vendor/node-addon-api/test/binding.gyp +117 -117
- package/vendor/node-addon-api/test/buffer.cc +183 -183
- package/vendor/node-addon-api/test/buffer.js +69 -69
- package/vendor/node-addon-api/test/callbackscope.cc +22 -22
- package/vendor/node-addon-api/test/callbackscope.js +49 -49
- package/vendor/node-addon-api/test/common/index.js +113 -113
- package/vendor/node-addon-api/test/common/test_helper.h +61 -61
- package/vendor/node-addon-api/test/dataview/dataview.cc +48 -48
- package/vendor/node-addon-api/test/dataview/dataview.js +35 -35
- package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -115
- package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -90
- package/vendor/node-addon-api/test/date.cc +44 -44
- package/vendor/node-addon-api/test/date.js +18 -18
- package/vendor/node-addon-api/test/env_cleanup.cc +88 -88
- package/vendor/node-addon-api/test/env_cleanup.js +56 -56
- package/vendor/node-addon-api/test/error.cc +287 -287
- package/vendor/node-addon-api/test/error.js +81 -81
- package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -13
- package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -29
- package/vendor/node-addon-api/test/error_terminating_environment.js +94 -94
- package/vendor/node-addon-api/test/external.cc +81 -81
- package/vendor/node-addon-api/test/external.js +88 -88
- package/vendor/node-addon-api/test/function.cc +295 -295
- package/vendor/node-addon-api/test/function.js +121 -121
- package/vendor/node-addon-api/test/function_reference.cc +202 -202
- package/vendor/node-addon-api/test/function_reference.js +157 -157
- package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -61
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -31
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -61
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -40
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -57
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -28
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -48
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +30 -30
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -58
- package/vendor/node-addon-api/test/handlescope.cc +60 -60
- package/vendor/node-addon-api/test/handlescope.js +14 -14
- package/vendor/node-addon-api/test/index.js +136 -136
- package/vendor/node-addon-api/test/maybe/check.cc +23 -23
- package/vendor/node-addon-api/test/maybe/index.js +38 -38
- package/vendor/node-addon-api/test/memory_management.cc +17 -17
- package/vendor/node-addon-api/test/memory_management.js +9 -9
- package/vendor/node-addon-api/test/movable_callbacks.cc +23 -23
- package/vendor/node-addon-api/test/movable_callbacks.js +21 -21
- package/vendor/node-addon-api/test/name.cc +108 -108
- package/vendor/node-addon-api/test/name.js +59 -59
- package/vendor/node-addon-api/test/napi_child.js +14 -14
- package/vendor/node-addon-api/test/object/delete_property.cc +38 -38
- package/vendor/node-addon-api/test/object/delete_property.js +41 -41
- package/vendor/node-addon-api/test/object/finalizer.cc +29 -29
- package/vendor/node-addon-api/test/object/finalizer.js +28 -28
- package/vendor/node-addon-api/test/object/get_property.cc +34 -34
- package/vendor/node-addon-api/test/object/get_property.js +40 -40
- package/vendor/node-addon-api/test/object/has_own_property.cc +34 -34
- package/vendor/node-addon-api/test/object/has_own_property.js +34 -34
- package/vendor/node-addon-api/test/object/has_property.cc +38 -38
- package/vendor/node-addon-api/test/object/has_property.js +37 -37
- package/vendor/node-addon-api/test/object/object.cc +348 -348
- package/vendor/node-addon-api/test/object/object.js +217 -217
- package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -66
- package/vendor/node-addon-api/test/object/object_deprecated.js +47 -47
- package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -25
- package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -61
- package/vendor/node-addon-api/test/object/set_property.cc +37 -37
- package/vendor/node-addon-api/test/object/set_property.js +29 -29
- package/vendor/node-addon-api/test/object/subscript_operator.cc +42 -42
- package/vendor/node-addon-api/test/object/subscript_operator.js +17 -17
- package/vendor/node-addon-api/test/object_reference.cc +219 -219
- package/vendor/node-addon-api/test/object_reference.js +259 -259
- package/vendor/node-addon-api/test/objectwrap.cc +268 -268
- package/vendor/node-addon-api/test/objectwrap.js +284 -284
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -26
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -18
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -30
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -13
- package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -45
- package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -40
- package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -19
- package/vendor/node-addon-api/test/promise.cc +29 -29
- package/vendor/node-addon-api/test/promise.js +18 -18
- package/vendor/node-addon-api/test/reference.cc +24 -24
- package/vendor/node-addon-api/test/reference.js +14 -14
- package/vendor/node-addon-api/test/run_script.cc +56 -56
- package/vendor/node-addon-api/test/run_script.js +45 -45
- package/vendor/node-addon-api/test/symbol.cc +79 -79
- package/vendor/node-addon-api/test/symbol.js +73 -73
- package/vendor/node-addon-api/test/testUtil.js +54 -54
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -195
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -188
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -63
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -12
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -115
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -14
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -26
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -7
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -225
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -59
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -42
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -53
- package/vendor/node-addon-api/test/thunking_manual.cc +140 -140
- package/vendor/node-addon-api/test/thunking_manual.js +17 -17
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -215
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -188
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -68
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -12
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -127
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -28
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -7
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -237
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -53
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -53
- package/vendor/node-addon-api/test/typedarray-bigint.js +58 -58
- package/vendor/node-addon-api/test/typedarray.cc +216 -216
- package/vendor/node-addon-api/test/typedarray.js +69 -69
- package/vendor/node-addon-api/test/version_management.cc +27 -27
- package/vendor/node-addon-api/test/version_management.js +31 -31
- package/vendor/node-addon-api/tools/README.md +73 -73
- package/vendor/node-addon-api/tools/check-napi.js +100 -100
- package/vendor/node-addon-api/tools/clang-format.js +68 -68
- package/vendor/node-addon-api/tools/conversion.js +309 -309
- package/vendor/node-addon-api/tools/eslint-format.js +71 -71
|
@@ -1,243 +1,243 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
namespace {
|
|
6
|
-
|
|
7
|
-
const size_t testLength = 4;
|
|
8
|
-
uint8_t testData[testLength];
|
|
9
|
-
int finalizeCount = 0;
|
|
10
|
-
|
|
11
|
-
void InitData(uint8_t* data, size_t length) {
|
|
12
|
-
for (size_t i = 0; i < length; i++) {
|
|
13
|
-
data[i] = static_cast<uint8_t>(i);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
bool VerifyData(uint8_t* data, size_t length) {
|
|
18
|
-
for (size_t i = 0; i < length; i++) {
|
|
19
|
-
if (data[i] != static_cast<uint8_t>(i)) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
Value CreateBuffer(const CallbackInfo& info) {
|
|
27
|
-
ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testLength);
|
|
28
|
-
|
|
29
|
-
if (buffer.ByteLength() != testLength) {
|
|
30
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
31
|
-
.ThrowAsJavaScriptException();
|
|
32
|
-
return Value();
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
InitData(static_cast<uint8_t*>(buffer.Data()), testLength);
|
|
36
|
-
return buffer;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
Value CreateExternalBuffer(const CallbackInfo& info) {
|
|
40
|
-
finalizeCount = 0;
|
|
41
|
-
|
|
42
|
-
ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testData, testLength);
|
|
43
|
-
|
|
44
|
-
if (buffer.ByteLength() != testLength) {
|
|
45
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
46
|
-
.ThrowAsJavaScriptException();
|
|
47
|
-
return Value();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (buffer.Data() != testData) {
|
|
51
|
-
Error::New(info.Env(), "Incorrect buffer data.")
|
|
52
|
-
.ThrowAsJavaScriptException();
|
|
53
|
-
return Value();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
InitData(testData, testLength);
|
|
57
|
-
return buffer;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
Value CreateExternalBufferWithFinalize(const CallbackInfo& info) {
|
|
61
|
-
finalizeCount = 0;
|
|
62
|
-
|
|
63
|
-
uint8_t* data = new uint8_t[testLength];
|
|
64
|
-
|
|
65
|
-
ArrayBuffer buffer = ArrayBuffer::New(
|
|
66
|
-
info.Env(), data, testLength, [](Env /*env*/, void* finalizeData) {
|
|
67
|
-
delete[] static_cast<uint8_t*>(finalizeData);
|
|
68
|
-
finalizeCount++;
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
if (buffer.ByteLength() != testLength) {
|
|
72
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
73
|
-
.ThrowAsJavaScriptException();
|
|
74
|
-
return Value();
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (buffer.Data() != data) {
|
|
78
|
-
Error::New(info.Env(), "Incorrect buffer data.")
|
|
79
|
-
.ThrowAsJavaScriptException();
|
|
80
|
-
return Value();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
InitData(data, testLength);
|
|
84
|
-
return buffer;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
Value CreateExternalBufferWithFinalizeHint(const CallbackInfo& info) {
|
|
88
|
-
finalizeCount = 0;
|
|
89
|
-
|
|
90
|
-
uint8_t* data = new uint8_t[testLength];
|
|
91
|
-
|
|
92
|
-
char* hint = nullptr;
|
|
93
|
-
ArrayBuffer buffer = ArrayBuffer::New(
|
|
94
|
-
info.Env(),
|
|
95
|
-
data,
|
|
96
|
-
testLength,
|
|
97
|
-
[](Env /*env*/, void* finalizeData, char* /*finalizeHint*/) {
|
|
98
|
-
delete[] static_cast<uint8_t*>(finalizeData);
|
|
99
|
-
finalizeCount++;
|
|
100
|
-
},
|
|
101
|
-
hint);
|
|
102
|
-
|
|
103
|
-
if (buffer.ByteLength() != testLength) {
|
|
104
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
105
|
-
.ThrowAsJavaScriptException();
|
|
106
|
-
return Value();
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (buffer.Data() != data) {
|
|
110
|
-
Error::New(info.Env(), "Incorrect buffer data.")
|
|
111
|
-
.ThrowAsJavaScriptException();
|
|
112
|
-
return Value();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
InitData(data, testLength);
|
|
116
|
-
return buffer;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
void CheckBuffer(const CallbackInfo& info) {
|
|
120
|
-
if (!info[0].IsArrayBuffer()) {
|
|
121
|
-
Error::New(info.Env(), "A buffer was expected.")
|
|
122
|
-
.ThrowAsJavaScriptException();
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
ArrayBuffer buffer = info[0].As<ArrayBuffer>();
|
|
127
|
-
|
|
128
|
-
if (buffer.ByteLength() != testLength) {
|
|
129
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
130
|
-
.ThrowAsJavaScriptException();
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (!VerifyData(static_cast<uint8_t*>(buffer.Data()), testLength)) {
|
|
135
|
-
Error::New(info.Env(), "Incorrect buffer data.")
|
|
136
|
-
.ThrowAsJavaScriptException();
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
Value GetFinalizeCount(const CallbackInfo& info) {
|
|
142
|
-
return Number::New(info.Env(), finalizeCount);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
Value CreateBufferWithConstructor(const CallbackInfo& info) {
|
|
146
|
-
ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testLength);
|
|
147
|
-
if (buffer.ByteLength() != testLength) {
|
|
148
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
149
|
-
.ThrowAsJavaScriptException();
|
|
150
|
-
return Value();
|
|
151
|
-
}
|
|
152
|
-
InitData(static_cast<uint8_t*>(buffer.Data()), testLength);
|
|
153
|
-
ArrayBuffer buffer2(info.Env(), buffer);
|
|
154
|
-
return buffer2;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
Value CheckEmptyBuffer(const CallbackInfo& info) {
|
|
158
|
-
ArrayBuffer buffer;
|
|
159
|
-
return Boolean::New(info.Env(), buffer.IsEmpty());
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
void CheckDetachUpdatesData(const CallbackInfo& info) {
|
|
163
|
-
if (!info[0].IsArrayBuffer()) {
|
|
164
|
-
Error::New(info.Env(), "A buffer was expected.")
|
|
165
|
-
.ThrowAsJavaScriptException();
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
ArrayBuffer buffer = info[0].As<ArrayBuffer>();
|
|
170
|
-
|
|
171
|
-
// This potentially causes the buffer to cache its data pointer and length.
|
|
172
|
-
buffer.Data();
|
|
173
|
-
buffer.ByteLength();
|
|
174
|
-
|
|
175
|
-
#if NAPI_VERSION >= 7
|
|
176
|
-
if (buffer.IsDetached()) {
|
|
177
|
-
Error::New(info.Env(), "Buffer should not be detached.")
|
|
178
|
-
.ThrowAsJavaScriptException();
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
#endif
|
|
182
|
-
|
|
183
|
-
if (info.Length() == 2) {
|
|
184
|
-
// Detach externally (in JavaScript).
|
|
185
|
-
if (!info[1].IsFunction()) {
|
|
186
|
-
Error::New(info.Env(), "A function was expected.")
|
|
187
|
-
.ThrowAsJavaScriptException();
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
Function detach = info[1].As<Function>();
|
|
192
|
-
detach.Call({});
|
|
193
|
-
} else {
|
|
194
|
-
#if NAPI_VERSION >= 7
|
|
195
|
-
// Detach directly.
|
|
196
|
-
buffer.Detach();
|
|
197
|
-
#else
|
|
198
|
-
return;
|
|
199
|
-
#endif
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
#if NAPI_VERSION >= 7
|
|
203
|
-
if (!buffer.IsDetached()) {
|
|
204
|
-
Error::New(info.Env(), "Buffer should be detached.")
|
|
205
|
-
.ThrowAsJavaScriptException();
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
#endif
|
|
209
|
-
|
|
210
|
-
if (buffer.Data() != nullptr) {
|
|
211
|
-
Error::New(info.Env(), "Incorrect data pointer.")
|
|
212
|
-
.ThrowAsJavaScriptException();
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
if (buffer.ByteLength() != 0) {
|
|
217
|
-
Error::New(info.Env(), "Incorrect buffer length.")
|
|
218
|
-
.ThrowAsJavaScriptException();
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
} // end anonymous namespace
|
|
224
|
-
|
|
225
|
-
Object InitArrayBuffer(Env env) {
|
|
226
|
-
Object exports = Object::New(env);
|
|
227
|
-
|
|
228
|
-
exports["createBuffer"] = Function::New(env, CreateBuffer);
|
|
229
|
-
exports["createExternalBuffer"] = Function::New(env, CreateExternalBuffer);
|
|
230
|
-
exports["createExternalBufferWithFinalize"] =
|
|
231
|
-
Function::New(env, CreateExternalBufferWithFinalize);
|
|
232
|
-
exports["createExternalBufferWithFinalizeHint"] =
|
|
233
|
-
Function::New(env, CreateExternalBufferWithFinalizeHint);
|
|
234
|
-
exports["checkBuffer"] = Function::New(env, CheckBuffer);
|
|
235
|
-
exports["getFinalizeCount"] = Function::New(env, GetFinalizeCount);
|
|
236
|
-
exports["createBufferWithConstructor"] =
|
|
237
|
-
Function::New(env, CreateBufferWithConstructor);
|
|
238
|
-
exports["checkEmptyBuffer"] = Function::New(env, CheckEmptyBuffer);
|
|
239
|
-
exports["checkDetachUpdatesData"] =
|
|
240
|
-
Function::New(env, CheckDetachUpdatesData);
|
|
241
|
-
|
|
242
|
-
return exports;
|
|
243
|
-
}
|
|
1
|
+
#include "napi.h"
|
|
2
|
+
|
|
3
|
+
using namespace Napi;
|
|
4
|
+
|
|
5
|
+
namespace {
|
|
6
|
+
|
|
7
|
+
const size_t testLength = 4;
|
|
8
|
+
uint8_t testData[testLength];
|
|
9
|
+
int finalizeCount = 0;
|
|
10
|
+
|
|
11
|
+
void InitData(uint8_t* data, size_t length) {
|
|
12
|
+
for (size_t i = 0; i < length; i++) {
|
|
13
|
+
data[i] = static_cast<uint8_t>(i);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
bool VerifyData(uint8_t* data, size_t length) {
|
|
18
|
+
for (size_t i = 0; i < length; i++) {
|
|
19
|
+
if (data[i] != static_cast<uint8_t>(i)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Value CreateBuffer(const CallbackInfo& info) {
|
|
27
|
+
ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testLength);
|
|
28
|
+
|
|
29
|
+
if (buffer.ByteLength() != testLength) {
|
|
30
|
+
Error::New(info.Env(), "Incorrect buffer length.")
|
|
31
|
+
.ThrowAsJavaScriptException();
|
|
32
|
+
return Value();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
InitData(static_cast<uint8_t*>(buffer.Data()), testLength);
|
|
36
|
+
return buffer;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
Value CreateExternalBuffer(const CallbackInfo& info) {
|
|
40
|
+
finalizeCount = 0;
|
|
41
|
+
|
|
42
|
+
ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testData, testLength);
|
|
43
|
+
|
|
44
|
+
if (buffer.ByteLength() != testLength) {
|
|
45
|
+
Error::New(info.Env(), "Incorrect buffer length.")
|
|
46
|
+
.ThrowAsJavaScriptException();
|
|
47
|
+
return Value();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (buffer.Data() != testData) {
|
|
51
|
+
Error::New(info.Env(), "Incorrect buffer data.")
|
|
52
|
+
.ThrowAsJavaScriptException();
|
|
53
|
+
return Value();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
InitData(testData, testLength);
|
|
57
|
+
return buffer;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
Value CreateExternalBufferWithFinalize(const CallbackInfo& info) {
|
|
61
|
+
finalizeCount = 0;
|
|
62
|
+
|
|
63
|
+
uint8_t* data = new uint8_t[testLength];
|
|
64
|
+
|
|
65
|
+
ArrayBuffer buffer = ArrayBuffer::New(
|
|
66
|
+
info.Env(), data, testLength, [](Env /*env*/, void* finalizeData) {
|
|
67
|
+
delete[] static_cast<uint8_t*>(finalizeData);
|
|
68
|
+
finalizeCount++;
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
if (buffer.ByteLength() != testLength) {
|
|
72
|
+
Error::New(info.Env(), "Incorrect buffer length.")
|
|
73
|
+
.ThrowAsJavaScriptException();
|
|
74
|
+
return Value();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (buffer.Data() != data) {
|
|
78
|
+
Error::New(info.Env(), "Incorrect buffer data.")
|
|
79
|
+
.ThrowAsJavaScriptException();
|
|
80
|
+
return Value();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
InitData(data, testLength);
|
|
84
|
+
return buffer;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
Value CreateExternalBufferWithFinalizeHint(const CallbackInfo& info) {
|
|
88
|
+
finalizeCount = 0;
|
|
89
|
+
|
|
90
|
+
uint8_t* data = new uint8_t[testLength];
|
|
91
|
+
|
|
92
|
+
char* hint = nullptr;
|
|
93
|
+
ArrayBuffer buffer = ArrayBuffer::New(
|
|
94
|
+
info.Env(),
|
|
95
|
+
data,
|
|
96
|
+
testLength,
|
|
97
|
+
[](Env /*env*/, void* finalizeData, char* /*finalizeHint*/) {
|
|
98
|
+
delete[] static_cast<uint8_t*>(finalizeData);
|
|
99
|
+
finalizeCount++;
|
|
100
|
+
},
|
|
101
|
+
hint);
|
|
102
|
+
|
|
103
|
+
if (buffer.ByteLength() != testLength) {
|
|
104
|
+
Error::New(info.Env(), "Incorrect buffer length.")
|
|
105
|
+
.ThrowAsJavaScriptException();
|
|
106
|
+
return Value();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (buffer.Data() != data) {
|
|
110
|
+
Error::New(info.Env(), "Incorrect buffer data.")
|
|
111
|
+
.ThrowAsJavaScriptException();
|
|
112
|
+
return Value();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
InitData(data, testLength);
|
|
116
|
+
return buffer;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
void CheckBuffer(const CallbackInfo& info) {
|
|
120
|
+
if (!info[0].IsArrayBuffer()) {
|
|
121
|
+
Error::New(info.Env(), "A buffer was expected.")
|
|
122
|
+
.ThrowAsJavaScriptException();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
ArrayBuffer buffer = info[0].As<ArrayBuffer>();
|
|
127
|
+
|
|
128
|
+
if (buffer.ByteLength() != testLength) {
|
|
129
|
+
Error::New(info.Env(), "Incorrect buffer length.")
|
|
130
|
+
.ThrowAsJavaScriptException();
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (!VerifyData(static_cast<uint8_t*>(buffer.Data()), testLength)) {
|
|
135
|
+
Error::New(info.Env(), "Incorrect buffer data.")
|
|
136
|
+
.ThrowAsJavaScriptException();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
Value GetFinalizeCount(const CallbackInfo& info) {
|
|
142
|
+
return Number::New(info.Env(), finalizeCount);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
Value CreateBufferWithConstructor(const CallbackInfo& info) {
|
|
146
|
+
ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testLength);
|
|
147
|
+
if (buffer.ByteLength() != testLength) {
|
|
148
|
+
Error::New(info.Env(), "Incorrect buffer length.")
|
|
149
|
+
.ThrowAsJavaScriptException();
|
|
150
|
+
return Value();
|
|
151
|
+
}
|
|
152
|
+
InitData(static_cast<uint8_t*>(buffer.Data()), testLength);
|
|
153
|
+
ArrayBuffer buffer2(info.Env(), buffer);
|
|
154
|
+
return buffer2;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
Value CheckEmptyBuffer(const CallbackInfo& info) {
|
|
158
|
+
ArrayBuffer buffer;
|
|
159
|
+
return Boolean::New(info.Env(), buffer.IsEmpty());
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
void CheckDetachUpdatesData(const CallbackInfo& info) {
|
|
163
|
+
if (!info[0].IsArrayBuffer()) {
|
|
164
|
+
Error::New(info.Env(), "A buffer was expected.")
|
|
165
|
+
.ThrowAsJavaScriptException();
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
ArrayBuffer buffer = info[0].As<ArrayBuffer>();
|
|
170
|
+
|
|
171
|
+
// This potentially causes the buffer to cache its data pointer and length.
|
|
172
|
+
buffer.Data();
|
|
173
|
+
buffer.ByteLength();
|
|
174
|
+
|
|
175
|
+
#if NAPI_VERSION >= 7
|
|
176
|
+
if (buffer.IsDetached()) {
|
|
177
|
+
Error::New(info.Env(), "Buffer should not be detached.")
|
|
178
|
+
.ThrowAsJavaScriptException();
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
#endif
|
|
182
|
+
|
|
183
|
+
if (info.Length() == 2) {
|
|
184
|
+
// Detach externally (in JavaScript).
|
|
185
|
+
if (!info[1].IsFunction()) {
|
|
186
|
+
Error::New(info.Env(), "A function was expected.")
|
|
187
|
+
.ThrowAsJavaScriptException();
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
Function detach = info[1].As<Function>();
|
|
192
|
+
detach.Call({});
|
|
193
|
+
} else {
|
|
194
|
+
#if NAPI_VERSION >= 7
|
|
195
|
+
// Detach directly.
|
|
196
|
+
buffer.Detach();
|
|
197
|
+
#else
|
|
198
|
+
return;
|
|
199
|
+
#endif
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
#if NAPI_VERSION >= 7
|
|
203
|
+
if (!buffer.IsDetached()) {
|
|
204
|
+
Error::New(info.Env(), "Buffer should be detached.")
|
|
205
|
+
.ThrowAsJavaScriptException();
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
#endif
|
|
209
|
+
|
|
210
|
+
if (buffer.Data() != nullptr) {
|
|
211
|
+
Error::New(info.Env(), "Incorrect data pointer.")
|
|
212
|
+
.ThrowAsJavaScriptException();
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (buffer.ByteLength() != 0) {
|
|
217
|
+
Error::New(info.Env(), "Incorrect buffer length.")
|
|
218
|
+
.ThrowAsJavaScriptException();
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
} // end anonymous namespace
|
|
224
|
+
|
|
225
|
+
Object InitArrayBuffer(Env env) {
|
|
226
|
+
Object exports = Object::New(env);
|
|
227
|
+
|
|
228
|
+
exports["createBuffer"] = Function::New(env, CreateBuffer);
|
|
229
|
+
exports["createExternalBuffer"] = Function::New(env, CreateExternalBuffer);
|
|
230
|
+
exports["createExternalBufferWithFinalize"] =
|
|
231
|
+
Function::New(env, CreateExternalBufferWithFinalize);
|
|
232
|
+
exports["createExternalBufferWithFinalizeHint"] =
|
|
233
|
+
Function::New(env, CreateExternalBufferWithFinalizeHint);
|
|
234
|
+
exports["checkBuffer"] = Function::New(env, CheckBuffer);
|
|
235
|
+
exports["getFinalizeCount"] = Function::New(env, GetFinalizeCount);
|
|
236
|
+
exports["createBufferWithConstructor"] =
|
|
237
|
+
Function::New(env, CreateBufferWithConstructor);
|
|
238
|
+
exports["checkEmptyBuffer"] = Function::New(env, CheckEmptyBuffer);
|
|
239
|
+
exports["checkDetachUpdatesData"] =
|
|
240
|
+
Function::New(env, CheckDetachUpdatesData);
|
|
241
|
+
|
|
242
|
+
return exports;
|
|
243
|
+
}
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const assert = require('assert');
|
|
4
|
-
const testUtil = require('./testUtil');
|
|
5
|
-
|
|
6
|
-
module.exports = require('./common').runTest(test);
|
|
7
|
-
|
|
8
|
-
function test(binding) {
|
|
9
|
-
return testUtil.runGCTests([
|
|
10
|
-
'Internal ArrayBuffer',
|
|
11
|
-
() => {
|
|
12
|
-
const test = binding.arraybuffer.createBuffer();
|
|
13
|
-
binding.arraybuffer.checkBuffer(test);
|
|
14
|
-
assert.ok(test instanceof ArrayBuffer);
|
|
15
|
-
|
|
16
|
-
const test2 = test.slice(0);
|
|
17
|
-
binding.arraybuffer.checkBuffer(test2);
|
|
18
|
-
},
|
|
19
|
-
|
|
20
|
-
'External ArrayBuffer',
|
|
21
|
-
() => {
|
|
22
|
-
const test = binding.arraybuffer.createExternalBuffer();
|
|
23
|
-
binding.arraybuffer.checkBuffer(test);
|
|
24
|
-
assert.ok(test instanceof ArrayBuffer);
|
|
25
|
-
assert.strictEqual(0, binding.arraybuffer.getFinalizeCount());
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
() => assert.strictEqual(0, binding.arraybuffer.getFinalizeCount()),
|
|
29
|
-
|
|
30
|
-
'External ArrayBuffer with finalizer',
|
|
31
|
-
() => {
|
|
32
|
-
const test = binding.arraybuffer.createExternalBufferWithFinalize();
|
|
33
|
-
binding.arraybuffer.checkBuffer(test);
|
|
34
|
-
assert.ok(test instanceof ArrayBuffer);
|
|
35
|
-
assert.strictEqual(0, binding.arraybuffer.getFinalizeCount());
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
() => assert.strictEqual(1, binding.arraybuffer.getFinalizeCount()),
|
|
39
|
-
|
|
40
|
-
'External ArrayBuffer with finalizer hint',
|
|
41
|
-
() => {
|
|
42
|
-
const test = binding.arraybuffer.createExternalBufferWithFinalizeHint();
|
|
43
|
-
binding.arraybuffer.checkBuffer(test);
|
|
44
|
-
assert.ok(test instanceof ArrayBuffer);
|
|
45
|
-
assert.strictEqual(0, binding.arraybuffer.getFinalizeCount());
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
() => assert.strictEqual(1, binding.arraybuffer.getFinalizeCount()),
|
|
49
|
-
|
|
50
|
-
'ArrayBuffer with constructor',
|
|
51
|
-
() => {
|
|
52
|
-
assert.strictEqual(true, binding.arraybuffer.checkEmptyBuffer());
|
|
53
|
-
const test = binding.arraybuffer.createBufferWithConstructor();
|
|
54
|
-
binding.arraybuffer.checkBuffer(test);
|
|
55
|
-
assert.ok(test instanceof ArrayBuffer);
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
'ArrayBuffer updates data pointer and length when detached',
|
|
59
|
-
() => {
|
|
60
|
-
// Detach the ArrayBuffer in JavaScript.
|
|
61
|
-
const mem = new WebAssembly.Memory({ initial: 1 });
|
|
62
|
-
binding.arraybuffer.checkDetachUpdatesData(mem.buffer, () => mem.grow(1));
|
|
63
|
-
|
|
64
|
-
// Let C++ detach the ArrayBuffer.
|
|
65
|
-
const extBuffer = binding.arraybuffer.createExternalBuffer();
|
|
66
|
-
binding.arraybuffer.checkDetachUpdatesData(extBuffer);
|
|
67
|
-
},
|
|
68
|
-
]);
|
|
69
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const assert = require('assert');
|
|
4
|
+
const testUtil = require('./testUtil');
|
|
5
|
+
|
|
6
|
+
module.exports = require('./common').runTest(test);
|
|
7
|
+
|
|
8
|
+
function test(binding) {
|
|
9
|
+
return testUtil.runGCTests([
|
|
10
|
+
'Internal ArrayBuffer',
|
|
11
|
+
() => {
|
|
12
|
+
const test = binding.arraybuffer.createBuffer();
|
|
13
|
+
binding.arraybuffer.checkBuffer(test);
|
|
14
|
+
assert.ok(test instanceof ArrayBuffer);
|
|
15
|
+
|
|
16
|
+
const test2 = test.slice(0);
|
|
17
|
+
binding.arraybuffer.checkBuffer(test2);
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
'External ArrayBuffer',
|
|
21
|
+
() => {
|
|
22
|
+
const test = binding.arraybuffer.createExternalBuffer();
|
|
23
|
+
binding.arraybuffer.checkBuffer(test);
|
|
24
|
+
assert.ok(test instanceof ArrayBuffer);
|
|
25
|
+
assert.strictEqual(0, binding.arraybuffer.getFinalizeCount());
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
() => assert.strictEqual(0, binding.arraybuffer.getFinalizeCount()),
|
|
29
|
+
|
|
30
|
+
'External ArrayBuffer with finalizer',
|
|
31
|
+
() => {
|
|
32
|
+
const test = binding.arraybuffer.createExternalBufferWithFinalize();
|
|
33
|
+
binding.arraybuffer.checkBuffer(test);
|
|
34
|
+
assert.ok(test instanceof ArrayBuffer);
|
|
35
|
+
assert.strictEqual(0, binding.arraybuffer.getFinalizeCount());
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
() => assert.strictEqual(1, binding.arraybuffer.getFinalizeCount()),
|
|
39
|
+
|
|
40
|
+
'External ArrayBuffer with finalizer hint',
|
|
41
|
+
() => {
|
|
42
|
+
const test = binding.arraybuffer.createExternalBufferWithFinalizeHint();
|
|
43
|
+
binding.arraybuffer.checkBuffer(test);
|
|
44
|
+
assert.ok(test instanceof ArrayBuffer);
|
|
45
|
+
assert.strictEqual(0, binding.arraybuffer.getFinalizeCount());
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
() => assert.strictEqual(1, binding.arraybuffer.getFinalizeCount()),
|
|
49
|
+
|
|
50
|
+
'ArrayBuffer with constructor',
|
|
51
|
+
() => {
|
|
52
|
+
assert.strictEqual(true, binding.arraybuffer.checkEmptyBuffer());
|
|
53
|
+
const test = binding.arraybuffer.createBufferWithConstructor();
|
|
54
|
+
binding.arraybuffer.checkBuffer(test);
|
|
55
|
+
assert.ok(test instanceof ArrayBuffer);
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
'ArrayBuffer updates data pointer and length when detached',
|
|
59
|
+
() => {
|
|
60
|
+
// Detach the ArrayBuffer in JavaScript.
|
|
61
|
+
const mem = new WebAssembly.Memory({ initial: 1 });
|
|
62
|
+
binding.arraybuffer.checkDetachUpdatesData(mem.buffer, () => mem.grow(1));
|
|
63
|
+
|
|
64
|
+
// Let C++ detach the ArrayBuffer.
|
|
65
|
+
const extBuffer = binding.arraybuffer.createExternalBuffer();
|
|
66
|
+
binding.arraybuffer.checkDetachUpdatesData(extBuffer);
|
|
67
|
+
},
|
|
68
|
+
]);
|
|
69
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
#include "napi.h"
|
|
2
|
-
|
|
3
|
-
using namespace Napi;
|
|
4
|
-
|
|
5
|
-
namespace {
|
|
6
|
-
|
|
7
|
-
static void MakeCallback(const CallbackInfo& info) {
|
|
8
|
-
Function callback = info[0].As<Function>();
|
|
9
|
-
Object resource = info[1].As<Object>();
|
|
10
|
-
AsyncContext context(info.Env(), "async_context_test", resource);
|
|
11
|
-
callback.MakeCallback(
|
|
12
|
-
Object::New(info.Env()), std::initializer_list<napi_value>{}, context);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
} // end anonymous namespace
|
|
16
|
-
|
|
17
|
-
Object InitAsyncContext(Env env) {
|
|
18
|
-
Object exports = Object::New(env);
|
|
19
|
-
exports["makeCallback"] = Function::New(env, MakeCallback);
|
|
20
|
-
return exports;
|
|
21
|
-
}
|
|
1
|
+
#include "napi.h"
|
|
2
|
+
|
|
3
|
+
using namespace Napi;
|
|
4
|
+
|
|
5
|
+
namespace {
|
|
6
|
+
|
|
7
|
+
static void MakeCallback(const CallbackInfo& info) {
|
|
8
|
+
Function callback = info[0].As<Function>();
|
|
9
|
+
Object resource = info[1].As<Object>();
|
|
10
|
+
AsyncContext context(info.Env(), "async_context_test", resource);
|
|
11
|
+
callback.MakeCallback(
|
|
12
|
+
Object::New(info.Env()), std::initializer_list<napi_value>{}, context);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
} // end anonymous namespace
|
|
16
|
+
|
|
17
|
+
Object InitAsyncContext(Env env) {
|
|
18
|
+
Object exports = Object::New(env);
|
|
19
|
+
exports["makeCallback"] = Function::New(env, MakeCallback);
|
|
20
|
+
return exports;
|
|
21
|
+
}
|