Mercurial > lcfOS
diff python/ir/basicblock.py @ 239:63bb40758066
added check
author | Windel Bouwman |
---|---|
date | Mon, 22 Jul 2013 17:57:25 +0200 |
parents | 1fa3e0050b49 |
children | ef683881c64e |
line wrap: on
line diff
--- a/python/ir/basicblock.py Sat Jul 20 13:18:04 2013 +0200 +++ b/python/ir/basicblock.py Mon Jul 22 17:57:25 2013 +0200 @@ -2,25 +2,27 @@ class BasicBlock: """ Uninterrupted sequence of instructions. """ def __init__(self, name): - self.name = name - self.instructions = [] + self.name = name + self.instructions = [] + def __repr__(self): - return 'BasicBlock {0}'.format(self.name) + return 'BasicBlock {0}'.format(self.name) + def addInstruction(self, i): - i.parent = self - self.instructions.append(i) + i.parent = self + self.instructions.append(i) addIns = addInstruction def replaceInstruction(self, i1, i2): - idx = self.instructions.index(i1) - i1.parent = None - i1.delete() - i2.parent = self - self.instructions[idx] = i2 + idx = self.instructions.index(i1) + i1.parent = None + i1.delete() + i2.parent = self + self.instructions[idx] = i2 def removeInstruction(self, i): - i.parent = None - self.instructions.remove(i) + i.parent = None + self.instructions.remove(i) def getInstructions(self): return self.instructions @@ -34,14 +36,16 @@ Instructions = property(getInstructions, setInstructions) def getLastIns(self): - return self.instructions[-1] + return self.instructions[-1] LastInstruction = property(getLastIns) + @property def Empty(self): - return len(self.instructions) == 0 + return len(self.instructions) == 0 + @property def FirstInstruction(self): - return self.instructions[0] + return self.instructions[0] FirstIns = FirstInstruction def getSuccessors(self): @@ -52,10 +56,14 @@ Successors = property(getSuccessors) def getPredecessors(self): - preds = [] - for bb in self.parent.BasicBlocks: - if self in bb.Successors: - preds.append(bb) - return preds + preds = [] + for bb in self.parent.BasicBlocks: + if self in bb.Successors: + preds.append(bb) + return preds Predecessors = property(getPredecessors) + def check(self): + for ins in self.Instructions: + ins.check() +