koffi 2.15.0 → 2.16.0-beta.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 +7 -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/pages/index.md +4 -2
- package/doc/pages/misc.md +2 -0
- package/doc/templates/code.html +1 -2
- package/doc/templates/page.html +1 -2
- package/index.d.ts +11 -9
- package/index.js +9 -9
- package/indirect.js +9 -9
- package/lib/native/base/base.cc +79 -44
- package/lib/native/base/base.hh +31 -33
- package/package.json +2 -2
- package/src/cnoke/assets/FindCNoke.cmake +16 -10
- package/src/cnoke/assets/win_delay_hook.c +4 -0
- package/src/cnoke/src/builder.js +49 -46
- package/src/koffi/CMakeLists.txt +18 -8
- package/src/koffi/src/abi_arm32.cc +222 -219
- package/src/koffi/src/abi_arm32_asm.S +1 -29
- package/src/koffi/src/abi_arm64.cc +257 -235
- package/src/koffi/src/abi_arm64_asm.S +1 -32
- package/src/koffi/src/abi_arm64_asm.asm +1 -23
- package/src/koffi/src/abi_loong64_asm.S +1 -25
- package/src/koffi/src/abi_riscv64.cc +220 -217
- package/src/koffi/src/abi_riscv64_asm.S +1 -25
- package/src/koffi/src/abi_x64_sysv.cc +196 -192
- package/src/koffi/src/abi_x64_sysv_asm.S +1 -31
- package/src/koffi/src/abi_x64_win.cc +188 -172
- package/src/koffi/src/abi_x64_win_asm.S +144 -0
- package/src/koffi/src/abi_x64_win_asm.asm +1 -21
- package/src/koffi/src/abi_x86.cc +224 -189
- package/src/koffi/src/abi_x86_asm.S +6 -25
- package/src/koffi/src/abi_x86_asm.asm +9 -22
- package/src/koffi/src/call.cc +246 -428
- package/src/koffi/src/call.hh +9 -8
- package/src/koffi/src/ffi.cc +142 -88
- package/src/koffi/src/ffi.hh +13 -59
- package/src/koffi/src/primitives.inc +39 -0
- package/src/koffi/src/trampolines/armasm.inc +0 -32770
- package/src/koffi/src/trampolines/gnu.inc +0 -24578
- package/src/koffi/src/trampolines/masm32.inc +0 -32770
- package/src/koffi/src/trampolines/masm64.inc +0 -32770
- package/src/koffi/src/trampolines/prototypes.inc +16385 -16385
- package/src/koffi/src/util.cc +155 -112
- package/src/koffi/src/util.hh +77 -40
- 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/package.json +1 -1
- package/vendor/node-api-headers/scripts/update-headers.js +6 -0
|
@@ -89,7 +89,10 @@ public CallSwitchStack
|
|
|
89
89
|
; Depending on ABI, call convention and return value size, we need to issue ret <something>. Since ret
|
|
90
90
|
; only takes an immediate value, and I prefer not to branch, the return address is moved instead according
|
|
91
91
|
; to BackRegisters::ret_pop before ret is issued.
|
|
92
|
+
; We need to branch at the end to avoid x87 stack imbalance.
|
|
92
93
|
trampoline macro ID
|
|
94
|
+
local l0, l1, l2
|
|
95
|
+
|
|
93
96
|
endbr32
|
|
94
97
|
sub esp, 44
|
|
95
98
|
mov dword ptr [esp+0], ID
|
|
@@ -102,31 +105,15 @@ trampoline macro ID
|
|
|
102
105
|
mov edx, dword ptr [esp+44]
|
|
103
106
|
mov ecx, dword ptr [esp+36]
|
|
104
107
|
mov dword ptr [esp+ecx+44], edx
|
|
108
|
+
cmp dword ptr [esp+32], 1
|
|
109
|
+
je l1
|
|
110
|
+
cmp dword ptr [esp+32], 2
|
|
111
|
+
je l2
|
|
112
|
+
l0:
|
|
105
113
|
mov eax, dword ptr [esp+16]
|
|
106
114
|
mov edx, dword ptr [esp+20]
|
|
107
|
-
lea esp, [esp+ecx+44]
|
|
115
|
+
lea esp, dword ptr [esp+ecx+44]
|
|
108
116
|
ret
|
|
109
|
-
endm
|
|
110
|
-
|
|
111
|
-
; This version also loads the x87 stack with the result, if need be.
|
|
112
|
-
; We have to branch to avoid x87 stack imbalance.
|
|
113
|
-
trampoline_vec macro ID
|
|
114
|
-
local l1, l2, l3
|
|
115
|
-
|
|
116
|
-
endbr32
|
|
117
|
-
sub esp, 44
|
|
118
|
-
mov dword ptr [esp+0], ID
|
|
119
|
-
mov dword ptr [esp+4], esp
|
|
120
|
-
lea eax, dword ptr [esp+48]
|
|
121
|
-
mov dword ptr [esp+8], eax
|
|
122
|
-
lea eax, dword ptr [esp+16]
|
|
123
|
-
mov dword ptr [esp+12], eax
|
|
124
|
-
call RelayCallback
|
|
125
|
-
mov edx, dword ptr [esp+44]
|
|
126
|
-
mov ecx, dword ptr [esp+36]
|
|
127
|
-
mov dword ptr [esp+ecx+44], edx
|
|
128
|
-
cmp byte ptr [esp+32], 0
|
|
129
|
-
jne l2
|
|
130
117
|
l1:
|
|
131
118
|
fld dword ptr [esp+24]
|
|
132
119
|
lea esp, dword ptr [esp+ecx+44]
|