[gambit-list] C FFI calls recap
adam.mlmb at gmail.com
Wed Jun 5 01:24:47 EDT 2019
Hi Marc and list,
Can you help me recap the speed aspect of C FFI use in C-compiled Scheme
"Trampoline" in Gambit means specifically inter-module calls between
C-compiled Scheme files, as well as call between binary backend-compiled
code and C-compiled code, right.
When you make a call to the C world from a C-compiled Scheme file, or vice
versa when you call the Scheme world from the C world within a C-compiled
Scheme file, I recall a bit of work takes place. This is not called a
"trampoline" right, per above.
It's called "continuation serialization", and which includes some Scheme
stack and heap overflow checks?
This work is an implied part of all the standard C FFI code forms
|c-lambda| |c-define| |c-initialize| isn't it, also this is independent of
compile mode e.g. (declare (not safe)), yes?
About how heavy is it, per call?
For even-higher-speed C access, such as doing tons of C or C++
acquire/release operations inlined in Scheme code, given acceptance of
constraints on what my code does (to not overflow the Scheme stack/heap),
can I use a C FFI form that does not do that?
If so, which one is it - |##c-code|?
Please clarify what I cannot do in |##c-code|.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Gambit-list