diff src/mono_reduce.sml @ 1423:bd6c90f5a428

Fix some cookie-related bugs in MonoReduce
author Adam Chlipala <adam@chlipala.net>
date Thu, 10 Feb 2011 08:46:46 -0500
parents d328983dc5a6
children 6e6f1643c4e9
line wrap: on
line diff
--- a/src/mono_reduce.sml	Tue Feb 08 16:54:01 2011 -0500
+++ b/src/mono_reduce.sml	Thu Feb 10 08:46:46 2011 -0500
@@ -76,7 +76,7 @@
       | EDml _ => true
       | ENextval _ => true
       | ESetval _ => true
-      | EUnurlify _ => false
+      | EUnurlify (e, _, _) => impure e
       | EAbs _ => false
 
       | EPrim _ => false
@@ -395,6 +395,10 @@
                       | EFfi _ => []
                       | EFfiApp ("Basis", "get_cookie", [e]) =>
                         summarize d e @ [ReadCookie]
+                      | EFfiApp ("Basis", "set_cookie", es) =>
+                        List.concat (map (summarize d) es) @ [WriteCookie]
+                      | EFfiApp ("Basis", "clear_cookie", es) =>
+                        List.concat (map (summarize d) es) @ [WriteCookie]
                       | EFfiApp (m, x, es) =>
                         if Settings.isEffectful (m, x) orelse Settings.isBenignEffectful (m, x) then
                             List.concat (map (summarize d) es) @ [if m = "Basis" andalso String.isSuffix "_w" x then
@@ -523,8 +527,8 @@
                                 val r = subExpInExp (0, e') b
                             in
                                 (*Print.prefaces "doSub" [("e'", MonoPrint.p_exp env e'),
-                                                          ("b", MonoPrint.p_exp (E.pushERel env x t NONE) b),
-                                                          ("r", MonoPrint.p_exp env r)];*)
+                                                        ("b", MonoPrint.p_exp (E.pushERel env x t NONE) b),
+                                                        ("r", MonoPrint.p_exp env r)];*)
                                 #1 (reduceExp env r)
                             end