summaryrefslogtreecommitdiff
path: root/module/system/vm/assembler.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-01-10 21:05:16 +0100
committerAndy Wingo <wingo@pobox.com>2018-01-10 21:05:16 +0100
commit9222e4df4b3673da662785f71d0f3c289ba8a8a5 (patch)
tree4ec5b775d8e755fb68e091968a6d76a730de1d9b /module/system/vm/assembler.scm
parentc7b3379a4c2111a872992202895a7fa700fb252d (diff)
downloadguile-9222e4df4b3673da662785f71d0f3c289ba8a8a5.tar.gz
Add support for raw gc-managed pointer locals
* libguile/vm-engine.c (gc-pointer-ref/immediate) (gc-pointer-set!/immediate): New instructions. (SP_REF_PTR, SP_SET_PTR): New helper definitions. * libguile/vm.c (SLOT_DESC_LIVE_GC): Rename from SLOT_DESC_LIVE_SCM, as it can indicate GC-protected raw pointers also. (scm_i_vm_mark_stack): Adapt. * module/system/vm/assembler.scm (write-arities): * module/system/vm/debug.scm (arity-definitions): Add gcptr representation. This is a binary-incompatible change!
Diffstat (limited to 'module/system/vm/assembler.scm')
-rw-r--r--module/system/vm/assembler.scm3
1 files changed, 2 insertions, 1 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm
index 77b2e51cb..9be3fcfe1 100644
--- a/module/system/vm/assembler.scm
+++ b/module/system/vm/assembler.scm
@@ -2128,8 +2128,9 @@ procedure with label @var{rw-init}. @var{rw-init} may be false. If
((f64) 1)
((u64) 2)
((s64) 3)
+ ((gc-ptr) 4)
(else (error "what!" representation)))))
- (put-uleb128 names-port (logior (ash slot 2) tag)))
+ (put-uleb128 names-port (logior (ash slot 3) tag)))
(lp definitions))))))
(let lp ((metas metas) (pos arities-prefix-len) (relocs '()))
(match metas