emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/native-comp 23791cf 09/19: * Allow for modifying insn-cell insid


From: Andrea Corallo
Subject: feature/native-comp 23791cf 09/19: * Allow for modifying insn-cell inside `comp-loop-insn-in-block'
Date: Mon, 21 Dec 2020 14:52:39 -0500 (EST)

branch: feature/native-comp
commit 23791cf74da9c2e6369f2c15ef180ef2a8c21656
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>

    * Allow for modifying insn-cell inside `comp-loop-insn-in-block'
    
        * lisp/emacs-lisp/comp.el (comp-loop-insn-in-block): Update.
---
 lisp/emacs-lisp/comp.el | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 8791759..e8db238 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -759,14 +759,15 @@ VERBOSITY is a number between 0 and 3."
 
 (defmacro comp-loop-insn-in-block (basic-block &rest body)
   "Loop over all insns in BASIC-BLOCK executing BODY.
-Inside BODY `insn' can be used to read or set the current
-instruction."
+Inside BODY `insn' and `insn-cell'can be used to read or set the
+current instruction or its cell."
   (declare (debug (form body))
            (indent defun))
-  (let ((sym-cell (gensym "cell-")))
-    `(cl-symbol-macrolet ((insn (car ,sym-cell)))
-       (cl-loop for ,sym-cell on (comp-block-insns ,basic-block)
-               do ,@body))))
+  `(cl-symbol-macrolet ((insn (car insn-cell)))
+     (let ((insn-cell (comp-block-insns ,basic-block)))
+       (while insn-cell
+         ,@body
+         (setf insn-cell (cdr insn-cell))))))
 
 ;;; spill-lap pass specific code.
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]