I've attached a diff below that adds an auxiliary optable to bytecode.c and attempts to integrate it into bytecode.el. I can run emacs -Q with it, but when I run it with my configuration I get the following in stderr: Invalid function: ((bytecomp "Wrong type argument: arrayp, nil" :error "*Compile-Log*")) And then Emacs aborts (--debug-init doesn't change this). Would someone with experience in the bytecompiler be so kind as to help me fix this? My initial reaction is that the stale bytecode is somehow incompatible, but then why does emacs -Q run fine? Flymake in every elisp buffer is reporting that the first require or provide in the buffer contains a "Wrong type argument: arrayp, nil". Background: I wanted to add a new search procedure for vectors that was faster than memq, and vector-memq turns out to be. The problem is that since memq is a bytecode operation, it turns out to be faster than vector-memq for small input unless I make sure that memq isn't turned into a bytecode op. So since the current space in the lookup table is limited, I figured that a prefix command that looks up in a secondary table would be a good solution.