Added 'depth' counter to stack frames. The idea is two-fold:
1. You can limit runaway recursion by binding a symbol *max_stack_depth* in the environment 2. You can limit the number of backtrace frames printed. However, neither of these have been implemented yet.
This commit is contained in:
parent
72a8bc09e0
commit
2536e76617
7 changed files with 140 additions and 79 deletions
|
|
@ -98,6 +98,8 @@ struct cons_pointer make_empty_frame( struct cons_pointer previous ) {
|
|||
for ( int i = 0; i < args_in_frame; i++ ) {
|
||||
frame->arg[i] = NIL;
|
||||
}
|
||||
|
||||
frame->depth = (nilp(previous)) ? 0 : (get_stack_frame(previous))->depth + 1;
|
||||
}
|
||||
debug_print( L"Leaving make_empty_frame\n", DEBUG_ALLOC );
|
||||
debug_dump_object( result, DEBUG_ALLOC );
|
||||
|
|
@ -285,7 +287,8 @@ void dump_frame( URL_FILE *output, struct cons_pointer frame_pointer ) {
|
|||
struct stack_frame *frame = get_stack_frame( frame_pointer );
|
||||
|
||||
if ( frame != NULL ) {
|
||||
url_fwprintf( output, L"Stack frame with %d arguments:\n",
|
||||
url_fwprintf( output, L"Stack frame %d with %d arguments:\n",
|
||||
frame->depth;
|
||||
frame->args );
|
||||
dump_frame_context( output, frame_pointer, 4 );
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue