This fixes #21708 (closed) by reimplementing
keepAlive# as an out-of-line primop which manually pushes a stack frame, essentially reverting to Option (A) as described on the wiki page. This is not particularly efficient but is more robust than the previous implementation in terms of
We can further optimise this approach by implementing #16098 and teaching the code generator to inline the frame push (Option C). This would allow us to avoid the construction of the continuation closure and the associated calls.