From: AndreaCorallo Date: Sun, 1 Mar 2020 14:42:41 +0000 (+0000) Subject: Remove relocation index form LIMPLE setimm X-Git-Tag: emacs-28.0.90~2727^2~806 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b41d76fa5e0bce80a3ef92f30243f9c53b9ac6bc;p=emacs.git Remove relocation index form LIMPLE setimm Given that every object identify a relocation class simplify setimm too. --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 7792605fff8..74d352394fb 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -665,7 +665,7 @@ If DST-N is specified use it otherwise assume it to be the current slot." (comp-add-const-to-relocs val) ;; Leave relocation index nil on purpose, will be fixed-up in final ;; by `comp-finalize-relocs'. - (comp-emit `(setimm ,(comp-slot) nil ,val))) + (comp-emit `(setimm ,(comp-slot) ,val))) (defun comp-make-curr-block (block-name entry-sp &optional addr) "Create a basic block with BLOCK-NAME and set it as current block. @@ -762,7 +762,7 @@ Return value is the fall through block name." ;; FIXME this not efficient for big jump tables. We should have a second ;; strategy for this case. (pcase last-insn - (`(setimm ,_ ,_ ,jmp-table) + (`(setimm ,_ ,jmp-table) (cl-loop for test being each hash-keys of jmp-table using (hash-value target-label) @@ -1619,7 +1619,7 @@ Here goes everything that can be done not iteratively (read once). (`(,(or 'callref 'direct-callref) ,_f . ,args) (when backward (comp-ref-args-to-array args))) - (`(setimm ,lval ,_ ,v) + (`(setimm ,lval ,v) (setf (comp-mvar-const-vld lval) t (comp-mvar-constant lval) v (comp-mvar-type lval) (comp-strict-type-of v))))))) @@ -1658,7 +1658,7 @@ Here goes everything that can be done not iteratively (read once). ;; See `comp-emit-setimm'. (comp-add-const-to-relocs value) (setf (car insn) 'setimm - (cddr insn) `(nil ,value)))))) + (cddr insn) `(,value)))))) (defun comp-propagate-insn (insn) "Propagate within INSN." diff --git a/src/comp.c b/src/comp.c index bcb0c69986d..0b7b2b92615 100644 --- a/src/comp.c +++ b/src/comp.c @@ -1594,9 +1594,9 @@ emit_limple_insn (Lisp_Object insn) } else if (EQ (op, Qsetimm)) { - /* Ex: (setimm #s(comp-mvar 9 1 t 3 nil) 3 a). */ - emit_comment (SSDATA (Fprin1_to_string (arg[2], Qnil))); - imm_reloc_t reloc = obj_to_reloc (arg[2]); + /* Ex: (setimm #s(comp-mvar 9 1 t 3 nil) a). */ + emit_comment (SSDATA (Fprin1_to_string (arg[1], Qnil))); + imm_reloc_t reloc = obj_to_reloc (arg[1]); emit_frame_assignment ( arg[0], gcc_jit_lvalue_as_rvalue (