From 4504b05b763b5df1be6f67944b179fca6bd001bb Mon Sep 17 00:00:00 2001 From: Kampfkarren Date: Tue, 26 Jul 2022 21:30:19 -0700 Subject: [PATCH] Pre-allocate registers, getting better errors --- Compiler/src/Compiler.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Compiler/src/Compiler.cpp b/Compiler/src/Compiler.cpp index e8b8db4a..52b841e9 100644 --- a/Compiler/src/Compiler.cpp +++ b/Compiler/src/Compiler.cpp @@ -1529,11 +1529,10 @@ struct Compiler // bytecode.emitABC(LOP_LOADK, target, formatStringIndex, 0); emitLoadK(target, formatStringIndex); - for (AstExpr* expression : expr->expressions) - { - uint8_t reg = allocReg(expression, 1); - compileExpr(expression, reg, targetTemp); - } + uint8_t baseExprReg = allocReg(expr, expr->expressions.size); + + for (size_t index = 0; index < expr->expressions.size; ++index) + compileExpr(expr->expressions.data[index], baseExprReg + index, targetTemp); BytecodeBuilder::StringRef formatMethod = sref(AstName("format"));