koffi 1.3.12 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CMakeLists.txt +7 -2
  2. package/ChangeLog.md +42 -16
  3. package/README.md +6 -0
  4. package/build/qemu/2.0.0/koffi_darwin_arm64.tar.gz +0 -0
  5. package/build/qemu/2.0.0/koffi_darwin_x64.tar.gz +0 -0
  6. package/build/qemu/2.0.0/koffi_freebsd_arm64.tar.gz +0 -0
  7. package/build/qemu/2.0.0/koffi_freebsd_ia32.tar.gz +0 -0
  8. package/build/qemu/2.0.0/koffi_freebsd_x64.tar.gz +0 -0
  9. package/build/qemu/2.0.0/koffi_linux_arm32hf.tar.gz +0 -0
  10. package/build/qemu/2.0.0/koffi_linux_arm64.tar.gz +0 -0
  11. package/build/qemu/2.0.0/koffi_linux_ia32.tar.gz +0 -0
  12. package/build/qemu/2.0.0/koffi_linux_riscv64hf64.tar.gz +0 -0
  13. package/build/qemu/2.0.0/koffi_linux_x64.tar.gz +0 -0
  14. package/build/qemu/2.0.0/koffi_openbsd_ia32.tar.gz +0 -0
  15. package/build/qemu/2.0.0/koffi_openbsd_x64.tar.gz +0 -0
  16. package/build/qemu/2.0.0/koffi_win32_arm64.tar.gz +0 -0
  17. package/build/qemu/2.0.0/koffi_win32_ia32.tar.gz +0 -0
  18. package/build/qemu/2.0.0/koffi_win32_x64.tar.gz +0 -0
  19. package/doc/benchmarks.md +2 -2
  20. package/doc/changes.md +156 -1
  21. package/doc/contribute.md +0 -1
  22. package/doc/dist/doctrees/changes.doctree +0 -0
  23. package/doc/dist/doctrees/environment.pickle +0 -0
  24. package/doc/dist/doctrees/functions.doctree +0 -0
  25. package/doc/dist/doctrees/types.doctree +0 -0
  26. package/doc/dist/html/_sources/changes.md.txt +156 -1
  27. package/doc/dist/html/_sources/functions.md.txt +8 -4
  28. package/doc/dist/html/_sources/types.md.txt +9 -0
  29. package/doc/dist/html/benchmarks.html +1 -1
  30. package/doc/dist/html/changes.html +226 -14
  31. package/doc/dist/html/contribute.html +1 -1
  32. package/doc/dist/html/functions.html +15 -12
  33. package/doc/dist/html/genindex.html +1 -1
  34. package/doc/dist/html/index.html +6 -16
  35. package/doc/dist/html/memory.html +3 -3
  36. package/doc/dist/html/objects.inv +0 -0
  37. package/doc/dist/html/platforms.html +1 -1
  38. package/doc/dist/html/search.html +1 -1
  39. package/doc/dist/html/searchindex.js +1 -1
  40. package/doc/dist/html/start.html +1 -1
  41. package/doc/dist/html/types.html +11 -3
  42. package/doc/functions.md +137 -13
  43. package/doc/types.md +35 -10
  44. package/package.json +1 -1
  45. package/qemu/registry/machines.json +5 -5
  46. package/qemu/registry/sha256sum.txt +16 -16
  47. package/src/abi_arm32.cc +90 -18
  48. package/src/abi_arm32_fwd.S +121 -57
  49. package/src/abi_arm64.cc +90 -18
  50. package/src/abi_arm64_fwd.S +96 -0
  51. package/src/abi_arm64_fwd.asm +128 -0
  52. package/src/abi_riscv64.cc +88 -18
  53. package/src/abi_riscv64_fwd.S +96 -0
  54. package/src/abi_x64_sysv.cc +93 -21
  55. package/src/abi_x64_sysv_fwd.S +96 -0
  56. package/src/abi_x64_win.cc +88 -18
  57. package/src/abi_x64_win_fwd.asm +128 -0
  58. package/src/abi_x86.cc +93 -18
  59. package/src/abi_x86_fwd.S +96 -0
  60. package/src/abi_x86_fwd.asm +128 -0
  61. package/src/call.cc +97 -63
  62. package/src/call.hh +2 -1
  63. package/src/ffi.cc +452 -140
  64. package/src/ffi.hh +23 -9
  65. package/src/parser.cc +18 -41
  66. package/src/util.cc +117 -27
  67. package/src/util.hh +3 -2
  68. package/test/callbacks.js +54 -8
  69. package/test/misc.c +29 -14
  70. package/test/raylib.js +1 -1
  71. package/test/sqlite.js +24 -16
  72. package/test/sync.js +41 -31
  73. package/vendor/libcc/libcc.cc +18 -5
  74. package/vendor/libcc/libcc.hh +70 -23
  75. package/build/qemu/1.3.12/koffi_darwin_arm64.tar.gz +0 -0
  76. package/build/qemu/1.3.12/koffi_darwin_x64.tar.gz +0 -0
  77. package/build/qemu/1.3.12/koffi_freebsd_arm64.tar.gz +0 -0
  78. package/build/qemu/1.3.12/koffi_freebsd_ia32.tar.gz +0 -0
  79. package/build/qemu/1.3.12/koffi_freebsd_x64.tar.gz +0 -0
  80. package/build/qemu/1.3.12/koffi_linux_arm32hf.tar.gz +0 -0
  81. package/build/qemu/1.3.12/koffi_linux_arm64.tar.gz +0 -0
  82. package/build/qemu/1.3.12/koffi_linux_ia32.tar.gz +0 -0
  83. package/build/qemu/1.3.12/koffi_linux_riscv64hf64.tar.gz +0 -0
  84. package/build/qemu/1.3.12/koffi_linux_x64.tar.gz +0 -0
  85. package/build/qemu/1.3.12/koffi_openbsd_ia32.tar.gz +0 -0
  86. package/build/qemu/1.3.12/koffi_openbsd_x64.tar.gz +0 -0
  87. package/build/qemu/1.3.12/koffi_win32_arm64.tar.gz +0 -0
  88. package/build/qemu/1.3.12/koffi_win32_ia32.tar.gz +0 -0
  89. package/build/qemu/1.3.12/koffi_win32_x64.tar.gz +0 -0
