koffi 2.16.1 → 3.0.0-alpha.2

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.
Files changed (84) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/README.md +8 -8
  3. package/build/koffi/darwin_arm64/koffi.node +0 -0
  4. package/build/koffi/darwin_x64/koffi.node +0 -0
  5. package/build/koffi/freebsd_arm64/koffi.node +0 -0
  6. package/build/koffi/freebsd_ia32/koffi.node +0 -0
  7. package/build/koffi/freebsd_x64/koffi.node +0 -0
  8. package/build/koffi/linux_arm64/koffi.node +0 -0
  9. package/build/koffi/linux_ia32/koffi.node +0 -0
  10. package/build/koffi/linux_x64/koffi.node +0 -0
  11. package/build/koffi/musl_arm64/koffi.node +0 -0
  12. package/build/koffi/musl_x64/koffi.node +0 -0
  13. package/build/koffi/openbsd_ia32/koffi.node +0 -0
  14. package/build/koffi/openbsd_x64/koffi.node +0 -0
  15. package/build/koffi/win32_ia32/koffi.node +0 -0
  16. package/build/koffi/win32_x64/koffi.node +0 -0
  17. package/doc/benchmarks.md +33 -33
  18. package/doc/benchmarks.xlsx +0 -0
  19. package/doc/contribute.md +37 -25
  20. package/doc/index.md +8 -8
  21. package/doc/variables.md +1 -1
  22. package/index.d.ts +11 -9
  23. package/index.js +1 -634
  24. package/indirect.js +1 -533
  25. package/lib/native/base/base.cc +63 -85
  26. package/lib/native/base/base.hh +178 -151
  27. package/package.json +3 -4
  28. package/src/build.js +1178 -0
  29. package/src/koffi/CMakeLists.txt +97 -34
  30. package/src/koffi/index.js +359 -0
  31. package/src/koffi/indirect.js +216 -0
  32. package/src/koffi/src/{abi_arm32.cc → abi/arm32.cc} +279 -275
  33. package/src/koffi/src/{abi_arm32_asm.S → abi/arm32_asm.S} +2 -5
  34. package/src/koffi/src/abi/arm64.cc +1511 -0
  35. package/src/koffi/src/{abi_arm64_asm.S → abi/arm64_asm.S} +44 -23
  36. package/src/koffi/src/{abi_arm64_asm.asm → abi/arm64_asm.asm} +32 -25
  37. package/src/koffi/src/{abi_loong64_asm.S → abi/loong64_asm.S} +1 -5
  38. package/src/koffi/src/{abi_riscv64.cc → abi/riscv64.cc} +279 -273
  39. package/src/koffi/src/{abi_riscv64_asm.S → abi/riscv64_asm.S} +1 -4
  40. package/src/koffi/src/abi/x64sysv.cc +1456 -0
  41. package/src/koffi/src/{abi_x64_sysv_asm.S → abi/x64sysv_asm.S} +30 -33
  42. package/src/koffi/src/abi/x64win.cc +1121 -0
  43. package/src/koffi/src/{abi_x64_win_asm.S → abi/x64win_asm.S} +8 -12
  44. package/src/koffi/src/{abi_x64_win_asm.asm → abi/x64win_asm.asm} +11 -14
  45. package/src/koffi/src/abi/x86.cc +1233 -0
  46. package/src/koffi/src/{abi_x86_asm.S → abi/x86_asm.S} +49 -25
  47. package/src/koffi/src/{abi_x86_asm.asm → abi/x86_asm.asm} +11 -14
  48. package/src/koffi/src/call.cc +458 -598
  49. package/src/koffi/src/call.hh +61 -82
  50. package/src/koffi/src/ffi.cc +595 -309
  51. package/src/koffi/src/ffi.hh +103 -89
  52. package/src/koffi/src/parser.cc +0 -4
  53. package/src/koffi/src/primitives.inc +39 -0
  54. package/src/koffi/{tools/write_trampolines.js → src/trampolines.js} +1 -1
  55. package/src/koffi/src/util.cc +503 -446
  56. package/src/koffi/src/util.hh +269 -57
  57. package/src/koffi/src/uv.cc +2 -2
  58. package/src/koffi/src/uv.def +3 -0
  59. package/src/koffi/src/win32.hh +30 -1
  60. package/vendor/node-addon-api/napi-inl.h +4 -0
  61. package/vendor/node-addon-api/napi.h +1 -0
  62. package/build/koffi/linux_armhf/koffi.node +0 -0
  63. package/build/koffi/linux_loong64/koffi.node +0 -0
  64. package/build/koffi/linux_riscv64d/koffi.node +0 -0
  65. package/build/koffi/win32_arm64/koffi.exp +0 -0
  66. package/build/koffi/win32_arm64/koffi.lib +0 -0
  67. package/build/koffi/win32_arm64/koffi.node +0 -0
  68. package/doc/platforms.md +0 -36
  69. package/src/cnoke/LICENSE.txt +0 -22
  70. package/src/cnoke/README.md +0 -99
  71. package/src/cnoke/assets/FindCNoke.cmake +0 -127
  72. package/src/cnoke/assets/toolchains.json +0 -126
  73. package/src/cnoke/assets/win_delay_hook.c +0 -36
  74. package/src/cnoke/cnoke.js +0 -170
  75. package/src/cnoke/package.json +0 -24
  76. package/src/cnoke/src/builder.js +0 -511
  77. package/src/cnoke/src/index.js +0 -10
  78. package/src/cnoke/src/tools.js +0 -407
  79. package/src/koffi/src/abi_arm64.cc +0 -1295
  80. package/src/koffi/src/abi_x64_sysv.cc +0 -939
  81. package/src/koffi/src/abi_x64_win.cc +0 -715
  82. package/src/koffi/src/abi_x86.cc +0 -860
  83. package/src/koffi/src/init.js +0 -105
  84. /package/src/koffi/src/{abi_loong64.cc → abi/loong64.cc} +0 -0
