Mercurial > lcfOS
comparison python/ir/builder.py @ 249:e41e4109addd
Added current position arrow
author | Windel Bouwman |
---|---|
date | Fri, 26 Jul 2013 20:26:05 +0200 |
parents | ef683881c64e |
children | 5ec7580976d9 |
comparison
equal
deleted
inserted
replaced
248:b10d46e5c8dd | 249:e41e4109addd |
---|---|
27 def gen(self): | 27 def gen(self): |
28 v = BasicBlock(super().gen()) | 28 v = BasicBlock(super().gen()) |
29 return v | 29 return v |
30 | 30 |
31 class Builder: | 31 class Builder: |
32 def __init__(self): | 32 def __init__(self): |
33 self.newTmp = ValueGenerator().gen | 33 self.newTmp = ValueGenerator().gen |
34 self.newBBint = BBGenerator().gen | 34 self.newBBint = BBGenerator().gen |
35 self.bb = None | 35 self.bb = None |
36 self.m = None | 36 self.m = None |
37 self.fn = None | 37 self.fn = None |
38 self.loc = None | |
38 | 39 |
39 # Helpers: | 40 # Helpers: |
40 def newBB(self): | 41 def newBB(self): |
41 bb = self.newBBint() | 42 bb = self.newBBint() |
42 self.fn.addBB(bb) | 43 self.fn.addBB(bb) |
43 return bb | 44 return bb |
44 | 45 |
45 def setModule(self, m): | 46 def setModule(self, m): |
46 self.m = m | 47 self.m = m |
47 | 48 |
48 def newFunction(self, name): | 49 def newFunction(self, name): |
49 f = Function(name) | 50 f = Function(name) |
50 self.m.addFunc(f) | 51 self.m.addFunc(f) |
51 return f | 52 return f |
52 | 53 |
53 def newVariable(self, name): | 54 def newVariable(self, name): |
54 v = Variable(name) | 55 v = Variable(name) |
55 self.m.addVariable(v) | 56 self.m.addVariable(v) |
56 return v | 57 return v |
57 | 58 |
58 def setFunction(self, f): | 59 def setFunction(self, f): |
59 self.fn = f | 60 self.fn = f |
60 | 61 |
61 def setBB(self, bb): | 62 def setBB(self, bb): |
62 self.bb = bb | 63 self.bb = bb |
63 | 64 |
64 def addIns(self, i): | 65 def setLoc(self, l): |
65 if not self.bb: | 66 self.loc = l |
67 | |
68 def addIns(self, i): | |
69 i.debugLoc = self.loc | |
70 if not self.bb: | |
66 raise Exception('No basic block') | 71 raise Exception('No basic block') |
67 self.bb.addInstruction(i) | 72 self.bb.addInstruction(i) |
68 | 73 |