package/src/abi_arm64.cc CHANGED
@@ -66,6 +66,22 @@ extern "C" int Trampoline12; extern "C" int TrampolineX12;
66
66
  extern "C" int Trampoline13; extern "C" int TrampolineX13;
67
67
  extern "C" int Trampoline14; extern "C" int TrampolineX14;
68
68
  extern "C" int Trampoline15; extern "C" int TrampolineX15;
69
+ extern "C" int Trampoline16; extern "C" int TrampolineX16;
70
+ extern "C" int Trampoline17; extern "C" int TrampolineX17;
71
+ extern "C" int Trampoline18; extern "C" int TrampolineX18;
72
+ extern "C" int Trampoline19; extern "C" int TrampolineX19;
73
+ extern "C" int Trampoline20; extern "C" int TrampolineX20;
74
+ extern "C" int Trampoline21; extern "C" int TrampolineX21;
75
+ extern "C" int Trampoline22; extern "C" int TrampolineX22;
76
+ extern "C" int Trampoline23; extern "C" int TrampolineX23;
77
+ extern "C" int Trampoline24; extern "C" int TrampolineX24;
78
+ extern "C" int Trampoline25; extern "C" int TrampolineX25;
79
+ extern "C" int Trampoline26; extern "C" int TrampolineX26;
80
+ extern "C" int Trampoline27; extern "C" int TrampolineX27;
81
+ extern "C" int Trampoline28; extern "C" int TrampolineX28;
82
+ extern "C" int Trampoline29; extern "C" int TrampolineX29;
83
+ extern "C" int Trampoline30; extern "C" int TrampolineX30;
84
+ extern "C" int Trampoline31; extern "C" int TrampolineX31;
69
85
 
