From ac61a33ef52683cabbc55ff6e9da1b139fe1f980 Mon Sep 17 00:00:00 2001 From: Martin Stjernholm <mast@lysator.liu.se> Date: Wed, 31 Jan 2001 22:51:58 +0100 Subject: [PATCH] Fixes to the trace logging of jumps. Rev: src/interpret.c:1.184 --- src/interpret.c | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/interpret.c b/src/interpret.c index 5574f34066..014d32e3a2 100644 --- a/src/interpret.c +++ b/src/interpret.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: interpret.c,v 1.183 2001/01/24 08:17:27 hubbe Exp $"); +RCSID("$Id: interpret.c,v 1.184 2001/01/31 21:51:58 mast Exp $"); #include "interpret.h" #include "object.h" #include "program.h" @@ -603,11 +603,6 @@ void print_return_value(void) struct callback_list evaluator_callbacks; #define CASE(X) case (X)-F_OFFSET: -#define DOJUMP() \ - do { int tmp; tmp=EXTRACT_INT(pc); pc+=tmp; if(tmp < 0) fast_check_threads_etc(6); }while(0) - -#define SKIPJUMP() pc+=sizeof(INT32) - #define COMPARISMENT(ID,EXPR) \ CASE(ID); \ instr=EXPR; \ @@ -628,24 +623,22 @@ CASE(ID) \ if(i && !AUTO_BIGNUM_LOOP_TEST(i->integer,INC)) \ { \ i->integer += INC; \ - if(i->integer OP2 Pike_sp[-3].u.integer) \ + if(i->integer OP2 Pike_sp[-3].u.integer) \ { \ - pc+=EXTRACT_INT(pc); \ - fast_check_threads_etc(8); \ + DOJUMP(); \ }else{ \ - pc+=sizeof(INT32); \ - } \ + SKIPJUMP(); \ + } \ }else{ \ - lvalue_to_svalue_no_free(Pike_sp,Pike_sp-2); Pike_sp++; \ + lvalue_to_svalue_no_free(Pike_sp,Pike_sp-2); Pike_sp++; \ push_int(INC); \ f_add(2); \ - assign_lvalue(Pike_sp-3,Pike_sp-1); \ - if(OP4 ( Pike_sp-1, Pike_sp-4 )) \ + assign_lvalue(Pike_sp-3,Pike_sp-1); \ + if(OP4 ( Pike_sp-1, Pike_sp-4 )) \ { \ - pc+=EXTRACT_INT(pc); \ - fast_check_threads_etc(8); \ + DOJUMP(); \ }else{ \ - pc+=sizeof(INT32); \ + SKIPJUMP(); \ } \ pop_stack(); \ } \ @@ -740,6 +733,10 @@ void dump_backlog(void) (long)backlog[e].arg, (long)backlog[e].arg2); } + else if(instrs[backlog[e].instruction].flags & I_JUMP) + { + fprintf(stderr,"(%+ld)", (long)backlog[e].arg); + } else if(instrs[backlog[e].instruction].flags & I_HASARG) { fprintf(stderr,"(%ld)", (long)backlog[e].arg); -- GitLab