1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-18 17:50:29 +02:00

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.
This commit is contained in:
Andy Wingo 2018-04-10 11:51:31 +02:00
parent 33b038bfa9
commit 0ae1e943d8
4 changed files with 37 additions and 3 deletions

View file

@ -1538,10 +1538,19 @@ VM_NAME (scm_i_thread *thread, struct scm_vm *vp,
NEXT (2);
}
VM_DEFINE_OP (53, unused_53, NULL, NOP)
VM_DEFINE_OP (53, call_scm_u64_u64, "call-scm-u64-u64", OP2 (X8_S8_S8_S8, C32))
{
vm_error_bad_instruction (op);
abort (); /* never reached */
scm_t_uint8 a, b, c;
scm_t_scm_u64_u64_intrinsic intrinsic;
UNPACK_8_8_8 (op, a, b, c);
intrinsic = intrinsics[ip[1]];
SYNC_IP ();
intrinsic (SP_REF (a), SP_REF_U64 (b), SP_REF_U64 (c));
CACHE_SP ();
NEXT (2);
}
/* make-closure dst:24 offset:32 _:8 nfree:24