diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2014-11-07 11:56:34 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2014-11-07 11:56:34 -0800 |
commit | 57b367448ab53f344ca7e524e1f390f6190e51ed (patch) | |
tree | 3edff3d6566f3aeff1379b07bedee2e0c2ecfb5f | |
parent | 0ecba1bcb1440d27d1c9335491d77981d611e600 (diff) | |
download | mu-57b367448ab53f344ca7e524e1f390f6190e51ed.tar.gz |
251
-rw-r--r-- | mu.arc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/mu.arc b/mu.arc index e8e6a048..469990d0 100644 --- a/mu.arc +++ b/mu.arc @@ -226,6 +226,9 @@ ((abort-routine*))) ;; running a single routine +(def nondummy (operand) ; precondition for helpers below + (~is '_ operand)) + (mac v (operand) ; for value `(,operand 0)) @@ -542,7 +545,7 @@ (let (caller-oargs _ _) (parse-instr (body.routine* pc.routine*)) (trace "reply" arg " " caller-oargs) (each (dest val) (zip caller-oargs results) - (unless (is dest '_) + (when nondummy.dest (trace "reply" val " => " dest) (setm dest val)))) (++ pc.routine*) @@ -566,7 +569,7 @@ ;? (prn "store: " tmp " " oarg) (if (acons tmp) (for i 0 (< i (min len.tmp len.oarg)) ++.i - (unless (is oarg.i '_) + (when (nondummy oarg.i) (setm oarg.i tmp.i))) (when oarg ; must be a list (trace "run" "writing to oarg " tmp " => " oarg.0) @@ -738,16 +741,16 @@ (each instr instrs (let (oargs op args) (parse-instr instr) (each arg args - (when (and acons.arg (offset v.arg)) + (when (and nondummy.arg (offset v.arg)) (zap offset v.arg))) (each arg oargs - (when (and acons.arg (offset v.arg)) + (when (and nondummy.arg (offset v.arg)) (zap offset v.arg))))) instrs)) (def maybe-add (arg offset idx) (trace "maybe-add" arg) - (when (and (~is arg '_) + (when (and nondummy.arg (~in ty.arg 'literal 'offset 'fn) (~offset v.arg) (isa v.arg 'sym) |