summaryrefslogtreecommitdiffstats
path: root/vm.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-03-13 22:38:03 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-03-13 22:38:03 -0700
commitf3fddb31b01d7f015d9f35b6c6312fad28177ae4 (patch)
treed5ce85d662e20b94da8bd004cc7ee631a47b7c26 /vm.c
parenta97e0a1abfce633fc46f86c3e804a9eebb8ed7f0 (diff)
downloadtxr-f3fddb31b01d7f015d9f35b6c6312fad28177ae4.tar.gz
txr-f3fddb31b01d7f015d9f35b6c6312fad28177ae4.tar.bz2
txr-f3fddb31b01d7f015d9f35b6c6312fad28177ae4.zip
higher level disassemble function.
* lisplib.c (asm_set_entries): Autoload on usr:disassemble. * share/txr/stdlib/asm.tl (assembler): Drop initializer from bstr slot. Requires complex initialization for the case when the buf is supplied by the constructor caller for the sake of disassembling existing code. (assembler :postinit): Handle cases when only one of buf or bstr are set, and when both are not set, for the greatest flexibility. (disassemble-c-d, disassemble): New functions. * vm.c (vm_desc_datavec): New static function. (vm_init): Registered vm-desc-datavec intrinsic.
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/vm.c b/vm.c
index 5c3bfc9f..09bdfb2c 100644
--- a/vm.c
+++ b/vm.c
@@ -151,6 +151,12 @@ static val vm_desc_bytecode(val desc)
return vd->bytecode;
}
+static val vm_desc_datavec(val desc)
+{
+ struct vm_desc *vd = vm_desc_struct(desc);
+ return vd->datavec;
+}
+
static void vm_desc_mark(val obj)
{
struct vm_desc *vd = coerce(struct vm_desc *, obj->co.handle);
@@ -825,5 +831,6 @@ void vm_init(void)
vm_closure_s = intern(lit("vm-closure"), system_package);
reg_fun(intern(lit("vm-make-desc"), system_package), func_n4(vm_make_desc));
reg_fun(intern(lit("vm-desc-bytecode"), system_package), func_n1(vm_desc_bytecode));
+ reg_fun(intern(lit("vm-desc-datavec"), system_package), func_n1(vm_desc_datavec));
reg_fun(intern(lit("vm-execute-toplevel"), system_package), func_n1(vm_execute_toplevel));
}