70
86
  extern "C" napi_value CallSwitchStack(Napi::Function *func, size_t argc, napi_value *argv,
71
87
  uint8_t *old_sp, Span<uint8_t> *new_stack,
@@ -87,9 +103,25 @@ static void *const Trampolines[][2] = {
87
103
  { &Trampoline12, &TrampolineX12 },
88
104
  { &Trampoline13, &TrampolineX13 },
89
105
  { &Trampoline14, &TrampolineX14 },
90
- { &Trampoline15, &TrampolineX15 }
106
+ { &Trampoline15, &TrampolineX15 },
107
+ { &Trampoline16, &TrampolineX16 },
108
+ { &Trampoline17, &TrampolineX17 },
109
+ { &Trampoline18, &TrampolineX18 },
110
+ { &Trampoline19, &TrampolineX19 },
111
+ { &Trampoline20, &TrampolineX20 },
112
+ { &Trampoline21, &TrampolineX21 },
113
+ { &Trampoline22, &TrampolineX22 },
114
+ { &Trampoline23, &TrampolineX23 },
115
+ { &Trampoline24, &TrampolineX24 },
116
+ { &Trampoline25, &TrampolineX25 },
117
+ { &Trampoline26, &TrampolineX26 },
118
+ { &Trampoline27, &TrampolineX27 },
119
+ { &Trampoline28, &TrampolineX28 },
120
+ { &Trampoline29, &TrampolineX29 },
121
+ { &Trampoline30, &TrampolineX30 },
122
+ { &Trampoline31, &TrampolineX31 }
91
123
  };
92
- RG_STATIC_ASSERT(RG_LEN(Trampolines) == MaxTrampolines);
124
+ RG_STATIC_ASSERT(RG_LEN(Trampolines) == MaxTrampolines * 2);
93
125
 
94
126
  static RG_THREAD_LOCAL CallData *exec_call;
95
127
 
@@ -198,6 +230,8 @@ bool AnalyseFunction(Napi::Env, InstanceData *, FunctionInfo *func)
198
230
  vec_avail--;
199
231
  }
200
232
  } break;
233
+
234
+ case PrimitiveKind::Prototype: { RG_UNREACHABLE(); } break;
201
235
  }
202
236
  }
203
237
 
@@ -440,10 +474,10 @@ bool CallData::Prepare(const Napi::CallbackInfo &info)
440
474
  if (value.IsFunction()) {
441
475
  Napi::Function func = value.As<Napi::Function>();
442
476
 
443
- ptr = ReserveTrampoline(param.type->proto, func);
477
+ ptr = ReserveTrampoline(param.type->ref.proto, func);
444
478
  if (RG_UNLIKELY(!ptr))
445
479
  return false;
446
- } else if (CheckValueTag(instance, value, param.type)) {
480
+ } else if (CheckValueTag(instance, value, param.type->ref.marker)) {
447
481
  ptr = value.As<Napi::External<void>>().Data();
448
482
  } else if (IsNullOrUndefined(value)) {
449
483
  ptr = nullptr;
@@ -457,6 +491,8 @@ bool CallData::Prepare(const Napi::CallbackInfo &info)
457
491
  #endif
458
492
  *(void **)((param.gpr_count ? gpr_ptr : args_ptr)++) = ptr;
459
493
  } break;
494
+
495
+ case PrimitiveKind::Prototype: { RG_UNREACHABLE(); } break;
460
496
  }
461
497
  }
462
498
 
@@ -506,6 +542,8 @@ void CallData::Execute()
506
542
  case PrimitiveKind::Array: { RG_UNREACHABLE(); } break;
507
543
  case PrimitiveKind::Float32: { result.f = PERFORM_CALL(F); } break;
