You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"This trampoline is used to have a fixed point where all the calls to FFI methods can return.
817
+
This is needed because if we do a FFI call that is reentrant in the interpreter, the machine code method that has perform the call might move or disappear.
818
+
Producing a crash when returning from the FFI call.
819
+
As the affected return address is in the C stack, it will not be handled by the code compaction code.
820
+
So, we need a trampoline, so the return IP is in the top of a Machine Code Pharo Stack, and it is correctly patched."
"This trampoline is used to have a fixed point where all the calls to FFI methods can return.
2977
+
This is needed because if we do a FFI call that is reentrant in the interpreter, the machine code method that has perform the call might move or disappear.
2978
+
Producing a crash when returning from the FFI call.
2979
+
As the affected return address is in the C stack, it will not be handled by the code compaction code.
2980
+
So, we need a trampoline, so the return IP is in the top of a Machine Code Pharo Stack, and it is correctly patched.
2981
+
We need two flavors of this trampoline, as Win64 requires to handle the an extra double argument in the stack"
2982
+
2983
+
| startAddress |
2984
+
2985
+
<inline:true>
2986
+
2987
+
backEnd needsFFIFullCallInRegisterTrampoline
2988
+
ifFalse: [ ^0 ].
2989
+
2990
+
selfallocateOpcodes:15bytecodes:0.
2991
+
2992
+
"We need to ensure that the Extra0Reg is not in conflict with the registers used for the calling convention"
0 commit comments