[get ready to use linear var analysis
John Meacham <john@repetae.net>**20050913092910] hunk ./Grin/Linear.hs 15
-    deriving(Show)
+    deriving(Ord,Eq,Show)
hunk ./Grin/Linear.hs 24
+    mappend x y = error $ "mappend: " ++ show (x,y)
hunk ./Grin/PointsToAnalysis.hs 27
+import Grin.Linear
hunk ./Grin/PointsToAnalysis.hs 223
+    wdump FD.Progress $ CharIO.putErrLn "Linear nodes analysis..."
+    lr <- Grin.Linear.grinLinear grin
+
hunk ./Grin/PointsToAnalysis.hs 228
-        f (eq,hc) (n,l) = mapFst (mappend eq) $ collect hc (mh eq + 1) n l
+        f (eq,hc) (n,l) = mapFst (mappend eq) $ collect (Map.fromList lr) hc (mh eq + 1) n l
hunk ./Grin/PointsToAnalysis.hs 340
-collect :: HcHash -> Int -> Atom -> Lam -> (PointsToEq,HcHash)
-collect hc st fname (Tup vs :-> exp')
+collect :: Map.Map Var W -> HcHash -> Int -> Atom -> Lam -> (PointsToEq,HcHash)
+collect lmap hc st fname (Tup vs :-> exp')
hunk ./Grin/PointsToAnalysis.hs 348
+    isHole (Con t _) | t == tagHole = True
+    isHole _ = False
+
+    f (Store { expValue = val } :>>= var@(Var v _) :-> exp2) = do
+        p <- toPos val
+        p' <- if Map.lookup v lmap == Just One then newHeap UnsharedEval p else newHeap SharedEval p
+        bind var p'
+        f exp2
+
hunk ./Grin/PointsToAnalysis.hs 432
-collect _ _ _ _ = error "collect: bad argument"
+collect _ _ _ _ _ = error "collect: bad argument"
hunk ./Grin/PointsToAnalysis.hs 483
+
+
hunk ./Grin/PointsToAnalysis.hs 596
-                    Just (e',_) -> dynamicRule e' $ \e -> do
+                    Just (e',(x,_)) | True || x /= UnsharedEval -> dynamicRule e' $ \e -> do
hunk ./Grin/PointsToAnalysis.hs 599
-                    Nothing -> return ()
+                    _ -> return ()
hunk ./Main.hs 36
-import Grin.Linear
hunk ./Main.hs 270
-    --wdump FD.Progress $ putErrLn "Linear nodes analysis..."
-    --lr <- Grin.Linear.grinLinear x
-    --mapM_ CharIO.print lr