summaryrefslogtreecommitdiff
path: root/src/comp.c
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2019-12-19 10:46:45 +0100
committerAndrea Corallo <akrl@sdf.org>2020-01-01 11:38:13 +0100
commita647a97320e72db275a05961ae09e487ee3063e2 (patch)
tree8f88ee29e737ffc0ab1368ae51a8174e804297af /src/comp.c
parentee4feb005ffe1d35ffc4d390d18b88ecfdebe2c2 (diff)
downloademacs-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.c7
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");