diff options
author | Andy Wingo <wingo@pobox.com> | 2009-11-27 17:35:37 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-01 21:00:25 +0100 |
commit | b3f04491ee90015cd661b08dcb0b5ae731ee6022 (patch) | |
tree | 57d9bc615784648208678750bc0130d8208d116e | |
parent | f39fc3b38cbd7dda61def29bd8ef2d8f7ca27dd5 (diff) | |
download | guile-b3f04491ee90015cd661b08dcb0b5ae731ee6022.tar.gz |
gut the backtrace implementation for memoized code
* libguile/backtrace.c (display_header, display_expression)
(display_error_body, display_backtrace_get_file_line, display_frame):
Gut the implementation for memoized code, as memoized code as it is
currently understood is going away.
-rw-r--r-- | libguile/backtrace.c | 76 |
1 files changed, 8 insertions, 68 deletions
diff --git a/libguile/backtrace.c b/libguile/backtrace.c index 83579055f..58fe0cfc9 100644 --- a/libguile/backtrace.c +++ b/libguile/backtrace.c @@ -1,5 +1,5 @@ /* Printing of backtraces and error messages - * Copyright (C) 1996,1997,1998,1999,2000,2001, 2003, 2004, 2006 Free Software Foundation + * Copyright (C) 1996,1997,1998,1999,2000,2001, 2003, 2004, 2006, 2009 Free Software Foundation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -77,31 +77,7 @@ SCM scm_the_last_stack_fluid_var; static void display_header (SCM source, SCM port) { - if (SCM_MEMOIZEDP (source)) - { - SCM fname = scm_source_property (source, scm_sym_filename); - SCM line = scm_source_property (source, scm_sym_line); - SCM col = scm_source_property (source, scm_sym_column); - - /* Dirk:FIXME:: Maybe we should store the _port_ rather than the - * filename with the source properties? Then we could in case of - * non-file ports give at least some more details than just - * "<unnamed port>". */ - if (scm_is_true (fname)) - scm_prin1 (fname, port, 0); - else - scm_puts ("<unnamed port>", port); - - if (scm_is_true (line) && scm_is_true (col)) - { - scm_putc (':', port); - scm_intprint (scm_to_long (line) + 1, 10, port); - scm_putc (':', port); - scm_intprint (scm_to_long (col) + 1, 10, port); - } - } - else - scm_puts ("ERROR", port); + scm_puts ("ERROR", port); scm_puts (": ", port); } @@ -187,18 +163,6 @@ display_expression (SCM frame, SCM pname, SCM source, SCM port) else scm_puts ("In procedure ", port); scm_iprin1 (pname, port, pstate); - if (SCM_MEMOIZEDP (source)) - { - scm_puts (" in expression ", port); - pstate->writingp = 1; - scm_iprin1 (scm_i_unmemoize_expr (source), port, pstate); - } - } - else if (SCM_MEMOIZEDP (source)) - { - scm_puts ("In expression ", port); - pstate->writingp = 1; - scm_iprin1 (scm_i_unmemoize_expr (source), port, pstate); } scm_puts (":\n", port); scm_free_print_state (print_state); @@ -218,25 +182,9 @@ display_error_body (struct display_error_args *a) { SCM current_frame = SCM_BOOL_F; SCM source = SCM_BOOL_F; - SCM prev_frame = SCM_BOOL_F; SCM pname = a->subr; - if (scm_debug_mode_p - && SCM_STACKP (a->stack) - && SCM_STACK_LENGTH (a->stack) > 0) - { - current_frame = scm_stack_ref (a->stack, SCM_INUM0); - source = SCM_FRAME_SOURCE (current_frame); - prev_frame = SCM_FRAME_PREV (current_frame); - if (!SCM_MEMOIZEDP (source) && scm_is_true (prev_frame)) - source = SCM_FRAME_SOURCE (prev_frame); - if (!scm_is_symbol (pname) - && !scm_is_string (pname) - && SCM_FRAME_PROC_P (current_frame) - && scm_is_true (scm_procedure_p (SCM_FRAME_PROC (current_frame)))) - pname = scm_procedure_name (SCM_FRAME_PROC (current_frame)); - } - if (scm_is_symbol (pname) || scm_is_string (pname) || SCM_MEMOIZEDP (source)) + if (scm_is_symbol (pname) || scm_is_string (pname)) { display_header (source, a->port); display_expression (current_frame, pname, source, a->port); @@ -469,15 +417,10 @@ display_backtrace_get_file_line (SCM frame, SCM *file, SCM *line) { SCM source = SCM_FRAME_SOURCE (frame); *file = *line = SCM_BOOL_F; - if (SCM_MEMOIZEDP (source)) - { - *file = scm_source_property (source, scm_sym_filename); - *line = scm_source_property (source, scm_sym_line); - } - else if (scm_is_pair (source) - && scm_is_pair (scm_cdr (source)) - && scm_is_pair (scm_cddr (source)) - && !scm_is_pair (scm_cdddr (source))) + if (scm_is_pair (source) + && scm_is_pair (scm_cdr (source)) + && scm_is_pair (scm_cddr (source)) + && !scm_is_pair (scm_cdddr (source))) { /* (addr . (filename . (line . column))), from vm compilation */ *file = scm_cadr (source); @@ -604,11 +547,8 @@ display_frame (SCM frame, int nfield, int indentation, SCM sport, SCM port, scm_ SCM copy = (scm_is_pair (source) ? scm_source_property (source, scm_sym_copy) : SCM_BOOL_F); - SCM umcopy = (SCM_MEMOIZEDP (source) - ? scm_i_unmemoize_expr (source) - : SCM_BOOL_F); display_frame_expr ("(", - scm_is_pair (copy) ? copy : umcopy, + copy, ")", nfield + 1 + indentation, sport, |