[make pattern matching create join points rather than thunks for repeated code
John Meacham <john@repetae.net>**20060814044221] hunk ./E/FromHs.hs 677
+        isJoinPoint (EAp (EVar x) _) | getProperty prop_JOINPOINT x = True
+        isJoinPoint _ = False
hunk ./E/FromHs.hs 682
-            if isEVar err' || isEError err' then
+            if isEVar err' || isEError err' || isJoinPoint err' then
hunk ./E/FromHs.hs 685
-                [ev] <- newVars [getType err']
-                nm <- g ps (EVar ev)
-                return $ eLetRec [(ev,err')] nm
+                [ev] <- newVars [EPi tvr { tvrType = unboxedTyUnit } $ getType err']
+                let ev' = setProperties [prop_ONESHOT, prop_JOINPOINT] ev
+                nm <- g ps (EAp (EVar ev') unboxedUnit)
+                return $ eLetRec [(ev',ELam (setProperty prop_ONESHOT tvr { tvrType = unboxedTyUnit }) err')] nm
hunk ./E/Values.hs 35
-eTuple' es = ELit $ LitCons (unboxedNameTuple DataConstructor (length es)) es (ltTuple' ts) where
-    ts = map getType es
-
-
+eTuple' es = ELit $ unboxedTuple es
hunk ./E/Values.hs 40
+unboxedUnit :: E
+unboxedUnit =  ELit $ unboxedTuple []
+
+unboxedTyUnit :: E
+unboxedTyUnit = ltTuple' []