Lowering
scalus.compiler.sir.lowering.Lowering
object Lowering
Attributes
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
Lowering.type
Members list
Value members
Concrete methods
def addUsedVarsToCounts(vars: Set[IdentifiableLoweredValue], counts: Map[IdentifiableLoweredValue, Int]): Map[IdentifiableLoweredValue, Int]
def filterAndCountVars(p: IdentifiableLoweredValue => Boolean, subvalues: LoweredValue*): Map[IdentifiableLoweredValue, Int]
def generateDominatedNonEffortlessUplevelVarsAccess(value: LoweredValue, innerTerm: Term)(using gctx: TermGenerationContext): Term
Generate uplevel vars access for non-effortless variables only (lambda barrier).
Generate uplevel vars access for non-effortless variables only (lambda barrier).
This is used in lambda bodies to prevent non-effortless computations from being captured inside the lambda, which would cause them to be re-evaluated on each lambda call. Effortless variables (constants, vars, lambdas) can be safely captured.
Attributes
def generateDominatedUplevelVarsAccess(value: LoweredValue)(using gctx: TermGenerationContext): Term
def lowerSIR(sir: SIR, optTargetType: Option[SIRType] = ...)(using lctx: LoweringContext): LoweredValue
Extensions
Extensions
extension (fun: DefaultFun)
In this article