]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/bytecode.c: (exec_byte_code) Use hash_lookup for Bswitch
authorVibhav Pant <vibhavp@gmail.com>
Wed, 18 Jan 2017 17:10:50 +0000 (22:40 +0530)
committerVibhav Pant <vibhavp@gmail.com>
Wed, 18 Jan 2017 17:10:50 +0000 (22:40 +0530)
Fgethash type checks the provided table object, which is unnecessary
for compiled bytecode.

src/bytecode.c

index 1695af9cb02376637d1ce3143356b13891dee683..fc434a2812f1dd6e4fa893dbe4c206be34ae8b53 100644 (file)
@@ -1417,8 +1417,10 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
           {
             Lisp_Object jmp_table = POP;
             Lisp_Object v1 = POP;
-            Lisp_Object dest = Fgethash(v1, jmp_table, Qnil);
-            if (!NILP(dest)) {
+            struct Lisp_Hash_Table *h = XHASH_TABLE(jmp_table);
+            ptrdiff_t i = hash_lookup(h, v1, NULL);
+            if (i >= 0) {
+              Lisp_Object dest = HASH_VALUE(h, i);
               int car = XINT(XCAR(dest));
               int cdr = XINT(XCDR(dest));
               op = car + (cdr << 8); /* Simulate FETCH2 */