mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 17:20:29 +02:00
Inline interrupts
* libguile/async.c: * libguile/async.h (scm_i_async_push, scm_i_async_pop): Make internally available. * libguile/vm-engine.c (vm_engine): Invoke interrupts inline. Add return-from-interrupt instruction. * libguile/vm.c (vm_handle_interrupt_code): New "builtin".
This commit is contained in:
parent
4ae4988931
commit
08584310ee
4 changed files with 60 additions and 16 deletions
|
@ -666,6 +666,13 @@ static const scm_t_uint32 vm_builtin_call_with_current_continuation_code[] = {
|
|||
SCM_PACK_OP_24 (call_cc, 0)
|
||||
};
|
||||
|
||||
static const scm_t_uint32 vm_handle_interrupt_code[] = {
|
||||
SCM_PACK_OP_24 (alloc_frame, 3),
|
||||
SCM_PACK_OP_12_12 (mov, 0, 2),
|
||||
SCM_PACK_OP_24 (call, 2), SCM_PACK_OP_ARG_8_24 (0, 1),
|
||||
SCM_PACK_OP_24 (return_from_interrupt, 0)
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
scm_i_vm_is_boot_continuation_code (scm_t_uint32 *ip)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue