1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-15 08:10:17 +02:00

VM throw uses intrinsics

* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): Add intrinsics for
  throw, throw/value, and throw/value+data.
* libguile/intrinsics.c (throw_, throw_with_value):
  (throw_with_value_and_data): And here they are.
* libguile/vm-engine.c (throw, throw/value, throw/value+data): Use
  intrinsics.
* libguile/vm.c: Remove vm_throw et al.
This commit is contained in:
Andy Wingo 2018-06-26 20:45:26 +02:00
parent 51e71a473f
commit 0ce9a1f870
4 changed files with 52 additions and 44 deletions

View file

@ -832,7 +832,7 @@ VM_NAME (scm_thread *thread, jmp_buf *registers, int resume)
args = SP_REF (b);
SYNC_IP ();
vm_throw (key, args);
scm_vm_intrinsics.throw_ (key, args);
abort (); /* never reached */
}
@ -861,7 +861,7 @@ VM_NAME (scm_thread *thread, jmp_buf *registers, int resume)
key_subr_and_message = SCM_PACK (key_subr_and_message_bits);
SYNC_IP ();
vm_throw_with_value (val, key_subr_and_message);
scm_vm_intrinsics.throw_with_value (val, key_subr_and_message);
abort (); /* never reached */
}
@ -890,7 +890,7 @@ VM_NAME (scm_thread *thread, jmp_buf *registers, int resume)
key_subr_and_message = SCM_PACK (key_subr_and_message_bits);
SYNC_IP ();
vm_throw_with_value_and_data (val, key_subr_and_message);
scm_vm_intrinsics.throw_with_value_and_data (val, key_subr_and_message);
abort (); /* never reached */
}