From c8521ad826546d1ab4426e9c5ed59aaf8c12953e Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@slava-pestovs-macbook-pro.local>
Date: Tue, 4 Nov 2008 17:23:20 -0600
Subject: [PATCH] Add tool to dump live intervals

---
 .../cfg/linear-scan/debugger/debugger.factor    | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/basis/compiler/cfg/linear-scan/debugger/debugger.factor b/basis/compiler/cfg/linear-scan/debugger/debugger.factor
index 89bf81d2ba..c6481b305e 100644
--- a/basis/compiler/cfg/linear-scan/debugger/debugger.factor
+++ b/basis/compiler/cfg/linear-scan/debugger/debugger.factor
@@ -1,7 +1,7 @@
 ! Copyright (C) 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel sequences sets arrays
-compiler.cfg.linear-scan.live-intervals
+USING: accessors kernel sequences sets arrays math strings fry
+prettyprint compiler.cfg.linear-scan.live-intervals
 compiler.cfg.linear-scan.allocation ;
 IN: compiler.cfg.linear-scan.debugger
 
@@ -21,3 +21,16 @@ IN: compiler.cfg.linear-scan.debugger
 : check-linear-scan ( live-intervals machine-registers -- )
     [ [ clone ] map ] dip allocate-registers
     [ split-children ] map concat check-assigned ;
+
+: picture ( uses -- str )
+    dup peek 1 + CHAR: space <string>
+    [ '[ CHAR: * swap _ set-nth ] each ] keep ;
+
+: interval-picture ( interval -- str )
+    [ uses>> picture ]
+    [ copy-from>> unparse ]
+    [ vreg>> unparse ]
+    tri 3array ;
+
+: live-intervals. ( seq -- )
+    [ interval-picture ] map simple-table. ;