summaryrefslogtreecommitdiffstats
path: root/codegen.sml
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-06-02 09:17:55 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-06-02 09:17:55 -0700
commit22b8b7e2478e3b205c89cc7a700058bfe39175f2 (patch)
treead6cf17b8729ab9af71d4d731162e738f3a7b057 /codegen.sml
parent90c4eac546d2c950b27a84ef0e390ac33a1a347d (diff)
downloadsml-22b8b7e2478e3b205c89cc7a700058bfe39175f2.tar.zst
Add strings and IO.
Diffstat (limited to 'codegen.sml')
-rw-r--r--codegen.sml6
1 files changed, 6 insertions, 0 deletions
diff --git a/codegen.sml b/codegen.sml
index 9dbee51..67b2d30 100644
--- a/codegen.sml
+++ b/codegen.sml
@@ -169,6 +169,12 @@ struct
@ Syntax.OLabel trueLabel
:: go k1
end
+ | Syntax.CPrimop (Syntax.PRead, [Syntax.VVar ptr, off, len], [res], [k]) =>
+ Syntax.ORead (translate res, translate ptr, translateVal off, translateVal len) :: go k
+ | Syntax.CPrimop (Syntax.PWrite, [Syntax.VVar ptr, off, len], _, [k]) =>
+ Syntax.OWrite (translate ptr, translateVal off, translateVal len) :: go k
+ | Syntax.CPrimop (Syntax.PWriteErr, [Syntax.VVar ptr, off, len], _, [k]) =>
+ Syntax.OWriteErr (translate ptr, translateVal off, translateVal len) :: go k
| _ => raise Fail ("malformed CPS:\n" ^ Syntax.cexpToString expr)
in go expr
end