on master help sign in
Merge branch 'master' into old-benchmarks
commitbeca44732ee069a94ccbf7500373a39a34842eff authorEvan Czaplicki <info@elm-lang.org> dateFri 9 Oct 2015, 18:30 (11 years ago) parent2654c5e7ac6c56
9 files changed+21−24
elm-compiler.cabal+2−2 src/AST/Expression/Optimized.hs+1−1 src/Generate/JavaScript/Expression.hs+1−1 src/Nitpick/PatternMatches.hs+2−2 src/Optimize.hs+3−3 src/Optimize/Patterns.hs → src/Optimize/Case.hs+2−2 src/Optimize/Patterns/DecisionTree.hs → src/Optimize/DecisionTree.hs+9−11 src/Optimize/Environment.hs+1−1 tests/Test/Compiler.hs−1
elm-compiler.cabal+2−2
@@ -87,10 +87,10 @@ Library
8787 Nitpick.PatternMatches,
8888 Nitpick.TopLevelTypes,
8989 Optimize,
90+ Optimize.Case,
91+ Optimize.DecisionTree,
9092 Optimize.Environment,
9193 Optimize.Inline,
92− Optimize.Patterns,
93− Optimize.Patterns.DecisionTree,
9494 Parse.Binop,
9595 Parse.Declaration,
9696 Parse.Expression,
src/AST/Expression/Optimized.hs+1−1
@@ -10,7 +10,7 @@ import qualified AST.Literal as Literal
1010import qualified AST.Module.Name as ModuleName
1111import qualified AST.Type as Type
1212import qualified AST.Variable as Var
13−import qualified Optimize.Patterns.DecisionTree as DT
13+import qualified Optimize.DecisionTree as DT
1414import qualified Reporting.Region as R
1515
1616
src/Generate/JavaScript/Expression.hs+1−1
@@ -16,7 +16,7 @@ import qualified Generate.JavaScript.BuiltIn as BuiltIn
1616import qualified Generate.JavaScript.Literal as Literal
1717import qualified Generate.JavaScript.Port as Port
1818import qualified Generate.JavaScript.Variable as Var
19−import qualified Optimize.Patterns.DecisionTree as DT
19+import qualified Optimize.DecisionTree as DT
2020
2121
2222-- CODE CHUNKS
src/Nitpick/PatternMatches.hs+2−2
@@ -15,7 +15,7 @@ import qualified AST.Pattern as Pattern
1515import qualified AST.Variable as Var
1616import Elm.Utils ((|>))
1717import Nitpick.Pattern (Pattern(..), fromCanonicalPattern)
18−import qualified Optimize.Patterns.DecisionTree as Opt
18+import qualified Optimize.DecisionTree as DT
1919import qualified Reporting.Annotation as A
2020import qualified Reporting.Error.Pattern as Error
2121import qualified Reporting.Region as Region
@@ -25,7 +25,7 @@ import qualified Reporting.Result as Result
2525patternMatches
2626 :: Module.Interfaces
2727 -> Module.CanonicalModule
28− -> Result.Result w Error.Error Opt.VariantDict
28+ -> Result.Result w Error.Error DT.VariantDict
2929patternMatches interfaces modul =
3030 let
3131 name = Module.name modul
src/Optimize.hs+3−3
@@ -11,10 +11,10 @@ import qualified AST.Module as Module
1111import qualified AST.Module.Name as ModuleName
1212import qualified AST.Pattern as P
1313import qualified AST.Variable as Var
14+import qualified Optimize.Case as Case
15+import qualified Optimize.DecisionTree as DT
1416import qualified Optimize.Environment as Env
1517import qualified Optimize.Inline as Inline
16−import qualified Optimize.Patterns as Patterns
17−import qualified Optimize.Patterns.DecisionTree as DT
1818import qualified Reporting.Annotation as A
1919import qualified Reporting.Region as R
2020
@@ -257,7 +257,7 @@ optimizeExpr context annExpr@(A.A region expression) =
257257
258258 name <- Env.freshName
259259 optBranches <- T.traverse (optimizeBranch context name) branches
260− optCase <- Patterns.optimize variantDict region name optBranches
260+ optCase <- Case.optimize variantDict region name optBranches
261261 return $ Opt.Let [ Opt.Def Opt.dummyFacts name optExpr ] optCase
262262
263263 Expr.Data name exprs ->
src/Optimize/Patterns.hs → src/Optimize/Case.hsrenamed+2−2
@@ -1,5 +1,5 @@
11{-# OPTIONS_GHC -Wall #-}
2−module Optimize.Patterns (optimize) where
2+module Optimize.Case (optimize) where
33
44import Control.Arrow (second)
55import qualified Data.Map as Map
@@ -8,8 +8,8 @@ import qualified Data.Maybe as Maybe
88
99import qualified AST.Expression.Optimized as Opt
1010import qualified AST.Pattern as P
11+import qualified Optimize.DecisionTree as DT
1112import qualified Optimize.Environment as Env
12−import qualified Optimize.Patterns.DecisionTree as DT
1313import qualified Reporting.Annotation as A
1414import qualified Reporting.Region as R
1515
src/Optimize/Patterns/DecisionTree.hs → src/Optimize/DecisionTree.hsrenamed+9−11
@@ -1,5 +1,5 @@
11{-# OPTIONS_GHC -Wall #-}
2−module Optimize.Patterns.DecisionTree where
2+module Optimize.DecisionTree where
33{- To learn more about how this works, definitely read through:
44
55 "When Do Match-Compilation Heuristics Matter?"
@@ -252,18 +252,16 @@ gatherEdges variantDict branches path =
252252 relevantTests =
253253 testsAtPath path branches
254254
255− allRawEdges =
255+ allEdges =
256256 map (edgesFor path branches) relevantTests
257+
258+ fallbacks =
259+ if isComplete variantDict relevantTests then
260+ []
261+ else
262+ filter (isIrrelevantTo path) branches
257263 in
258− if isComplete variantDict relevantTests then
259− ( init allRawEdges
260− , snd (last allRawEdges)
261− )
262−
263− else
264− ( allRawEdges
265− , filter (isIrrelevantTo path) branches
266− )
264+ ( allEdges, fallbacks )
267265
268266
269267-- FIND RELEVANT TESTS
src/Optimize/Environment.hs+1−1
@@ -8,7 +8,7 @@ module Optimize.Environment
88
99import qualified Control.Monad.State as State
1010
11−import qualified Optimize.Patterns.DecisionTree as DT
11+import qualified Optimize.DecisionTree as DT
1212
1313
1414type Optimizer a =
tests/Test/Compiler.hs−1
@@ -6,7 +6,6 @@ import Control.Exception (try, IOException)
66
77import qualified Data.Map as Map
88import Data.Maybe (isJust)
9−import Data.Traversable (traverse)
109
1110import System.Directory (createDirectoryIfMissing)
1211import System.Environment (lookupEnv)