@@ -857,8 +857,8 @@ unfoldLookupTable input =
857 adaptRuntime $ expandCons evals applys js
857 adaptRuntime $ expandCons evals applys js
859 adaptRuntime :: [JS] -> [JS]
859 adaptRuntime :: [JS] -> [JS]
860− adaptRuntime js =
860+ adaptRuntime =
861− (adaptApplyTC . adaptEval . adaptApply . adaptCon) js
861+ adaptEvalTC . adaptApplyTC . adaptEval . adaptApply . adaptCon
864 adaptApply :: [JS] -> [JS]
864 adaptApply :: [JS] -> [JS]
@@ -943,6 +943,40 @@ unfoldLookupTable input =
947+ adaptEvalTC :: [JS] -> [JS]
948+ adaptEvalTC js = adaptEvalTC' [] js
950+ adaptEvalTC' :: [JS] -> [JS] -> [JS]
951+ adaptEvalTC' front ((JSAlloc "__IDRRT__EVALTC" (Just _)):back) =
954+ adaptEvalTC' front (next:back) =
955+ adaptEvalTC' (front ++ [next]) back
957+ adaptEvalTC' front [] = front
960+ JSAlloc "__IDRRT__EVALTC" (Just $ JSFunction ["marg0"] (
961+ JSSeq [ JSAlloc "ret" $ Just (
963+ (JSIdent "marg0" `jsInstanceOf` jsCon) `jsAnd`
964+ (JSProj (JSIdent "marg0") "eval")
966+ (JSProj (JSIdent "marg0") "eval")
970+ , JSWhile (JSIdent "ret" `jsInstanceOf` (JSIdent "__IDRRT__Cont")) (
971+ JSAssign (JSIdent "ret") (
972+ JSApp (JSProj (JSIdent "ret") "k") []
975+ , JSReturn $ JSIdent "ret"
946 adaptCon js =
980 adaptCon js =
947 adaptCon' [] js
981 adaptCon' [] js