koffi 2.16.0-beta.2 → 2.16.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/CHANGELOG.md +59 -0
- package/build/koffi/darwin_arm64/koffi.node +0 -0
- package/build/koffi/darwin_x64/koffi.node +0 -0
- package/build/koffi/freebsd_arm64/koffi.node +0 -0
- package/build/koffi/freebsd_ia32/koffi.node +0 -0
- package/build/koffi/freebsd_x64/koffi.node +0 -0
- package/build/koffi/linux_arm64/koffi.node +0 -0
- package/build/koffi/linux_armhf/koffi.node +0 -0
- package/build/koffi/linux_ia32/koffi.node +0 -0
- package/build/koffi/linux_loong64/koffi.node +0 -0
- package/build/koffi/linux_riscv64d/koffi.node +0 -0
- package/build/koffi/linux_x64/koffi.node +0 -0
- package/build/koffi/musl_arm64/koffi.node +0 -0
- package/build/koffi/musl_x64/koffi.node +0 -0
- package/build/koffi/openbsd_ia32/koffi.node +0 -0
- package/build/koffi/openbsd_x64/koffi.node +0 -0
- package/build/koffi/win32_arm64/koffi.exp +0 -0
- package/build/koffi/win32_arm64/koffi.lib +0 -0
- package/build/koffi/win32_arm64/koffi.node +0 -0
- package/build/koffi/win32_ia32/koffi.exp +0 -0
- package/build/koffi/win32_ia32/koffi.lib +0 -0
- package/build/koffi/win32_ia32/koffi.node +0 -0
- package/build/koffi/win32_x64/koffi.exp +0 -0
- package/build/koffi/win32_x64/koffi.lib +0 -0
- package/build/koffi/win32_x64/koffi.node +0 -0
- package/index.d.ts +9 -11
- package/index.js +6 -9
- package/indirect.js +6 -9
- package/lib/native/base/base.cc +1 -6
- package/package.json +3 -3
- package/src/cnoke/assets/FindCNoke.cmake +27 -16
- package/src/cnoke/assets/toolchains.json +126 -0
- package/src/cnoke/cnoke.js +27 -33
- package/src/cnoke/src/builder.js +124 -63
- package/src/cnoke/src/tools.js +1 -5
- package/src/koffi/CMakeLists.txt +32 -21
- package/src/koffi/src/{abi/arm32.cc → abi_arm32.cc} +235 -238
- package/src/koffi/src/{abi/arm32_asm.S → abi_arm32_asm.S} +19 -15
- package/src/koffi/src/{abi/arm64.cc → abi_arm64.cc} +253 -274
- package/src/koffi/src/{abi/arm64_asm.S → abi_arm64_asm.S} +16 -10
- package/src/koffi/src/{abi/arm64_asm.asm → abi_arm64_asm.asm} +17 -10
- package/src/koffi/src/{abi/loong64_asm.S → abi_loong64_asm.S} +16 -10
- package/src/koffi/src/{abi/riscv64.cc → abi_riscv64.cc} +233 -236
- package/src/koffi/src/{abi/riscv64_asm.S → abi_riscv64_asm.S} +16 -10
- package/src/koffi/src/{abi/x64_sysv.cc → abi_x64_sysv.cc} +208 -212
- package/src/koffi/src/{abi/x64_sysv_asm.S → abi_x64_sysv_asm.S} +17 -10
- package/src/koffi/src/{abi/x64_win.cc → abi_x64_win.cc} +175 -206
- package/src/koffi/src/{abi/x64_win_asm.S → abi_x64_win_asm.S} +49 -27
- package/src/koffi/src/{abi/x64_win_asm.asm → abi_x64_win_asm.asm} +54 -27
- package/src/koffi/src/{abi/x86.cc → abi_x86.cc} +187 -226
- package/src/koffi/src/{abi/x86_asm.S → abi_x86_asm.S} +36 -21
- package/src/koffi/src/{abi/x86_asm.asm → abi_x86_asm.asm} +31 -16
- package/src/koffi/src/call.cc +473 -287
- package/src/koffi/src/call.hh +15 -18
- package/src/koffi/src/ffi.cc +167 -183
- package/src/koffi/src/ffi.hh +59 -13
- package/src/koffi/src/init.js +1 -0
- package/src/koffi/src/util.cc +113 -159
- package/src/koffi/src/util.hh +23 -74
- package/src/koffi/src/win32.cc +13 -0
- package/src/koffi/src/win32.hh +7 -0
- package/src/koffi/tools/write_trampolines.js +77 -0
- package/doc/README.md +0 -27
- package/doc/assets.ini +0 -24
- package/doc/build.sh +0 -9
- package/doc/develop.sh +0 -15
- package/doc/pages/404.md +0 -17
- package/doc/pages.ini +0 -86
- package/doc/static/highlight.js +0 -8
- package/doc/static/koffi.css +0 -11
- package/doc/static/koffi.png +0 -0
- package/doc/static/logo.webp +0 -0
- package/doc/static/perf_linux.png +0 -0
- package/doc/static/perf_windows.png +0 -0
- package/doc/static/print.css +0 -10
- package/doc/templates/code.html +0 -48
- package/doc/templates/page.html +0 -47
- package/src/koffi/cmake/raylib.cmake +0 -85
- package/src/koffi/cmake/sqlite3.cmake +0 -9
- package/src/koffi/examples/electron-builder/README.md +0 -11
- package/src/koffi/examples/electron-builder/package.json +0 -21
- package/src/koffi/examples/electron-builder/src/app.js +0 -20
- package/src/koffi/examples/electron-builder/src/index.html +0 -143
- package/src/koffi/examples/electron-builder/src/preload.js +0 -5
- package/src/koffi/examples/electron-forge/README.md +0 -25
- package/src/koffi/examples/electron-forge/forge.config.js +0 -63
- package/src/koffi/examples/electron-forge/package.json +0 -39
- package/src/koffi/examples/electron-forge/src/index.css +0 -7
- package/src/koffi/examples/electron-forge/src/index.html +0 -143
- package/src/koffi/examples/electron-forge/src/main.js +0 -52
- package/src/koffi/examples/electron-forge/src/preload.js +0 -5
- package/src/koffi/examples/electron-forge/src/renderer.js +0 -31
- package/src/koffi/examples/electron-forge/webpack.main.config.js +0 -11
- package/src/koffi/examples/electron-forge/webpack.renderer.config.js +0 -13
- package/src/koffi/examples/electron-forge/webpack.rules.js +0 -35
- package/src/koffi/examples/node-esbuild/README.md +0 -19
- package/src/koffi/examples/node-esbuild/index.js +0 -2
- package/src/koffi/examples/node-esbuild/package.json +0 -16
- package/src/koffi/examples/nwjs/README.md +0 -20
- package/src/koffi/examples/nwjs/package.json +0 -11
- package/src/koffi/examples/nwjs/src/index.html +0 -145
- package/src/koffi/examples/nwjs/src/package.json +0 -10
- package/src/koffi/examples/yao-pkg/README.md +0 -17
- package/src/koffi/examples/yao-pkg/index.js +0 -2
- package/src/koffi/examples/yao-pkg/package.json +0 -22
- package/src/koffi/src/primitives.inc +0 -39
- package/src/koffi/src/trampolines/armasm.inc +0 -32771
- package/src/koffi/src/trampolines/gnu.inc +0 -24577
- package/src/koffi/src/trampolines/masm32.inc +0 -32769
- package/src/koffi/src/trampolines/masm64.inc +0 -32769
- package/src/koffi/src/trampolines/prototypes.inc +0 -16388
- package/vendor/node-addon-api/CHANGELOG.md +0 -1272
- package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
- package/vendor/node-addon-api/CONTRIBUTING.md +0 -203
- package/vendor/node-addon-api/appveyor.yml +0 -37
- package/vendor/node-addon-api/benchmark/README.md +0 -47
- package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
- package/vendor/node-addon-api/benchmark/function_args.cc +0 -250
- package/vendor/node-addon-api/benchmark/function_args.js +0 -60
- package/vendor/node-addon-api/benchmark/index.js +0 -34
- package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -84
- package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -38
- package/vendor/node-addon-api/common.gypi +0 -21
- package/vendor/node-addon-api/doc/README.md +0 -145
- package/vendor/node-addon-api/doc/addon.md +0 -163
- package/vendor/node-addon-api/doc/array.md +0 -81
- package/vendor/node-addon-api/doc/array_buffer.md +0 -165
- package/vendor/node-addon-api/doc/async_context.md +0 -86
- package/vendor/node-addon-api/doc/async_operations.md +0 -31
- package/vendor/node-addon-api/doc/async_worker.md +0 -428
- package/vendor/node-addon-api/doc/async_worker_variants.md +0 -578
- package/vendor/node-addon-api/doc/basic_env.md +0 -200
- package/vendor/node-addon-api/doc/bigint.md +0 -97
- package/vendor/node-addon-api/doc/boolean.md +0 -68
- package/vendor/node-addon-api/doc/buffer.md +0 -245
- package/vendor/node-addon-api/doc/callback_scope.md +0 -54
- package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
- package/vendor/node-addon-api/doc/checker-tool.md +0 -32
- package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
- package/vendor/node-addon-api/doc/cmake-js.md +0 -87
- package/vendor/node-addon-api/doc/contributing/creating_a_release.md +0 -95
- package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
- package/vendor/node-addon-api/doc/dataview.md +0 -248
- package/vendor/node-addon-api/doc/date.md +0 -68
- package/vendor/node-addon-api/doc/env.md +0 -87
- package/vendor/node-addon-api/doc/error.md +0 -120
- package/vendor/node-addon-api/doc/error_handling.md +0 -266
- package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
- package/vendor/node-addon-api/doc/external.md +0 -79
- package/vendor/node-addon-api/doc/external_buffer.md +0 -18
- package/vendor/node-addon-api/doc/finalization.md +0 -153
- package/vendor/node-addon-api/doc/function.md +0 -402
- package/vendor/node-addon-api/doc/function_reference.md +0 -238
- package/vendor/node-addon-api/doc/generator.md +0 -13
- package/vendor/node-addon-api/doc/handle_scope.md +0 -77
- package/vendor/node-addon-api/doc/hierarchy.md +0 -95
- package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
- package/vendor/node-addon-api/doc/maybe.md +0 -76
- package/vendor/node-addon-api/doc/memory_management.md +0 -27
- package/vendor/node-addon-api/doc/name.md +0 -29
- package/vendor/node-addon-api/doc/node-gyp.md +0 -82
- package/vendor/node-addon-api/doc/number.md +0 -163
- package/vendor/node-addon-api/doc/object.md +0 -411
- package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
- package/vendor/node-addon-api/doc/object_reference.md +0 -117
- package/vendor/node-addon-api/doc/object_wrap.md +0 -604
- package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
- package/vendor/node-addon-api/doc/promises.md +0 -130
- package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
- package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
- package/vendor/node-addon-api/doc/range_error.md +0 -59
- package/vendor/node-addon-api/doc/reference.md +0 -113
- package/vendor/node-addon-api/doc/setup.md +0 -115
- package/vendor/node-addon-api/doc/string.md +0 -93
- package/vendor/node-addon-api/doc/symbol.md +0 -61
- package/vendor/node-addon-api/doc/syntax_error.md +0 -66
- package/vendor/node-addon-api/doc/threadsafe.md +0 -121
- package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
- package/vendor/node-addon-api/doc/type_error.md +0 -59
- package/vendor/node-addon-api/doc/type_taggable.md +0 -40
- package/vendor/node-addon-api/doc/typed_array.md +0 -78
- package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
- package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
- package/vendor/node-addon-api/doc/value.md +0 -368
- package/vendor/node-addon-api/doc/version_management.md +0 -43
- package/vendor/node-addon-api/eslint.config.js +0 -5
- package/vendor/node-addon-api/except.gypi +0 -25
- package/vendor/node-addon-api/index.js +0 -14
- package/vendor/node-addon-api/node_addon_api.gyp +0 -42
- package/vendor/node-addon-api/node_api.gyp +0 -9
- package/vendor/node-addon-api/noexcept.gypi +0 -26
- package/vendor/node-addon-api/nothing.c +0 -0
- package/vendor/node-addon-api/package-support.json +0 -21
- package/vendor/node-addon-api/package.json +0 -480
- package/vendor/node-addon-api/release-please-config.json +0 -15
- package/vendor/node-addon-api/test/README.md +0 -91
- package/vendor/node-addon-api/test/addon.cc +0 -44
- package/vendor/node-addon-api/test/addon.js +0 -7
- package/vendor/node-addon-api/test/addon_build/index.js +0 -49
- package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -18
- package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -63
- package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
- package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
- package/vendor/node-addon-api/test/addon_data.cc +0 -98
- package/vendor/node-addon-api/test/addon_data.js +0 -24
- package/vendor/node-addon-api/test/array_buffer.cc +0 -243
- package/vendor/node-addon-api/test/array_buffer.js +0 -70
- package/vendor/node-addon-api/test/async_context.cc +0 -36
- package/vendor/node-addon-api/test/async_context.js +0 -122
- package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -248
- package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -180
- package/vendor/node-addon-api/test/async_progress_worker.cc +0 -357
- package/vendor/node-addon-api/test/async_progress_worker.js +0 -200
- package/vendor/node-addon-api/test/async_worker.cc +0 -341
- package/vendor/node-addon-api/test/async_worker.js +0 -264
- package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -19
- package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
- package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
- package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
- package/vendor/node-addon-api/test/basic_types/array.js +0 -34
- package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -40
- package/vendor/node-addon-api/test/basic_types/boolean.js +0 -34
- package/vendor/node-addon-api/test/basic_types/number.cc +0 -105
- package/vendor/node-addon-api/test/basic_types/number.js +0 -115
- package/vendor/node-addon-api/test/basic_types/value.cc +0 -177
- package/vendor/node-addon-api/test/basic_types/value.js +0 -173
- package/vendor/node-addon-api/test/bigint.cc +0 -91
- package/vendor/node-addon-api/test/bigint.js +0 -53
- package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
- package/vendor/node-addon-api/test/binding.cc +0 -200
- package/vendor/node-addon-api/test/binding.gyp +0 -160
- package/vendor/node-addon-api/test/buffer.cc +0 -185
- package/vendor/node-addon-api/test/buffer.h +0 -26
- package/vendor/node-addon-api/test/buffer.js +0 -150
- package/vendor/node-addon-api/test/buffer_new_or_copy-inl.h +0 -68
- package/vendor/node-addon-api/test/buffer_no_external.cc +0 -24
- package/vendor/node-addon-api/test/callbackInfo.cc +0 -27
- package/vendor/node-addon-api/test/callbackInfo.js +0 -9
- package/vendor/node-addon-api/test/callbackscope.cc +0 -39
- package/vendor/node-addon-api/test/callbackscope.js +0 -49
- package/vendor/node-addon-api/test/child_processes/addon.js +0 -11
- package/vendor/node-addon-api/test/child_processes/addon_data.js +0 -24
- package/vendor/node-addon-api/test/child_processes/objectwrap_function.js +0 -22
- package/vendor/node-addon-api/test/child_processes/threadsafe_function_exception.js +0 -33
- package/vendor/node-addon-api/test/child_processes/typed_threadsafe_function_exception.js +0 -19
- package/vendor/node-addon-api/test/common/index.js +0 -246
- package/vendor/node-addon-api/test/common/test_helper.h +0 -71
- package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
- package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
- package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
- package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -92
- package/vendor/node-addon-api/test/date.cc +0 -45
- package/vendor/node-addon-api/test/date.js +0 -18
- package/vendor/node-addon-api/test/env_cleanup.cc +0 -100
- package/vendor/node-addon-api/test/env_cleanup.js +0 -55
- package/vendor/node-addon-api/test/env_misc.cc +0 -25
- package/vendor/node-addon-api/test/env_misc.js +0 -12
- package/vendor/node-addon-api/test/error.cc +0 -436
- package/vendor/node-addon-api/test/error.js +0 -111
- package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
- package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
- package/vendor/node-addon-api/test/error_terminating_environment.js +0 -99
- package/vendor/node-addon-api/test/except_all.cc +0 -22
- package/vendor/node-addon-api/test/except_all.js +0 -14
- package/vendor/node-addon-api/test/exports.js +0 -19
- package/vendor/node-addon-api/test/external.cc +0 -85
- package/vendor/node-addon-api/test/external.js +0 -85
- package/vendor/node-addon-api/test/finalizer_order.cc +0 -152
- package/vendor/node-addon-api/test/finalizer_order.js +0 -98
- package/vendor/node-addon-api/test/function.cc +0 -338
- package/vendor/node-addon-api/test/function.js +0 -137
- package/vendor/node-addon-api/test/function_reference.cc +0 -204
- package/vendor/node-addon-api/test/function_reference.js +0 -157
- package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -58
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -56
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -46
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -56
- package/vendor/node-addon-api/test/handlescope.cc +0 -86
- package/vendor/node-addon-api/test/handlescope.js +0 -16
- package/vendor/node-addon-api/test/index.js +0 -160
- package/vendor/node-addon-api/test/maybe/check.cc +0 -69
- package/vendor/node-addon-api/test/maybe/index.js +0 -50
- package/vendor/node-addon-api/test/memory_management.cc +0 -18
- package/vendor/node-addon-api/test/memory_management.js +0 -9
- package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
- package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
- package/vendor/node-addon-api/test/name.cc +0 -110
- package/vendor/node-addon-api/test/name.js +0 -59
- package/vendor/node-addon-api/test/napi_child.js +0 -14
- package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
- package/vendor/node-addon-api/test/object/delete_property.js +0 -41
- package/vendor/node-addon-api/test/object/finalizer.cc +0 -30
- package/vendor/node-addon-api/test/object/finalizer.js +0 -28
- package/vendor/node-addon-api/test/object/get_property.cc +0 -34
- package/vendor/node-addon-api/test/object/get_property.js +0 -40
- package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
- package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
- package/vendor/node-addon-api/test/object/has_property.cc +0 -38
- package/vendor/node-addon-api/test/object/has_property.js +0 -37
- package/vendor/node-addon-api/test/object/object.cc +0 -430
- package/vendor/node-addon-api/test/object/object.js +0 -218
- package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -70
- package/vendor/node-addon-api/test/object/object_deprecated.js +0 -42
- package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
- package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
- package/vendor/node-addon-api/test/object/set_property.cc +0 -45
- package/vendor/node-addon-api/test/object/set_property.js +0 -30
- package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
- package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
- package/vendor/node-addon-api/test/object_reference.cc +0 -417
- package/vendor/node-addon-api/test/object_reference.js +0 -262
- package/vendor/node-addon-api/test/objectwrap.cc +0 -295
- package/vendor/node-addon-api/test/objectwrap.js +0 -309
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
- package/vendor/node-addon-api/test/objectwrap_function.cc +0 -43
- package/vendor/node-addon-api/test/objectwrap_function.js +0 -6
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
- package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
- package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -32
- package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -20
- package/vendor/node-addon-api/test/promise.cc +0 -111
- package/vendor/node-addon-api/test/promise.js +0 -43
- package/vendor/node-addon-api/test/reference.cc +0 -78
- package/vendor/node-addon-api/test/reference.js +0 -20
- package/vendor/node-addon-api/test/require_basic_finalizers/index.js +0 -38
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/addon.cc +0 -12
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/binding.gyp +0 -48
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/index.js +0 -3
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/package.json +0 -11
- package/vendor/node-addon-api/test/run_script.cc +0 -56
- package/vendor/node-addon-api/test/run_script.js +0 -45
- package/vendor/node-addon-api/test/symbol.cc +0 -79
- package/vendor/node-addon-api/test/symbol.js +0 -66
- package/vendor/node-addon-api/test/testUtil.js +0 -54
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -230
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -225
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -155
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -13
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.cc +0 -50
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.js +0 -20
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -125
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -27
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -240
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -55
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -98
- package/vendor/node-addon-api/test/thunking_manual.cc +0 -127
- package/vendor/node-addon-api/test/thunking_manual.js +0 -16
- package/vendor/node-addon-api/test/type_taggable.cc +0 -66
- package/vendor/node-addon-api/test/type_taggable.js +0 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -120
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.cc +0 -39
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.js +0 -13
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -32
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -8
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -67
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -98
- package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
- package/vendor/node-addon-api/test/typedarray.cc +0 -413
- package/vendor/node-addon-api/test/typedarray.js +0 -103
- package/vendor/node-addon-api/test/value_type_cast.cc +0 -60
- package/vendor/node-addon-api/test/value_type_cast.js +0 -106
- package/vendor/node-addon-api/test/version_management.cc +0 -28
- package/vendor/node-addon-api/test/version_management.js +0 -29
- package/vendor/node-addon-api/tools/README.md +0 -73
- package/vendor/node-addon-api/tools/check-napi.js +0 -99
- package/vendor/node-addon-api/tools/clang-format.js +0 -71
- package/vendor/node-addon-api/tools/conversion.js +0 -301
- package/vendor/node-addon-api/unit-test/README.md +0 -28
- package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
- package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
- package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
- package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
- package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
- package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
- package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
- package/vendor/node-addon-api/unit-test/setup.js +0 -13
- package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
- package/vendor/node-addon-api/unit-test/test.js +0 -30
- package/vendor/node-api-headers/CHANGELOG.md +0 -130
- package/vendor/node-api-headers/CODE_OF_CONDUCT.md +0 -4
- package/vendor/node-api-headers/CONTRIBUTING.md +0 -32
- package/vendor/node-api-headers/CREATING_A_RELEASE.md +0 -68
- package/vendor/node-api-headers/index.js +0 -17
- package/vendor/node-api-headers/lib/clang-utils.js +0 -50
- package/vendor/node-api-headers/lib/parse-utils.js +0 -92
- package/vendor/node-api-headers/package.json +0 -59
- package/vendor/node-api-headers/release-please-config.json +0 -12
- package/vendor/node-api-headers/scripts/update-headers.js +0 -246
- package/vendor/node-api-headers/scripts/write-symbols.js +0 -154
- package/vendor/node-api-headers/scripts/write-win32-def.js +0 -52
- package/vendor/node-api-headers/symbols.js +0 -257
- package/vendor/node-api-headers/test/parse-utils.js +0 -21
- /package/doc/{pages/benchmarks.md → benchmarks.md} +0 -0
- /package/doc/{pages/callbacks.md → callbacks.md} +0 -0
- /package/doc/{pages/contribute.md → contribute.md} +0 -0
- /package/doc/{pages/functions.md → functions.md} +0 -0
- /package/doc/{pages/index.md → index.md} +0 -0
- /package/doc/{pages/input.md → input.md} +0 -0
- /package/doc/{pages/migration.md → migration.md} +0 -0
- /package/doc/{pages/misc.md → misc.md} +0 -0
- /package/doc/{pages/output.md → output.md} +0 -0
- /package/doc/{pages/packaging.md → packaging.md} +0 -0
- /package/doc/{pages/platforms.md → platforms.md} +0 -0
- /package/doc/{pages/pointers.md → pointers.md} +0 -0
- /package/doc/{pages/start.md → start.md} +0 -0
- /package/doc/{pages/unions.md → unions.md} +0 -0
- /package/doc/{pages/variables.md → variables.md} +0 -0
- /package/src/koffi/src/{abi/loong64.cc → abi_loong64.cc} +0 -0
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
.global ForwardCallXF
|
|
14
14
|
.global ForwardCallXD
|
|
15
15
|
|
|
16
|
+
.global SehHandler
|
|
17
|
+
|
|
16
18
|
# Copy function pointer to RAX, in order to save it through argument forwarding.
|
|
17
19
|
# Also make a copy of the SP to CallData::old_sp because the callback system might need it.
|
|
18
20
|
# Save RSP in RBX (non-volatile), and use carefully assembled stack provided by caller.
|
|
@@ -25,16 +27,6 @@
|
|
|
25
27
|
movq %rdx, %rsp
|
|
26
28
|
.endm
|
|
27
29
|
|
|
28
|
-
# Call native function.
|
|
29
|
-
# Once done, restore normal stack pointer and return.
|
|
30
|
-
# The return value is passed untouched through RAX or XMM0.
|
|
31
|
-
.macro epilogue
|
|
32
|
-
call *%rax
|
|
33
|
-
movq %rbp, %rsp
|
|
34
|
-
pop %rbp
|
|
35
|
-
ret
|
|
36
|
-
.endm
|
|
37
|
-
|
|
38
30
|
# Prepare integer argument registers from array passed by caller.
|
|
39
31
|
.macro forward_gpr
|
|
40
32
|
movq 24(%rdx), %r9
|
|
@@ -51,44 +43,64 @@
|
|
|
51
43
|
movsd 0(%rdx), %xmm0
|
|
52
44
|
.endm
|
|
53
45
|
|
|
46
|
+
# CallNative is a minimal wrapper around the native function call.
|
|
47
|
+
# Its frame lives entirely on the custom stack, so its EstablisherFrame passes
|
|
48
|
+
# the TEB stack bounds check. This ensures that SehHandler is found by
|
|
49
|
+
# RtlDispatchException before it tries to cross back to the original stack
|
|
50
|
+
# (through ForwardCall*), which would fail the bounds check and terminate.
|
|
51
|
+
# After the native call returns, CallNative restores the original stack via
|
|
52
|
+
# RBP (non-volatile, preserved by native) and returns directly to the C++ caller.
|
|
53
|
+
CallNative:
|
|
54
|
+
.seh_proc CallNative
|
|
55
|
+
.seh_handler SehHandler, @except
|
|
56
|
+
.seh_endprologue
|
|
57
|
+
call *%rax
|
|
58
|
+
movq %rbp, %rsp
|
|
59
|
+
pop %rbp
|
|
60
|
+
ret
|
|
61
|
+
.seh_endproc
|
|
62
|
+
|
|
54
63
|
ForwardCallG:
|
|
55
64
|
prologue
|
|
56
65
|
forward_gpr
|
|
57
|
-
|
|
66
|
+
jmp CallNative
|
|
58
67
|
|
|
59
68
|
ForwardCallF:
|
|
60
69
|
prologue
|
|
61
70
|
forward_gpr
|
|
62
|
-
|
|
71
|
+
jmp CallNative
|
|
63
72
|
|
|
64
73
|
ForwardCallD:
|
|
65
74
|
prologue
|
|
66
75
|
forward_gpr
|
|
67
|
-
|
|
76
|
+
jmp CallNative
|
|
68
77
|
|
|
69
78
|
ForwardCallXG:
|
|
70
79
|
prologue
|
|
71
80
|
forward_xmm
|
|
72
81
|
forward_gpr
|
|
73
|
-
|
|
82
|
+
jmp CallNative
|
|
74
83
|
|
|
75
84
|
ForwardCallXF:
|
|
76
85
|
prologue
|
|
77
86
|
forward_xmm
|
|
78
87
|
forward_gpr
|
|
79
|
-
|
|
88
|
+
jmp CallNative
|
|
80
89
|
|
|
81
90
|
ForwardCallXD:
|
|
82
91
|
prologue
|
|
83
92
|
forward_xmm
|
|
84
93
|
forward_gpr
|
|
85
|
-
|
|
94
|
+
jmp CallNative
|
|
86
95
|
|
|
87
96
|
# Callbacks
|
|
88
97
|
# ----------------------------
|
|
89
98
|
|
|
90
99
|
.global RelayCallback
|
|
91
|
-
.global
|
|
100
|
+
.global SwitchAndRelay
|
|
101
|
+
.global RelayDirect
|
|
102
|
+
.global FindTrampolineStart
|
|
103
|
+
.global FindTrampolineEnd
|
|
92
104
|
|
|
93
105
|
# First, make a copy of argument registers.
|
|
94
106
|
# Then call the C function RelayCallback with the following arguments:
|
|
@@ -96,6 +108,12 @@ ForwardCallXD:
|
|
|
96
108
|
# arguments of this call, and a pointer to a struct that will contain the result registers.
|
|
97
109
|
# After the call, simply load these registers from the output struct.
|
|
98
110
|
.macro trampoline id
|
|
111
|
+
endbr64
|
|
112
|
+
movq $\id, %rax
|
|
113
|
+
jmp RelayTrampoline
|
|
114
|
+
.endm
|
|
115
|
+
|
|
116
|
+
RelayTrampoline:
|
|
99
117
|
endbr64
|
|
100
118
|
subq $120, %rsp
|
|
101
119
|
movq %rcx, 32(%rsp)
|
|
@@ -106,39 +124,43 @@ ForwardCallXD:
|
|
|
106
124
|
movsd %xmm1, 72(%rsp)
|
|
107
125
|
movsd %xmm2, 80(%rsp)
|
|
108
126
|
movsd %xmm3, 88(%rsp)
|
|
109
|
-
movq
|
|
127
|
+
movq %rax, %rcx
|
|
110
128
|
leaq 32(%rsp), %rdx
|
|
111
|
-
leaq 160(%rsp), %r8
|
|
112
|
-
leaq 96(%rsp), %r9
|
|
113
129
|
call RelayCallback
|
|
114
130
|
movq 96(%rsp), %rax
|
|
115
131
|
movsd 104(%rsp), %xmm0
|
|
116
132
|
addq $120, %rsp
|
|
117
133
|
ret
|
|
118
|
-
.endm
|
|
119
134
|
|
|
120
135
|
# When a callback is relayed, Koffi will call into Node.js and V8 to execute Javascript.
|
|
121
136
|
# The problem is that we're still running on the separate Koffi stack, and V8 will
|
|
122
137
|
# probably misdetect this as a "stack overflow". We have to restore the old
|
|
123
138
|
# stack pointer, call Node.js/V8 and go back to ours.
|
|
124
139
|
# The first three parameters (rcx, rdx, r8) are passed through untouched.
|
|
125
|
-
|
|
140
|
+
SwitchAndRelay:
|
|
126
141
|
endbr64
|
|
127
142
|
push %rbp
|
|
128
143
|
movq %rsp, %rbp
|
|
129
|
-
movq 56(%rsp), %rax
|
|
130
144
|
movq %rsp, %r10
|
|
131
145
|
movq 48(%rsp), %r11
|
|
132
146
|
subq 0(%r11), %r10
|
|
133
147
|
andq $-16, %r10
|
|
134
148
|
movq %r10, 8(%r11)
|
|
135
149
|
leaq -32(%r9), %rsp
|
|
136
|
-
call
|
|
150
|
+
call RelayDirect
|
|
137
151
|
movq %rbp, %rsp
|
|
138
152
|
pop %rbp
|
|
139
153
|
ret
|
|
140
154
|
|
|
141
|
-
|
|
142
|
-
|
|
155
|
+
.align 4
|
|
156
|
+
FindTrampolineStart:
|
|
157
|
+
leaq 16(%rip), %rax
|
|
158
|
+
andq $0xFFFFFFFFFFFFFFF0, %rax
|
|
159
|
+
ret
|
|
160
|
+
.align 4
|
|
143
161
|
|
|
144
|
-
#include "
|
|
162
|
+
#include "gnu.inc"
|
|
163
|
+
|
|
164
|
+
FindTrampolineEnd:
|
|
165
|
+
leaq (%rip), %rax
|
|
166
|
+
ret
|
|
@@ -15,6 +15,8 @@ public ForwardCallXG
|
|
|
15
15
|
public ForwardCallXF
|
|
16
16
|
public ForwardCallXD
|
|
17
17
|
|
|
18
|
+
extern SehHandler : PROC
|
|
19
|
+
|
|
18
20
|
.code
|
|
19
21
|
|
|
20
22
|
; Copy function pointer to RAX, in order to save it through argument forwarding.
|
|
@@ -32,16 +34,6 @@ prologue macro
|
|
|
32
34
|
mov rsp, rdx
|
|
33
35
|
endm
|
|
34
36
|
|
|
35
|
-
; Call native function.
|
|
36
|
-
; Once done, restore normal stack pointer and return.
|
|
37
|
-
; The return value is passed untouched through RAX or XMM0.
|
|
38
|
-
epilogue macro
|
|
39
|
-
call rax
|
|
40
|
-
mov rsp, rbp
|
|
41
|
-
pop rbp
|
|
42
|
-
ret
|
|
43
|
-
endm
|
|
44
|
-
|
|
45
37
|
; Prepare integer argument registers from array passed by caller.
|
|
46
38
|
forward_gpr macro
|
|
47
39
|
mov r9, qword ptr [rdx+24]
|
|
@@ -58,50 +50,68 @@ forward_xmm macro
|
|
|
58
50
|
movsd xmm0, qword ptr [rdx+0]
|
|
59
51
|
endm
|
|
60
52
|
|
|
53
|
+
; CallNative is a minimal wrapper around the native function call.
|
|
54
|
+
; Its frame lives entirely on the custom stack, so its EstablisherFrame passes
|
|
55
|
+
; the TEB stack bounds check. This ensures that SehHandler is found by
|
|
56
|
+
; RtlDispatchException before it tries to cross back to the original stack
|
|
57
|
+
; (through ForwardCall*), which would fail the bounds check and terminate.
|
|
58
|
+
; After the native call returns, CallNative restores the original stack via
|
|
59
|
+
; RBP (non-volatile, preserved by native) and returns directly to the C++ caller.
|
|
60
|
+
CallNative proc frame:SehHandler
|
|
61
|
+
.endprolog
|
|
62
|
+
call rax
|
|
63
|
+
mov rsp, rbp
|
|
64
|
+
pop rbp
|
|
65
|
+
ret
|
|
66
|
+
CallNative endp
|
|
67
|
+
|
|
61
68
|
ForwardCallG proc frame
|
|
62
69
|
prologue
|
|
63
70
|
forward_gpr
|
|
64
|
-
|
|
71
|
+
jmp CallNative
|
|
65
72
|
ForwardCallG endp
|
|
66
73
|
|
|
67
74
|
ForwardCallF proc frame
|
|
68
75
|
prologue
|
|
69
76
|
forward_gpr
|
|
70
|
-
|
|
77
|
+
jmp CallNative
|
|
71
78
|
ForwardCallF endp
|
|
72
79
|
|
|
73
80
|
ForwardCallD proc frame
|
|
74
81
|
prologue
|
|
75
82
|
forward_gpr
|
|
76
|
-
|
|
83
|
+
jmp CallNative
|
|
77
84
|
ForwardCallD endp
|
|
78
85
|
|
|
79
86
|
ForwardCallXG proc frame
|
|
80
87
|
prologue
|
|
81
88
|
forward_xmm
|
|
82
89
|
forward_gpr
|
|
83
|
-
|
|
90
|
+
jmp CallNative
|
|
84
91
|
ForwardCallXG endp
|
|
85
92
|
|
|
86
93
|
ForwardCallXF proc frame
|
|
87
94
|
prologue
|
|
88
95
|
forward_xmm
|
|
89
96
|
forward_gpr
|
|
90
|
-
|
|
97
|
+
jmp CallNative
|
|
91
98
|
ForwardCallXF endp
|
|
92
99
|
|
|
93
100
|
ForwardCallXD proc frame
|
|
94
101
|
prologue
|
|
95
102
|
forward_xmm
|
|
96
103
|
forward_gpr
|
|
97
|
-
|
|
104
|
+
jmp CallNative
|
|
98
105
|
ForwardCallXD endp
|
|
99
106
|
|
|
100
107
|
; Callbacks
|
|
101
108
|
; ----------------------------
|
|
102
109
|
|
|
103
110
|
extern RelayCallback : PROC
|
|
104
|
-
public
|
|
111
|
+
public SwitchAndRelay
|
|
112
|
+
extern RelayDirect : PROC
|
|
113
|
+
public FindTrampolineStart
|
|
114
|
+
public FindTrampolineEnd
|
|
105
115
|
|
|
106
116
|
; First, make a copy of argument registers.
|
|
107
117
|
; Then call the C function RelayCallback with the following arguments:
|
|
@@ -109,7 +119,13 @@ public CallSwitchStack
|
|
|
109
119
|
; arguments of this call, and a pointer to a struct that will contain the result registers.
|
|
110
120
|
; After the call, simply load these registers from the output struct.
|
|
111
121
|
trampoline macro ID
|
|
122
|
+
.endprolog
|
|
112
123
|
endbr64
|
|
124
|
+
mov rax, ID
|
|
125
|
+
jmp RelayTrampoline
|
|
126
|
+
endm
|
|
127
|
+
|
|
128
|
+
RelayTrampoline proc frame
|
|
113
129
|
sub rsp, 120
|
|
114
130
|
.allocstack 120
|
|
115
131
|
.endprolog
|
|
@@ -121,45 +137,56 @@ trampoline macro ID
|
|
|
121
137
|
movsd qword ptr [rsp+72], xmm1
|
|
122
138
|
movsd qword ptr [rsp+80], xmm2
|
|
123
139
|
movsd qword ptr [rsp+88], xmm3
|
|
124
|
-
mov rcx,
|
|
140
|
+
mov rcx, rax
|
|
125
141
|
lea rdx, qword ptr [rsp+32]
|
|
126
|
-
lea r8, qword ptr [rsp+160]
|
|
127
|
-
lea r9, qword ptr [rsp+96]
|
|
128
142
|
call RelayCallback
|
|
129
143
|
mov rax, qword ptr [rsp+96]
|
|
130
144
|
movsd xmm0, qword ptr [rsp+104]
|
|
131
145
|
add rsp, 120
|
|
132
146
|
ret
|
|
133
|
-
|
|
147
|
+
RelayTrampoline endp
|
|
134
148
|
|
|
135
149
|
; When a callback is relayed, Koffi will call into Node.js and V8 to execute Javascript.
|
|
136
150
|
; The problem is that we're still running on the separate Koffi stack, and V8 will
|
|
137
151
|
; probably misdetect this as a "stack overflow". We have to restore the old
|
|
138
152
|
; stack pointer, call Node.js/V8 and go back to ours.
|
|
139
153
|
; The first three parameters (rcx, rdx, r8) are passed through untouched.
|
|
140
|
-
|
|
154
|
+
SwitchAndRelay proc frame
|
|
141
155
|
endbr64
|
|
142
156
|
push rbp
|
|
143
157
|
.pushreg rbp
|
|
144
158
|
mov rbp, rsp
|
|
145
159
|
.setframe rbp, 0
|
|
146
160
|
.endprolog
|
|
147
|
-
mov rax, qword ptr [rsp+56]
|
|
148
161
|
mov r10, rsp
|
|
149
162
|
mov r11, qword ptr [rsp+48]
|
|
150
163
|
sub r10, qword ptr [r11+0]
|
|
151
164
|
and r10, -16
|
|
152
165
|
mov qword ptr [r11+8], r10
|
|
153
166
|
lea rsp, [r9-32]
|
|
154
|
-
call
|
|
167
|
+
call RelayDirect
|
|
155
168
|
mov rsp, rbp
|
|
156
169
|
pop rbp
|
|
157
170
|
ret
|
|
158
|
-
|
|
171
|
+
SwitchAndRelay endp
|
|
159
172
|
|
|
160
|
-
|
|
161
|
-
|
|
173
|
+
align 16
|
|
174
|
+
FindTrampolineStart:
|
|
175
|
+
call GetRIP
|
|
176
|
+
add rax, 16
|
|
177
|
+
and rax, 0FFFFFFFFFFFFFFF0h
|
|
178
|
+
ret
|
|
179
|
+
align 16
|
|
162
180
|
|
|
163
181
|
include masm64.inc
|
|
164
182
|
|
|
183
|
+
FindTrampolineEnd:
|
|
184
|
+
call GetRIP
|
|
185
|
+
ret
|
|
186
|
+
|
|
187
|
+
; I could not f*cking find how to use lea with RIP-relative addressing in MASM64. Oh well.
|
|
188
|
+
GetRIP:
|
|
189
|
+
mov rax, qword ptr [rsp]
|
|
190
|
+
ret
|
|
191
|
+
|
|
165
192
|
end
|