From 925c1bae1f4c23f4f320db00e2b0974b8cfa9b26 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 24 Sep 2010 18:44:21 +0200 Subject: [PATCH] remove evaluator-traps-interface * libguile/debug.h: * libguile/debug.c (scm_with_traps): * libguile/eval.c (scm_evaluator_traps, scm_evaluator_trap_table): Remove these procedures. Note that scm_evaluator_traps was known in Scheme as `evaluator-traps-interface'. * libguile/private-options.h (SCM_TRAPS_P, SCM_ENTER_FRAME_P) (SCM_APPLY_FRAME_P, SCM_EXIT_FRAME_P, SCM_ENTER_FRAME_HDLR) (SCM_APPLY_FRAME_HDLR, SCM_EXIT_FRAME_HDLR, SCM_MEMOIZE_P) (SCM_MEMOIZE_HDLR): Remove these private interfaces. * module/ice-9/boot-9.scm (traps, trap-enable, trap-disable, trap-set!): Remove. * module/ice-9/scm-style-repl.scm (error-catching-loop): Remove with-traps wrap. * doc/ref/api-options.texi (Low level options interfaces): (User level options interfaces, Evaluator trap options) * doc/ref/api-evaluation.texi (Evaluator Behavior): Remove references to the evaluator traps interface. --- doc/ref/api-evaluation.texi | 43 ------------- doc/ref/api-options.texi | 103 -------------------------------- libguile/debug.c | 38 ------------ libguile/debug.h | 2 - libguile/eval.c | 45 -------------- libguile/private-options.h | 15 ----- module/ice-9/boot-9.scm | 5 -- module/ice-9/scm-style-repl.scm | 22 ++++--- 8 files changed, 10 insertions(+), 263 deletions(-) diff --git a/doc/ref/api-evaluation.texi b/doc/ref/api-evaluation.texi index d9aa397c4..036e92a9c 100644 --- a/doc/ref/api-evaluation.texi +++ b/doc/ref/api-evaluation.texi @@ -18,7 +18,6 @@ loading, evaluating, and compiling Scheme code at run time. * Loading:: Loading Scheme code from file. * Character Encoding of Source Files:: Loading non-ASCII Scheme code from file. * Delayed Evaluation:: Postponing evaluation until it is needed. -* Evaluator Behaviour:: Modifying Guile's evaluator. * VM Behaviour:: Modifying Guile's virtual machine. @end menu @@ -789,48 +788,6 @@ value. @end deffn -@node Evaluator Behaviour -@subsection Evaluator Behaviour - -@c FIXME::martin: Maybe this node name is bad, but the old name clashed with -@c `Evaluator options' under `Options and Config'. - -The behaviour of Guile's evaluator can be modified by manipulating the -evaluator options. For more information about options, @xref{User level -options interfaces}. - -@c FIXME::martin: Why aren't these procedure named like the other options -@c procedures? - -@deffn {Scheme Procedure} traps [setting] -Display the current settings of the evaluator traps options. If -@var{setting} is omitted, only a short form of the current evaluator -traps options is printed. Otherwise, @var{setting} should be one of the -following symbols: -@table @code -@item help -Display the complete option settings. -@item full -Like @code{help}, but also print programmer options. -@end table -@end deffn - -@deffn {Scheme Procedure} trap-enable option-name -@deffnx {Scheme Procedure} trap-disable option-name -@deffnx {Scheme Procedure} trap-set! option-name value -Modify the evaluator options. @code{trap-enable} should be used with boolean -options and switches them on, @code{trap-disable} switches them off. -@code{trap-set!} can be used to set an option to a specific value. - -See @ref{Evaluator trap options} for more information on the available -trap handlers. -@end deffn - -@deffn {Scheme Procedure} evaluator-traps-interface [setting] -@deffnx {C Function} scm_evaluator_traps (setting) -Option interface for the evaluator trap options. -@end deffn - @node VM Behaviour @subsection VM Behaviour diff --git a/doc/ref/api-options.texi b/doc/ref/api-options.texi index d2710bbaa..5d53094a0 100644 --- a/doc/ref/api-options.texi +++ b/doc/ref/api-options.texi @@ -392,7 +392,6 @@ configure @emph{reading}, @emph{printing}, @emph{debugging} or * Reader options:: * Printing options:: * Debugger options:: -* Evaluator trap options:: * Examples of option use:: @end menu @@ -403,12 +402,9 @@ configure @emph{reading}, @emph{printing}, @emph{debugging} or @deffn {Scheme Procedure} read-options-interface [setting] @deffnx {Scheme Procedure} print-options-interface [setting] @deffnx {Scheme Procedure} debug-options-interface [setting] -@deffnx {Scheme Procedure} evaluator-traps-interface [setting] @deffnx {C Function} scm_read_options (setting) -@deffnx {C Function} scm_eval_options_interface (setting) @deffnx {C Function} scm_print_options (setting) @deffnx {C Function} scm_debug_options (setting) -@deffnx {C Function} scm_evaluator_traps (setting) If one of these procedures is called with no arguments (or with @code{setting == SCM_UNDEFINED} in C code), it returns a list describing the current setting of the read, eval, print, debug or evaluator traps @@ -443,7 +439,6 @@ set of options. @deffnx {Scheme Procedure} read-options [arg] @deffnx {Scheme Procedure} print-options [arg] @deffnx {Scheme Procedure} debug-options [arg] -@deffnx {Scheme Procedure} traps [arg] These functions list the options in their group. The optional argument @var{arg} is a symbol which modifies the form in which the options are presented. @@ -465,7 +460,6 @@ up?] @deffnx {Scheme Procedure} read-enable option-symbol @deffnx {Scheme Procedure} print-enable option-symbol @deffnx {Scheme Procedure} debug-enable option-symbol -@deffnx {Scheme Procedure} trap-enable option-symbol These functions set the specified @var{option-symbol} in their options group. They only work if the option is boolean, and throw an error otherwise. @@ -476,7 +470,6 @@ otherwise. @deffnx {Scheme Procedure} read-disable option-symbol @deffnx {Scheme Procedure} print-disable option-symbol @deffnx {Scheme Procedure} debug-disable option-symbol -@deffnx {Scheme Procedure} trap-disable option-symbol These functions turn off the specified @var{option-symbol} in their options group. They only work if the option is boolean, and throw an error otherwise. @@ -487,7 +480,6 @@ error otherwise. @deffnx syntax read-set! option-symbol value @deffnx syntax print-set! option-symbol value @deffnx syntax debug-set! option-symbol value -@deffnx syntax trap-set! option-symbol value These functions set a non-boolean @var{option-symbol} to the specified @var{value}. @end deffn @@ -546,101 +538,6 @@ closure-hook #f Hook for printing closures. @end smallexample -@node Evaluator trap options -@subsubsection Evaluator trap options -[FIXME: These flags, together with their corresponding handlers, are not -user level options. Probably this entire section should be moved to the -documentation about the low-level programmer debugging interface.] - -Here is the list of evaluator trap options generated by typing -@code{(traps 'full)} in Guile. You can also see the default values. - -@smallexample -exit-frame no Trap when exiting eval or apply. -apply-frame no Trap when entering apply. -enter-frame no Trap when eval enters new frame. -memoize-symbol no Trap when eval memoizes a symbol's value -traps yes Enable evaluator traps. -@end smallexample - -@deffn apply-frame-handler key cont tailp -Called when a procedure is being applied. - -Called if: - -@itemize @bullet -@item -evaluator traps are enabled [traps interface], and -@item -either -@itemize @minus -@item -@code{apply-frame} is enabled [traps interface], or -@item -trace mode is on [debug-options interface], and the procedure being -called has the trace property enabled. -@end itemize -@end itemize - -@var{cont} is a ``debug object'', which means that it can be passed to -@code{make-stack} to discover the stack at the point of the trap. The -apply frame handler's code can capture a restartable continuation if it -wants to by using @code{call-with-current-continuation} in the usual way. - -@var{tailp} is true if this is a tail call -@end deffn - -@deffn exit-frame-handler key cont retval -Called when a value is returned from a procedure. - -Called if: - -@itemize @bullet -@item -evaluator traps are enabled [traps interface], and -@item -either -@itemize @minus -@item - @code{exit-frame} is enabled [traps interface], or -@item -trace mode is on [debug-options interface], and the procedure being -called has the trace property enabled. -@end itemize -@end itemize - -@var{cont} is a ``debug object'', which means that it can be passed to -@code{make-stack} to discover the stack at the point of the trap. The -exit frame handler's code can capture a restartable continuation if it -wants to by using @code{call-with-current-continuation} in the usual -way. - -@var{retval} is the return value. -@end deffn - -@deffn memoize-symbol-handler key cont expression env -Called when the evaluator memoizes the value of a procedure symbol - -@var{cont} is a ``debug object'', which means that it can be passed to -@code{make-stack} to discover the stack at the point of the trap. The -exit frame handler's code can capture a restartable continuation if it -wants to by using @code{call-with-current-continuation} in the usual -way. - -@var{retval} is the return value. -@end deffn - -@deffn {Scheme Procedure} with-traps thunk -@deffnx {C Function} scm_with_traps (thunk) -Call @var{thunk} with traps enabled. -@end deffn - -@deffn {Scheme Procedure} debug-object? obj -@deffnx {C Function} scm_debug_object_p (obj) -Return @code{#t} if @var{obj} is a debug object. -@end deffn - - @node Debugger options @subsubsection Debugger options diff --git a/libguile/debug.c b/libguile/debug.c index cce7dd0b1..e4911ff03 100644 --- a/libguile/debug.c +++ b/libguile/debug.c @@ -89,44 +89,6 @@ SCM_DEFINE (scm_debug_options, "debug-options-interface", 0, 1, 0, } #undef FUNC_NAME - -static void -with_traps_before (void *data) -{ - int *trap_flag = data; - *trap_flag = SCM_TRAPS_P; - SCM_TRAPS_P = 1; -} - -static void -with_traps_after (void *data) -{ - int *trap_flag = data; - SCM_TRAPS_P = *trap_flag; -} - -static SCM -with_traps_inner (void *data) -{ - SCM thunk = SCM_PACK ((scm_t_bits) data); - return scm_call_0 (thunk); -} - -SCM_DEFINE (scm_with_traps, "with-traps", 1, 0, 0, - (SCM thunk), - "Call @var{thunk} with traps enabled.") -#define FUNC_NAME s_scm_with_traps -{ - int trap_flag; - SCM_VALIDATE_THUNK (1, thunk); - return scm_internal_dynamic_wind (with_traps_before, - with_traps_inner, - with_traps_after, - (void *) SCM_UNPACK (thunk), - &trap_flag); -} -#undef FUNC_NAME - SCM_SYMBOL (scm_sym_source, "source"); diff --git a/libguile/debug.h b/libguile/debug.h index 7c1d02f5c..d862abab4 100644 --- a/libguile/debug.h +++ b/libguile/debug.h @@ -44,8 +44,6 @@ typedef union scm_t_debug_info SCM_API SCM scm_reverse_lookup (SCM env, SCM data); SCM_API SCM scm_procedure_source (SCM proc); SCM_API SCM scm_procedure_name (SCM proc); -SCM_API SCM scm_with_traps (SCM thunk); -SCM_API SCM scm_evaluator_traps (SCM setting); SCM_API SCM scm_debug_options (SCM setting); SCM_INTERNAL void scm_init_debug (void); diff --git a/libguile/eval.c b/libguile/eval.c index 28f660379..69cf36bb4 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -478,48 +478,6 @@ scm_t_option scm_debug_opts[] = { }; -/* - * this ordering is awkward and illogical, but we maintain it for - * compatibility. --hwn - */ -scm_t_option scm_evaluator_trap_table[] = { - { SCM_OPTION_BOOLEAN, "traps", 0, "Enable evaluator traps." }, - { SCM_OPTION_BOOLEAN, "enter-frame", 0, "Trap when eval enters new frame." }, - { SCM_OPTION_BOOLEAN, "apply-frame", 0, "Trap when entering apply." }, - { SCM_OPTION_BOOLEAN, "exit-frame", 0, "Trap when exiting eval or apply." }, - { SCM_OPTION_SCM, "enter-frame-handler", (unsigned long)SCM_BOOL_F, "Handler for enter-frame traps." }, - { SCM_OPTION_SCM, "apply-frame-handler", (unsigned long)SCM_BOOL_F, "Handler for apply-frame traps." }, - { SCM_OPTION_SCM, "exit-frame-handler", (unsigned long)SCM_BOOL_F, "Handler for exit-frame traps." }, - { SCM_OPTION_BOOLEAN, "memoize-symbol", 0, "Trap when memoizing a symbol." }, - { SCM_OPTION_SCM, "memoize-symbol-handler", (unsigned long)SCM_BOOL_F, "The handler for memoization." }, - { 0 } -}; - - -SCM_DEFINE (scm_evaluator_traps, "evaluator-traps-interface", 0, 1, 0, - (SCM setting), - "Option interface for the evaluator trap options.") -#define FUNC_NAME s_scm_evaluator_traps -{ - SCM ans; - - - scm_options_try (setting, - scm_evaluator_trap_table, - FUNC_NAME, 1); - SCM_CRITICAL_SECTION_START; - ans = scm_options (setting, - scm_evaluator_trap_table, - FUNC_NAME); - - /* njrev: same again. */ - SCM_CRITICAL_SECTION_END; - return ans; -} -#undef FUNC_NAME - - - /* Simple procedure calls @@ -1111,9 +1069,6 @@ scm_init_eval () { SCM primitive_eval; - scm_init_opts (scm_evaluator_traps, - scm_evaluator_trap_table); - f_apply = scm_c_define_gsubr ("apply", 2, 0, 1, scm_apply); scm_tc16_boot_closure = scm_make_smob_type ("boot-closure", 0); diff --git a/libguile/private-options.h b/libguile/private-options.h index 232f55fba..6a19b5d8b 100644 --- a/libguile/private-options.h +++ b/libguile/private-options.h @@ -25,21 +25,6 @@ #ifndef PRIVATE_OPTIONS #define PRIVATE_OPTIONS -/* - evaluator - */ -SCM_API scm_t_option scm_evaluator_trap_table[]; - -#define SCM_TRAPS_P scm_evaluator_trap_table[0].val -#define SCM_ENTER_FRAME_P scm_evaluator_trap_table[1].val -#define SCM_APPLY_FRAME_P scm_evaluator_trap_table[2].val -#define SCM_EXIT_FRAME_P scm_evaluator_trap_table[3].val -#define SCM_ENTER_FRAME_HDLR (SCM_PACK (scm_evaluator_trap_table[4].val)) -#define SCM_APPLY_FRAME_HDLR (SCM_PACK (scm_evaluator_trap_table[5].val)) -#define SCM_EXIT_FRAME_HDLR (SCM_PACK (scm_evaluator_trap_table[6].val)) -#define SCM_MEMOIZE_P scm_evaluator_trap_table[7].val -#define SCM_MEMOIZE_HDLR (SCM_PACK (scm_evaluator_trap_table[8].val)) - /* debugging. */ diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index b58896834..7790aeea9 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -2649,11 +2649,6 @@ module '(ice-9 q) '(make-q q-length))}." (debug-options debug-enable debug-disable) (debug-set!))) -(define-option-interface - (evaluator-traps-interface - (traps trap-enable trap-disable) - (trap-set!))) - (define-option-interface (read-options-interface (read-options read-enable read-disable) diff --git a/module/ice-9/scm-style-repl.scm b/module/ice-9/scm-style-repl.scm index 947d0f036..e71798bce 100644 --- a/module/ice-9/scm-style-repl.scm +++ b/module/ice-9/scm-style-repl.scm @@ -81,18 +81,16 @@ (lambda () (call-with-unblocked-asyncs (lambda () - (with-traps - (lambda () - (first) - - ;; This line is needed because mark - ;; doesn't do closures quite right. - ;; Unreferenced locals should be - ;; collected. - (set! first #f) - (let loop ((v (thunk))) - (loop (thunk))) - #f))))) + (first) + + ;; This line is needed because mark + ;; doesn't do closures quite right. + ;; Unreferenced locals should be + ;; collected. + (set! first #f) + (let loop ((v (thunk))) + (loop (thunk))) + #f))) (lambda (key . args) (case key -- 2.20.1