diff python/ppci/codegen/registerallocator.py @ 312:2c9768114877

Added cool logging formatter
author Windel Bouwman
date Mon, 16 Dec 2013 17:58:15 +0100
parents 0615b5308710
children e9fe6988497c
line wrap: on
line diff
--- a/python/ppci/codegen/registerallocator.py	Mon Dec 16 12:49:24 2013 +0100
+++ b/python/ppci/codegen/registerallocator.py	Mon Dec 16 17:58:15 2013 +0100
@@ -1,3 +1,4 @@
+import logging
 from .flowgraph import FlowGraph
 from .interferencegraph import InterferenceGraph
 
@@ -21,6 +22,8 @@
         - (optional) spill registers
         - select registers
     """
+    def __init__(self):
+        self.logger = logging.getLogger('registerallocator')
 
     def InitData(self, f):
         self.f = f
@@ -38,7 +41,9 @@
     def Build(self):
         """ 1. Construct interference graph from instruction list """
         self.f.cfg = FlowGraph(self.f.instructions)
+        self.logger.info('Constructed flowgraph', extra={'ra_cfg':self.f.cfg})
         self.f.ig = InterferenceGraph(self.f.cfg)
+        self.logger.info('Constructed interferencegraph', extra={'ra_ig':self.f.ig})
 
         self.Node = self.f.ig.getNode
 
@@ -146,14 +151,12 @@
             v = m.src[0] if u is m.dst[0] else m.dst[0]
 
     def SelectSpill(self):
-        # TODO
-        pass
+        raise NotImplementedError("Spill is not implemented")
 
     def AssignColors(self):
         """ Add nodes back to the graph to color it. """
-        # Add nodes back to the graph:
         while self.selectStack:
-            n = self.selectStack.pop(-1)
+            n = self.selectStack.pop(-1)  # Start with the last added
             self.f.ig.addNode(n)
             takenregs = set(self.color[m] for m in n.Adjecent)
             okColors = self.regs - takenregs
@@ -192,4 +195,3 @@
                 break # Done!
         self.AssignColors()
         self.ApplyColors()
-