Fix bug with popping block managers off of the stack
This commit is contained in:
parent
2fa3cc1762
commit
e06fd099ce
|
@ -20,21 +20,26 @@ type blockManager struct {
|
|||
loops []*loopEntry
|
||||
}
|
||||
|
||||
func (this *blockManager) String () string {
|
||||
return fmt.Sprint(this.function.Name())
|
||||
}
|
||||
|
||||
func (this *generator) pushBlockManager (function *llvm.Function) *blockManager {
|
||||
manager := new(blockManager)
|
||||
this.managerStack = append(this.managerStack, manager)
|
||||
|
||||
manager.generator = this
|
||||
manager.function = function
|
||||
manager.newBlock()
|
||||
manager.declarations = make(map[*entity.Declaration] llvm.Value)
|
||||
|
||||
this.managerStack = append(this.managerStack, manager)
|
||||
this.blockManager = manager
|
||||
return manager
|
||||
}
|
||||
|
||||
func (this *generator) popBlockManager () {
|
||||
this.managerStack = this.managerStack[:len(this.managerStack) - 1]
|
||||
if len(this.managerStack) > 0 {
|
||||
this.blockManager = this.managerStack[0]
|
||||
this.blockManager = this.managerStack[len(this.managerStack) - 1]
|
||||
} else {
|
||||
this.blockManager = nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue