summary refs log tree commit diff
path: root/test/abi3.ssa
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2017-02-15 20:17:13 -0500
committerQuentin Carbonneaux <quentin.carbonneaux@yale.edu>2017-02-15 20:17:13 -0500
commita9d81338b19f21f7220e340a1c50870b40587120 (patch)
tree509f8ec05d8b8da88b90630031cff5b52b2e5c54 /test/abi3.ssa
parent249af91ff9d9ffbd8962efcad999de442e609658 (diff)
downloadroux-a9d81338b19f21f7220e340a1c50870b40587120.tar.gz
add support for closure calls
Compiling languages with closures often requires passing
an extra environment parameter to the called function.

One solution is to use a convention, and reserve, say,
the first argument for that purpose.   However, that
makes binding to C a little less smooth.

Alternatively, QBE now provides a way to remain fully
ABI compatible with C by having a "hidden" environment
argument (marked with the keyword 'env').  Calling a
function expecting an environment from C will make the
contents of the environment undefined, but the normal
arguments will be passed without alteration.  Conversely,
calling a C function like it is a closure by passing
it an environemnt will work smoothly.
Diffstat (limited to 'test/abi3.ssa')
0 files changed, 0 insertions, 0 deletions