mirror of
https://github.com/GayPizzaSpecifications/pork.git
synced 2025-08-03 21:21:33 +00:00
bir: mutable values and inspection
This commit is contained in:
@ -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,
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user