Change: Use buffer-chars-modified-tick

Closes #203.  Thanks to Ihor Radchenko (@yantar92).
This commit is contained in:
Adam Porter 2022-06-13 19:08:36 -05:00
commit bacdacb1b2
3 changed files with 39 additions and 36 deletions

View file

@ -550,6 +550,7 @@ Simple links may also be written manually in either sexp or non-sexp form, like:
*Internal* *Internal*
+ Certain query predicates, when called multiple times in an ~and~ sub-expression, are optimized to a single call. + Certain query predicates, when called multiple times in an ~and~ sub-expression, are optimized to a single call.
+ Use ~buffer-chars-modified-tick~ instead of ~buffer-modified-tick~. (Thanks to [[https://github.com/yantar92][Ihor Radchenko]].)
** 0.6.2 ** 0.6.2

View file

@ -481,7 +481,7 @@ NARROW corresponds to the `org-ql-select' argument NARROW."
(if-let* ((buffer-cache (gethash (current-buffer) org-ql-cache)) (if-let* ((buffer-cache (gethash (current-buffer) org-ql-cache))
(query-cache (cadr buffer-cache)) (query-cache (cadr buffer-cache))
(modified-tick (car buffer-cache)) (modified-tick (car buffer-cache))
(buffer-unmodified-p (eq (buffer-modified-tick) modified-tick)) (buffer-unmodified-p (eq (buffer-chars-modified-tick) modified-tick))
(cached-result (gethash query-cache-key query-cache))) (cached-result (gethash query-cache-key query-cache)))
(pcase cached-result (pcase cached-result
('org-ql-nil nil) ('org-ql-nil nil)
@ -490,7 +490,7 @@ NARROW corresponds to the `org-ql-select' argument NARROW."
(cond ((or (not query-cache) (cond ((or (not query-cache)
(not buffer-unmodified-p)) (not buffer-unmodified-p))
(puthash (current-buffer) (puthash (current-buffer)
(list (buffer-modified-tick) (list (buffer-chars-modified-tick)
(let ((table (make-hash-table :test 'org-ql-hash-test))) (let ((table (make-hash-table :test 'org-ql-hash-test)))
(puthash query-cache-key (or new-result 'org-ql-nil) table) (puthash query-cache-key (or new-result 'org-ql-nil) table)
table)) table))
@ -545,7 +545,7 @@ Returns cons (INHERITED-TAGS . LOCAL-TAGS)."
(if-let* ((buffer-cache (gethash (current-buffer) org-ql-tags-cache)) (if-let* ((buffer-cache (gethash (current-buffer) org-ql-tags-cache))
(modified-tick (car buffer-cache)) (modified-tick (car buffer-cache))
(tags-cache (cdr buffer-cache)) (tags-cache (cdr buffer-cache))
(buffer-unmodified-p (eq (buffer-modified-tick) modified-tick)) (buffer-unmodified-p (eq (buffer-chars-modified-tick) modified-tick))
(cached-result (gethash position tags-cache))) (cached-result (gethash position tags-cache)))
;; Found in cache: return them. ;; Found in cache: return them.
;; FIXME: Isn't `cached-result' a list of (INHERITED . LOCAL)? It ;; FIXME: Isn't `cached-result' a list of (INHERITED . LOCAL)? It
@ -586,12 +586,12 @@ Returns cons (INHERITED-TAGS . LOCAL-TAGS)."
(setf buffer-cache (gethash (current-buffer) org-ql-tags-cache) (setf buffer-cache (gethash (current-buffer) org-ql-tags-cache)
modified-tick (car buffer-cache) modified-tick (car buffer-cache)
tags-cache (cdr buffer-cache) tags-cache (cdr buffer-cache)
buffer-unmodified-p (eq (buffer-modified-tick) modified-tick)) buffer-unmodified-p (eq (buffer-chars-modified-tick) modified-tick))
(unless (and buffer-cache buffer-unmodified-p) (unless (and buffer-cache buffer-unmodified-p)
;; Buffer-local tags cache empty or invalid: make new one. ;; Buffer-local tags cache empty or invalid: make new one.
(setf tags-cache (make-hash-table)) (setf tags-cache (make-hash-table))
(puthash (current-buffer) (puthash (current-buffer)
(cons (buffer-modified-tick) tags-cache) (cons (buffer-chars-modified-tick) tags-cache)
org-ql-tags-cache)) org-ql-tags-cache))
(puthash position all-tags tags-cache)))) (puthash position all-tags tags-cache))))
@ -622,7 +622,7 @@ Values compared with `equal'."
(pcase (if-let* ((buffer-cache (gethash (current-buffer) org-ql-node-value-cache)) (pcase (if-let* ((buffer-cache (gethash (current-buffer) org-ql-node-value-cache))
(modified-tick (car buffer-cache)) (modified-tick (car buffer-cache))
(position-cache (cdr buffer-cache)) (position-cache (cdr buffer-cache))
(buffer-unmodified-p (eq (buffer-modified-tick) modified-tick)) (buffer-unmodified-p (eq (buffer-chars-modified-tick) modified-tick))
(value-cache (gethash position position-cache)) (value-cache (gethash position position-cache))
(cached-value (alist-get fn value-cache nil nil #'equal))) (cached-value (alist-get fn value-cache nil nil #'equal)))
;; Found in cache: return it. ;; Found in cache: return it.
@ -637,13 +637,13 @@ Values compared with `equal'."
position-cache (cdr buffer-cache) position-cache (cdr buffer-cache)
value-cache (when position-cache value-cache (when position-cache
(gethash position position-cache)) (gethash position position-cache))
buffer-unmodified-p (eq (buffer-modified-tick) modified-tick)) buffer-unmodified-p (eq (buffer-chars-modified-tick) modified-tick))
(unless (and buffer-cache buffer-unmodified-p) (unless (and buffer-cache buffer-unmodified-p)
;; Buffer-local node cache empty or invalid: make new one. ;; Buffer-local node cache empty or invalid: make new one.
(setf position-cache (make-hash-table) (setf position-cache (make-hash-table)
value-cache (gethash position position-cache)) value-cache (gethash position position-cache))
(puthash (current-buffer) (puthash (current-buffer)
(cons (buffer-modified-tick) position-cache) (cons (buffer-chars-modified-tick) position-cache)
org-ql-node-value-cache)) org-ql-node-value-cache))
(setf (alist-get fn value-cache nil nil #'equal) new-value) (setf (alist-get fn value-cache nil nil #'equal) new-value)
(puthash position value-cache position-cache) (puthash position value-cache position-cache)

View file

@ -1034,6 +1034,8 @@ File: README.info, Node: 07-pre, Next: 062, Up: Changelog
*Internal* *Internal*
• Certain query predicates, when called multiple times in an and • Certain query predicates, when called multiple times in an and
sub-expression, are optimized to a single call. sub-expression, are optimized to a single call.
• Use buffer-chars-modified-tick instead of buffer-modified-tick.
(Thanks to Ihor Radchenko (https://github.com/yantar92).)
 
File: README.info, Node: 062, Next: 061, Prev: 07-pre, Up: Changelog File: README.info, Node: 062, Next: 061, Prev: 07-pre, Up: Changelog
@ -1679,34 +1681,34 @@ Node: Links36761
Node: Tips37448 Node: Tips37448
Node: Changelog37772 Node: Changelog37772
Node: 07-pre38540 Node: 07-pre38540
Node: 06239801 Node: 06239947
Node: 06140109 Node: 06140255
Node: 0640677 Node: 0640823
Node: 05243731 Node: 05243877
Node: 05144031 Node: 05144177
Node: 0544454 Node: 0544600
Node: 04945983 Node: 04946129
Node: 04846263 Node: 04846409
Node: 04746610 Node: 04746756
Node: 04647019 Node: 04647165
Node: 04547427 Node: 04547573
Node: 04447788 Node: 04447934
Node: 04348147 Node: 04348293
Node: 04248350 Node: 04248496
Node: 04148511 Node: 04148657
Node: 0448758 Node: 0448904
Node: 03252859 Node: 03253005
Node: 03153262 Node: 03153408
Node: 0353459 Node: 0353605
Node: 02356759 Node: 02356905
Node: 02256993 Node: 02257139
Node: 02157273 Node: 02157419
Node: 0257478 Node: 0257624
Node: 0161556 Node: 0161702
Node: Notes61657 Node: Notes61803
Node: Comparison with Org Agenda searches61819 Node: Comparison with Org Agenda searches61965
Node: org-sidebar62708 Node: org-sidebar62854
Node: License62987 Node: License63133
 
End Tag Table End Tag Table