diff --git a/src/code/ia32.c b/src/code/ia32.c index 3f55b76e0e9a9e7193a5f89fd869645d4d7b2539..dc2b4ffaa4b8b9a7bf9a98c3b2faa867358866fc 100644 --- a/src/code/ia32.c +++ b/src/code/ia32.c @@ -1,5 +1,5 @@ /* - * $Id: ia32.c,v 1.15 2001/08/13 23:39:10 mast Exp $ + * $Id: ia32.c,v 1.16 2001/08/16 18:49:46 marcus Exp $ * * Machine code generator for IA32. * @@ -291,6 +291,11 @@ void update_f_jump(INT32 offset, INT32 to_offset) upd_pointer(offset, to_offset - offset - 4); } +INT32 read_f_jump(INT32 offset) +{ + return read_pointer(offset) + offset + 4; +} + void ia32_push_int(INT32 x) { struct svalue tmp; diff --git a/src/code/ia32.h b/src/code/ia32.h index e4fe22763539ec2860c5fad7e7ee5a25c18b6bf6..e03b7761e047464e6ecb46d3f37fa52b261fb9b0 100644 --- a/src/code/ia32.h +++ b/src/code/ia32.h @@ -1,5 +1,5 @@ /* - * $Id: ia32.h,v 1.12 2001/08/13 23:39:10 mast Exp $ + * $Id: ia32.h,v 1.13 2001/08/16 18:49:47 marcus Exp $ */ #define PIKE_OPCODE_T unsigned INT8 @@ -118,10 +118,11 @@ void ia32_decode_program(struct program *p); INT32 ins_f_jump(unsigned int b); void update_f_jump(INT32 offset, INT32 to_offset); +INT32 read_f_jump(INT32 offset); #define INS_F_JUMP ins_f_jump #define UPDATE_F_JUMP update_f_jump - +#define READ_F_JUMP read_f_jump void ia32_flush_code_generator(void); #define FLUSH_CODE_GENERATOR_STATE ia32_flush_code_generator diff --git a/src/peep.c b/src/peep.c index 939fe45a42fee401c4352d0a4bfbb4309aec4e7b..0d510cf949b894f0b32f5072e790461c33aaa799 100644 --- a/src/peep.c +++ b/src/peep.c @@ -19,7 +19,7 @@ #include "interpret.h" #include "pikecode.h" -RCSID("$Id: peep.c,v 1.68 2001/08/15 16:40:47 marcus Exp $"); +RCSID("$Id: peep.c,v 1.69 2001/08/16 18:49:46 marcus Exp $"); static void asm_opt(void); @@ -138,7 +138,6 @@ void update_arg(int instr,INT32 arg) #define FLUSH_CODE_GENERATOR_STATE() #endif - /**** Bytecode Generator *****/ void assemble(void) @@ -328,7 +327,7 @@ void assemble(void) tmp=INS_F_JUMP(c->opcode); if(tmp != -1) { - upd_pointer(tmp, jumps[c->arg]); + UPDATE_F_JUMP(tmp, jumps[c->arg]); jumps[c->arg]=~tmp; break; } @@ -407,7 +406,7 @@ void assemble(void) #ifdef INS_F_JUMP if(jumps[e] < 0) { - tmp = read_pointer(~jumps[e]); + tmp = READ_F_JUMP(~jumps[e]); UPDATE_F_JUMP(~jumps[e], tmp2); jumps[e]=tmp; continue;