summaryrefslogtreecommitdiffstats
path: root/vmop.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-03-26 06:34:44 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-03-26 06:34:44 -0700
commit5c604c752e878066c7312eba6dd72d550ceb451f (patch)
treeb2aad7078de576c32534b9d28e1f76954f398229 /vmop.h
parent5897492b4cb4c906efe21246facf6f46fbcc8ff9 (diff)
downloadtxr-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.h25
1 files changed, 13 insertions, 12 deletions
diff --git a/vmop.h b/vmop.h
index 065b159e..827340e2 100644
--- a/vmop.h
+++ b/vmop.h
@@ -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;