]> gitweb.factorcode.org Git - factor.git/commitdiff
Optimizer report now shows number of passes
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 20 Jul 2008 06:13:14 +0000 (01:13 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 20 Jul 2008 06:13:14 +0000 (01:13 -0500)
extra/optimizer/debugger/debugger.factor
extra/reports/optimizer/optimizer.factor

index fdae5388964499dac46f60f0b7861a02b9feac85..7fe317aadd9a51b8e724d98611d5bfebaeea76d8 100755 (executable)
@@ -3,8 +3,8 @@
 USING: classes io kernel kernel.private math.parser namespaces
 optimizer prettyprint prettyprint.backend sequences words arrays
 match macros assocs sequences.private generic combinators
-sorting math quotations accessors inference inference.dataflow
-optimizer.specializers ;
+sorting math quotations accessors inference inference.backend
+inference.dataflow optimizer.specializers generator ;
 IN: optimizer.debugger
 
 ! A simple tool for turning dataflow IR into quotations, for
@@ -135,14 +135,21 @@ M: object node>quot
 
 : optimized-word. ( word ? -- ) >r specialized-def r> optimized-quot. ;
 
+SYMBOL: pass-count
 SYMBOL: words-called
 SYMBOL: generics-called
 SYMBOL: methods-called
 SYMBOL: intrinsics-called
 SYMBOL: node-count
 
-: dataflow>report ( node -- alist )
+: count-optimization-passes ( node n -- node n )
+    >r optimize-1
+    [ r> 1+ count-optimization-passes ] [ r> ] if ;
+
+: make-report ( word -- assoc )
     [
+        word-dataflow nip 1 count-optimization-passes pass-count set
+
         H{ } clone words-called set
         H{ } clone generics-called set
         H{ } clone methods-called set
@@ -164,14 +171,12 @@ SYMBOL: node-count
         node-count set
     ] H{ } make-assoc ;
 
-: quot-optimize-report ( quot -- report )
-    dataflow optimize dataflow>report ;
-
-: word-optimize-report ( word -- report )
-    def>> quot-optimize-report ;
-
 : report. ( report -- )
     [
+        "==== Optimization passes:" print
+        pass-count get .
+        nl
+
         "==== Total number of dataflow nodes:" print
         node-count get .
 
@@ -186,4 +191,4 @@ SYMBOL: node-count
     ] bind ;
 
 : optimizer-report. ( word -- )
-    word-optimize-report report. ;
+    make-report report. ;
index ec3668b83b98290273e4126371ede7cfd5ae68aa..b51fa5c8ee8a244ad9857e5c0c7816cee96f48fa 100755 (executable)
@@ -2,13 +2,10 @@
 ! See http://factorcode.org/license.txt for BSD license.\r
 USING: accessors assocs words sequences arrays compiler\r
 tools.time io.styles io prettyprint vocabs kernel sorting\r
-generator optimizer math math.order math.statistics combinators ;\r
+generator optimizer math math.order math.statistics combinators\r
+optimizer.debugger ;\r
 IN: report.optimizer\r
 \r
-: count-optimization-passes ( nodes n -- n )\r
-    >r optimize-1\r
-    [ r> 1+ count-optimization-passes ] [ drop r> ] if ;\r
-\r
 : table. ( alist -- )\r
     20 short tail*\r
     standard-table-style\r
@@ -28,13 +25,12 @@ IN: report.optimizer
         tri\r
     ] 2bi ; inline\r
 \r
+: optimization-passes ( word -- n )\r
+    word-dataflow nip 1 count-optimization-passes nip ;\r
+\r
 : optimizer-measurements ( -- alist )\r
     all-words [ compiled>> ] filter\r
-    [\r
-        dup [\r
-            word-dataflow nip 1 count-optimization-passes\r
-        ] benchmark 2array\r
-    ] { } map>assoc ;\r
+    [ dup [ optimization-passes ] benchmark 2array ] { } map>assoc ;\r
 \r
 : optimizer-measurements. ( alist -- )\r
     {\r