Andy Wingo
f84ce5442e
Refactor handling of auxiliary stacks and setjmp/longjmp
...
* libguile/__scm.h (scm_i_jmp_buf): Remove definition, which was a shim
for ia64. Instead, always use setjmp/longjmp and jmp_buf.
* libguile/_scm.h (SCM_I_SETJMP, SCM_I_LONGJMP): Remove; instead use
setjmp and longjmp.
* libguile/continuations.c (capture_auxiliary_stack):
(restore_auxiliary_stack): New helpers.
(scm_i_make_continuation): Use capture_auxiliary_stack.
(copy_stack_and_call): Use restore_auxiliary_stack. No need to stash
the aux stack on the thread, either.
* libguile/continuations.h (scm_t_contregs): Use
SCM_HAVE_AUXILIARY_STACK to flag when to have an auxiliary_stack
member.
* libguile/control.h:
* libguile/control.c (reify_partial_continuation, scm_c_abort):
(scm_suspendable_continuation_p): Adapt to use setjmp/longjmp
directly.
* libguile/deprecated.h: Add deprecated scm_i_jmp_buf define.
* libguile/dynstack.h:
* libguile/dynstack.c (PROMPT_JMPBUF):
(scm_dynstack_push_prompt, scm_dynstack_find_prompt):
(scm_dynstack_wind_prompt): Adapt to jmp_buf type.
* libguile/eval.c (eval): Use jmp_buf and setjmp directly.
* libguile/gc-malloc.c: No need for ia64-specific things.
* libguile/gc.c: No need for ia64-specific things.
* libguile/gc.h: No need to declare scm_ia64_ar_bsp.
* libguile/init.c: Remove typedef of setjmp_type for Cray, unused.
* libguile/threads.c (guilify_self_1): No more pending_rbs_continuation
in scm_i_thread, and register_backing_store_base is handled by libgc.
(scm_ia64_ar_bsp): Remove definitions; inlined into continuations.c's
capture_auxiliary_stack.
* libguile/threads.h (scm_i_thread): jmpbuf member is plain jmp_buf.
* libguile/throw.c (catch): Just use jmp_buf and setjmp.
* libguile/vm-engine.c (VM_NAME): Adapt prototype to take jmp_buf
pointer.
* libguile/vm.c (vm_abort): Adapt jmp_buf types.
(scm_call_n): Use setjmp.
2018-06-17 13:41:03 +02:00
Andy Wingo
ceaf782770
Call out to expand_stack through new VM intrinsic
...
* libguile/intrinsics.h (scm_t_vp_sp_intrinsic): New type.
(SCM_FOR_ALL_VM_INTRINSICS): Add expand-stack.
* libguile/vm-engine.c (ALLOC_FRAME): Call through the intrinsics.
* libguile/vm.c (scm_bootstrap_vm): Initialize the expand-stack
intrinsic.
2018-06-11 21:27:37 +02:00
Andy Wingo
dbe5a7edc6
Remove unused macro in vm-engine
...
* libguile/vm-engine.c (VARIABLE_BOUNDP): Remove.
2018-05-14 16:55:30 +02:00
Andy Wingo
601d0eaf83
Remove implementations of now-unused toplevel-box et al instructions
...
* libguile/vm-engine.c (resolve, define!, toplevel-box, module-box):
Remove implementations.
2018-05-14 16:46:22 +02:00
Andy Wingo
ad96291ffe
Mark call-scm<-scm-u64 as defining a result
...
* libguile/vm-engine.c (call-scm<-scm-u64): Add OP_DST.
2018-05-13 10:22:03 +02:00
Andy Wingo
ed8b1adeab
Remove unused macros in VM
...
* libguile/vm-engine.c (ARGS1, ARGS2, RETURN, RETURN_EXP)
(UNPACK_16_8): Remove.
2018-05-08 20:50:40 +02:00
Andy Wingo
007fcf699f
VM calls =? through intrinsic
...
* libguile/intrinsics.c (numerically_equal_p): New intrinsic.
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): Declare new
intrinsic.
* libguile/vm-engine.c (=?): Call through intrinsic.
2018-05-08 14:16:02 +02:00
Andy Wingo
0a8a7e9fd0
VM calls "<?" through intrinsic.
...
* libguile/intrinsics.c (less_p): New intrinsic.
(scm_bootstrap_intrinsics): Wire up intrinsic.
* libguile/intrinsics.h: Declare new intrinsic.
* libguile/vm-engine.c (less_p): Call through intrinsic.
2018-05-08 12:03:53 +02:00
Andy Wingo
41bc98985f
VM calls out to heap-numbers-equal? through intrinsics
...
* libguile/numbers.h:
* libguile/eq.c (scm_i_heap_numbers_equal_p): Change to return boolean
directly instead of tagged Scheme value.
(scm_eqv_p): Adapt caller of scm_i_heap_numbers_equal_p.
* libguile/intrinsics.c (scm_bootstrap_intrinsics):
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): Declare
heap-numbers-equal? intrinsic.
* libguile/vm-engine.c (heap-numbers-equal?): Call out through the
intrinsics table.
2018-05-08 11:49:46 +02:00
Andy Wingo
84cb7c45fd
Remove implementation of lsh, rsh instructions
...
* libguile/vm-engine.c: Remove implementation of now-gone instructions.
2018-05-01 07:10:56 +02:00
Andy Wingo
1532b570e5
lsh, rsh etc are intrinsics
...
* libguile/intrinsics.c (lsh, rsh, lsh_immediate, rsh_immediate): New
intrinsics.
(scm_bootstrap_intrinsics): Wire up the intrinsics.
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): Add new
intrinsics.
* libguile/vm-engine.c (call-scm<-scm-u64): New intrinsic caller.
(lsh, rsh, lsh/immediate, rsh/immediate): Disable.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add new intrinsics.
* module/system/vm/assembler.scm: Adapt assemblers for new intrinsics.
2018-05-01 07:02:45 +02:00
Andy Wingo
e014bf3fc5
Remove old VM ops for fluid-ref et al
...
* libguile/vm-engine.c (wind, unwind, push_fluid, pop_fluid)
(fluid_ref, push_dynamic_state, pop_dynamic_state): Remove now-unused
implementations.
2018-04-29 10:44:19 +02:00
Andy Wingo
89fda6da60
push and pop dynamic state via intrinsics
...
* libguile/intrinsics.c (push_dynamic_state, pop_dynamic_state): New
intrinsics.
(scm_bootstrap_intrinsics): Add new intrinsics.
* libguile/intrinsics.h: Declare new intrinsics.
* libguile/vm-engine.c (call-thread-scm): New intrinsic caller.
(push-dynamic-state, pop-dynamic-state): Disable.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add new intrinsics.
* module/system/vm/assembler.scm (push-dynamic-state)
(pop-dynamic-state): Emit as intrinsics.
2018-04-29 10:41:24 +02:00
Andy Wingo
2eb9c755d1
Intrinsics for dynamic state instructions
...
* libguile/intrinsics.c (wind, unwind, push_fluid, pop_fluid)
(fluid_ref): New intrinsics.
(scm_bootstrap_intrinsics): Wire them up.
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): Declare new
intrinsics.
* libguile/vm-engine.c (wind, unwind, push_fluid, pop_fluid)
(fluid_ref): Disable these instructions.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add new intrinsics.
* module/system/vm/assembler.scm (wind, unwind, push_fluid, pop_fluid)
(fluid_ref): Assemble as intrinsics.
2018-04-29 10:22:30 +02:00
Andy Wingo
4779a10223
Add support for dynamic-state-related intrinsics
...
* libguile/vm-engine.c (call-thread, call-thread-scm-scm)
(call-scm<-thread-scm): New intrinsics.
* module/system/vm/assembler.scm (define-thread-scm-scm-intrinsic)
(define-thread-intrinsic, define-scm<-thread-scm-intrinsic): New
helpers.
(encode-X8_S12_S12-C32!/shuffle): New shuffler.
* libguile/intrinsics.h: Add new intrinsic types.
2018-04-29 10:13:50 +02:00
Andy Wingo
c927ca7111
Fix width of operands to intrinsic call instructions
...
* libguile/vm-engine.c (call-scm<-scm, etc): The operands were getting
unpacked into 8-bit locals, which were too small. Fix to use 16-bit
locals.
2018-04-29 09:55:24 +02:00
Andy Wingo
79ba396a1e
Remove unused macros in vm-engine
...
* libguile/vm-engine.c: Remove unused CPP macros.
2018-04-13 10:40:02 +02:00
Andy Wingo
0ae3d62f40
Remove implementation of atomic box ops
...
* libguile/vm-engine.c (VM_VALIDATE, VM_VALIDATE_ATOMIC_BOX): Remove
now-unused definitions. Remove implementations of atomic-box-ref et
al.
* libguile/vm.c (vm_error_not_a_atomic_box): Remove.
2018-04-13 10:17:32 +02:00
Andy Wingo
dff85f6f9f
Explode atomic box ops to new atomic instructions
...
* libguile/instructions.c (FOR_EACH_INSTRUCTION_WORD_TYPE): Add C8_S24
word type.
* libguile/vm-engine.c (UNPACK_8_24): New helper.
(atomic-scm-ref/immediate, atomic-scm-set!/immediate)
(atomic-swap-scm!/immediate, atomic-scm-compare-and-swap!/immediate):
New instructions.
(make-atomic-box, atomic-box-ref, atomic-box-set!, atomic-box-swap!)
(atomic-box-compare-and-swap!): Disable these ops.
* module/language/bytecode.scm (compute-instruction-arity): Add C8_S24
support.
* module/system/vm/assembler.scm: Add C8_S24 support. Export assemblers
for new opcodes.
* module/system/vm/disassembler.scm (disassembler): Support C8_S24.
* module/language/cps/compile-bytecode.scm (compile-function): Replace
old atomic-box assemblers with the new instructions.
* module/language/cps/effects-analysis.scm (annotation->memory-kind):
* module/language/cps/types.scm (annotation->type): Add cases for atomic
boxes. Mark as all memory kinds because atomic ops serialize memory
accesses.
* module/language/tree-il/compile-cps.scm (make-atomic-box):
(ensure-atomic-box, atomic-box-ref, atomic-box-set!):
(atomic-box-swap!, atomic-box-compare-and-swap!): Explode these ops to
more basic instructions.
* module/system/base/types/internal.scm (%tc7-atomic-box): Add forgotten
export.
2018-04-13 10:09:56 +02:00
Andy Wingo
b32d3cc6f7
Remove implementation of logsub VM op
...
* libguile/vm-engine.c (logsub): Remove implementation.
2018-04-12 17:22:11 +02:00
Andy Wingo
25a0fe8839
logsub is intrinsic
...
* libguile/intrinsics.h:
* libguile/intrinsics.c (logsub): New intrinsic.
(scm_bootstrap_intrinsics): Init new intrinsic.
* libguile/vm-engine.c (logsub): Disable.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add logsub.
* module/system/vm/assembler.scm: Update logsub intrinsic assembler.
2018-04-12 17:10:35 +02:00
Andy Wingo
b2c01e5b58
Remove implementations of obsolete s64->scm, u64->scm insts
...
* libguile/vm-engine.c (s64->scm, u64->scm): Remove implementation.
2018-04-12 16:46:51 +02:00
Andy Wingo
7e386bbc70
u64->scm, s64->scm intrinsics
...
* libguile/intrinsics.h (u64->scm, s64->scm): New intrinsics.
* libguile/intrinsics.c (scm_bootstrap_intrinsics): Initialize new
intrinsics.
* libguile/vm-engine.c (call-scm<-u64, call-scm<-s64): New intrinsic
callers.
(u64->scm, s64->scm): Disable instructions.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add new intrinsics as macro-instructions.
* module/system/vm/assembler.scm (define-scm<-u64-intrinsic):
(define-scm<-s64-intrinsic, u64->scm, s64->scm): Wire up new
intrinsics.
2018-04-12 16:43:57 +02:00
Andy Wingo
1457f4efb3
Remove scm->u64, etc implementations
...
* libguile/vm-engine.c: Remove implementations of now-obsolete bytecodes.
2018-04-12 16:27:20 +02:00
Andy Wingo
dd88fc569d
scm->u64, scm->s64, scm->u64/truncate intrinsics
...
* libguile/intrinsics.c (scm_to_uint64_truncate): New intrinsic.
(scm_bootstrap_intrinsics): Init new intrinsics.
* libguile/intrinsics.h: Add scm->u64, scm->u64/truncate, and scm->s64
as intrinsics, with their corresponding types.
* libguile/vm-engine.c (call-u64<-scm, call-s64<-scm): New intrinsic
calling ops.
(scm->u64, scm->s64, scm->u64/truncate): Disable opcodes.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add intrinsics as new macroinstructions.
* module/system/vm/assembler.scm: Declare new intrinsic assemblers.
2018-04-12 16:22:40 +02:00
Andy Wingo
2db7c2df64
Remove scm->f64, f64->scm implementations
...
* libguile/vm-engine.c: Remove now-unused f64->scm, scm->f64 impls.
2018-04-10 20:51:06 +02:00
Andy Wingo
b285226477
Disable f64->scm instruction
...
* libguile/vm-engine.c (f64->scm): Disable instruction.
* module/language/cps/compile-bytecode.scm (compile-function): Remove
f64->scm case.
* module/system/vm/assembler.scm: Remove emit-f64->scm export.
2018-04-10 20:41:04 +02:00
Andy Wingo
b9f7621e13
Add scm->f64 intrinsic
...
* libguile/vm-engine.c (call-f64<-scm): New intrinsic kind.
(scm->f64): Disable instruction.
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS):
* libguile/intrinsics.c (scm_bootstrap_intrinsics):
* module/language/cps/reify-primitives.scm (compute-known-primitives):
* module/system/vm/assembler.scm (define-f64<-scm-intrinsic): Add scm->f64.
2018-04-10 19:39:50 +02:00
Andy Wingo
59f1f5a6a7
Remove load-typed-array, make-array opcodes
...
* libguile/vm-engine.c (load-typed-array, make-array): Remove these
apparently unused opcodes. Yay!
2018-04-10 19:14:15 +02:00
Andy Wingo
3073199264
Remove class-of opcode
...
* libguile/vm-engine.c (class-of): Remove unused opcode.
2018-04-10 18:35:23 +02:00
Andy Wingo
954bfad262
Class-of is intrinsic
...
* libguile/vm-engine.c (class-of): Disable.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add class-of as macro-instruction.
* libguile/intrinsics.c (scm_bootstrap_intrinsics): Add class-of.
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): Add class-of.
* module/system/vm/assembler.scm (class-of): Define as intrinsic.
2018-04-10 18:32:31 +02:00
Andy Wingo
51736fd66c
Remove string->number, etc opcodes
...
* libguile/vm-engine.c (string->number, string->symbol)
(symbol->keyword): Remove unused instructions.
2018-04-10 18:00:23 +02:00
Andy Wingo
1c49c1407b
string->number, etc intrinsics
...
* libguile/intrinsics.c (string_to_number): New helper.
(scm_bootstrap_intrinsics): Init new intrinsics.
* libguile/intrinsics.h (string->number, string->symbol)
(symbol->keyword): Add new intrinsics.
* libguile/vm-engine.c (call-scm<-scm): New intrinsic dispatcher.
(string->number, string->symbol, symbol->keyword): Disable these
instructions.
* module/system/vm/assembler.scm (encode-X8_S12_S12-C32<-/shuffle):
(define-scm<-scm-intrinsic): Enable scm<-scm intrinsics.
(string->number, string->symbol, symbol->keyword): New intrinsic
assemblers.
2018-04-10 17:56:08 +02:00
Andy Wingo
b0641783c9
Remove unused make-closure opcode.
...
* libguile/vm-engine.c (make-closure): Remove opcode.
2018-04-10 17:55:18 +02:00
Andy Wingo
70e3a4a311
Add load-label instruction
...
* libguile/vm-engine.c (load-label): New instruction.
* module/system/vm/assembler.scm: Add emit-load-label.
* module/system/vm/disassembler.scm (code-annotation):
(fold-code-range): Add load-label support.
2018-04-10 14:36:15 +02:00
Andy Wingo
644875cf0e
Remove char->integer from VM
...
* libguile/vm-engine.c (VM_VALIDATE_CHAR, VM_VALIDATE_STRING)
(VM_VALIDATE_INDEX): Remove now-unused helpers.
(vm_engine): Fix position of intrinsics declaration.
(char->integer): Remove unused opcode.
* libguile/vm.c (vm_error_not_a_char, vm_error_not_a_string)
(vm_error_out_of_range_uint64): Remove unused decls.
2018-04-10 13:50:28 +02:00
Andy Wingo
9355985154
Remove integer->char op
...
* libguile/vm-engine.c (integer->char): Remove unused op.
* module/language/cps/types.scm:
* module/language/cps/effects-analysis.scm:
* module/language/cps/compile-bytecode.scm (compile-function): Remove
integer->char cases.
* module/system/vm/assembler.scm: Remove emit-integer->char.
2018-04-10 13:33:13 +02:00
Andy Wingo
f1fe5219de
Remove string-set! VM op
...
* libguile/vm-engine.c (string-set!): Remove now-unused VM op.
2018-04-10 12:21:23 +02:00
Andy Wingo
2964abad05
Explode "string-set!"
...
* module/language/cps/effects-analysis.scm (string-ref): Remove effects
declaration, given that the primitive is exploded now.
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Add string-set!.
* libguile/vm-engine.c (string-set!): Disable opcode.
* module/language/cps/types.scm (string-ref, string-set!): Remove type
checker and inferrers for string-ref and string-set!, as both are
exploded. In the case of string-set! there are still type-check
effects in the intrinsic call but they can't be elided by the checker,
as we don't track when strings are read-only.
* module/language/tree-il/compile-cps.scm (ensure-char): New helper.
(string-set!): New primcall exploded converter.
2018-04-10 12:14:47 +02:00
Andy Wingo
0ae1e943d8
Add string-set! intrinsic
...
* libguile/intrinsics.c (string_set_x): New intrinsic.
(scm_bootstrap_intrinsics): Initialize intrinsic.
* libguile/intrinsics.h: Add string-set! intrinsic.
* libguile/vm-engine.c (call-scm-u64-u64): New intrinsic trampoline.
* module/system/vm/assembler.scm (encode-X8_S8_S8_S8-C32!/shuffle): New
shuffling encoder.
(define-scm-u64-u64-intrinsic): New helper.
2018-04-10 11:57:40 +02:00
Andy Wingo
33b038bfa9
Remove now-unused string-length, string-ref
...
* libguile/vm-engine.c (string-length, string-ref): Remove
instructions.
* module/system/vm/assembler.scm: Remove assembler exports as well.
2018-04-09 10:22:35 +02:00
Andy Wingo
91d0db1bf7
Add VM ops needed for string-ref
...
* libguile/vm-engine.c (tail-pointer-ref/immediate, tag-char)
(untag-char): New instructions.
* module/language/cps/compile-bytecode.scm (compile-function): Add
support for new instructions.
* module/language/cps/cse.scm (compute-equivalent-subexpressions): CSE
cases for tag-char / untag-char.
* module/language/cps/effects-analysis.scm:
* module/language/cps/types.scm: Add cases for new primcalls.
* module/language/cps/reify-primitives.scm (reify-primitives): Update
comment.
* module/language/cps/slot-allocation.scm (compute-var-representations):
Add cases for untag-char, tail-pointer-ref/immediate.
* module/language/cps/specialize-primcalls.scm (specialize-primcalls):
Add untag-char case, and add FIXME comment for tag-char.
* module/system/vm/assembler.scm: Export new assemblers.
2018-04-08 21:26:46 +02:00
Andy Wingo
bb1ff0e78a
Remove specific instructions for add, etc from VM
...
* module/language/cps/reify-primitives.scm (compute-known-primitives):
Treat add, sub, and so on as known primitives.
* libguile/vm-engine.c: Remove code for now-unused instructions.
2018-03-31 01:40:47 +02:00
Andy Wingo
1f6f282f16
Compile some generic arithmetic to intrinsic calls
...
* libguile/intrinsics.h: Rename intrinsic types added in previous
commit.
* libguile/vm-engine.c (call-scm<-scm-scm, call-scm<-scm-uimm): New
instructions.
* libguile/vm.c: Include intrinsics.h.
* module/language/bytecode.scm
* module/language/bytecode.scm (*intrinsic-codes*, *intrinsic-names*):
New internal definitions.
(intrinsic-name->index, intrinsic-index->name): New exported
definitions.
* module/system/vm/assembler.scm (encode-X8_S8_S8_S8-C32<-/shuffle):
(encode-X8_S8_S8_C8-C32<-/shuffle): New shuffling encoders.
(shuffling-encoder-name): Add case for new shuffling encoders.
(define-scm<-scm-scm-intrinsic, define-scm<-scm-uimm-intrinsic): New
helpers. Define encoders for "add", etc.
2018-03-30 22:11:18 +02:00
Andy Wingo
b09bbfe3c0
Remove free-ref, free-set!
...
* libguile/vm-engine.c (free-ref, free-set!): Remove ops.
* module/language/cps/effects-analysis.scm:
* module/system/vm/assembler.scm:
* module/system/vm/disassembler.scm (code-annotation):
* module/language/cps/compile-bytecode.scm (compile-function): Remove
support for free-ref / free-set!.
2018-01-22 07:51:36 +01:00
Andy Wingo
fcea9eeabd
Remove VM struct-ref, etc instructions
...
* libguile/vm-engine.c (VM_VALIDATE_STRUCT)
(VM_VALIDATE_BOXED_STRUCT_FIELD, VM_VALIDATE_UNBOXED_STRUCT_FIELD)
(struct-ref, struct-set!, struct-vtable, allocate-struct)
(allocate-struct/immediate, struct-ref/immediate)
(struct-set!/immediate): Remove these opcodes.
* libguile/vm.c: Remove error cases for struct ops.
2018-01-22 07:51:17 +01:00
Andy Wingo
310c34e112
Remove bytevector instructions from the VM.
...
* libguile/vm-engine.c: Remove bv-u8-ref et al, along with bv-length.
* libguile/vm.c (vm_error_not_a_bytevector)
(vm_error_not_a_mutable_bytevector, vm_error_out_of_range_int64):
Remove unused procedures.
2018-01-16 16:43:29 +01:00
Andy Wingo
73f55cb9ae
Rename gc-pointer-ref to pointer-ref
...
The pointer dereferencing instructions will keep the pointer alive by
referencing a containing object.
* module/language/cps/compile-bytecode.scm:
* libguile/vm-engine.c:
* module/language/cps/cse.scm:
* module/language/cps/effects-analysis.scm:
* module/language/cps/reify-primitives.scm:
* module/language/cps/slot-allocation.scm:
* module/language/cps/specialize-primcalls.scm:
* module/language/cps/types.scm:
* module/system/vm/assembler.scm:
* module/system/vm/debug.scm: Rename instructions.
2018-01-14 13:40:05 +01:00
Andy Wingo
13cafca168
Add raw u8-ref, etc instructions
...
* libguile/vm-engine.c (PTR_REF, PTR_SET): New helper macros.
(u8-ref, u16-ref, u32-ref, u64-ref, s8-ref, s16-ref, s32-ref, s64-ref)
(u8-set!, u16-set!, u32-set!, u64-set!, s8-set!, s16-set!, s32-set!, s64-set!)
(f32-ref, f64-ref, f32-set!, f64-set!): New instructions.
* module/system/vm/assembler.scm:
* module/language/cps/compile-bytecode.scm (compile-function):
* module/language/cps/slot-allocation.scm (compute-var-representations):
* module/language/cps/types.scm: Add optimizer and backend support for
the new instructions.
2018-01-14 12:59:02 +01:00
Andy Wingo
9222e4df4b
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!
2018-01-10 21:05:16 +01:00