X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fcmm%2FDataflow.hs;h=fc1b5769f6df500eb48d651882e904722dd4106c;hp=35fdebbce4df55a0d9eac145bc25c8aac3cff099;hb=edc0bafd3fcd01b85a2e8894e5dfe149eb0e0857;hpb=569348e87434f2a8d9e18dccac8b4a563b4eb363 diff --git a/compiler/cmm/Dataflow.hs b/compiler/cmm/Dataflow.hs index 35fdebb..fc1b576 100644 --- a/compiler/cmm/Dataflow.hs +++ b/compiler/cmm/Dataflow.hs @@ -7,7 +7,7 @@ module Dataflow ( ----------------------------------------------------------------------------- -- | Solve the fixed-point of a dataflow problem. -- --- Complexity: O(N+H*E) calls to 'update' where +-- Complexity: O(N+H*E) calls to the update function where: -- N = number of nodes, -- E = number of edges, -- H = maximum height of the lattice for any particular node. @@ -24,10 +24,10 @@ module Dataflow ( -- that is H*E. The N term of the complexity is from the initial call -- when 'update' will be passed 'Nothing'. fixedpoint :: - (node -> [node]) -- ^ map from nodes to those who's + (node -> [node]) -- map from nodes to those who's -- value depend on the argument node -> (node -> Maybe node -> s -> Maybe s) - -- ^ Given the node which needs to be + -- Given the node which needs to be -- updated, and which node caused that node -- to need to be updated, update the state. -- @@ -37,13 +37,13 @@ fixedpoint :: -- Must return 'Nothing' if no change, -- otherwise returrn 'Just' of the new state. - -> [node] -- ^ Nodes that should initially be updated + -> [node] -- Nodes that should initially be updated - -> s -- ^ Initial state + -> s -- Initial state -- (usually a map from node to -- the value for that node) - -> s -- ^ Final state + -> s -- Final state fixedpoint dependants update nodes state = foldr (fixedpoint' Nothing) state nodes where -- Use a depth first traversal of nodes based on the update graph.