on master help sign in
javascript: optimize more constructor cases
c551412raichoo
src/IRTS/CodegenJavaScript.hs+7−7
@@ -224,14 +224,14 @@ jsSubst var (x@(JSVar old) : xs) new
224jsSubst _ xs _ = xs
224jsSubst _ xs _ = xs
225
225
226optimizeJS :: JS -> JS
226optimizeJS :: JS -> JS
227−optimizeJS (JSApp
228− (JSFunction [arg] (JSReturn ret))
227+optimizeJS (JSApp (JSFunction [arg] (JSReturn ret)) [val])
229− [val]
230− )
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))
234+ )]
235
235
236optimizeJS (JSSeq seq) =
236optimizeJS (JSSeq seq) =
237 JSSeq (map optimizeJS seq)
237 JSSeq (map optimizeJS seq)