aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
authorAndrea Corallo2019-08-15 22:45:30 +0200
committerAndrea Corallo2020-01-01 11:34:01 +0100
commitfd6c673cfa76b30d3910963982e2c28ca208e827 (patch)
tree221c7211fa84ce3347f706559c90e9485242d336 /src/comp.c
parent15e31a4a1fa359cfabda074903fce79f4982245b (diff)
downloademacs-fd6c673cfa76b30d3910963982e2c28ca208e827.tar.gz
emacs-fd6c673cfa76b30d3910963982e2c28ca208e827.zip
inline setcar setcdr
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/comp.c b/src/comp.c
index 71dda173995..6a576cfe110 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -1444,6 +1444,30 @@ emit_cdr (Lisp_Object insn)
1444} 1444}
1445 1445
1446static gcc_jit_rvalue * 1446static gcc_jit_rvalue *
1447emit_setcar (Lisp_Object insn)
1448{
1449 gcc_jit_rvalue *args[] =
1450 { emit_mvar_val (SECOND (insn)),
1451 emit_mvar_val (THIRD (insn)) };
1452 return gcc_jit_context_new_call (comp.ctxt,
1453 NULL,
1454 comp.setcar,
1455 2, args);
1456}
1457
1458static gcc_jit_rvalue *
1459emit_setcdr (Lisp_Object insn)
1460{
1461 gcc_jit_rvalue *args[] =
1462 { emit_mvar_val (SECOND (insn)),
1463 emit_mvar_val (THIRD (insn)) };
1464 return gcc_jit_context_new_call (comp.ctxt,
1465 NULL,
1466 comp.setcdr,
1467 2, args);
1468}
1469
1470static gcc_jit_rvalue *
1447emit_numperp (Lisp_Object insn) 1471emit_numperp (Lisp_Object insn)
1448{ 1472{
1449 gcc_jit_rvalue *x = emit_mvar_val (SECOND (insn)); 1473 gcc_jit_rvalue *x = emit_mvar_val (SECOND (insn));
@@ -2344,6 +2368,8 @@ DEFUN ("comp-init-ctxt", Fcomp_init_ctxt, Scomp_init_ctxt,
2344 register_emitter (QFconsp, emit_consp); 2368 register_emitter (QFconsp, emit_consp);
2345 register_emitter (QFcar, emit_car); 2369 register_emitter (QFcar, emit_car);
2346 register_emitter (QFcdr, emit_cdr); 2370 register_emitter (QFcdr, emit_cdr);
2371 register_emitter (QFsetcar, emit_setcar);
2372 register_emitter (QFsetcdr, emit_setcdr);
2347 register_emitter (Qnegate, emit_negate); 2373 register_emitter (Qnegate, emit_negate);
2348 register_emitter (QFnumberp, emit_numperp); 2374 register_emitter (QFnumberp, emit_numperp);
2349 register_emitter (QFintegerp, emit_integerp); 2375 register_emitter (QFintegerp, emit_integerp);
@@ -2754,6 +2780,8 @@ syms_of_comp (void)
2754 DEFSYM (QFconsp, "Fconsp"); 2780 DEFSYM (QFconsp, "Fconsp");
2755 DEFSYM (QFcar, "Fcar"); 2781 DEFSYM (QFcar, "Fcar");
2756 DEFSYM (QFcdr, "Fcdr"); 2782 DEFSYM (QFcdr, "Fcdr");
2783 DEFSYM (QFsetcar, "Fsetcar");
2784 DEFSYM (QFsetcdr, "Fsetcdr");
2757 DEFSYM (Qnegate, "negate"); 2785 DEFSYM (Qnegate, "negate");
2758 DEFSYM (QFnumberp, "Fnumberp"); 2786 DEFSYM (QFnumberp, "Fnumberp");
2759 DEFSYM (QFintegerp, "Fintegerp"); 2787 DEFSYM (QFintegerp, "Fintegerp");