508
544
  case PrimitiveKind::Float64: { result.d = PERFORM_CALL(DDDD).d0; } break;
545
+
546
+ case PrimitiveKind::Prototype: { RG_UNREACHABLE(); } break;
509
547
  }
510
548
 
511
549
  #undef PERFORM_CALL
@@ -513,7 +551,13 @@ void CallData::Execute()
513
551
 
514
552
  Napi::Value CallData::Complete()
515
553
  {
516
- PopOutArguments();
554
+ RG_DEFER {
555
+ PopOutArguments();
556
+
557
+ if (func->ret.type->dispose) {
558
+ func->ret.type->dispose(env, func->ret.type, result.ptr);
559
+ }
560
+ };
517
561
 
518
562
  switch (func->ret.type->primitive) {
519
563
  case PrimitiveKind::Void: return env.Null();
@@ -532,7 +576,7 @@ Napi::Value CallData::Complete()
532
576
  case PrimitiveKind::Callback: {
533
577
  if (result.ptr) {
534
578
  Napi::External<void> external = Napi::External<void>::New(env, result.ptr);
535
- SetValueTag(instance, external, func->ret.type);
579
+ SetValueTag(instance, external, func->ret.type->ref.marker);
536
580
 
537
581
  return external;
538
582
  } else {
@@ -554,6 +598,8 @@ Napi::Value CallData::Complete()
554
598
  case PrimitiveKind::Array: { RG_UNREACHABLE(); } break;
555
599
  case PrimitiveKind::Float32: return Napi::Number::New(env, (double)result.f);
556
600
  case PrimitiveKind::Float64: return Napi::Number::New(env, result.d);
601
+
602
+ case PrimitiveKind::Prototype: { RG_UNREACHABLE(); } break;
557
603
  }
558
604
 
559
605
  RG_UNREACHABLE();
@@ -561,12 +607,10 @@ Napi::Value CallData::Complete()
561
607
 
562
608
  void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegisters *out_reg)
563
609
  {
564
- const TrampolineInfo &trampoline = instance->trampolines[idx];
565
-
566
- if (RG_UNLIKELY(trampoline.generation != mem->generation)) {
567
- ThrowError<Napi::Error>(env, "Cannot use non-persistent callback beyond FFI call");
610
+ if (RG_UNLIKELY(env.IsExceptionPending()))
568
611
  return;
569
- }
612
+
613
+ const TrampolineInfo &trampoline = instance->trampolines[idx];
570
614
 
571
615
  const FunctionInfo *proto = trampoline.proto;
572
616
  Napi::Function func = trampoline.func.Value();
@@ -577,6 +621,13 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegister
577
621
 
578
622
  uint8_t *return_ptr = proto->ret.use_memory ? (uint8_t *)gpr_ptr[8] : nullptr;
579
623
 
624
+ RG_DEFER_N(err_guard) { memset(out_reg, 0, RG_SIZE(*out_reg)); };
625
+
626
+ if (RG_UNLIKELY(trampoline.generation >= 0 && trampoline.generation != (int32_t)mem->generation)) {
627
+ ThrowError<Napi::Error>(env, "Cannot use non-registered callback beyond FFI call");
628
+ return;
629
+ }
630
+
580
631
  LocalArray<napi_value, MaxParameters> arguments;
581
632
 
582
633
  // Convert to JS arguments
@@ -732,6 +783,10 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegister
732
783
 
733
784
  Napi::Value arg = str ? Napi::String::New(env, str) : env.Null();
734
785
  arguments.Append(arg);
786
+
787
+ if (param.type->dispose) {
788
+ param.type->dispose(env, param.type, str);
789
+ }
735
790
  } break;
736
791
  case PrimitiveKind::String16: {
737
792
  #ifdef __APPLE__
@@ -742,6 +797,10 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegister
742
797
 
743
798
  Napi::Value arg = str16 ? Napi::String::New(env, str16) : env.Null();
744
799
  arguments.Append(arg);
800
+
801
+ if (param.type->dispose) {
802
+ param.type->dispose(env, param.type, str16);
803
+ }
745
804
  } break;
746
805
  case PrimitiveKind::Pointer:
747
806
  case PrimitiveKind::Callback: {
@@ -753,12 +812,16 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegister
753
812
 
754
813
  if (ptr2) {
755
814
  Napi::External<void> external = Napi::External<void>::New(env, ptr2);
756
- SetValueTag(instance, external, param.type);
815
+ SetValueTag(instance, external, param.type->ref.marker);
757
816
 
758
817
  arguments.Append(external);
759
818
  } else {
760
819
  arguments.Append(env.Null());
761
820
  }
821
+
822
+ if (param.type->dispose) {
823
+ param.type->dispose(env, param.type, ptr2);
824
+ }
762
825
  } break;
763
826
  case PrimitiveKind::Record: {
764
827
  if (param.vec_count) { // HFA
@@ -834,6 +897,8 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegister
834
897
  Napi::Value arg = Napi::Number::New(env, d);
835
898
  arguments.Append(arg);
836
899
  } break;
900
+
901
+ case PrimitiveKind::Prototype: { RG_UNREACHABLE(); } break;
837
902
  }
838
903
  }
839
904
 
@@ -844,6 +909,9 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegister
844
909
  [](Napi::Function *func, size_t argc, napi_value *argv) { return (napi_value)func->Call(argc, argv); });
