changeset 5:80e224fff567

Fix handling of true case in if:else
author Michael Pavone <pavone@retrodev.com>
date Fri, 25 Jul 2014 11:04:00 -0700
parents eaf0a014d18b
children 0ab6eb5f0190
files code/lmc.tp
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/code/lmc.tp	Fri Jul 25 10:56:27 2014 -0700
+++ b/code/lmc.tp	Fri Jul 25 11:04:00 2014 -0700
@@ -123,6 +123,7 @@
 		args <- args tail
 		tlabel <- prog makeLabel: "true"
 		flabel <- prog makeLabel: "false"
+		elabel <- prog makeLabel: "end"
 		prog add: (inst: "TSEL" #[
 			tlabel 
 			flabel
@@ -131,11 +132,17 @@
 		foreach: ((args value) expressions) :idx expr {
 			compileExpr: expr
 		}
+		prog add: (inst: "LDC" #[1])
+		prog add: (inst: "TSEL" #[
+			elabel
+			elabel
+		])
 		args <- args tail
 		prog setLabel: flabel
 		foreach: ((args value) expressions) :idx expr {
 			compileExpr: expr
 		}
+		prog setLabel: elabel
 	}
 	_funHandlers set: "isInteger?" :args {
 		compileExpr: (args value)