From: Andrea Corallo Date: Thu, 15 Aug 2019 20:45:30 +0000 (+0200) Subject: inline setcar setcdr X-Git-Tag: emacs-28.0.90~2727^2~1276 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fd6c673cfa76b30d3910963982e2c28ca208e827;p=emacs.git inline setcar setcdr --- diff --git a/src/comp.c b/src/comp.c index 71dda173995..6a576cfe110 100644 --- a/src/comp.c +++ b/src/comp.c @@ -1443,6 +1443,30 @@ emit_cdr (Lisp_Object insn) 1, &x); } +static gcc_jit_rvalue * +emit_setcar (Lisp_Object insn) +{ + gcc_jit_rvalue *args[] = + { emit_mvar_val (SECOND (insn)), + emit_mvar_val (THIRD (insn)) }; + return gcc_jit_context_new_call (comp.ctxt, + NULL, + comp.setcar, + 2, args); +} + +static gcc_jit_rvalue * +emit_setcdr (Lisp_Object insn) +{ + gcc_jit_rvalue *args[] = + { emit_mvar_val (SECOND (insn)), + emit_mvar_val (THIRD (insn)) }; + return gcc_jit_context_new_call (comp.ctxt, + NULL, + comp.setcdr, + 2, args); +} + static gcc_jit_rvalue * emit_numperp (Lisp_Object insn) { @@ -2344,6 +2368,8 @@ DEFUN ("comp-init-ctxt", Fcomp_init_ctxt, Scomp_init_ctxt, register_emitter (QFconsp, emit_consp); register_emitter (QFcar, emit_car); register_emitter (QFcdr, emit_cdr); + register_emitter (QFsetcar, emit_setcar); + register_emitter (QFsetcdr, emit_setcdr); register_emitter (Qnegate, emit_negate); register_emitter (QFnumberp, emit_numperp); register_emitter (QFintegerp, emit_integerp); @@ -2754,6 +2780,8 @@ syms_of_comp (void) DEFSYM (QFconsp, "Fconsp"); DEFSYM (QFcar, "Fcar"); DEFSYM (QFcdr, "Fcdr"); + DEFSYM (QFsetcar, "Fsetcar"); + DEFSYM (QFsetcdr, "Fsetcdr"); DEFSYM (Qnegate, "negate"); DEFSYM (QFnumberp, "Fnumberp"); DEFSYM (QFintegerp, "Fintegerp");