Currently, we are using simple recursive call for coroutine lowering in CoroSplit LLVM pass. However, it limits number of suspension chains due to the limitation of number of call frames.
In theory, with tail-call feature, which is now in standardizing phase, we can use swiftasynccall calling convention and musttail call to ensure the call is tail-called, and it will remove the limitation of the length of suspension chain.
Let's enable swiftasynccall calling convention with tail-call feature
Blockers
Currently, we are using simple recursive call for coroutine lowering in CoroSplit LLVM pass. However, it limits number of suspension chains due to the limitation of number of call frames.
In theory, with tail-call feature, which is now in standardizing phase, we can use
swiftasynccallcalling convention andmusttail callto ensure the call is tail-called, and it will remove the limitation of the length of suspension chain.Let's enable
swiftasynccallcalling convention with tail-call featureBlockers