diff options
author | Andy Wingo <wingo@pobox.com> | 2018-01-10 21:05:16 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-01-10 21:05:16 +0100 |
commit | 9222e4df4b3673da662785f71d0f3c289ba8a8a5 (patch) | |
tree | 4ec5b775d8e755fb68e091968a6d76a730de1d9b /module/system/vm/assembler.scm | |
parent | c7b3379a4c2111a872992202895a7fa700fb252d (diff) | |
download | guile-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.scm | 3 |
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 |