]> git.eshelyaron.com Git - emacs.git/commitdiff
Move a runtime interpreter check to debug mode
authorMattias Engdegård <mattiase@acm.org>
Sun, 2 Jan 2022 10:15:41 +0000 (11:15 +0100)
committerMattias Engdegård <mattiase@acm.org>
Mon, 24 Jan 2022 10:41:46 +0000 (11:41 +0100)
* src/bytecode.c (exec_byte_code): Perform bytecode unwinding error
check only when building with debugging (NDEBUG not defined, checking
enabled, or BYTE_CODE_SAFE enabled).  This improves speed in several
ways.

src/bytecode.c

index 8e0f3d3e4b22bd8092b2a0aa29698e137002683c..75f1a6b43e5dc8c14171338443d56fdf75dbe1fc 100644 (file)
@@ -1564,15 +1564,17 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
 
  exit:
 
-  eassert (SDATA (bytestr) == bytestr_data);
-
-  /* Binds and unbinds are supposed to be compiled balanced.  */
+#if BYTE_CODE_SAFE || !defined NDEBUG
   if (SPECPDL_INDEX () != count)
     {
+      /* Binds and unbinds are supposed to be compiled balanced.  */
       if (SPECPDL_INDEX () > count)
        unbind_to (count, Qnil);
       error ("binding stack not balanced (serious byte compiler bug)");
     }
+#endif
+  /* The byte code should have been properly pinned.  */
+  eassert (SDATA (bytestr) == bytestr_data);
 
   Lisp_Object result = TOP;
   SAFE_FREE ();