From 31555b05cf896255ae36de4de0eacaffe68ab72f Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@slava-pestovs-macbook-pro.local>
Date: Mon, 27 Jul 2009 03:58:15 -0500
Subject: [PATCH] compiler.codegen: collect instruction statistics

---
 basis/compiler/codegen/codegen.factor | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/basis/compiler/codegen/codegen.factor b/basis/compiler/codegen/codegen.factor
index f1052da2d5..993edbf812 100755
--- a/basis/compiler/codegen/codegen.factor
+++ b/basis/compiler/codegen/codegen.factor
@@ -4,7 +4,7 @@ USING: namespaces make math math.order math.parser sequences accessors
 kernel kernel.private layouts assocs words summary arrays
 combinators classes.algebra alien alien.c-types alien.structs
 alien.strings alien.arrays alien.complex alien.libraries sets libc
-continuations.private fry cpu.architecture
+continuations.private fry cpu.architecture classes
 source-files.errors
 compiler.errors
 compiler.alien
@@ -18,6 +18,10 @@ compiler.codegen.fixup
 compiler.utilities ;
 IN: compiler.codegen
 
+SYMBOL: insn-counts
+
+H{ } clone insn-counts set-global
+
 GENERIC: generate-insn ( insn -- )
 
 SYMBOL: registers
@@ -54,7 +58,12 @@ SYMBOL: labels
         [ word>> init-generator ]
         [
             instructions>>
-            [ [ regs>> registers set ] [ generate-insn ] bi ] each
+            [
+                [ class insn-counts get inc-at ]
+                [ regs>> registers set ]
+                [ generate-insn ]
+                tri
+            ] each
         ] bi
     ] with-fixup ;