@@ -741,14 +741,29 @@ inlineFunctions js =
743reduceContinuations :: JS -> JS
743reduceContinuations :: JS -> JS
744−reduceContinuations = transformJS reduceHelper
744+reduceContinuations = inlineTC . reduceJS
746− reduceHelper :: JS -> JS
746+ reduceJS :: JS -> JS
747− reduceHelper (JSNew "__IDRRT__Cont" [JSFunction [] (
747+ reduceJS (JSNew "__IDRRT__Cont" [JSFunction [] (
748 JSReturn js@(JSNew "__IDRRT__Cont" [JSFunction [] body])
748 JSReturn js@(JSNew "__IDRRT__Cont" [JSFunction [] body])
749− )]) = js
749+ )]) = reduceJS js
751+ reduceJS js = transformJS reduceJS js
754+ inlineTC :: JS -> JS
756+ | JSApp (JSIdent "__IDRRT__tailcall") [JSFunction [] (
757+ JSReturn (JSNew "__IDRRT__Cont" [JSFunction [] (
758+ JSReturn ret@(JSApp (JSIdent "__IDRRT__tailcall") [JSFunction [] (
759+ JSReturn (JSNew "__IDRRT__Cont" _)
762+ )] <- js = inlineTC ret
764+ inlineTC js = transformJS inlineTC js
751− reduceHelper js = transformJS reduceHelper js
754reduceConstant :: JS -> JS
769reduceConstant :: JS -> JS