diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bytecode.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index 299c651b90e..ed1eb178468 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -1426,12 +1426,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, ptrdiff_t i; struct Lisp_Hash_Table *h = XHASH_TABLE(jmp_table); -#ifdef BYTE_CODE_SAFE - /* Hash tables for switch are declared with :size set to exact - number of cases, so this should always be true. */ - eassert (HASH_TABLE_SIZE (h) == h->count); -#endif - if (h->count <= 5) { /* Do a linear search if there are not many cases FIXME: 5 is arbitrarily chosen. */ @@ -1440,6 +1434,10 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, #ifdef BYTE_CODE_SAFE eassert (!NILP (HASH_HASH (h, i))); #endif + /* Hash tables for switch are declared with :size set to the + exact number of cases, thus + HASH_TABLE_SIZE (h) == h->count. */ + if ((EQ (v1, HASH_KEY (h, i)) || (h->test.cmpfn && h->test.cmpfn (&h->test, v1, HASH_KEY (h, i))))) |
