comparison src/mono_reduce.sml @ 1663:0577be31a435

First part of changes to avoid depending on C function call argument order of evaluation (omitting normal Ur function calls, so far)
author Adam Chlipala <adam@chlipala.net>
date Sat, 07 Jan 2012 15:56:22 -0500
parents 4437b008e0ab
children 62c18ecbfec4
comparison
equal deleted inserted replaced
1662:edf86cef0dba 1663:0577be31a435
388 | ECon (_, _, NONE) => [] 388 | ECon (_, _, NONE) => []
389 | ECon (_, _, SOME e) => summarize d e 389 | ECon (_, _, SOME e) => summarize d e
390 | ENone _ => [] 390 | ENone _ => []
391 | ESome (_, e) => summarize d e 391 | ESome (_, e) => summarize d e
392 | EFfi _ => [] 392 | EFfi _ => []
393 | EFfiApp ("Basis", "get_cookie", [e]) => 393 | EFfiApp ("Basis", "get_cookie", [(e, _)]) =>
394 summarize d e @ [ReadCookie] 394 summarize d e @ [ReadCookie]
395 | EFfiApp ("Basis", "set_cookie", es) => 395 | EFfiApp ("Basis", "set_cookie", es) =>
396 List.concat (map (summarize d) es) @ [WriteCookie] 396 List.concat (map (summarize d o #1) es) @ [WriteCookie]
397 | EFfiApp ("Basis", "clear_cookie", es) => 397 | EFfiApp ("Basis", "clear_cookie", es) =>
398 List.concat (map (summarize d) es) @ [WriteCookie] 398 List.concat (map (summarize d o #1) es) @ [WriteCookie]
399 | EFfiApp (m, x, es) => 399 | EFfiApp (m, x, es) =>
400 if Settings.isEffectful (m, x) orelse Settings.isBenignEffectful (m, x) then 400 if Settings.isEffectful (m, x) orelse Settings.isBenignEffectful (m, x) then
401 List.concat (map (summarize d) es) @ [if m = "Basis" andalso String.isSuffix "_w" x then 401 List.concat (map (summarize d o #1) es) @ [if m = "Basis" andalso String.isSuffix "_w" x then
402 WritePage 402 WritePage
403 else 403 else
404 Unsure] 404 Unsure]
405 else 405 else
406 List.concat (map (summarize d) es) 406 List.concat (map (summarize d o #1) es)
407 | EApp ((EFfi _, _), e) => summarize d e 407 | EApp ((EFfi _, _), e) => summarize d e
408 | EApp _ => 408 | EApp _ =>
409 let 409 let
410 fun unravel (e, passed, ls) = 410 fun unravel (e, passed, ls) =
411 case e of 411 case e of