diff options
| author | rocky | 2020-06-26 19:40:11 -0400 |
|---|---|---|
| committer | rocky | 2020-06-26 19:40:11 -0400 |
| commit | afa6a9733e5ce0dc169bc8059028f987e1f33d14 (patch) | |
| tree | 33e922d1668fcc5f46de46a71f8eddc145c20120 /src/bytecode.c | |
| parent | acba19e24768112b13820c4e9e12eff4abc5d3b4 (diff) | |
| parent | ef71dc437fdcdf61d61519e5197c6e3016d8f3a5 (diff) | |
| download | emacs-afa6a9733e5ce0dc169bc8059028f987e1f33d14.tar.gz emacs-afa6a9733e5ce0dc169bc8059028f987e1f33d14.zip | |
Merge feature/zach-soc-bytecode-in-traceback
Diffstat (limited to 'src/bytecode.c')
| -rw-r--r-- | src/bytecode.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index 5ac30aa1010..6b7e9cbc7b9 100644 --- a/src/bytecode.c +++ b/src/bytecode.c | |||
| @@ -424,13 +424,14 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 424 | Threading provides a performance boost. These macros are how | 424 | Threading provides a performance boost. These macros are how |
| 425 | we allow the code to be compiled both ways. */ | 425 | we allow the code to be compiled both ways. */ |
| 426 | #ifdef BYTE_CODE_THREADED | 426 | #ifdef BYTE_CODE_THREADED |
| 427 | #define UPDATE_OFFSET (backtrace_byte_offset = pc - bytestr_data); | ||
| 427 | /* The CASE macro introduces an instruction's body. It is | 428 | /* The CASE macro introduces an instruction's body. It is |
| 428 | either a label or a case label. */ | 429 | either a label or a case label. */ |
| 429 | #define CASE(OP) insn_ ## OP | 430 | #define CASE(OP) insn_ ## OP |
| 430 | /* NEXT is invoked at the end of an instruction to go to the | 431 | /* NEXT is invoked at the end of an instruction to go to the |
| 431 | next instruction. It is either a computed goto, or a | 432 | next instruction. It is either a computed goto, or a |
| 432 | plain break. */ | 433 | plain break. */ |
| 433 | #define NEXT goto *(targets[op = FETCH]) | 434 | #define NEXT UPDATE_OFFSET goto *(targets[op = FETCH]) |
| 434 | /* FIRST is like NEXT, but is only used at the start of the | 435 | /* FIRST is like NEXT, but is only used at the start of the |
| 435 | interpreter body. In the switch-based interpreter it is the | 436 | interpreter body. In the switch-based interpreter it is the |
| 436 | switch, so the threaded definition must include a semicolon. */ | 437 | switch, so the threaded definition must include a semicolon. */ |
| @@ -1448,7 +1449,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 1448 | unbind_to (count, Qnil); | 1449 | unbind_to (count, Qnil); |
| 1449 | error ("binding stack not balanced (serious byte compiler bug)"); | 1450 | error ("binding stack not balanced (serious byte compiler bug)"); |
| 1450 | } | 1451 | } |
| 1451 | 1452 | backtrace_byte_offset = -1; | |
| 1452 | Lisp_Object result = TOP; | 1453 | Lisp_Object result = TOP; |
| 1453 | SAFE_FREE (); | 1454 | SAFE_FREE (); |
| 1454 | return result; | 1455 | return result; |