Branch: Tag:

2001-07-24

2001-07-24 01:16:11 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

squeezed another percent or so out of the interpreter (I need to test this stuff on an athlon processor!)

Rev: src/code/README.txt:1.6
Rev: src/code/ia32.c:1.9
Rev: src/code/ia32.h:1.7
Rev: src/docode.c:1.126
Rev: src/docode.h:1.13
Rev: src/las.c:1.260
Rev: src/peep.c:1.64

19:   #include "interpret.h"   #include "pikecode.h"    - RCSID("$Id: peep.c,v 1.63 2001/07/21 09:30:25 hubbe Exp $"); + RCSID("$Id: peep.c,v 1.64 2001/07/24 01:16:11 hubbe Exp $");      static void asm_opt(void);   
318:    switch(instrs[c->opcode - F_OFFSET].flags)    {    case I_ISJUMP: + #ifdef INS_F_JUMP +  tmp=INS_F_JUMP(c->opcode); +  if(tmp != -1) +  { +  upd_pointer(tmp, jumps[c->arg]); +  jumps[c->arg]=~tmp; +  break; +  } + #endif +     ins_f_byte(c->opcode);       case I_ISPOINTER:
348:    }    }    + #ifdef ALIGN_PIKE_JUMPS +  if(e+1 < length) +  { +  switch(c->opcode) +  { +  case F_RETURN: +  case F_VOLATILE_RETURN: +  case F_BRANCH: +  case F_RETURN_0: +  case F_RETURN_1: +  case F_RETURN_LOCAL: +  + #define CALLS(X) \ +  case PIKE_CONCAT3(F_,X,_AND_RETURN): \ +  case PIKE_CONCAT3(F_MARK_,X,_AND_RETURN): +  +  CALLS(APPLY) +  CALLS(CALL_FUNCTION) +  CALLS(CALL_LFUN) +  CALLS(CALL_BUILTIN) +  while( ((INT32) PC & (ALIGN_PIKE_JUMPS-1) ) ) +  ins_byte(0); +  } +  } + #endif +     c++;    }   
362: Inside #if defined(PIKE_DEBUG)
   fatal("Hyperspace error: unknown jump point %ld at %d (pc=%x).\n",    PTRDIFF_T_TO_LONG(e), labels[e], jumps[e]);   #endif + #ifdef INS_F_JUMP +  if(jumps[e] < 0) +  { +  tmp = read_pointer(~jumps[e]); +  UPDATE_F_JUMP(~jumps[e], tmp2); +  jumps[e]=tmp; +  continue; +  } + #endif +     tmp = read_pointer(jumps[e]);    upd_pointer(jumps[e], tmp2 - jumps[e]);    jumps[e]=tmp;