git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Restore fn application operator inlining
commitbecdfd8ee3ac33c168c2511a064457c80dbeef3a authorAndy Arvanitis <andyarvanitis@gmail.com> dateSun 30 Jun 2019, 20:16 (7 years ago) parentbd188c8
2 files changed+5−17
src/CodeGen/IL/Optimizer.hs−12 src/CodeGen/IL/Optimizer/Inliner.hs+5−5
src/CodeGen/IL/Optimizer.hs−12
@@ -51,18 +51,6 @@ untilFixedPoint f = go
5151 a' <- f a
5252 if a' == a then return a' else go a'
5353
54−-- | Overridden from CoreImp
55−
56−-- inlineApply :: AST -> AST
57−-- inlineApply = everywhereTopDown convert where
58−-- convert (App ss (App _ (Indexer _ (Var _ apply) (Var _ dataFunction)) [ f ]) [ arg ])
59−-- | apply == C.apply && dataFunction == C.dataFunction
60−-- = App ss f [ arg ]
61−-- convert (App ss (App _ (Indexer _ (Var _ applyFlipped) (Var _ dataFunction)) [ arg ]) [ f ])
62−-- | applyFlipped == C.applyFlipped && dataFunction == C.dataFunction
63−-- = App ss f [ arg ]
64−-- convert other = other
65−
6654collapseIfChecks :: AST -> AST
6755collapseIfChecks = everywhere collapse where
6856 collapse :: AST -> AST
src/CodeGen/IL/Optimizer/Inliner.hs+5−5
@@ -177,7 +177,7 @@ inlineCommonOperators = everywhereTopDown $ applyAll $
177177 collectArgs _ _ _ = Nothing
178178
179179 isNFn :: Text -> Text -> Int -> AST -> Bool
180− isNFn expectMod prefix n (Indexer _ (StringLiteral _ name) (Var _ modName)) | modName == expectMod =
180+ isNFn expectMod prefix n (Indexer _ (Var _ name) (Var _ modName)) | modName == expectMod =
181181 name == fromString (T.unpack prefix <> show n)
182182 isNFn _ _ _ _ = False
183183
@@ -206,13 +206,13 @@ inlineCommonOperators = everywhereTopDown $ applyAll $
206206 convert other = other
207207
208208 isModFn :: (Text, PSString) -> AST -> Bool
209− isModFn (m, op) (Indexer _ (StringLiteral _ op') (Var _ m')) =
210− m == m' && op == op'
209+ isModFn (m, op) (Indexer _ (Var _ op') (Var _ m')) =
210+ m == m' && decodeString op == Just op'
211211 isModFn _ _ = False
212212
213213 isModFnWithDict :: (Text, PSString) -> AST -> Bool
214− isModFnWithDict (m, op) (App _ (Indexer _ (StringLiteral _ op') (Var _ m')) [Var _ _]) =
215− m == m' && op == op'
214+ isModFnWithDict (m, op) (App _ (Indexer _ (Var _ op') (Var _ m')) [Var _ _]) =
215+ m == m' && decodeString op == Just op'
216216 isModFnWithDict _ _ = False
217217
218218-- (f <<< g $ x) = f (g x)