<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/169b1edfe81f97ae7207765ded51395be316779f">https://github.com/macports/macports-base/commit/169b1edfe81f97ae7207765ded51395be316779f</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 169b1edfe Improve performance of "and not" in boolean expressions
</span>169b1edfe is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 169b1edfe81f97ae7207765ded51395be316779f
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Wed Feb 21 08:28:16 2024 +1100
<span style='display:block; white-space:pre;color:#404040;'> Improve performance of "and not" in boolean expressions
</span>---
src/port/port.tcl | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port/port.tcl b/src/port/port.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 9d698a6e4..1e3b9ef9a 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -993,13 +993,27 @@ proc andExpr { resname } {
</span> advance
set blist [list]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Handle "and not" as a direct operation, rather
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # than first calculating everything that is not b.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[lookahead] eq "not"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ advance
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set complement 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set complement 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> set b [unaryExpr blist]
if {!$b} {
return 0
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Calculate a intersect b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set reslist [portlist::opIntersection $reslist $blist]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$complement} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Calculate relative complement of b in a (AKA set difference)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set reslist [portlist::opComplement $reslist $blist]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Calculate a intersect b
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set reslist [portlist::opIntersection $reslist $blist]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
default {
return $a
</pre><pre style='margin:0'>
</pre>