diff options
| author | Andrea Corallo | 2019-08-15 22:45:30 +0200 |
|---|---|---|
| committer | Andrea Corallo | 2020-01-01 11:34:01 +0100 |
| commit | fd6c673cfa76b30d3910963982e2c28ca208e827 (patch) | |
| tree | 221c7211fa84ce3347f706559c90e9485242d336 /src/comp.c | |
| parent | 15e31a4a1fa359cfabda074903fce79f4982245b (diff) | |
| download | emacs-fd6c673cfa76b30d3910963982e2c28ca208e827.tar.gz emacs-fd6c673cfa76b30d3910963982e2c28ca208e827.zip | |
inline setcar setcdr
Diffstat (limited to 'src/comp.c')
| -rw-r--r-- | src/comp.c | 28 |
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 | ||
| 1446 | static gcc_jit_rvalue * | 1446 | static gcc_jit_rvalue * |
| 1447 | emit_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 | |||
| 1458 | static gcc_jit_rvalue * | ||
| 1459 | emit_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 | |||
| 1470 | static gcc_jit_rvalue * | ||
| 1447 | emit_numperp (Lisp_Object insn) | 1471 | emit_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"); |