koffi 1.3.10 → 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.
- package/CMakeLists.txt +7 -2
- package/ChangeLog.md +52 -14
- package/README.md +6 -0
- package/build/qemu/2.0.0/koffi_darwin_arm64.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_darwin_x64.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_freebsd_arm64.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_freebsd_ia32.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_freebsd_x64.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_linux_arm32hf.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_linux_arm64.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_linux_ia32.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_linux_riscv64hf64.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_linux_x64.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_openbsd_ia32.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_openbsd_x64.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_win32_arm64.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_win32_ia32.tar.gz +0 -0
- package/build/qemu/2.0.0/koffi_win32_x64.tar.gz +0 -0
- package/doc/benchmarks.md +2 -2
- package/doc/changes.md +156 -1
- package/doc/contribute.md +0 -1
- package/doc/dist/doctrees/changes.doctree +0 -0
- package/doc/dist/doctrees/environment.pickle +0 -0
- package/doc/dist/doctrees/functions.doctree +0 -0
- package/doc/dist/doctrees/types.doctree +0 -0
- package/doc/dist/html/_sources/changes.md.txt +156 -1
- package/doc/dist/html/_sources/functions.md.txt +8 -4
- package/doc/dist/html/_sources/types.md.txt +9 -0
- package/doc/dist/html/benchmarks.html +1 -1
- package/doc/dist/html/changes.html +226 -14
- package/doc/dist/html/contribute.html +1 -1
- package/doc/dist/html/functions.html +15 -12
- package/doc/dist/html/genindex.html +1 -1
- package/doc/dist/html/index.html +6 -16
- package/doc/dist/html/memory.html +3 -3
- package/doc/dist/html/objects.inv +0 -0
- package/doc/dist/html/platforms.html +1 -1
- package/doc/dist/html/search.html +1 -1
- package/doc/dist/html/searchindex.js +1 -1
- package/doc/dist/html/start.html +1 -1
- package/doc/dist/html/types.html +11 -3
- package/doc/functions.md +137 -13
- package/doc/types.md +35 -10
- package/package.json +9 -7
- package/qemu/registry/machines.json +5 -5
- package/qemu/registry/sha256sum.txt +16 -16
- package/src/abi_arm32.cc +90 -18
- package/src/abi_arm32_fwd.S +121 -57
- package/src/abi_arm64.cc +90 -18
- package/src/abi_arm64_fwd.S +96 -0
- package/src/abi_arm64_fwd.asm +128 -0
- package/src/abi_riscv64.cc +88 -18
- package/src/abi_riscv64_fwd.S +96 -0
- package/src/abi_x64_sysv.cc +93 -21
- package/src/abi_x64_sysv_fwd.S +96 -0
- package/src/abi_x64_win.cc +88 -18
- package/src/abi_x64_win_fwd.asm +128 -0
- package/src/abi_x86.cc +93 -18
- package/src/abi_x86_fwd.S +96 -0
- package/src/abi_x86_fwd.asm +128 -0
- package/src/call.cc +97 -63
- package/src/call.hh +2 -1
- package/src/ffi.cc +452 -140
- package/src/ffi.hh +23 -9
- package/src/parser.cc +20 -42
- package/src/util.cc +117 -27
- package/src/util.hh +3 -2
- package/test/callbacks.js +54 -8
- package/test/misc.c +30 -15
- package/test/raylib.js +1 -1
- package/test/sqlite.js +24 -16
- package/test/sync.js +43 -33
- package/vendor/libcc/libcc.cc +18 -5
- package/vendor/libcc/libcc.hh +70 -23
- package/build/qemu/1.3.10/koffi_darwin_arm64.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_darwin_x64.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_freebsd_arm64.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_freebsd_ia32.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_freebsd_x64.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_linux_arm32hf.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_linux_arm64.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_linux_ia32.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_linux_riscv64hf64.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_linux_x64.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_openbsd_ia32.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_openbsd_x64.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_win32_arm64.tar.gz +0 -0
- package/build/qemu/1.3.10/koffi_win32_ia32.tar.gz +0 -0
- package/build/qemu/1.3.10/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
|
-
|
|
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
|
-
|
|
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)
|
package/src/abi_arm64_fwd.S
CHANGED
|
@@ -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
|
package/src/abi_arm64_fwd.asm
CHANGED
|
@@ -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
|