845
910
  Napi::Value value(env, ret);
846
911
 
912
+ if (RG_UNLIKELY(env.IsExceptionPending()))
913
+ return;
914
+
847
915
  // Convert the result
848
916
  switch (type->primitive) {
849
917
  case PrimitiveKind::Void: {} break;
@@ -905,14 +973,14 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegister
905
973
  case PrimitiveKind::Pointer: {
906
974
  uint8_t *ptr;
907
975
 
908
- if (CheckValueTag(instance, value, type)) {
976
+ if (CheckValueTag(instance, value, type->ref.marker)) {
909
977
  ptr = value.As<Napi::External<uint8_t>>().Data();
910
- } else if (IsObject(value) && type->ref->primitive == PrimitiveKind::Record) {
978
+ } else if (IsObject(value) && type->ref.type->primitive == PrimitiveKind::Record) {
911
979
  Napi::Object obj = value.As<Napi::Object>();
912
980
 
913
- ptr = AllocHeap(type->ref->size, 16);
981
+ ptr = AllocHeap(type->ref.type->size, 16);
914
982
 
915
- if (!PushObject(obj, type->ref, ptr))
983
+ if (!PushObject(obj, type->ref.type, ptr))
916
984
  return;
917
985
  } else if (IsNullOrUndefined(value)) {
918
986
  ptr = nullptr;
@@ -968,10 +1036,10 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegister
968
1036
  if (value.IsFunction()) {
969
1037
  Napi::Function func2 = value.As<Napi::Function>();
970
1038
 
971
- ptr = ReserveTrampoline(type->proto, func2);
1039
+ ptr = ReserveTrampoline(type->ref.proto, func2);
972
1040
  if (RG_UNLIKELY(!ptr))
973
1041
  return;
974
- } else if (CheckValueTag(instance, value, type)) {
1042
+ } else if (CheckValueTag(instance, value, type->ref.marker)) {
975
1043
  ptr = value.As<Napi::External<uint8_t>>().Data();
976
1044
  } else if (IsNullOrUndefined(value)) {
977
1045
  ptr = nullptr;
@@ -982,7 +1050,11 @@ void CallData::Relay(Size idx, uint8_t *own_sp, uint8_t *caller_sp, BackRegister
982
1050
 
983
1051
  out_reg->x0 = (uint64_t)ptr;
984
1052
  } break;
1053
+
1054
+ case PrimitiveKind::Prototype: { RG_UNREACHABLE(); } break;
985
1055
  }
1056
+
1057
+ err_guard.Disable();
986
1058
  }
987
1059
 
988
1060
  void *GetTrampoline(Size idx, const FunctionInfo *proto)
@@ -137,6 +137,22 @@ SYMBOL(ForwardCallXDDDD):
137
137
  .global SYMBOL(Trampoline13)
138
138
  .global SYMBOL(Trampoline14)
139
139
  .global SYMBOL(Trampoline15)
140
+ .global SYMBOL(Trampoline16)
141
+ .global SYMBOL(Trampoline17)
142
+ .global SYMBOL(Trampoline18)
143
+ .global SYMBOL(Trampoline19)
144
+ .global SYMBOL(Trampoline20)
145
+ .global SYMBOL(Trampoline21)
146
+ .global SYMBOL(Trampoline22)
147
+ .global SYMBOL(Trampoline23)
148
+ .global SYMBOL(Trampoline24)
149
+ .global SYMBOL(Trampoline25)
150
+ .global SYMBOL(Trampoline26)
151
+ .global SYMBOL(Trampoline27)
152
+ .global SYMBOL(Trampoline28)
153
+ .global SYMBOL(Trampoline29)
154
+ .global SYMBOL(Trampoline30)
155
+ .global SYMBOL(Trampoline31)
140
156
  .global SYMBOL(TrampolineX0)
141
157
  .global SYMBOL(TrampolineX1)
142
158
  .global SYMBOL(TrampolineX2)
@@ -153,6 +169,22 @@ SYMBOL(ForwardCallXDDDD):
153
169
  .global SYMBOL(TrampolineX13)
154
170
  .global SYMBOL(TrampolineX14)
155
171
  .global SYMBOL(TrampolineX15)
172
+ .global SYMBOL(TrampolineX16)
173
+ .global SYMBOL(TrampolineX17)
174
+ .global SYMBOL(TrampolineX18)
175
+ .global SYMBOL(TrampolineX19)
176
+ .global SYMBOL(TrampolineX20)
177
+ .global SYMBOL(TrampolineX21)
178
+ .global SYMBOL(TrampolineX22)
179
+ .global SYMBOL(TrampolineX23)
180
+ .global SYMBOL(TrampolineX24)
181
+ .global SYMBOL(TrampolineX25)
182
+ .global SYMBOL(TrampolineX26)
183
+ .global SYMBOL(TrampolineX27)
184
+ .global SYMBOL(TrampolineX28)
185
+ .global SYMBOL(TrampolineX29)
186
+ .global SYMBOL(TrampolineX30)
187
+ .global SYMBOL(TrampolineX31)
156
188
  .global SYMBOL(RelayCallback)
157
189
  .global SYMBOL(CallSwitchStack)
158
190
 
@@ -260,6 +292,38 @@ SYMBOL(Trampoline14):
260
292
  trampoline 14
261
293
  SYMBOL(Trampoline15):
262
294
  trampoline 15
295
+ SYMBOL(Trampoline16):
296
+ trampoline 16
297
+ SYMBOL(Trampoline17):
298
+ trampoline 17
299
+ SYMBOL(Trampoline18):
300
+ trampoline 18
301
+ SYMBOL(Trampoline19):
302
+ trampoline 19
303
+ SYMBOL(Trampoline20):
304
+ trampoline 20
305
+ SYMBOL(Trampoline21):
306
+ trampoline 21
307
+ SYMBOL(Trampoline22):
308
+ trampoline 22
309
+ SYMBOL(Trampoline23):
310
+ trampoline 23
311
+ SYMBOL(Trampoline24):
312
+ trampoline 24
313
+ SYMBOL(Trampoline25):
314
+ trampoline 25
315
+ SYMBOL(Trampoline26):
316
+ trampoline 26
317
+ SYMBOL(Trampoline27):
318
+ trampoline 27
319
+ SYMBOL(Trampoline28):
320
+ trampoline 28
321
+ SYMBOL(Trampoline29):
322
+ trampoline 29
323
+ SYMBOL(Trampoline30):
324
+ trampoline 30
325
+ SYMBOL(Trampoline31):
326
+ trampoline 31
263
327
 
264
328
  SYMBOL(TrampolineX0):
265
329
  trampoline_vec 0
@@ -293,6 +357,38 @@ SYMBOL(TrampolineX14):
293
357
  trampoline_vec 14
294
358
  SYMBOL(TrampolineX15):
295
359
  trampoline_vec 15
360
+ SYMBOL(TrampolineX16):
361
+ trampoline_vec 16
362
+ SYMBOL(TrampolineX17):
363
+ trampoline_vec 17
364
+ SYMBOL(TrampolineX18):
365
+ trampoline_vec 18
366
+ SYMBOL(TrampolineX19):
367
+ trampoline_vec 19
368
+ SYMBOL(TrampolineX20):
369
+ trampoline_vec 20
370
+ SYMBOL(TrampolineX21):
371
+ trampoline_vec 21
372
+ SYMBOL(TrampolineX22):
373
+ trampoline_vec 22
374
+ SYMBOL(TrampolineX23):
375
+ trampoline_vec 23
376
+ SYMBOL(TrampolineX24):
377
+ trampoline_vec 24
378
+ SYMBOL(TrampolineX25):
379
+ trampoline_vec 25
380
+ SYMBOL(TrampolineX26):
381
+ trampoline_vec 26
382
+ SYMBOL(TrampolineX27):
383
+ trampoline_vec 27
384
+ SYMBOL(TrampolineX28):
385
+ trampoline_vec 28
386
+ SYMBOL(TrampolineX29):
387
+ trampoline_vec 29
388
+ SYMBOL(TrampolineX30):
389
+ trampoline_vec 30
390
+ SYMBOL(TrampolineX31):
391
+ trampoline_vec 31
296
392
 
297
393
  # When a callback is relayed, Koffi will call into Node.js and V8 to execute Javascript.
298
394
  # The problem is that we're still running on the separate Koffi stack, and V8 will
@@ -130,6 +130,22 @@ ForwardCallXDDDD PROC
130
130
  EXPORT Trampoline13
131
131
  EXPORT Trampoline14
132
132
  EXPORT Trampoline15
133
+ EXPORT Trampoline16
134
+ EXPORT Trampoline17
135
+ EXPORT Trampoline18
136
+ EXPORT Trampoline19
137
+ EXPORT Trampoline20
138
+ EXPORT Trampoline21
139
+ EXPORT Trampoline22
140
+ EXPORT Trampoline23
141
+ EXPORT Trampoline24
142
+ EXPORT Trampoline25
143
+ EXPORT Trampoline26
144
+ EXPORT Trampoline27
145
+ EXPORT Trampoline28
146
+ EXPORT Trampoline29
147
+ EXPORT Trampoline30
148
+ EXPORT Trampoline31
133
149
  EXPORT TrampolineX0
134
150
  EXPORT TrampolineX1
135
151
  EXPORT TrampolineX2
@@ -146,6 +162,22 @@ ForwardCallXDDDD PROC
146
162
  EXPORT TrampolineX13
147
163
  EXPORT TrampolineX14
148
164
  EXPORT TrampolineX15
165
+ EXPORT TrampolineX16
166
+ EXPORT TrampolineX17
167
+ EXPORT TrampolineX18
168
+ EXPORT TrampolineX19
169
+ EXPORT TrampolineX20
170
+ EXPORT TrampolineX21
171
+ EXPORT TrampolineX22
172
+ EXPORT TrampolineX23
173
+ EXPORT TrampolineX24
174
+ EXPORT TrampolineX25
175
+ EXPORT TrampolineX26
176
+ EXPORT TrampolineX27
177
+ EXPORT TrampolineX28
178
+ EXPORT TrampolineX29
179
+ EXPORT TrampolineX30
180
+ EXPORT TrampolineX31
149
181
  EXPORT RelayCallback
150
182
  EXTERN RelayCallback
151
183
  EXPORT CallSwitchStack
@@ -252,6 +284,54 @@ Trampoline14 PROC
252
284
  Trampoline15 PROC
253
285
  trampoline 15
254
286
  ENDP
287
+ Trampoline16 PROC
288
+ trampoline 16
289
+ ENDP
290
+ Trampoline17 PROC
291
+ trampoline 17
292
+ ENDP
293
+ Trampoline18 PROC
294
+ trampoline 18
295
+ ENDP
296
+ Trampoline19 PROC
297
+ trampoline 19
298
+ ENDP
299
+ Trampoline20 PROC
300
+ trampoline 20
301
+ ENDP
302
+ Trampoline21 PROC
303
+ trampoline 21
304
+ ENDP
305
+ Trampoline22 PROC
306
+ trampoline 22
307
+ ENDP
308
+ Trampoline23 PROC
309
+ trampoline 23
310
+ ENDP
311
+ Trampoline24 PROC
312
+ trampoline 24
313
+ ENDP
314
+ Trampoline25 PROC
315
+ trampoline 25
316
+ ENDP
317
+ Trampoline26 PROC
318
+ trampoline 26
319
+ ENDP
320
+ Trampoline27 PROC
321
+ trampoline 27
322
+ ENDP
323
+ Trampoline28 PROC
324
+ trampoline 28
325
+ ENDP
326
+ Trampoline29 PROC
327
+ trampoline 29
328
+ ENDP
329
+ Trampoline30 PROC
330
+ trampoline 30
331
+ ENDP
332
+ Trampoline31 PROC
333
+ trampoline 31
334
+ ENDP
255
335
 
256
336
  TrampolineX0 PROC
257
337
  trampoline_vec 0
@@ -301,6 +381,54 @@ TrampolineX14 PROC
301
381
  TrampolineX15 PROC
302
382
  trampoline_vec 15
303
383
  ENDP
384
+ TrampolineX16 PROC
385
+ trampoline_vec 16
386
+ ENDP
387
+ TrampolineX17 PROC
388
+ trampoline_vec 17
389
+ ENDP
390
+ TrampolineX18 PROC
391
+ trampoline_vec 18
392
+ ENDP
393
+ TrampolineX19 PROC
394
+ trampoline_vec 19
395
+ ENDP
396
+ TrampolineX20 PROC
397
+ trampoline_vec 20
398
+ ENDP
399
+ TrampolineX21 PROC
400
+ trampoline_vec 21
401
+ ENDP
402
+ TrampolineX22 PROC
403
+ trampoline_vec 22
404
+ ENDP
405
+ TrampolineX23 PROC
406
+ trampoline_vec 23
407
+ ENDP
408
+ TrampolineX24 PROC
409
+ trampoline_vec 24
410
+ ENDP
411
+ TrampolineX25 PROC
412
+ trampoline_vec 25
413
+ ENDP
414
+ TrampolineX26 PROC
415
+ trampoline_vec 26
416
+ ENDP
417
+ TrampolineX27 PROC
418
+ trampoline_vec 27
419
+ ENDP
420
+ TrampolineX28 PROC
421
+ trampoline_vec 28
422
+ ENDP
423
+ TrampolineX29 PROC
424
+ trampoline_vec 29
425
+ ENDP
426
+ TrampolineX30 PROC
427
+ trampoline_vec 30
428
+ ENDP
429
+ TrampolineX31 PROC
430
+ trampoline_vec 31
431
+ ENDP
304
432
 
305
433
  ; When a callback is relayed, Koffi will call into Node.js and V8 to execute Javascript.
306
434
  ; The problem is that we're still running on the separate Koffi stack, and V8 will