diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-09-13 10:44:58 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-09-13 10:44:58 -0400 |
commit | fd2079464d7b65430af09f2734fa55039006a3e3 (patch) | |
tree | a82ea4c81cadfae6a2692d0004068301cb57aa5e /src/mono_opt.sml | |
parent | 83f4f01d3475248237bfea2e01d6e007c23153ff (diff) |
Optimize immediate writes of query results
Diffstat (limited to 'src/mono_opt.sml')
-rw-r--r-- | src/mono_opt.sml | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mono_opt.sml b/src/mono_opt.sml index 373f5b27..64eef7e3 100644 --- a/src/mono_opt.sml +++ b/src/mono_opt.sml @@ -280,6 +280,19 @@ fun exp e = {disc = disc, result = (TRecord [], loc)}), loc) + | EWrite (EQuery {exps, tables, state, query, + initial = (EPrim (Prim.String ""), _), + body = (EStrcat ((EPrim (Prim.String s), _), + (EStrcat ((ERel 0, _), + e'), _)), _)}, loc) => + if CharVector.all Char.isSpace s then + EQuery {exps = exps, tables = tables, query = query, + state = (TRecord [], loc), + initial = (ERecord [], loc), + body = (optExp (EWrite e', loc), loc)} + else + e + | _ => e and optExp e = #1 (U.Exp.map {typ = typ, exp = exp} e) |