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;