Speed patch. The code as produced by the compiler for the NEXTARG and PEEKARG macros can be shortened by three instructions on an x86 processor. Unfortunately, this isn't portable. To detect the case, we need a new macro, that I christened ALLOW_UNALIGNED_SHORT. This symbol could be set for x86 processors in configure, or better, configure could figure out if the processor allow unaligned access. Here's the suggested code: /* save a few cycles fetching arguments in the processor supports it */ #ifdef ALLOW_UNALIGNED_SHORT && BYTEORDER_IS_LITTLE_ENDIAN #define NEXTARG() (next_instr +=2, *(unsigned short*)&next_instr[-2]) #define PEEKARG() (*(unsigned short*)&next_instr[1]) #else #define NEXTARG() (next_instr += 2, (next_instr[-1]<<8) + next_instr[-2]) #define PEEKARG() ((next_instr[2]<<8) + next_instr[1]) #endif