summaryrefslogtreecommitdiff
path: root/src/mono_opt.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-09-11 11:53:33 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-09-11 11:53:33 -0400
commit68b19325dff1bc9cb7ec62a18d1848e3d5b7954c (patch)
treea40a47e8d19e948c73229c5e14a739f5156ec871 /src/mono_opt.sml
parent2818df6f0040837fe5252a3be697997477d3becd (diff)
Expand scope of base type conversion coalesce optimizations
Diffstat (limited to 'src/mono_opt.sml')
-rw-r--r--src/mono_opt.sml21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mono_opt.sml b/src/mono_opt.sml
index 510f4c56..373f5b27 100644
--- a/src/mono_opt.sml
+++ b/src/mono_opt.sml
@@ -155,6 +155,12 @@ fun exp e =
EPrim (Prim.String (htmlifyInt n))
| EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "intToString", es), _)]) =>
EFfiApp ("Basis", "htmlifyInt", es)
+ | EFfiApp ("Basis", "htmlifyString", [(EApp ((EFfi ("Basis", "intToString"), _),
+ (EPrim (Prim.Int n), _)), _)]) =>
+ EPrim (Prim.String (htmlifyInt n))
+ | EFfiApp ("Basis", "htmlifyString", [(EApp ((EFfi ("Basis", "intToString"), _),
+ e), _)]) =>
+ EFfiApp ("Basis", "htmlifyInt", [e])
| EWrite (EFfiApp ("Basis", "htmlifyInt", [e]), _) =>
EFfiApp ("Basis", "htmlifyInt_w", [e])
@@ -162,6 +168,12 @@ fun exp e =
EPrim (Prim.String (htmlifyFloat n))
| EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "floatToString", es), _)]) =>
EFfiApp ("Basis", "htmlifyFloat", es)
+ | EFfiApp ("Basis", "htmlifyString", [(EApp ((EFfi ("Basis", "floatToString"), _),
+ (EPrim (Prim.Float n), _)), _)]) =>
+ EPrim (Prim.String (htmlifyFloat n))
+ | EFfiApp ("Basis", "htmlifyString", [(EApp ((EFfi ("Basis", "floatToString"), _),
+ e), _)]) =>
+ EFfiApp ("Basis", "htmlifyFloat", [e])
| EWrite (EFfiApp ("Basis", "htmlifyFloat", [e]), _) =>
EFfiApp ("Basis", "htmlifyFloat_w", [e])
@@ -173,6 +185,15 @@ fun exp e =
EPrim (Prim.String "False")
| EFfiApp ("Basis", "htmlifyString", [(EFfiApp ("Basis", "boolToString", es), _)]) =>
EFfiApp ("Basis", "htmlifyBool", es)
+ | EFfiApp ("Basis", "htmlifyString", [(EApp ((EFfi ("Basis", "boolToString"), _),
+ (ECon (Enum, PConFfi {con = "True", ...}, NONE), _)), _)]) =>
+ EPrim (Prim.String "True")
+ | EFfiApp ("Basis", "htmlifyString", [(EApp ((EFfi ("Basis", "boolToString"), _),
+ (ECon (Enum, PConFfi {con = "False", ...}, NONE), _)), _)]) =>
+ EPrim (Prim.String "False")
+ | EFfiApp ("Basis", "htmlifyString", [(EApp ((EFfi ("Basis", "boolToString"), _),
+ e), _)]) =>
+ EFfiApp ("Basis", "htmlifyBool", [e])
| EWrite (EFfiApp ("Basis", "htmlifyBool", [e]), _) =>
EFfiApp ("Basis", "htmlifyBool_w", [e])