diff options
author | Andrea Corallo <akrl@sdf.org> | 2019-12-19 10:46:45 +0100 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2020-01-01 11:38:13 +0100 |
commit | a647a97320e72db275a05961ae09e487ee3063e2 (patch) | |
tree | 8f88ee29e737ffc0ab1368ae51a8174e804297af /src/comp.c | |
parent | ee4feb005ffe1d35ffc4d390d18b88ecfdebe2c2 (diff) | |
download | emacs-a647a97320e72db275a05961ae09e487ee3063e2.tar.gz emacs-a647a97320e72db275a05961ae09e487ee3063e2.tar.bz2 emacs-a647a97320e72db275a05961ae09e487ee3063e2.zip |
better scratch slot support
Diffstat (limited to 'src/comp.c')
-rw-r--r-- | src/comp.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/comp.c b/src/comp.c index 63c99b98334..ce2a542e7cf 100644 --- a/src/comp.c +++ b/src/comp.c @@ -297,8 +297,9 @@ declare_block (Lisp_Object block_name) static gcc_jit_lvalue * get_slot (Lisp_Object mvar) { - EMACS_INT slot_n = XFIXNUM (CALL1I (comp-mvar-slot, mvar)); - if (slot_n == -1) + Lisp_Object mvar_slot = CALL1I (comp-mvar-slot, mvar); + + if (EQ (mvar_slot, Qscratch)) { if (!comp.scratch) comp.scratch = gcc_jit_function_new_local (comp.func, @@ -307,6 +308,7 @@ get_slot (Lisp_Object mvar) "scratch"); return comp.scratch; } + EMACS_INT slot_n = XFIXNUM (mvar_slot); gcc_jit_lvalue **frame = (CALL1I (comp-mvar-ref, mvar) || SPEED < 2) ? comp.frame : comp.f_frame; @@ -3366,6 +3368,7 @@ syms_of_comp (void) /* Others. */ DEFSYM (Qfixnum, "fixnum"); + DEFSYM (Qscratch, "scratch"); /* To be signaled by the compiler. */ DEFSYM (Qnative_compiler_error, "native-compiler-error"); |