}
\f
-/*******************************/
-/* Code emitters for inlines. */
-/*******************************/
+/**************/
+/* Inliners. */
+/**************/
static gcc_jit_rvalue *
emit_add1 (Lisp_Object insn)
&res);
}
+static gcc_jit_rvalue *
+emit_integerp (Lisp_Object insn)
+{
+ gcc_jit_rvalue *x = emit_mvar_val (SECOND (insn));
+ gcc_jit_rvalue *res = emit_INTEGERP (x);
+ return gcc_jit_context_new_call (comp.ctxt, NULL, comp.bool_to_lisp_obj, 1,
+ &res);
+}
+
\f
/****************************************************************/
/* Inline function definition and lisp data structure follows. */
emit_simple_limple_call_void_ret);
register_emitter (Qhelper_save_restriction,
emit_simple_limple_call_void_ret);
+ /* Inliners. */
register_emitter (QFadd1, emit_add1);
register_emitter (QFsub1, emit_sub1);
register_emitter (QFconsp, emit_consp);
register_emitter (QFcdr, emit_cdr);
register_emitter (Qnegate, emit_negate);
register_emitter (QFnumberp, emit_numperp);
+ register_emitter (QFintegerp, emit_integerp);
}
comp.ctxt = gcc_jit_context_acquire();
DEFSYM (QFcdr, "Fcdr");
DEFSYM (Qnegate, "negate");
DEFSYM (QFnumberp, "Fnumberp");
+ DEFSYM (QFintegerp, "Fintegerp");
defsubr (&Scomp_init_ctxt);
defsubr (&Scomp_release_ctxt);