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,55 +1,55 @@
|
|
|
1
|
-
// Copyright 2018 Ulf Adams
|
|
2
|
-
//
|
|
3
|
-
// The contents of this file may be used under the terms of the Apache License,
|
|
4
|
-
// Version 2.0.
|
|
5
|
-
//
|
|
6
|
-
// (See accompanying file LICENSE-Apache or copy at
|
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0)
|
|
8
|
-
//
|
|
9
|
-
// Alternatively, the contents of this file may be used under the terms of
|
|
10
|
-
// the Boost Software License, Version 1.0.
|
|
11
|
-
// (See accompanying file LICENSE-Boost or copy at
|
|
12
|
-
// https://www.boost.org/LICENSE_1_0.txt)
|
|
13
|
-
//
|
|
14
|
-
// Unless required by applicable law or agreed to in writing, this software
|
|
15
|
-
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
-
// KIND, either express or implied.
|
|
17
|
-
#ifndef RYU_F2S_FULL_TABLE_H
|
|
18
|
-
#define RYU_F2S_FULL_TABLE_H
|
|
19
|
-
|
|
20
|
-
// This table is generated by PrintFloatLookupTable.
|
|
21
|
-
#define FLOAT_POW5_INV_BITCOUNT 59
|
|
22
|
-
#define FLOAT_POW5_BITCOUNT 61
|
|
23
|
-
|
|
24
|
-
static uint64_t FLOAT_POW5_INV_SPLIT[55] = {
|
|
25
|
-
576460752303423489u, 461168601842738791u, 368934881474191033u, 295147905179352826u,
|
|
26
|
-
472236648286964522u, 377789318629571618u, 302231454903657294u, 483570327845851670u,
|
|
27
|
-
386856262276681336u, 309485009821345069u, 495176015714152110u, 396140812571321688u,
|
|
28
|
-
316912650057057351u, 507060240091291761u, 405648192073033409u, 324518553658426727u,
|
|
29
|
-
519229685853482763u, 415383748682786211u, 332306998946228969u, 531691198313966350u,
|
|
30
|
-
425352958651173080u, 340282366920938464u, 544451787073501542u, 435561429658801234u,
|
|
31
|
-
348449143727040987u, 557518629963265579u, 446014903970612463u, 356811923176489971u,
|
|
32
|
-
570899077082383953u, 456719261665907162u, 365375409332725730u, 292300327466180584u,
|
|
33
|
-
467680523945888934u, 374144419156711148u, 299315535325368918u, 478904856520590269u,
|
|
34
|
-
383123885216472215u, 306499108173177772u, 490398573077084435u, 392318858461667548u,
|
|
35
|
-
313855086769334039u, 502168138830934462u, 401734511064747569u, 321387608851798056u,
|
|
36
|
-
514220174162876889u, 411376139330301511u, 329100911464241209u, 526561458342785934u,
|
|
37
|
-
421249166674228747u, 336999333339382998u, 539198933343012796u, 431359146674410237u,
|
|
38
|
-
345087317339528190u, 552139707743245103u, 441711766194596083u
|
|
39
|
-
};
|
|
40
|
-
static const uint64_t FLOAT_POW5_SPLIT[47] = {
|
|
41
|
-
1152921504606846976u, 1441151880758558720u, 1801439850948198400u, 2251799813685248000u,
|
|
42
|
-
1407374883553280000u, 1759218604441600000u, 2199023255552000000u, 1374389534720000000u,
|
|
43
|
-
1717986918400000000u, 2147483648000000000u, 1342177280000000000u, 1677721600000000000u,
|
|
44
|
-
2097152000000000000u, 1310720000000000000u, 1638400000000000000u, 2048000000000000000u,
|
|
45
|
-
1280000000000000000u, 1600000000000000000u, 2000000000000000000u, 1250000000000000000u,
|
|
46
|
-
1562500000000000000u, 1953125000000000000u, 1220703125000000000u, 1525878906250000000u,
|
|
47
|
-
1907348632812500000u, 1192092895507812500u, 1490116119384765625u, 1862645149230957031u,
|
|
48
|
-
1164153218269348144u, 1455191522836685180u, 1818989403545856475u, 2273736754432320594u,
|
|
49
|
-
1421085471520200371u, 1776356839400250464u, 2220446049250313080u, 1387778780781445675u,
|
|
50
|
-
1734723475976807094u, 2168404344971008868u, 1355252715606880542u, 1694065894508600678u,
|
|
51
|
-
2117582368135750847u, 1323488980084844279u, 1654361225106055349u, 2067951531382569187u,
|
|
52
|
-
1292469707114105741u, 1615587133892632177u, 2019483917365790221u
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
#endif // RYU_F2S_FULL_TABLE_H
|
|
1
|
+
// Copyright 2018 Ulf Adams
|
|
2
|
+
//
|
|
3
|
+
// The contents of this file may be used under the terms of the Apache License,
|
|
4
|
+
// Version 2.0.
|
|
5
|
+
//
|
|
6
|
+
// (See accompanying file LICENSE-Apache or copy at
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0)
|
|
8
|
+
//
|
|
9
|
+
// Alternatively, the contents of this file may be used under the terms of
|
|
10
|
+
// the Boost Software License, Version 1.0.
|
|
11
|
+
// (See accompanying file LICENSE-Boost or copy at
|
|
12
|
+
// https://www.boost.org/LICENSE_1_0.txt)
|
|
13
|
+
//
|
|
14
|
+
// Unless required by applicable law or agreed to in writing, this software
|
|
15
|
+
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
+
// KIND, either express or implied.
|
|
17
|
+
#ifndef RYU_F2S_FULL_TABLE_H
|
|
18
|
+
#define RYU_F2S_FULL_TABLE_H
|
|
19
|
+
|
|
20
|
+
// This table is generated by PrintFloatLookupTable.
|
|
21
|
+
#define FLOAT_POW5_INV_BITCOUNT 59
|
|
22
|
+
#define FLOAT_POW5_BITCOUNT 61
|
|
23
|
+
|
|
24
|
+
static uint64_t FLOAT_POW5_INV_SPLIT[55] = {
|
|
25
|
+
576460752303423489u, 461168601842738791u, 368934881474191033u, 295147905179352826u,
|
|
26
|
+
472236648286964522u, 377789318629571618u, 302231454903657294u, 483570327845851670u,
|
|
27
|
+
386856262276681336u, 309485009821345069u, 495176015714152110u, 396140812571321688u,
|
|
28
|
+
316912650057057351u, 507060240091291761u, 405648192073033409u, 324518553658426727u,
|
|
29
|
+
519229685853482763u, 415383748682786211u, 332306998946228969u, 531691198313966350u,
|
|
30
|
+
425352958651173080u, 340282366920938464u, 544451787073501542u, 435561429658801234u,
|
|
31
|
+
348449143727040987u, 557518629963265579u, 446014903970612463u, 356811923176489971u,
|
|
32
|
+
570899077082383953u, 456719261665907162u, 365375409332725730u, 292300327466180584u,
|
|
33
|
+
467680523945888934u, 374144419156711148u, 299315535325368918u, 478904856520590269u,
|
|
34
|
+
383123885216472215u, 306499108173177772u, 490398573077084435u, 392318858461667548u,
|
|
35
|
+
313855086769334039u, 502168138830934462u, 401734511064747569u, 321387608851798056u,
|
|
36
|
+
514220174162876889u, 411376139330301511u, 329100911464241209u, 526561458342785934u,
|
|
37
|
+
421249166674228747u, 336999333339382998u, 539198933343012796u, 431359146674410237u,
|
|
38
|
+
345087317339528190u, 552139707743245103u, 441711766194596083u
|
|
39
|
+
};
|
|
40
|
+
static const uint64_t FLOAT_POW5_SPLIT[47] = {
|
|
41
|
+
1152921504606846976u, 1441151880758558720u, 1801439850948198400u, 2251799813685248000u,
|
|
42
|
+
1407374883553280000u, 1759218604441600000u, 2199023255552000000u, 1374389534720000000u,
|
|
43
|
+
1717986918400000000u, 2147483648000000000u, 1342177280000000000u, 1677721600000000000u,
|
|
44
|
+
2097152000000000000u, 1310720000000000000u, 1638400000000000000u, 2048000000000000000u,
|
|
45
|
+
1280000000000000000u, 1600000000000000000u, 2000000000000000000u, 1250000000000000000u,
|
|
46
|
+
1562500000000000000u, 1953125000000000000u, 1220703125000000000u, 1525878906250000000u,
|
|
47
|
+
1907348632812500000u, 1192092895507812500u, 1490116119384765625u, 1862645149230957031u,
|
|
48
|
+
1164153218269348144u, 1455191522836685180u, 1818989403545856475u, 2273736754432320594u,
|
|
49
|
+
1421085471520200371u, 1776356839400250464u, 2220446049250313080u, 1387778780781445675u,
|
|
50
|
+
1734723475976807094u, 2168404344971008868u, 1355252715606880542u, 1694065894508600678u,
|
|
51
|
+
2117582368135750847u, 1323488980084844279u, 1654361225106055349u, 2067951531382569187u,
|
|
52
|
+
1292469707114105741u, 1615587133892632177u, 2019483917365790221u
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
#endif // RYU_F2S_FULL_TABLE_H
|
|
@@ -1,128 +1,128 @@
|
|
|
1
|
-
// Copyright 2018 Ulf Adams
|
|
2
|
-
//
|
|
3
|
-
// The contents of this file may be used under the terms of the Apache License,
|
|
4
|
-
// Version 2.0.
|
|
5
|
-
//
|
|
6
|
-
// (See accompanying file LICENSE-Apache or copy at
|
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0)
|
|
8
|
-
//
|
|
9
|
-
// Alternatively, the contents of this file may be used under the terms of
|
|
10
|
-
// the Boost Software License, Version 1.0.
|
|
11
|
-
// (See accompanying file LICENSE-Boost or copy at
|
|
12
|
-
// https://www.boost.org/LICENSE_1_0.txt)
|
|
13
|
-
//
|
|
14
|
-
// Unless required by applicable law or agreed to in writing, this software
|
|
15
|
-
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
-
// KIND, either express or implied.
|
|
17
|
-
#ifndef RYU_F2S_INTRINSICS_H
|
|
18
|
-
#define RYU_F2S_INTRINSICS_H
|
|
19
|
-
|
|
20
|
-
// Defines RYU_32_BIT_PLATFORM if applicable.
|
|
21
|
-
#include "ryu/common.h"
|
|
22
|
-
|
|
23
|
-
#if defined(RYU_FLOAT_FULL_TABLE)
|
|
24
|
-
|
|
25
|
-
#include "ryu/f2s_full_table.h"
|
|
26
|
-
|
|
27
|
-
#else
|
|
28
|
-
|
|
29
|
-
#if defined(RYU_OPTIMIZE_SIZE)
|
|
30
|
-
#include "ryu/d2s_small_table.h"
|
|
31
|
-
#else
|
|
32
|
-
#include "ryu/d2s_full_table.h"
|
|
33
|
-
#endif
|
|
34
|
-
#define FLOAT_POW5_INV_BITCOUNT (DOUBLE_POW5_INV_BITCOUNT - 64)
|
|
35
|
-
#define FLOAT_POW5_BITCOUNT (DOUBLE_POW5_BITCOUNT - 64)
|
|
36
|
-
|
|
37
|
-
#endif
|
|
38
|
-
|
|
39
|
-
static inline uint32_t pow5factor_32(uint32_t value) {
|
|
40
|
-
uint32_t count = 0;
|
|
41
|
-
for (;;) {
|
|
42
|
-
assert(value != 0);
|
|
43
|
-
const uint32_t q = value / 5;
|
|
44
|
-
const uint32_t r = value % 5;
|
|
45
|
-
if (r != 0) {
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
value = q;
|
|
49
|
-
++count;
|
|
50
|
-
}
|
|
51
|
-
return count;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Returns true if value is divisible by 5^p.
|
|
55
|
-
static inline bool multipleOfPowerOf5_32(const uint32_t value, const uint32_t p) {
|
|
56
|
-
return pow5factor_32(value) >= p;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Returns true if value is divisible by 2^p.
|
|
60
|
-
static inline bool multipleOfPowerOf2_32(const uint32_t value, const uint32_t p) {
|
|
61
|
-
// __builtin_ctz doesn't appear to be faster here.
|
|
62
|
-
return (value & ((1u << p) - 1)) == 0;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// It seems to be slightly faster to avoid uint128_t here, although the
|
|
66
|
-
// generated code for uint128_t looks slightly nicer.
|
|
67
|
-
static inline uint32_t mulShift32(const uint32_t m, const uint64_t factor, const int32_t shift) {
|
|
68
|
-
assert(shift > 32);
|
|
69
|
-
|
|
70
|
-
// The casts here help MSVC to avoid calls to the __allmul library
|
|
71
|
-
// function.
|
|
72
|
-
const uint32_t factorLo = (uint32_t)(factor);
|
|
73
|
-
const uint32_t factorHi = (uint32_t)(factor >> 32);
|
|
74
|
-
const uint64_t bits0 = (uint64_t)m * factorLo;
|
|
75
|
-
const uint64_t bits1 = (uint64_t)m * factorHi;
|
|
76
|
-
|
|
77
|
-
#if defined(RYU_32_BIT_PLATFORM)
|
|
78
|
-
// On 32-bit platforms we can avoid a 64-bit shift-right since we only
|
|
79
|
-
// need the upper 32 bits of the result and the shift value is > 32.
|
|
80
|
-
const uint32_t bits0Hi = (uint32_t)(bits0 >> 32);
|
|
81
|
-
uint32_t bits1Lo = (uint32_t)(bits1);
|
|
82
|
-
uint32_t bits1Hi = (uint32_t)(bits1 >> 32);
|
|
83
|
-
bits1Lo += bits0Hi;
|
|
84
|
-
bits1Hi += (bits1Lo < bits0Hi);
|
|
85
|
-
if (shift >= 64) {
|
|
86
|
-
// s2f can call this with a shift value >= 64, which we have to handle.
|
|
87
|
-
// This could now be slower than the !defined(RYU_32_BIT_PLATFORM) case.
|
|
88
|
-
return (uint32_t)(bits1Hi >> (shift - 64));
|
|
89
|
-
} else {
|
|
90
|
-
const int32_t s = shift - 32;
|
|
91
|
-
return (bits1Hi << (32 - s)) | (bits1Lo >> s);
|
|
92
|
-
}
|
|
93
|
-
#else // RYU_32_BIT_PLATFORM
|
|
94
|
-
const uint64_t sum = (bits0 >> 32) + bits1;
|
|
95
|
-
const uint64_t shiftedSum = sum >> (shift - 32);
|
|
96
|
-
assert(shiftedSum <= UINT32_MAX);
|
|
97
|
-
return (uint32_t) shiftedSum;
|
|
98
|
-
#endif // RYU_32_BIT_PLATFORM
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
static inline uint32_t mulPow5InvDivPow2(const uint32_t m, const uint32_t q, const int32_t j) {
|
|
102
|
-
#if defined(RYU_FLOAT_FULL_TABLE)
|
|
103
|
-
return mulShift32(m, FLOAT_POW5_INV_SPLIT[q], j);
|
|
104
|
-
#elif defined(RYU_OPTIMIZE_SIZE)
|
|
105
|
-
// The inverse multipliers are defined as [2^x / 5^y] + 1; the upper 64 bits from the double lookup
|
|
106
|
-
// table are the correct bits for [2^x / 5^y], so we have to add 1 here. Note that we rely on the
|
|
107
|
-
// fact that the added 1 that's already stored in the table never overflows into the upper 64 bits.
|
|
108
|
-
uint64_t pow5[2];
|
|
109
|
-
double_computeInvPow5(q, pow5);
|
|
110
|
-
return mulShift32(m, pow5[1] + 1, j);
|
|
111
|
-
#else
|
|
112
|
-
return mulShift32(m, DOUBLE_POW5_INV_SPLIT[q][1] + 1, j);
|
|
113
|
-
#endif
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
static inline uint32_t mulPow5divPow2(const uint32_t m, const uint32_t i, const int32_t j) {
|
|
117
|
-
#if defined(RYU_FLOAT_FULL_TABLE)
|
|
118
|
-
return mulShift32(m, FLOAT_POW5_SPLIT[i], j);
|
|
119
|
-
#elif defined(RYU_OPTIMIZE_SIZE)
|
|
120
|
-
uint64_t pow5[2];
|
|
121
|
-
double_computePow5(i, pow5);
|
|
122
|
-
return mulShift32(m, pow5[1], j);
|
|
123
|
-
#else
|
|
124
|
-
return mulShift32(m, DOUBLE_POW5_SPLIT[i][1], j);
|
|
125
|
-
#endif
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
#endif // RYU_F2S_INTRINSICS_H
|
|
1
|
+
// Copyright 2018 Ulf Adams
|
|
2
|
+
//
|
|
3
|
+
// The contents of this file may be used under the terms of the Apache License,
|
|
4
|
+
// Version 2.0.
|
|
5
|
+
//
|
|
6
|
+
// (See accompanying file LICENSE-Apache or copy at
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0)
|
|
8
|
+
//
|
|
9
|
+
// Alternatively, the contents of this file may be used under the terms of
|
|
10
|
+
// the Boost Software License, Version 1.0.
|
|
11
|
+
// (See accompanying file LICENSE-Boost or copy at
|
|
12
|
+
// https://www.boost.org/LICENSE_1_0.txt)
|
|
13
|
+
//
|
|
14
|
+
// Unless required by applicable law or agreed to in writing, this software
|
|
15
|
+
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
+
// KIND, either express or implied.
|
|
17
|
+
#ifndef RYU_F2S_INTRINSICS_H
|
|
18
|
+
#define RYU_F2S_INTRINSICS_H
|
|
19
|
+
|
|
20
|
+
// Defines RYU_32_BIT_PLATFORM if applicable.
|
|
21
|
+
#include "ryu/common.h"
|
|
22
|
+
|
|
23
|
+
#if defined(RYU_FLOAT_FULL_TABLE)
|
|
24
|
+
|
|
25
|
+
#include "ryu/f2s_full_table.h"
|
|
26
|
+
|
|
27
|
+
#else
|
|
28
|
+
|
|
29
|
+
#if defined(RYU_OPTIMIZE_SIZE)
|
|
30
|
+
#include "ryu/d2s_small_table.h"
|
|
31
|
+
#else
|
|
32
|
+
#include "ryu/d2s_full_table.h"
|
|
33
|
+
#endif
|
|
34
|
+
#define FLOAT_POW5_INV_BITCOUNT (DOUBLE_POW5_INV_BITCOUNT - 64)
|
|
35
|
+
#define FLOAT_POW5_BITCOUNT (DOUBLE_POW5_BITCOUNT - 64)
|
|
36
|
+
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
static inline uint32_t pow5factor_32(uint32_t value) {
|
|
40
|
+
uint32_t count = 0;
|
|
41
|
+
for (;;) {
|
|
42
|
+
assert(value != 0);
|
|
43
|
+
const uint32_t q = value / 5;
|
|
44
|
+
const uint32_t r = value % 5;
|
|
45
|
+
if (r != 0) {
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
value = q;
|
|
49
|
+
++count;
|
|
50
|
+
}
|
|
51
|
+
return count;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Returns true if value is divisible by 5^p.
|
|
55
|
+
static inline bool multipleOfPowerOf5_32(const uint32_t value, const uint32_t p) {
|
|
56
|
+
return pow5factor_32(value) >= p;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Returns true if value is divisible by 2^p.
|
|
60
|
+
static inline bool multipleOfPowerOf2_32(const uint32_t value, const uint32_t p) {
|
|
61
|
+
// __builtin_ctz doesn't appear to be faster here.
|
|
62
|
+
return (value & ((1u << p) - 1)) == 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// It seems to be slightly faster to avoid uint128_t here, although the
|
|
66
|
+
// generated code for uint128_t looks slightly nicer.
|
|
67
|
+
static inline uint32_t mulShift32(const uint32_t m, const uint64_t factor, const int32_t shift) {
|
|
68
|
+
assert(shift > 32);
|
|
69
|
+
|
|
70
|
+
// The casts here help MSVC to avoid calls to the __allmul library
|
|
71
|
+
// function.
|
|
72
|
+
const uint32_t factorLo = (uint32_t)(factor);
|
|
73
|
+
const uint32_t factorHi = (uint32_t)(factor >> 32);
|
|
74
|
+
const uint64_t bits0 = (uint64_t)m * factorLo;
|
|
75
|
+
const uint64_t bits1 = (uint64_t)m * factorHi;
|
|
76
|
+
|
|
77
|
+
#if defined(RYU_32_BIT_PLATFORM)
|
|
78
|
+
// On 32-bit platforms we can avoid a 64-bit shift-right since we only
|
|
79
|
+
// need the upper 32 bits of the result and the shift value is > 32.
|
|
80
|
+
const uint32_t bits0Hi = (uint32_t)(bits0 >> 32);
|
|
81
|
+
uint32_t bits1Lo = (uint32_t)(bits1);
|
|
82
|
+
uint32_t bits1Hi = (uint32_t)(bits1 >> 32);
|
|
83
|
+
bits1Lo += bits0Hi;
|
|
84
|
+
bits1Hi += (bits1Lo < bits0Hi);
|
|
85
|
+
if (shift >= 64) {
|
|
86
|
+
// s2f can call this with a shift value >= 64, which we have to handle.
|
|
87
|
+
// This could now be slower than the !defined(RYU_32_BIT_PLATFORM) case.
|
|
88
|
+
return (uint32_t)(bits1Hi >> (shift - 64));
|
|
89
|
+
} else {
|
|
90
|
+
const int32_t s = shift - 32;
|
|
91
|
+
return (bits1Hi << (32 - s)) | (bits1Lo >> s);
|
|
92
|
+
}
|
|
93
|
+
#else // RYU_32_BIT_PLATFORM
|
|
94
|
+
const uint64_t sum = (bits0 >> 32) + bits1;
|
|
95
|
+
const uint64_t shiftedSum = sum >> (shift - 32);
|
|
96
|
+
assert(shiftedSum <= UINT32_MAX);
|
|
97
|
+
return (uint32_t) shiftedSum;
|
|
98
|
+
#endif // RYU_32_BIT_PLATFORM
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
static inline uint32_t mulPow5InvDivPow2(const uint32_t m, const uint32_t q, const int32_t j) {
|
|
102
|
+
#if defined(RYU_FLOAT_FULL_TABLE)
|
|
103
|
+
return mulShift32(m, FLOAT_POW5_INV_SPLIT[q], j);
|
|
104
|
+
#elif defined(RYU_OPTIMIZE_SIZE)
|
|
105
|
+
// The inverse multipliers are defined as [2^x / 5^y] + 1; the upper 64 bits from the double lookup
|
|
106
|
+
// table are the correct bits for [2^x / 5^y], so we have to add 1 here. Note that we rely on the
|
|
107
|
+
// fact that the added 1 that's already stored in the table never overflows into the upper 64 bits.
|
|
108
|
+
uint64_t pow5[2];
|
|
109
|
+
double_computeInvPow5(q, pow5);
|
|
110
|
+
return mulShift32(m, pow5[1] + 1, j);
|
|
111
|
+
#else
|
|
112
|
+
return mulShift32(m, DOUBLE_POW5_INV_SPLIT[q][1] + 1, j);
|
|
113
|
+
#endif
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
static inline uint32_t mulPow5divPow2(const uint32_t m, const uint32_t i, const int32_t j) {
|
|
117
|
+
#if defined(RYU_FLOAT_FULL_TABLE)
|
|
118
|
+
return mulShift32(m, FLOAT_POW5_SPLIT[i], j);
|
|
119
|
+
#elif defined(RYU_OPTIMIZE_SIZE)
|
|
120
|
+
uint64_t pow5[2];
|
|
121
|
+
double_computePow5(i, pow5);
|
|
122
|
+
return mulShift32(m, pow5[1], j);
|
|
123
|
+
#else
|
|
124
|
+
return mulShift32(m, DOUBLE_POW5_SPLIT[i][1], j);
|
|
125
|
+
#endif
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
#endif // RYU_F2S_INTRINSICS_H
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
// Copyright 2018 Ulf Adams
|
|
2
|
-
//
|
|
3
|
-
// The contents of this file may be used under the terms of the Apache License,
|
|
4
|
-
// Version 2.0.
|
|
5
|
-
//
|
|
6
|
-
// (See accompanying file LICENSE-Apache or copy at
|
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0)
|
|
8
|
-
//
|
|
9
|
-
// Alternatively, the contents of this file may be used under the terms of
|
|
10
|
-
// the Boost Software License, Version 1.0.
|
|
11
|
-
// (See accompanying file LICENSE-Boost or copy at
|
|
12
|
-
// https://www.boost.org/LICENSE_1_0.txt)
|
|
13
|
-
//
|
|
14
|
-
// Unless required by applicable law or agreed to in writing, this software
|
|
15
|
-
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
-
// KIND, either express or implied.
|
|
17
|
-
#ifndef RYU_H
|
|
18
|
-
#define RYU_H
|
|
19
|
-
|
|
20
|
-
#ifdef __cplusplus
|
|
21
|
-
extern "C" {
|
|
22
|
-
#endif
|
|
23
|
-
|
|
24
|
-
#include <inttypes.h>
|
|
25
|
-
|
|
26
|
-
int d2s_buffered_n(double f, char* result);
|
|
27
|
-
void d2s_buffered(double f, char* result);
|
|
28
|
-
char* d2s(double f);
|
|
29
|
-
|
|
30
|
-
int f2s_buffered_n(float f, char* result);
|
|
31
|
-
void f2s_buffered(float f, char* result);
|
|
32
|
-
char* f2s(float f);
|
|
33
|
-
|
|
34
|
-
int d2fixed_buffered_n(double d, uint32_t precision, char* result);
|
|
35
|
-
void d2fixed_buffered(double d, uint32_t precision, char* result);
|
|
36
|
-
char* d2fixed(double d, uint32_t precision);
|
|
37
|
-
|
|
38
|
-
int d2exp_buffered_n(double d, uint32_t precision, char* result);
|
|
39
|
-
void d2exp_buffered(double d, uint32_t precision, char* result);
|
|
40
|
-
char* d2exp(double d, uint32_t precision);
|
|
41
|
-
|
|
42
|
-
#ifdef __cplusplus
|
|
43
|
-
}
|
|
44
|
-
#endif
|
|
45
|
-
|
|
46
|
-
#endif // RYU_H
|
|
1
|
+
// Copyright 2018 Ulf Adams
|
|
2
|
+
//
|
|
3
|
+
// The contents of this file may be used under the terms of the Apache License,
|
|
4
|
+
// Version 2.0.
|
|
5
|
+
//
|
|
6
|
+
// (See accompanying file LICENSE-Apache or copy at
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0)
|
|
8
|
+
//
|
|
9
|
+
// Alternatively, the contents of this file may be used under the terms of
|
|
10
|
+
// the Boost Software License, Version 1.0.
|
|
11
|
+
// (See accompanying file LICENSE-Boost or copy at
|
|
12
|
+
// https://www.boost.org/LICENSE_1_0.txt)
|
|
13
|
+
//
|
|
14
|
+
// Unless required by applicable law or agreed to in writing, this software
|
|
15
|
+
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
+
// KIND, either express or implied.
|
|
17
|
+
#ifndef RYU_H
|
|
18
|
+
#define RYU_H
|
|
19
|
+
|
|
20
|
+
#ifdef __cplusplus
|
|
21
|
+
extern "C" {
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#include <inttypes.h>
|
|
25
|
+
|
|
26
|
+
int d2s_buffered_n(double f, char* result);
|
|
27
|
+
void d2s_buffered(double f, char* result);
|
|
28
|
+
char* d2s(double f);
|
|
29
|
+
|
|
30
|
+
int f2s_buffered_n(float f, char* result);
|
|
31
|
+
void f2s_buffered(float f, char* result);
|
|
32
|
+
char* f2s(float f);
|
|
33
|
+
|
|
34
|
+
int d2fixed_buffered_n(double d, uint32_t precision, char* result);
|
|
35
|
+
void d2fixed_buffered(double d, uint32_t precision, char* result);
|
|
36
|
+
char* d2fixed(double d, uint32_t precision);
|
|
37
|
+
|
|
38
|
+
int d2exp_buffered_n(double d, uint32_t precision, char* result);
|
|
39
|
+
void d2exp_buffered(double d, uint32_t precision, char* result);
|
|
40
|
+
char* d2exp(double d, uint32_t precision);
|
|
41
|
+
|
|
42
|
+
#ifdef __cplusplus
|
|
43
|
+
}
|
|
44
|
+
#endif
|
|
45
|
+
|
|
46
|
+
#endif // RYU_H
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
|
2
|
-
|
|
3
|
-
project(schubfach LANGUAGES CXX)
|
|
4
|
-
|
|
5
|
-
add_library(schubfach STATIC
|
|
6
|
-
schubfach_32.cc schubfach_32.h schubfach_64.cc schubfach_64.h)
|
|
7
|
-
add_library(schubfach::schubfach ALIAS schubfach)
|
|
8
|
-
|
|
9
|
-
target_compile_features(schubfach PUBLIC cxx_std_17)
|
|
10
|
-
|
|
11
|
-
target_include_directories(schubfach
|
|
12
|
-
PUBLIC
|
|
13
|
-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>)
|
|
14
|
-
|
|
15
|
-
# ---- MSVC Specifics ----
|
|
16
|
-
if (MSVC)
|
|
17
|
-
# No need to not generate PDB
|
|
18
|
-
# /permissive- should be the default
|
|
19
|
-
target_compile_options(schubfach PUBLIC
|
|
20
|
-
/Zi /permissive-
|
|
21
|
-
$<$<CONFIG:Release>:/GL>)
|
|
1
|
+
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
|
2
|
+
|
|
3
|
+
project(schubfach LANGUAGES CXX)
|
|
4
|
+
|
|
5
|
+
add_library(schubfach STATIC
|
|
6
|
+
schubfach_32.cc schubfach_32.h schubfach_64.cc schubfach_64.h)
|
|
7
|
+
add_library(schubfach::schubfach ALIAS schubfach)
|
|
8
|
+
|
|
9
|
+
target_compile_features(schubfach PUBLIC cxx_std_17)
|
|
10
|
+
|
|
11
|
+
target_include_directories(schubfach
|
|
12
|
+
PUBLIC
|
|
13
|
+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>)
|
|
14
|
+
|
|
15
|
+
# ---- MSVC Specifics ----
|
|
16
|
+
if (MSVC)
|
|
17
|
+
# No need to not generate PDB
|
|
18
|
+
# /permissive- should be the default
|
|
19
|
+
target_compile_options(schubfach PUBLIC
|
|
20
|
+
/Zi /permissive-
|
|
21
|
+
$<$<CONFIG:Release>:/GL>)
|
|
22
22
|
endif()
|