]> git.eshelyaron.com Git - emacs.git/commitdiff
inline setcar setcdr
authorAndrea Corallo <andrea_corallo@yahoo.it>
Thu, 15 Aug 2019 20:45:30 +0000 (22:45 +0200)
committerAndrea Corallo <akrl@sdf.org>
Wed, 1 Jan 2020 10:34:01 +0000 (11:34 +0100)
src/comp.c

index 71dda173995a7543d9a85ff52f8c2306285f1ffb..6a576cfe11094abe34c534f94ecbd0565ace30cd 100644 (file)
@@ -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");