@@ -224,14 +224,14 @@ jsSubst var (x@(JSVar old) : xs) new
224jsSubst _ xs _ = xs
224jsSubst _ xs _ = xs
226optimizeJS :: JS -> JS
226optimizeJS :: JS -> JS
228− (JSFunction [arg] (JSReturn ret))
227+optimizeJS (JSApp (JSFunction [arg] (JSReturn ret)) [val])
231 | JSNew con [tag, JSArray vals] <- ret =
228 | JSNew con [tag, JSArray vals] <- ret =
232− JSNew con [tag, JSArray $ jsSubst arg vals (optimizeJS val)]
229+ JSNew con [tag, JSArray $ jsSubst arg vals (optimizeJS val)]
233− | JSApp (JSRaw tc@"__IDRRT__tailcall") [fun, JSArray args] <- ret =
230+
231+ | JSNew con [JSFunction [] (JSReturn (JSApp fun vars))] <- ret =
232+ JSNew con [JSFunction [] (
234− JSApp (JSRaw tc) [fun, JSArray $ jsSubst arg args (optimizeJS val)]
233+ JSReturn $ JSApp fun (jsSubst arg vars (optimizeJS val))
236optimizeJS (JSSeq seq) =
236optimizeJS (JSSeq seq) =
237 JSSeq (map optimizeJS seq)
237 JSSeq (map optimizeJS seq)