on master help sign in
javascript: remove more continuations
commitc847db7b9303b80b4b09dc0ea674f94260b955db authorraichoo <raichoo@googlemail.com> dateSun 16 Feb 2014, 21:10 (13 years ago) parent64f55f6
1 file changed+20−5
src/IRTS/CodegenJavaScript.hs+20−5
src/IRTS/CodegenJavaScript.hs+20−5
@@ -741,14 +741,29 @@ inlineFunctions js =
741741
742742
743743reduceContinuations :: JS -> JS
744−reduceContinuations = transformJS reduceHelper
744+reduceContinuations = inlineTC . reduceJS
745745 where
746− reduceHelper :: JS -> JS
747− reduceHelper (JSNew "__IDRRT__Cont" [JSFunction [] (
746+ reduceJS :: JS -> JS
747+ reduceJS (JSNew "__IDRRT__Cont" [JSFunction [] (
748748 JSReturn js@(JSNew "__IDRRT__Cont" [JSFunction [] body])
749− )]) = js
749+ )]) = reduceJS js
750+
751+ reduceJS js = transformJS reduceJS js
752+
753+
754+ inlineTC :: JS -> JS
755+ inlineTC 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" _)
760+ )])
761+ )])
762+ )] <- js = inlineTC ret
763+
764+ inlineTC js = transformJS inlineTC js
765+
750766
751− reduceHelper js = transformJS reduceHelper js
752767
753768
754769reduceConstant :: JS -> JS