diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-03-26 06:34:44 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-03-26 06:34:44 -0700 |
commit | 5c604c752e878066c7312eba6dd72d550ceb451f (patch) | |
tree | b2aad7078de576c32534b9d28e1f76954f398229 /vmop.h | |
parent | 5897492b4cb4c906efe21246facf6f46fbcc8ff9 (diff) | |
download | txr-5c604c752e878066c7312eba6dd72d550ceb451f.tar.gz txr-5c604c752e878066c7312eba6dd72d550ceb451f.tar.bz2 txr-5c604c752e878066c7312eba6dd72d550ceb451f.zip |
compiler/vm: implement sys:abscond-from special form.
* share/txr/stdlib/asm.tl (abscsr): New instruction.
(op-abscsr): New opcode class, derived from op-retsr.
* share/txr/stdlib/compiler.tl: Handle sys:abscond-from via
comp-return-from method.
(compiler comp-return-from): Handle sys:abscond-from by
switching to abscsr opcode instead of ret pseudo-op.
* vm.c (vm_abscsr): New static function.
(vm_execute): Dispatch ABSCSR opcode.
* vmop.h: Regenerated.
Diffstat (limited to 'vmop.h')
-rw-r--r-- | vmop.h | 25 |
1 files changed, 13 insertions, 12 deletions
@@ -51,16 +51,17 @@ typedef enum vm_op { RETSR = 22, RETRS = 23, RETRR = 24, - CATCH = 25, - HANDLE = 26, - GETV = 27, - GETF = 28, - GETL1 = 29, - GETVB = 30, - GETFB = 31, - GETL1B = 32, - SETV = 33, - SETL1 = 34, - BINDV = 35, - CLOSE = 36, + ABSCSR = 25, + CATCH = 26, + HANDLE = 27, + GETV = 28, + GETF = 29, + GETL1 = 30, + GETVB = 31, + GETFB = 32, + GETL1B = 33, + SETV = 34, + SETL1 = 35, + BINDV = 36, + CLOSE = 37, } vm_op_t; |