[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/beardbolt 4b6abc5ef8 129/323: Optimize rmsbolt-process-
From: |
ELPA Syncer |
Subject: |
[elpa] externals/beardbolt 4b6abc5ef8 129/323: Optimize rmsbolt-process-src-asm-lines |
Date: |
Thu, 9 Mar 2023 10:58:24 -0500 (EST) |
branch: externals/beardbolt
commit 4b6abc5ef802b433c12f22d455e2c94fa2343e55
Author: Jay Kamat <jaygkamat@gmail.com>
Commit: Jay Kamat <jaygkamat@gmail.com>
Optimize rmsbolt-process-src-asm-lines
---
rmsbolt.el | 126 ++++++++++++++++++++++++++++++-------------------------------
1 file changed, 62 insertions(+), 64 deletions(-)
diff --git a/rmsbolt.el b/rmsbolt.el
index bd78f392d3..13fc1856ff 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -788,70 +788,68 @@ Argument SRC-BUFFER source buffer."
(match (when raw-match
(match-string 1 line)))
(used-label-p (gethash match used-labels)))
- (cl-tagbody
- ;; Process file name hints
- (when (string-match rmsbolt-source-file line)
- (if (match-string 3 line)
- ;; Clang style match
- (puthash (string-to-number (match-string 1 line))
- (expand-file-name (match-string 3 line) (match-string
2 line))
- source-file-map)
- (puthash (string-to-number (match-string 1 line))
- (match-string 2 line)
- source-file-map)))
- ;; Process any line number hints
- (when (string-match rmsbolt-source-tag line)
- (if (or (not src-file-name) ;; Skip file match if we don't have a
current filename
- (file-equal-p src-file-name
- (gethash
- (string-to-number (match-string 1 line))
- source-file-map
- ;; Assume we never will compile dev null :P
- "/dev/null")))
- (setq source-linum (string-to-number
- (match-string 2 line)))
- (setq source-linum nil)))
- (when (string-match rmsbolt-source-stab line)
- (pcase (string-to-number (match-string 1 line))
- ;; http://www.math.utah.edu/docs/info/stabs_11.html
- (68
- (setq source-linum (match-string 2 line)))
- ((or 100 132)
- (setq source-linum nil))))
-
- ;; End block, reset prev-label and source
- (when (string-match-p rmsbolt-endblock line)
- (setq prev-label nil))
-
- (when (and (buffer-local-value 'rmsbolt-filter-comment-only
src-buffer)
- (string-match-p rmsbolt-comment-only line))
- (go continue))
-
- ;; continue means we don't add to the ouptut
- (when match
- (if (not used-label-p)
- ;; Unused label
- (when (buffer-local-value 'rmsbolt-filter-labels src-buffer)
- (go continue))
- ;; Real label, set prev-label
- (setq prev-label raw-match)))
- (when (and (buffer-local-value 'rmsbolt-filter-directives src-buffer)
- (not match))
- (if (and (string-match-p rmsbolt-data-defn line)
- prev-label)
- ;; data is being used
- nil
- (when (string-match-p rmsbolt-directive line)
- (go continue))))
- ;; Add line numbers to mapping
- (when (and source-linum
- (rmsbolt--has-opcode-p line))
- (add-text-properties 0 (length line)
- `(rmsbolt-src-line ,source-linum) line))
- ;; Add line
- (push line result)
-
- continue)))
+ (catch 'continue
+ (cond
+ ;; Process file name hints
+ ((string-match rmsbolt-source-file line)
+ (if (match-string 3 line)
+ ;; Clang style match
+ (puthash (string-to-number (match-string 1 line))
+ (expand-file-name (match-string 3 line) (match-string
2 line))
+ source-file-map)
+ (puthash (string-to-number (match-string 1 line))
+ (match-string 2 line)
+ source-file-map)))
+ ;; Process any line number hints
+ ((string-match rmsbolt-source-tag line)
+ (if (or (not src-file-name) ;; Skip file match if we don't have a
current filename
+ (file-equal-p src-file-name
+ (gethash
+ (string-to-number (match-string 1 line))
+ source-file-map
+ ;; Assume we never will compile dev null :P
+ "/dev/null")))
+ (setq source-linum (string-to-number
+ (match-string 2 line)))
+ (setq source-linum nil)))
+ ((string-match rmsbolt-source-stab line)
+ (pcase (string-to-number (match-string 1 line))
+ ;; http://www.math.utah.edu/docs/info/stabs_11.html
+ (68
+ (setq source-linum (match-string 2 line)))
+ ((or 100 132)
+ (setq source-linum nil)))))
+ ;; End block, reset prev-label and source
+ (when (string-match-p rmsbolt-endblock line)
+ (setq prev-label nil))
+
+ (when (and (buffer-local-value 'rmsbolt-filter-comment-only
src-buffer)
+ (string-match-p rmsbolt-comment-only line))
+ (throw 'continue t))
+
+ ;; continue means we don't add to the ouptut
+ (when match
+ (if (not used-label-p)
+ ;; Unused label
+ (when (buffer-local-value 'rmsbolt-filter-labels src-buffer)
+ (throw 'continue t))
+ ;; Real label, set prev-label
+ (setq prev-label raw-match)))
+ (when (and (buffer-local-value 'rmsbolt-filter-directives src-buffer)
+ (not match))
+ (if (and (string-match-p rmsbolt-data-defn line)
+ prev-label)
+ ;; data is being used
+ nil
+ (when (string-match-p rmsbolt-directive line)
+ (throw 'continue t))))
+ ;; Add line numbers to mapping
+ (when (and source-linum
+ (rmsbolt--has-opcode-p line))
+ (add-text-properties 0 (length line)
+ `(rmsbolt-src-line ,source-linum) line))
+ ;; Add line
+ (push line result))))
(nreverse result)))
(cl-defun rmsbolt--process-python-bytecode (_src-buffer asm-lines)
- [elpa] externals/beardbolt d1b0f7c2ba 118/323: Fix compilation warnings, (continued)
- [elpa] externals/beardbolt d1b0f7c2ba 118/323: Fix compilation warnings, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 0ed6a01cd1 119/323: Fix initial run of emacs-lisp disassembler, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 77842a5f78 126/323: Add elisp support to docs, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt c00d09a850 122/323: Use hashtables instead of lists as sets for labels used, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt c009c2df44 130/323: Trim left side of strings to activate 'starting with period' opt, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9e38f2238b 135/323: Add support for functions as arguments to :compile-cmd, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 1cc069a121 132/323: Quote filenames before passing them as shell arguments, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 495d481a94 136/323: Move rmsbolt-command initialization to end, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 39055a3dc4 133/323: Fix disassembly of partial files in C/C++, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 27e7bb714f 139/323: Add suppport for PHP, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 4b6abc5ef8 129/323: Optimize rmsbolt-process-src-asm-lines,
ELPA Syncer <=
- [elpa] externals/beardbolt 67238e0272 138/323: Add rmsbolt-default-directory customization, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9b2c85397c 149/323: Add texinfo version of docs, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt ec99a1aa31 146/323: Attempt to fix whitespace clearing on hot recompiles, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 5e389a88d9 152/323: Add rmsbolt splitter for splitting and mutating commands, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 0fbc3d3f09 153/323: Enable compile_commands.json parsing for c/cpp, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 743f9a68ec 158/323: Handle non absolute .file paths, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 609f781b3a 165/323: Fix usages of when-let, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt c9f3b839e9 156/323: Add support for D, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt a4f794666d 160/323: Add D to commentary, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt b7d318dfe1 178/323: Add Swift language support, ELPA Syncer, 2023/03/09