Mercurial > lcfOS
view python/ir/basicblock.py @ 173:c1d2b6b9f9a7
Rework into passes
author | Windel Bouwman |
---|---|
date | Fri, 19 Apr 2013 12:42:21 +0200 |
parents | 3eb9b9e2958d |
children | 3eb06f5fb987 |
line wrap: on
line source
class BasicBlock: # Uninterrupted sequence of instructions. def __init__(self, name): self.name = name self.instructions = [] def __repr__(self): return 'BasicBlock {0}'.format(self.name) def addInstruction(self, i): i.parent = self self.instructions.append(i) addIns = addInstruction def replaceInstruction(self, i1, i2): idx = self.instructions.index(i1) i1.parent = None i2.parent = self self.instructions[idx] = i2 def removeInstruction(self, i): i.parent = None self.instructions.remove(i) def getInstructions(self): return self.instructions Instructions = property(getInstructions) def getLastIns(self): return self.instructions[-1] LastIns = property(getLastIns) @property def Empty(self): return len(self.instructions) == 0 @property def FirstInstruction(self): return self.instructions[0] FirstIns = FirstInstruction def getSuccessors(self): if not self.Empty: i = self.LastIns return i.Targets return [] Successors = property(getSuccessors)