Increased TInstr field sizes: allow long jumps and 65535 VM registers (#12777)

* Increased regBx size from 16 to 24 bits to increase jump range in the VM
from 32K to 8M instructions. Fixes #12727

* Increased VM TInst register field sizes to 16 bits to allow up to 65535 VM registers per proc

* Added test case for >255 VM registers
This commit is contained in:
Ico Doornekamp 2019-12-10 19:04:02 +01:00 • committed by Andreas Rumpf
commit e61d702206
3 changed files with 35 additions and 5 deletions

16
tests/vm/tmanyregs.nim Normal file
View file

@ -0,0 +1,16 @@
import macros
# Generate a proc with more then 255 registers. Should not generate an error at
# compile time
static:
macro mkFoo() =
let ss = newStmtList()
for i in 1..256:
ss.add parseStmt "var x" & $i & " = " & $i
ss.add parseStmt "inc x" & $i
quote do:
proc foo() =
`ss`
mkFoo()
foo()