diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2017-02-15 20:17:13 -0500 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2017-02-15 20:17:13 -0500 |
commit | a9d81338b19f21f7220e340a1c50870b40587120 (patch) | |
tree | 509f8ec05d8b8da88b90630031cff5b52b2e5c54 /mem.c | |
parent | 249af91ff9d9ffbd8962efcad999de442e609658 (diff) | |
download | roux-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 'mem.c')
0 files changed, 0 insertions, 0 deletions