refactor: replace explicit loops and flatMap with foldMap
This commit is contained in:
parent
da0ef9ec24
commit
f76b7a9dc2
@ -170,11 +170,11 @@ object asmGenerator {
|
|||||||
chain += stack.drop()
|
chain += stack.drop()
|
||||||
chain += Jump(LabelArg(elseLabel), Cond.Equal)
|
chain += Jump(LabelArg(elseLabel), Cond.Equal)
|
||||||
|
|
||||||
chain ++= Chain.fromSeq(thenBranch).flatMap(generateStmt)
|
chain ++= thenBranch.foldMap(generateStmt)
|
||||||
chain += Jump(LabelArg(endLabel))
|
chain += Jump(LabelArg(endLabel))
|
||||||
chain += LabelDef(elseLabel)
|
chain += LabelDef(elseLabel)
|
||||||
|
|
||||||
chain ++= Chain.fromSeq(elseBranch).flatMap(generateStmt)
|
chain ++= elseBranch.foldMap(generateStmt)
|
||||||
chain += LabelDef(endLabel)
|
chain += LabelDef(endLabel)
|
||||||
|
|
||||||
case While(cond, body) =>
|
case While(cond, body) =>
|
||||||
@ -187,7 +187,7 @@ object asmGenerator {
|
|||||||
chain += stack.drop()
|
chain += stack.drop()
|
||||||
chain += Jump(LabelArg(endLabel), Cond.Equal)
|
chain += Jump(LabelArg(endLabel), Cond.Equal)
|
||||||
|
|
||||||
chain ++= Chain.fromSeq(body).flatMap(generateStmt)
|
chain ++= body.foldMap(generateStmt)
|
||||||
chain += Jump(LabelArg(startLabel))
|
chain += Jump(LabelArg(startLabel))
|
||||||
chain += LabelDef(endLabel)
|
chain += LabelDef(endLabel)
|
||||||
|
|
||||||
@ -298,13 +298,13 @@ object asmGenerator {
|
|||||||
val argRegs = List(RDI, RSI, RDX, RCX, R8, R9)
|
val argRegs = List(RDI, RSI, RDX, RCX, R8, R9)
|
||||||
val microWacc.Call(target, args) = call
|
val microWacc.Call(target, args) = call
|
||||||
|
|
||||||
argRegs.zip(args).foreach { (reg, expr) =>
|
argRegs.zip(args).foldMap { (reg, expr) =>
|
||||||
chain ++= evalExprOntoStack(expr)
|
chain ++= evalExprOntoStack(expr)
|
||||||
chain += stack.pop(reg)
|
chain += stack.pop(reg)
|
||||||
}
|
}
|
||||||
|
|
||||||
args.drop(argRegs.size).foreach { expr =>
|
args.drop(argRegs.size).foldMap {
|
||||||
chain ++= evalExprOntoStack(expr)
|
chain ++= evalExprOntoStack(_)
|
||||||
}
|
}
|
||||||
|
|
||||||
chain += assemblyIR.Call(LabelArg(labelGenerator.getLabel(target)))
|
chain += assemblyIR.Call(LabelArg(labelGenerator.getLabel(target)))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user