summaryrefslogtreecommitdiff
path: root/src/jscomp.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2010-12-23 17:46:40 -0500
committerGravatar Adam Chlipala <adam@chlipala.net>2010-12-23 17:46:40 -0500
commit38d3bc508b3b882e81599bdb0e1d4a2572c23dd0 (patch)
tree31bbf2f979aa12d31eb3977bb6c0cdfe2c57bae9 /src/jscomp.sml
parent867a11af44827af8974250e6dbb5e96b6268b44f (diff)
[De]serialization of times in JavaScript; proper integer division in JavaScript; Basis.crypt; Top.mkRead'; more aggressive Mono-level inlining, for values of function-y types
Diffstat (limited to 'src/jscomp.sml')
-rw-r--r--src/jscomp.sml11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/jscomp.sml b/src/jscomp.sml
index 992a2e30..3b859814 100644
--- a/src/jscomp.sml
+++ b/src/jscomp.sml
@@ -126,6 +126,7 @@ fun process file =
| TFfi ("Basis", "int") => ((EFfiApp ("Basis", "htmlifyInt", [e]), loc), st)
| TFfi ("Basis", "float") => ((EFfiApp ("Basis", "htmlifyFloat", [e]), loc), st)
| TFfi ("Basis", "channel") => ((EFfiApp ("Basis", "jsifyChannel", [e]), loc), st)
+ | TFfi ("Basis", "time") => ((EFfiApp ("Basis", "jsifyTime", [e]), loc), st)
| TFfi ("Basis", "bool") => ((ECase (e,
[((PCon (Enum, PConFfi {mod = "Basis",
@@ -701,7 +702,7 @@ fun process file =
str ",null)}"],
st)
end
- | EBinop (s, e1, e2) =>
+ | EBinop (bi, s, e1, e2) =>
let
val name = case s of
"==" => "eq"
@@ -709,8 +710,8 @@ fun process file =
| "+" => "plus"
| "-" => "minus"
| "*" => "times"
- | "/" => "div"
- | "%" => "mod"
+ | "/" => (case bi of Int => "divInt" | NotInt => "div")
+ | "%" => (case bi of Int => "modInt" | NotInt => "mod")
| "<" => "lt"
| "<=" => "le"
| "strcmp" => "strcmp"
@@ -1039,12 +1040,12 @@ fun process file =
in
((EUnop (s, e), loc), st)
end
- | EBinop (s, e1, e2) =>
+ | EBinop (bi, s, e1, e2) =>
let
val (e1, st) = exp outer (e1, st)
val (e2, st) = exp outer (e2, st)
in
- ((EBinop (s, e1, e2), loc), st)
+ ((EBinop (bi, s, e1, e2), loc), st)
end
| ERecord xets =>