@@ -9,9 +9,9 @@
9
9
  .global ForwardCallG
10
10
  .global ForwardCallF
11
11
  .global ForwardCallD
12
- .global ForwardCallXG
13
- .global ForwardCallXF
14
- .global ForwardCallXD
12
+ .global ForwardCallGX
13
+ .global ForwardCallFX
14
+ .global ForwardCallDX
15
15
 
16
16
  .global SehHandler
17
17
 
@@ -75,19 +75,19 @@ ForwardCallD:
75
75
  forward_gpr
76
76
  jmp CallNative
77
77
 
78
- ForwardCallXG:
78
+ ForwardCallGX:
79
79
  prologue
80
80
  forward_xmm
81
81
  forward_gpr
82
82
  jmp CallNative
83
83
 
84
- ForwardCallXF:
84
+ ForwardCallFX:
85
85
  prologue
86
86
  forward_xmm
87
87
  forward_gpr
88
88
  jmp CallNative
89
89
 
90
- ForwardCallXD:
90
+ ForwardCallDX:
91
91
  prologue
92
92
  forward_xmm
93
93
  forward_gpr
@@ -114,7 +114,6 @@ ForwardCallXD:
114
114
  .endm
115
115
 
116
116
  RelayTrampoline:
117
- endbr64
118
117
  subq $120, %rsp
119
118
  movq %rcx, 32(%rsp)
120
119
  movq %rdx, 40(%rsp)
@@ -141,11 +140,8 @@ SwitchAndRelay:
141
140
  endbr64
142
141
  push %rbp
143
142
  movq %rsp, %rbp
144
- movq %rsp, %r10
145
- movq 48(%rsp), %r11
146
- subq 0(%r11), %r10
147
- andq $-16, %r10
148
- movq %r10, 8(%r11)
143
+ movq 48(%rsp), %r10
144
+ movq %rsp, 8(%r10)
149
145
  leaq -32(%r9), %rsp
150
146
  call RelayDirect
151
147
  movq %rbp, %rsp
@@ -11,9 +11,9 @@ public ForwardCallF
11
11
  public ForwardCallD
12
12
 
13
13
  ; The X variants are slightly slower, and are used when XMM arguments must be forwarded.
14
- public ForwardCallXG
15
- public ForwardCallXF
16
- public ForwardCallXD
14
+ public ForwardCallGX
15
+ public ForwardCallFX
16
+ public ForwardCallDX
17
17
 
18
18
  extern SehHandler : PROC
19
19
 
@@ -83,26 +83,26 @@ ForwardCallD proc frame
83
83
  jmp CallNative
84
84
  ForwardCallD endp
85
85
 
86
- ForwardCallXG proc frame
86
+ ForwardCallGX proc frame
87
87
  prologue
88
88
  forward_xmm
89
89
  forward_gpr
90
90
  jmp CallNative
91
- ForwardCallXG endp
91
+ ForwardCallGX endp
92
92
 
93
- ForwardCallXF proc frame
93
+ ForwardCallFX proc frame
94
94
  prologue
95
95
  forward_xmm
96
96
  forward_gpr
97
97
  jmp CallNative
98
- ForwardCallXF endp
98
+ ForwardCallFX endp
99
99
 
100
- ForwardCallXD proc frame
100
+ ForwardCallDX proc frame
101
101
  prologue
102
102
  forward_xmm
103
103
  forward_gpr
104
104
  jmp CallNative
105
- ForwardCallXD endp
105
+ ForwardCallDX endp
106
106
 
107
107
  ; Callbacks
108
108
  ; ----------------------------
@@ -158,11 +158,8 @@ SwitchAndRelay proc frame
158
158
  mov rbp, rsp
159
159
  .setframe rbp, 0
160
160
  .endprolog
161
- mov r10, rsp
162
- mov r11, qword ptr [rsp+48]
163
- sub r10, qword ptr [r11+0]
164
- and r10, -16
165
- mov qword ptr [r11+8], r10
161
+ mov r10, qword ptr [rsp+48]
162
+ mov qword ptr [r10+8], rsp
166
163
  lea rsp, [r9-32]
167
164
  call RelayDirect
168
165
  mov rsp, rbp