On 07-Feb-2017 8:11 PM, "Stefan Monnier" wrote: >> Hmm... so goto-if-nil is never used any more? Aren't there cases where >> byte-switch results in slower code than goto-if-nil? > Once linear search for gethash when the number of keys are small is > implemented, byte-switch should still be faster, as all byte-goto-if-nil > and byte-goto-if-nil-else-pop bytecode is "replaced" with native linear > search code. Does that mean you answered "yes" to the first question? I thought goto-if-nil is also used in other circumstances. No. goto-if-nil is still used to compile `if` and other conditional forms. It's also used for cond forms which cannot use byte-switch, like: (cond ((eq v 1) 'foo) ((stringp v) 'bar)) Or forms where some not all clauses use the same test function, since the hash table can only use a single test.