bir: mutable values and inspection

This commit is contained in:
2023-12-27 16:44:32 -08:00
parent 962d079acc
commit 35ce58bb44
36 changed files with 125 additions and 66 deletions

View File

@ -6,7 +6,7 @@ import gay.pizza.pork.bir.*
import gay.pizza.pork.frontend.scope.ScopeSymbol
import gay.pizza.pork.frontend.scope.SlabScope
class IrCodeEmitter(
class AstIrEmitter(
val self: IrSymbol,
val irSymbolWorld: IrSymbolWorld<Any>,
val irSymbolAssignment: IrSymbolAssignment,

View File

@ -4,6 +4,7 @@ import gay.pizza.pork.ast.gen.Symbol
import gay.pizza.pork.bir.IrDefinition
import gay.pizza.pork.bir.IrSlab
import gay.pizza.pork.bir.IrSlabLocation
import gay.pizza.pork.bir.IrSymbolTag
import gay.pizza.pork.frontend.Slab
class CompilableSlab(val compiler: Compiler, val slab: Slab) {
@ -20,11 +21,12 @@ class CompilableSlab(val compiler: Compiler, val slab: Slab) {
}
private fun compileIrSlab(): IrSlab {
val slabSymbol = compiler.irSymbolAssignment.next(IrSymbolTag.Slab, slab.location.commonLocationIdentity)
val definitions = mutableListOf<IrDefinition>()
for (compilableSymbol in compilableSymbols) {
definitions.add(compilableSymbol.compiledIrDefinition)
}
val irSlabLocation = IrSlabLocation(slab.location.form, slab.location.filePath)
return IrSlab(irSlabLocation, definitions)
return IrSlab(slabSymbol, irSlabLocation, definitions)
}
}

View File

@ -29,7 +29,7 @@ class CompilableSymbol(val compilableSlab: CompilableSlab, val scopeSymbol: Scop
private fun compileIrDefinition(): IrDefinition {
val compiler = compilableSlab.compiler
val functionSymbol = compiler.irSymbolWorld.create(scopeSymbol, IrSymbolTag.Function, scopeSymbol.symbol.id)
val irCodeEmitter = IrCodeEmitter(
val irCodeEmitter = AstIrEmitter(
self = functionSymbol,
irSymbolWorld = compiler.irSymbolWorld,
irSymbolAssignment = compiler.irSymbolAssignment,