koffi 2.14.1 → 2.15.1
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 +26 -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.node +0 -0
- package/build/koffi/win32_ia32/koffi.node +0 -0
- package/build/koffi/win32_x64/koffi.node +0 -0
- package/doc/assets.ini +2 -1
- package/doc/build.sh +9 -0
- package/doc/pages/404.md +17 -0
- package/doc/pages/index.md +5 -3
- package/doc/pages/misc.md +18 -11
- package/doc/pages.ini +4 -0
- package/doc/static/highlight.js +2 -14
- package/doc/static/koffi.css +3 -15
- package/doc/static/print.css +2 -14
- package/doc/templates/code.html +1 -2
- package/doc/templates/page.html +1 -2
- package/index.d.ts +29 -24
- package/index.js +9 -9
- package/indirect.js +9 -9
- package/{src/core → lib/native}/base/base.cc +1137 -674
- package/{src/core → lib/native}/base/base.hh +362 -195
- package/{src/core → lib/native}/base/crc.inc +2 -20
- package/lib/native/base/crc_gen.py +72 -0
- package/{src/core → lib/native}/base/mimetypes.inc +2 -20
- package/{src/core → lib/native}/base/mimetypes_gen.py +2 -21
- package/lib/native/base/tower.cc +821 -0
- package/lib/native/base/tower.hh +81 -0
- package/{src/core → lib/native}/base/unicode.inc +2 -20
- package/{src/core → lib/native}/base/unicode_gen.py +4 -41
- package/package.json +2 -2
- package/src/cnoke/assets/FindCNoke.cmake +24 -30
- package/src/cnoke/assets/win_delay_hook.c +6 -20
- package/src/cnoke/cnoke.js +2 -21
- package/src/cnoke/src/builder.js +51 -66
- package/src/cnoke/src/index.js +2 -20
- package/src/cnoke/src/tools.js +2 -20
- package/src/koffi/CMakeLists.txt +30 -23
- package/src/koffi/cmake/raylib.cmake +5 -22
- package/src/koffi/cmake/sqlite3.cmake +2 -20
- package/src/koffi/src/abi_arm32.cc +7 -25
- package/src/koffi/src/abi_arm32_asm.S +2 -20
- package/src/koffi/src/abi_arm64.cc +7 -25
- package/src/koffi/src/abi_arm64_asm.S +2 -20
- package/src/koffi/src/abi_arm64_asm.asm +2 -20
- package/src/koffi/src/abi_loong64.cc +2 -20
- package/src/koffi/src/abi_loong64_asm.S +2 -20
- package/src/koffi/src/abi_riscv64.cc +7 -25
- package/src/koffi/src/abi_riscv64_asm.S +2 -20
- package/src/koffi/src/abi_x64_sysv.cc +7 -25
- package/src/koffi/src/abi_x64_sysv_asm.S +2 -20
- package/src/koffi/src/abi_x64_win.cc +12 -30
- package/src/koffi/src/abi_x64_win_asm.S +162 -0
- package/src/koffi/src/abi_x64_win_asm.asm +2 -20
- package/src/koffi/src/abi_x86.cc +7 -25
- package/src/koffi/src/abi_x86_asm.S +2 -20
- package/src/koffi/src/abi_x86_asm.asm +2 -20
- package/src/koffi/src/call.cc +25 -45
- package/src/koffi/src/call.hh +3 -21
- package/src/koffi/src/errno.inc +2 -20
- package/src/koffi/src/ffi.cc +64 -63
- package/src/koffi/src/ffi.hh +15 -30
- package/src/koffi/src/init.js +2 -20
- package/src/koffi/src/parser.cc +13 -27
- package/src/koffi/src/parser.hh +3 -21
- package/src/koffi/src/trampolines/armasm.inc +0 -21
- package/src/koffi/src/trampolines/gnu.inc +0 -21
- package/src/koffi/src/trampolines/masm32.inc +0 -21
- package/src/koffi/src/trampolines/masm64.inc +0 -21
- package/src/koffi/src/trampolines/prototypes.inc +0 -21
- package/src/koffi/src/util.cc +50 -64
- package/src/koffi/src/util.hh +8 -25
- package/src/koffi/src/uv.cc +193 -0
- package/src/koffi/src/uv.def +10 -0
- package/src/koffi/src/uv.hh +40 -0
- package/src/koffi/src/win32.cc +2 -20
- package/src/koffi/src/win32.hh +3 -21
- package/vendor/node-api-headers/CHANGELOG.md +22 -0
- package/vendor/node-api-headers/README.md +6 -17
- package/vendor/node-api-headers/include/js_native_api.h +3 -13
- package/vendor/node-api-headers/include/js_native_api_types.h +15 -0
- package/vendor/node-api-headers/include/node_api.h +0 -4
- package/vendor/node-api-headers/include/node_api_types.h +6 -0
- package/vendor/node-api-headers/include/uv/aix.h +32 -0
- package/vendor/node-api-headers/include/uv/bsd.h +34 -0
- package/vendor/node-api-headers/include/uv/darwin.h +61 -0
- package/vendor/node-api-headers/include/uv/errno.h +483 -0
- package/vendor/node-api-headers/include/uv/linux.h +34 -0
- package/vendor/node-api-headers/include/uv/os390.h +33 -0
- package/vendor/node-api-headers/include/uv/posix.h +31 -0
- package/vendor/node-api-headers/include/uv/sunos.h +44 -0
- package/vendor/node-api-headers/include/uv/threadpool.h +37 -0
- package/vendor/node-api-headers/include/uv/tree.h +521 -0
- package/vendor/node-api-headers/include/uv/unix.h +512 -0
- package/vendor/node-api-headers/include/uv/version.h +43 -0
- package/vendor/node-api-headers/include/uv/win.h +698 -0
- package/vendor/node-api-headers/include/uv.h +1990 -0
- package/vendor/node-api-headers/package.json +1 -1
- package/vendor/node-api-headers/scripts/update-headers.js +6 -0
- package/src/core/base/crc_gen.py +0 -109
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
# this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
# the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
# Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
# subject to the following conditions:
|
|
9
|
-
#
|
|
10
|
-
# The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
# copies or substantial portions of the Software.
|
|
12
|
-
#
|
|
13
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
# OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
add_library(raylib SHARED
|
|
23
5
|
../../../vendor/raylib/src/rcore.c
|
|
@@ -46,7 +28,7 @@ else()
|
|
|
46
28
|
endif()
|
|
47
29
|
|
|
48
30
|
if(WIN32)
|
|
49
|
-
target_compile_definitions(raylib PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE)
|
|
31
|
+
target_compile_definitions(raylib PRIVATE _GLFW_WIN32 _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE)
|
|
50
32
|
target_link_libraries(raylib PRIVATE winmm)
|
|
51
33
|
endif()
|
|
52
34
|
|
|
@@ -60,7 +42,7 @@ endif()
|
|
|
60
42
|
|
|
61
43
|
if(APPLE)
|
|
62
44
|
target_compile_options(raylib PRIVATE -Wno-unknown-warning-option -Wno-macro-redefined)
|
|
63
|
-
target_compile_definitions(raylib PRIVATE GL_SILENCE_DEPRECATION)
|
|
45
|
+
target_compile_definitions(raylib PRIVATE _GLFW_COCOA GL_SILENCE_DEPRECATION)
|
|
64
46
|
set_source_files_properties(../../../vendor/raylib/src/rglfw.c PROPERTIES COMPILE_FLAGS "-x objective-c")
|
|
65
47
|
target_link_libraries(raylib PRIVATE "-framework Cocoa" "-framework IOKit" "-framework CoreFoundation" "-framework OpenGL")
|
|
66
48
|
endif()
|
|
@@ -98,5 +80,6 @@ if(UNIX AND NOT APPLE)
|
|
|
98
80
|
message(FATAL_ERROR "Missing X11 development files: ${missing_xlib_str}")
|
|
99
81
|
endif()
|
|
100
82
|
|
|
83
|
+
target_compile_definitions(raylib PRIVATE _GLFW_X11)
|
|
101
84
|
target_include_directories(raylib PRIVATE ${XLIB_INCLUDE_DIRS})
|
|
102
85
|
endif()
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
# this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
# the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
# Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
# subject to the following conditions:
|
|
9
|
-
#
|
|
10
|
-
# The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
# copies or substantial portions of the Software.
|
|
12
|
-
#
|
|
13
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
# OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
add_library(sqlite3 SHARED ../../../vendor/sqlite3mc/sqlite3.c)
|
|
23
5
|
set_target_properties(sqlite3 PROPERTIES PREFIX "")
|
|
@@ -1,27 +1,9 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
// this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
// the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
// Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
// subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
// copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
// OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
#if defined(__arm__) || (defined(__M_ARM) && !defined(_M_ARM64))
|
|
23
5
|
|
|
24
|
-
#include "
|
|
6
|
+
#include "lib/native/base/base.hh"
|
|
25
7
|
#include "ffi.hh"
|
|
26
8
|
#include "call.hh"
|
|
27
9
|
#include "util.hh"
|
|
@@ -536,7 +518,7 @@ Napi::Value CallData::Complete(const FunctionInfo *func)
|
|
|
536
518
|
case PrimitiveKind::Callback: {
|
|
537
519
|
if (result.ptr) {
|
|
538
520
|
Napi::External<void> external = Napi::External<void>::New(env, result.ptr);
|
|
539
|
-
SetValueTag(
|
|
521
|
+
SetValueTag(external, func->ret.type->ref.marker);
|
|
540
522
|
|
|
541
523
|
return external;
|
|
542
524
|
} else {
|
|
@@ -735,7 +717,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
735
717
|
|
|
736
718
|
if (ptr2) {
|
|
737
719
|
Napi::External<void> external = Napi::External<void>::New(env, ptr2);
|
|
738
|
-
SetValueTag(
|
|
720
|
+
SetValueTag(external, param.type->ref.marker);
|
|
739
721
|
|
|
740
722
|
arguments.Append(external);
|
|
741
723
|
} else {
|
|
@@ -936,7 +918,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
936
918
|
case PrimitiveKind::Pointer: {
|
|
937
919
|
uint8_t *ptr;
|
|
938
920
|
|
|
939
|
-
if (CheckValueTag(
|
|
921
|
+
if (CheckValueTag(value, type->ref.marker)) {
|
|
940
922
|
ptr = value.As<Napi::External<uint8_t>>().Data();
|
|
941
923
|
} else if (IsObject(value) && (type->ref.type->primitive == PrimitiveKind::Record ||
|
|
942
924
|
type->ref.type->primitive == PrimitiveKind::Union)) {
|
|
@@ -1010,7 +992,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
1010
992
|
ptr = ReserveTrampoline(type->ref.proto, func2);
|
|
1011
993
|
if (!ptr) [[unlikely]]
|
|
1012
994
|
return;
|
|
1013
|
-
} else if (CheckValueTag(
|
|
995
|
+
} else if (CheckValueTag(value, type->ref.marker)) {
|
|
1014
996
|
ptr = value.As<Napi::External<void>>().Data();
|
|
1015
997
|
} else if (IsNullOrUndefined(value)) {
|
|
1016
998
|
ptr = nullptr;
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
# this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
# the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
# Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
# subject to the following conditions:
|
|
9
|
-
#
|
|
10
|
-
# The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
# copies or substantial portions of the Software.
|
|
12
|
-
#
|
|
13
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
# OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
.syntax unified
|
|
23
5
|
|
|
@@ -1,27 +1,9 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
// this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
// the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
// Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
// subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
// copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
// OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
#if defined(__aarch64__) || defined(_M_ARM64)
|
|
23
5
|
|
|
24
|
-
#include "
|
|
6
|
+
#include "lib/native/base/base.hh"
|
|
25
7
|
#include "ffi.hh"
|
|
26
8
|
#include "call.hh"
|
|
27
9
|
#include "util.hh"
|
|
@@ -675,7 +657,7 @@ Napi::Value CallData::Complete(const FunctionInfo *func)
|
|
|
675
657
|
case PrimitiveKind::Callback: {
|
|
676
658
|
if (result.ptr) {
|
|
677
659
|
Napi::External<void> external = Napi::External<void>::New(env, result.ptr);
|
|
678
|
-
SetValueTag(
|
|
660
|
+
SetValueTag(external, func->ret.type->ref.marker);
|
|
679
661
|
|
|
680
662
|
return external;
|
|
681
663
|
} else {
|
|
@@ -1054,7 +1036,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
1054
1036
|
|
|
1055
1037
|
if (ptr2) {
|
|
1056
1038
|
Napi::External<void> external = Napi::External<void>::New(env, ptr2);
|
|
1057
|
-
SetValueTag(
|
|
1039
|
+
SetValueTag(external, param.type->ref.marker);
|
|
1058
1040
|
|
|
1059
1041
|
arguments.Append(external);
|
|
1060
1042
|
} else {
|
|
@@ -1235,7 +1217,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
1235
1217
|
case PrimitiveKind::Pointer: {
|
|
1236
1218
|
uint8_t *ptr;
|
|
1237
1219
|
|
|
1238
|
-
if (CheckValueTag(
|
|
1220
|
+
if (CheckValueTag(value, type->ref.marker)) {
|
|
1239
1221
|
ptr = value.As<Napi::External<uint8_t>>().Data();
|
|
1240
1222
|
} else if (IsObject(value) && (type->ref.type->primitive == PrimitiveKind::Record ||
|
|
1241
1223
|
type->ref.type->primitive == PrimitiveKind::Union)) {
|
|
@@ -1306,7 +1288,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
1306
1288
|
ptr = ReserveTrampoline(type->ref.proto, func2);
|
|
1307
1289
|
if (!ptr) [[unlikely]]
|
|
1308
1290
|
return;
|
|
1309
|
-
} else if (CheckValueTag(
|
|
1291
|
+
} else if (CheckValueTag(value, type->ref.marker)) {
|
|
1310
1292
|
ptr = value.As<Napi::External<void>>().Data();
|
|
1311
1293
|
} else if (IsNullOrUndefined(value)) {
|
|
1312
1294
|
ptr = nullptr;
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
# this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
# the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
# Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
# subject to the following conditions:
|
|
9
|
-
#
|
|
10
|
-
# The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
# copies or substantial portions of the Software.
|
|
12
|
-
#
|
|
13
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
# OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
#if defined(__APPLE__)
|
|
23
5
|
#define SYMBOL(Symbol) _ ## Symbol
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
;
|
|
2
|
-
;
|
|
3
|
-
; Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
; this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
; the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
; copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
; Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
; subject to the following conditions:
|
|
9
|
-
;
|
|
10
|
-
; The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
; copies or substantial portions of the Software.
|
|
12
|
-
;
|
|
13
|
-
; THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
; OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
; OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
; SPDX-License-Identifier: MIT
|
|
2
|
+
; SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
AREA |.text|, CODE
|
|
23
5
|
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
// this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
// the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
// Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
// subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
// copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
// OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
// There's nothing to see here, this architecture uses the ABI code in abi_riscv64.cc!
|
|
23
5
|
// This file only exists to avoid leaving abi_loong64_asm.S alone :)
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
# this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
# the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
# Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
# subject to the following conditions:
|
|
9
|
-
#
|
|
10
|
-
# The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
# copies or substantial portions of the Software.
|
|
12
|
-
#
|
|
13
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
# OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
#define SYMBOL(Symbol) Symbol
|
|
23
5
|
|
|
@@ -1,27 +1,9 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
// this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
// the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
// Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
// subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
// copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
// OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
#if __riscv_xlen == 64 || defined(__loongarch64)
|
|
23
5
|
|
|
24
|
-
#include "
|
|
6
|
+
#include "lib/native/base/base.hh"
|
|
25
7
|
#include "ffi.hh"
|
|
26
8
|
#include "call.hh"
|
|
27
9
|
#include "util.hh"
|
|
@@ -472,7 +454,7 @@ Napi::Value CallData::Complete(const FunctionInfo *func)
|
|
|
472
454
|
case PrimitiveKind::Callback: {
|
|
473
455
|
if (result.ptr) {
|
|
474
456
|
Napi::External<void> external = Napi::External<void>::New(env, result.ptr);
|
|
475
|
-
SetValueTag(
|
|
457
|
+
SetValueTag(external, func->ret.type->ref.marker);
|
|
476
458
|
|
|
477
459
|
return external;
|
|
478
460
|
} else {
|
|
@@ -664,7 +646,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
664
646
|
|
|
665
647
|
if (ptr2) {
|
|
666
648
|
Napi::External<void> external = Napi::External<void>::New(env, ptr2);
|
|
667
|
-
SetValueTag(
|
|
649
|
+
SetValueTag(external, param.type->ref.marker);
|
|
668
650
|
|
|
669
651
|
arguments.Append(external);
|
|
670
652
|
} else {
|
|
@@ -824,7 +806,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
824
806
|
case PrimitiveKind::Pointer: {
|
|
825
807
|
uint8_t *ptr;
|
|
826
808
|
|
|
827
|
-
if (CheckValueTag(
|
|
809
|
+
if (CheckValueTag(value, type->ref.marker)) {
|
|
828
810
|
ptr = value.As<Napi::External<uint8_t>>().Data();
|
|
829
811
|
} else if (IsObject(value) && (type->ref.type->primitive == PrimitiveKind::Record ||
|
|
830
812
|
type->ref.type->primitive == PrimitiveKind::Union)) {
|
|
@@ -909,7 +891,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
909
891
|
ptr = ReserveTrampoline(type->ref.proto, func2);
|
|
910
892
|
if (!ptr) [[unlikely]]
|
|
911
893
|
return;
|
|
912
|
-
} else if (CheckValueTag(
|
|
894
|
+
} else if (CheckValueTag(value, type->ref.marker)) {
|
|
913
895
|
ptr = value.As<Napi::External<void>>().Data();
|
|
914
896
|
} else if (IsNullOrUndefined(value)) {
|
|
915
897
|
ptr = nullptr;
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
# this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
# the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
# Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
# subject to the following conditions:
|
|
9
|
-
#
|
|
10
|
-
# The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
# copies or substantial portions of the Software.
|
|
12
|
-
#
|
|
13
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
# OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
#define SYMBOL(Symbol) Symbol
|
|
23
5
|
|
|
@@ -1,27 +1,9 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
// this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
// the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
// Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
// subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
// copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
// OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
#if defined(__x86_64__) && !defined(_WIN32)
|
|
23
5
|
|
|
24
|
-
#include "
|
|
6
|
+
#include "lib/native/base/base.hh"
|
|
25
7
|
#include "ffi.hh"
|
|
26
8
|
#include "call.hh"
|
|
27
9
|
#include "util.hh"
|
|
@@ -513,7 +495,7 @@ Napi::Value CallData::Complete(const FunctionInfo *func)
|
|
|
513
495
|
case PrimitiveKind::Callback: {
|
|
514
496
|
if (result.ptr) {
|
|
515
497
|
Napi::External<void> external = Napi::External<void>::New(env, result.ptr);
|
|
516
|
-
SetValueTag(
|
|
498
|
+
SetValueTag(external, func->ret.type->ref.marker);
|
|
517
499
|
|
|
518
500
|
return external;
|
|
519
501
|
} else {
|
|
@@ -700,7 +682,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
700
682
|
|
|
701
683
|
if (ptr2) {
|
|
702
684
|
Napi::External<void> external = Napi::External<void>::New(env, ptr2);
|
|
703
|
-
SetValueTag(
|
|
685
|
+
SetValueTag(external, param.type->ref.marker);
|
|
704
686
|
|
|
705
687
|
arguments.Append(external);
|
|
706
688
|
} else {
|
|
@@ -849,7 +831,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
849
831
|
case PrimitiveKind::Pointer: {
|
|
850
832
|
uint8_t *ptr;
|
|
851
833
|
|
|
852
|
-
if (CheckValueTag(
|
|
834
|
+
if (CheckValueTag(value, type->ref.marker)) {
|
|
853
835
|
ptr = value.As<Napi::External<uint8_t>>().Data();
|
|
854
836
|
} else if (IsObject(value) && (type->ref.type->primitive == PrimitiveKind::Record ||
|
|
855
837
|
type->ref.type->primitive == PrimitiveKind::Union)) {
|
|
@@ -933,7 +915,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
933
915
|
ptr = ReserveTrampoline(type->ref.proto, func2);
|
|
934
916
|
if (!ptr) [[unlikely]]
|
|
935
917
|
return;
|
|
936
|
-
} else if (CheckValueTag(
|
|
918
|
+
} else if (CheckValueTag(value, type->ref.marker)) {
|
|
937
919
|
ptr = value.As<Napi::External<void>>().Data();
|
|
938
920
|
} else if (IsNullOrUndefined(value)) {
|
|
939
921
|
ptr = nullptr;
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
# this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
# the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
# Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
# subject to the following conditions:
|
|
9
|
-
#
|
|
10
|
-
# The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
# copies or substantial portions of the Software.
|
|
12
|
-
#
|
|
13
|
-
# THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
# OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
#if defined(__APPLE__)
|
|
23
5
|
#define SYMBOL(Symbol) _ ## Symbol
|
|
@@ -1,27 +1,9 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
-
// this software and associated documentation files (the “Software”), to deal in
|
|
5
|
-
// the Software without restriction, including without limitation the rights to use,
|
|
6
|
-
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
7
|
-
// Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
-
// subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in all
|
|
11
|
-
// copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
|
14
|
-
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
15
|
-
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
-
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
17
|
-
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
18
|
-
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
19
|
-
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
20
|
-
// OTHER DEALINGS IN THE SOFTWARE.
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
|
|
21
3
|
|
|
22
4
|
#if defined(_WIN32) && (defined(__x86_64__) || defined(_M_AMD64))
|
|
23
5
|
|
|
24
|
-
#include "
|
|
6
|
+
#include "lib/native/base/base.hh"
|
|
25
7
|
#include "ffi.hh"
|
|
26
8
|
#include "call.hh"
|
|
27
9
|
#include "util.hh"
|
|
@@ -224,11 +206,11 @@ void CallData::Execute(const FunctionInfo *func, void *native)
|
|
|
224
206
|
|
|
225
207
|
// Restore previous stack limits at the end
|
|
226
208
|
K_DEFER_C(exception_list = teb->ExceptionList,
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
209
|
+
base = teb->StackBase,
|
|
210
|
+
limit = teb->StackLimit,
|
|
211
|
+
dealloc = teb->DeallocationStack,
|
|
212
|
+
guaranteed = teb->GuaranteedStackBytes,
|
|
213
|
+
stfs = teb->SameTebFlags) {
|
|
232
214
|
teb->ExceptionList = exception_list;
|
|
233
215
|
teb->StackBase = base;
|
|
234
216
|
teb->StackLimit = limit;
|
|
@@ -324,7 +306,7 @@ Napi::Value CallData::Complete(const FunctionInfo *func)
|
|
|
324
306
|
case PrimitiveKind::Callback: {
|
|
325
307
|
if (result.ptr) {
|
|
326
308
|
Napi::External<void> external = Napi::External<void>::New(env, result.ptr);
|
|
327
|
-
SetValueTag(
|
|
309
|
+
SetValueTag(external, func->ret.type->ref.marker);
|
|
328
310
|
|
|
329
311
|
return external;
|
|
330
312
|
} else {
|
|
@@ -545,7 +527,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
545
527
|
|
|
546
528
|
if (ptr2) {
|
|
547
529
|
Napi::External<void> external = Napi::External<void>::New(env, ptr2);
|
|
548
|
-
SetValueTag(
|
|
530
|
+
SetValueTag(external, param.type->ref.marker);
|
|
549
531
|
|
|
550
532
|
arguments.Append(external);
|
|
551
533
|
} else {
|
|
@@ -674,7 +656,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
674
656
|
case PrimitiveKind::Pointer: {
|
|
675
657
|
uint8_t *ptr;
|
|
676
658
|
|
|
677
|
-
if (CheckValueTag(
|
|
659
|
+
if (CheckValueTag(value, type->ref.marker)) {
|
|
678
660
|
ptr = value.As<Napi::External<uint8_t>>().Data();
|
|
679
661
|
} else if (IsObject(value) && (type->ref.type->primitive == PrimitiveKind::Record ||
|
|
680
662
|
type->ref.type->primitive == PrimitiveKind::Union)) {
|
|
@@ -740,7 +722,7 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, bool switch_
|
|
|
740
722
|
ptr = ReserveTrampoline(type->ref.proto, func2);
|
|
741
723
|
if (!ptr) [[unlikely]]
|
|
742
724
|
return;
|
|
743
|
-
} else if (CheckValueTag(
|
|
725
|
+
} else if (CheckValueTag(value, type->ref.marker)) {
|
|
744
726
|
ptr = value.As<Napi::External<void>>().Data();
|
|
745
727
|
} else if (IsNullOrUndefined(value)) {
|
|
746
728
|
ptr = nullptr;
|