How to efficiently implement closures in LLVM IR?

后端 未结 2 1134
没有蜡笔的小新
没有蜡笔的小新 2021-02-04 01:11

I started adding closures (lambdas) to my language that uses LLVM as the backend. I have implemented them for simple cases where they can be always inlined i.e. code for the clo

2条回答
  •  暖寄归人
    2021-02-04 01:47

    Sounds doable and efficient.

    The alternative way, that does not need trampolines, is to define closure type as a pair of function pointer and pointer to environment ie stack pointer. In C calling convention the extra arguments are ignored so if you provide environment as last argument you can even use (function_ptr, null) as callback for regular function.

提交回复
热议问题