diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2014-12-14 09:50:10 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2014-12-14 09:50:10 -0800 |
commit | 7b2a710e32b65120638a42bd7c38f05bff380ca3 (patch) | |
tree | 3c456b4bbac2fad1a117b847c7f80533a8f6d3e8 | |
parent | decedd0b1e1adc7bf3f44ecfc6ecf7db33c0b46c (diff) | |
download | mu-7b2a710e32b65120638a42bd7c38f05bff380ca3.tar.gz |
426
-rw-r--r-- | mu.arc | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/mu.arc b/mu.arc index 6f3bb029..2648078e 100644 --- a/mu.arc +++ b/mu.arc @@ -781,36 +781,36 @@ (pop stack) (continue)) (let (oarg op arg) (parse-instr instr) - (trace "c{1" pc " " op " " oarg) - (case op - break - (do - (assert (is oarg nil) "break: can't take oarg in @instr") - (yield `(((jump)) ((,(close-offset pc locs (and arg (v arg.0))) offset))))) - break-if - (do - (assert (is oarg nil) "break-if: can't take oarg in @instr") - (yield `(((jump-if)) ,arg.0 ((,(close-offset pc locs (and cdr.arg (v arg.1))) offset))))) - break-unless - (do - (assert (is oarg nil) "break-unless: can't take oarg in @instr") - (yield `(((jump-unless)) ,arg.0 ((,(close-offset pc locs (and cdr.arg (v arg.1))) offset))))) - loop - (do - (assert (is oarg nil) "loop: can't take oarg in @instr") - (yield `(((jump)) ((,(open-offset pc stack (and arg (v arg.0))) offset))))) - loop-if - (do - (trace "cvt0" "loop-if: " instr " => " (- stack.0 1)) - (assert (is oarg nil) "loop-if: can't take oarg in @instr") - (yield `(((jump-if)) ,arg.0 ((,(open-offset pc stack (and cdr.arg (v arg.1))) offset))))) - loop-unless - (do - (trace "cvt0" "loop-if: " instr " => " (- stack.0 1)) - (assert (is oarg nil) "loop-unless: can't take oarg in @instr") - (yield `(((jump-unless)) ,arg.0 ((,(open-offset pc stack (and cdr.arg (v arg.1))) offset))))) - ;else - (yield instr))) + (trace "c{1" pc " " op " " oarg) + (case op + break + (do + (assert (is oarg nil) "break: can't take oarg in @instr") + (yield `(((jump)) ((,(close-offset pc locs (and arg (v arg.0))) offset))))) + break-if + (do + (assert (is oarg nil) "break-if: can't take oarg in @instr") + (yield `(((jump-if)) ,arg.0 ((,(close-offset pc locs (and cdr.arg (v arg.1))) offset))))) + break-unless + (do + (assert (is oarg nil) "break-unless: can't take oarg in @instr") + (yield `(((jump-unless)) ,arg.0 ((,(close-offset pc locs (and cdr.arg (v arg.1))) offset))))) + loop + (do + (assert (is oarg nil) "loop: can't take oarg in @instr") + (yield `(((jump)) ((,(open-offset pc stack (and arg (v arg.0))) offset))))) + loop-if + (do + (trace "cvt0" "loop-if: " instr " => " (- stack.0 1)) + (assert (is oarg nil) "loop-if: can't take oarg in @instr") + (yield `(((jump-if)) ,arg.0 ((,(open-offset pc stack (and cdr.arg (v arg.1))) offset))))) + loop-unless + (do + (trace "cvt0" "loop-if: " instr " => " (- stack.0 1)) + (assert (is oarg nil) "loop-unless: can't take oarg in @instr") + (yield `(((jump-unless)) ,arg.0 ((,(open-offset pc stack (and cdr.arg (v arg.1))) offset))))) + ;else + (yield instr))) (++ pc)))))))) (def close-offset (pc locs nblocks) |