diff --git a/src/interpret.c b/src/interpret.c index 2e901223b339d63839a2dc83a7f5af35a39a76ce..d6177421ff767cb492109b14d2925b582437f6c2 100644 --- a/src/interpret.c +++ b/src/interpret.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: interpret.c,v 1.150 2000/05/01 10:28:26 hubbe Exp $"); +RCSID("$Id: interpret.c,v 1.151 2000/05/03 09:03:16 hubbe Exp $"); #include "interpret.h" #include "object.h" #include "program.h" @@ -484,7 +484,7 @@ void reset_evaluator(void) } #ifdef PIKE_DEBUG -#define BACKLOG 512 +#define BACKLOG 1024 struct backlog { INT32 instruction; @@ -494,6 +494,8 @@ struct backlog #ifdef _REENTRANT struct object *thread_id; #endif + int stack; + int mark_stack; }; struct backlog backlog[BACKLOG]; @@ -539,28 +541,21 @@ void dump_backlog(void) } + fprintf(stderr,"%s:%ld: %s", + file, + (long)line, + low_get_f_name(backlog[e].instruction + F_OFFSET, backlog[e].program)); if(instrs[backlog[e].instruction].flags & I_HASARG2) { - fprintf(stderr,"%s:%ld: %s(%ld,%ld)\n", - file, - (long)line, - low_get_f_name(backlog[e].instruction + F_OFFSET, backlog[e].program), + fprintf(stderr,"(%ld,%ld)", (long)backlog[e].arg, (long)backlog[e].arg2); } else if(instrs[backlog[e].instruction].flags & I_HASARG) { - fprintf(stderr,"%s:%ld: %s(%ld)\n", - file, - (long)line, - low_get_f_name(backlog[e].instruction + F_OFFSET, backlog[e].program), - (long)backlog[e].arg); - }else{ - fprintf(stderr,"%s:%ld: %s\n", - file, - (long)line, - low_get_f_name(backlog[e].instruction + F_OFFSET, backlog[e].program)); + fprintf(stderr,"(%ld)", (long)backlog[e].arg); } + fprintf(stderr," %d, %d", backlog[e].stack, backlog[e].mark_stack); } }while(e!=backlogp); } diff --git a/src/interpreter.h b/src/interpreter.h index e51934ad86940e57f4a72a35bc9eba0f5bf7bab4..eeaa672761fb449e86f60f6034f4e1a26c19ee46 100644 --- a/src/interpreter.h +++ b/src/interpreter.h @@ -79,6 +79,8 @@ static int eval_instruction(unsigned char *pc) add_ref(Pike_fp->context.prog); backlog[backlogp].instruction=instr; backlog[backlogp].pc=pc; + backlog[backlogp].stack = sp - evaluator_stack; + backlog[backlogp].mark_stack = mark_sp - mark_stack; #ifdef _REENTRANT backlog[backlogp].thread_id=thread_id; #endif