Skip to content
  • Andy Wingo's avatar
    Unwind-only stack overflow exceptions · 7e2fd4e7
    Andy Wingo authored
    * module/ice-9/boot-9.scm (catch): Signal an early error if the handler
      or pre-unwind handler types aren't right.  This is more important than
      it was, given that we dispatch on type now when finding matching catch
      clauses.
    
    * libguile/vm.c (vm_expand_stack): Use the standard
      scm_report_stack_overflow to signal stack overflow.  This will avoid
      running pre-unwind handlers.
    
    * libguile/throw.h: Move scm_report_stack_overflow here.
    
    * libguile/throw.c (catch): Define a version of catch in C.
      (throw_without_pre_unwind): New helper.  Besides serving as the
      pre-boot "throw" binding, it allows stack overflow to throw without
      running pre-unwind handlers.
      (scm_catch, scm_catch_with_pre_unwind_handler)
      (scm_with_throw_handler): Use the new catch in C.
      (scm_report_stack_overflow): Moved from stackchk.c; throws an
      unwind-only exception.
    
    * libguile/stackchk.h:
    * libguile/stackchk.c: Remove the scm_report_stack_overflow bits.
    7e2fd4e7