Overview
SHA1 Hash: | 4df56a9e7eb00cf5f8a7282b1b6ea8eb7f7df6b1 |
---|---|
Date: | 2007-10-13 23:42:08 |
User: | aku |
Comment: | For the record an alternative design for the main method of the pass manager where the four principal loops (skip, setup, run, and defer) are merged into two (skip/setup) and (run/defer). Not really less code, also more complex to understand and maintain. The fact that 'setup' and 'run' is performed for the same passes is more difficult to see. This code will not be used. |
Timelines: | ancestors | descendants | both | trunk |
Other Links: | files | ZIP archive | manifest |
Tags And Properties
- branch=trunk inherited from [a28c83647d]
- closed added by [eeae5e577c] on 2009-01-29 23:05:59
- sym-trunk inherited from [a28c83647d]
Changes
[hide diffs]Modified tools/cvs2fossil/lib/c2f_pass.tcl from [ddf979344e] to [dbcd2bfeb0].
@@ -95,38 +95,48 @@ } } typemethod run {} { if {$mystart < 0} {set mystart 0} - if {$myend < 0} {set myend [expr {[llength $mypasses] - 1}]} + if {$myend < 0} {set myend end} # TODO: Timing statistics for the passes. # TODO: Artifact manager (clean after pass?. need to know skipped/defered passes ?) # TODO: # TODO: - set skipped [lrange $mypasses 0 [expr {$mystart - 1}]] - set run [lrange $mypasses $mystart $myend] - set defered [lrange $mypasses [expr {$myend + 1}] end] - - foreach p $skipped { - log write 0 pass "Skip $p" - Call $p load - } - foreach p $run { - log write 0 pass "Setup $p" - Call $p setup + set firstrun [lindex $mypasses $mystart] + set lastrun [lindex $mypasses $myend] + + # We have in principle four loops here (skip, setup, run, and + # defer). These are however merged into two, skip/setup, and + # run/defer. + + set skip 1 + foreach p [lrange $mypasses 0 $myend] { + if {$p eq $firstrun} {set skip 0} + if {$skip} { + log write 0 pass "Skip $p" + Call $p load + } else { + log write 0 pass "Setup $p" + Call $p setup + } } - foreach p $run { - log write 0 pass "Begin $p" - Call $p run - log write 0 pass "Done $p" - trouble abort? - } - foreach p $defered { - log write 0 pass "Defer $p" - Call $p discard + + set run 1 + foreach p [lrange $mypasses $mystart end] { + if {$run} { + log write 0 pass "Begin $p" + Call $p run + log write 0 pass "Done $p" + trouble abort? + } else { + log write 0 pass "Defer $p" + Call $p discard + } + if {$p eq $lastrun} {set run 0} } state release return }