aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c
diff options
context:
space:
mode:
authorMattias EngdegÄrd2022-01-02 11:15:41 +0100
committerMattias EngdegÄrd2022-01-24 11:41:46 +0100
commit4ff1fb8eb475a540c094878db1811797e2ca2368 (patch)
tree12f43f5452514af85349f610965a7ae27f2b6b57 /src/bytecode.c
parentb3377e67a7b20a9a53aa2129b2c3951be67ad102 (diff)
downloademacs-4ff1fb8eb475a540c094878db1811797e2ca2368.tar.gz
emacs-4ff1fb8eb475a540c094878db1811797e2ca2368.zip
Move a runtime interpreter check to debug mode
* 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.
Diffstat (limited to 'src/bytecode.c')
-rw-r--r--src/bytecode.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index 8e0f3d3e4b2..75f1a6b43e5 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -1564,15 +1564,17 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1564 1564
1565 exit: 1565 exit:
1566 1566
1567 eassert (SDATA (bytestr) == bytestr_data); 1567#if BYTE_CODE_SAFE || !defined NDEBUG
1568
1569 /* Binds and unbinds are supposed to be compiled balanced. */
1570 if (SPECPDL_INDEX () != count) 1568 if (SPECPDL_INDEX () != count)
1571 { 1569 {
1570 /* Binds and unbinds are supposed to be compiled balanced. */
1572 if (SPECPDL_INDEX () > count) 1571 if (SPECPDL_INDEX () > count)
1573 unbind_to (count, Qnil); 1572 unbind_to (count, Qnil);
1574 error ("binding stack not balanced (serious byte compiler bug)"); 1573 error ("binding stack not balanced (serious byte compiler bug)");
1575 } 1574 }
1575#endif
1576 /* The byte code should have been properly pinned. */
1577 eassert (SDATA (bytestr) == bytestr_data);
1576 1578
1577 Lisp_Object result = TOP; 1579 Lisp_Object result = TOP;
1578 SAFE_FREE (); 1580 SAFE_FREE ();