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

14
tests/vm/tfarjump.nim Normal file
View file

@ -0,0 +1,14 @@
# Test a VM relative jump with an offset larger then 32767 instructions.
import macros
static:
var a = 0
macro foo(): untyped =
let s = newStmtList()
for i in 1..6554:
s.add nnkCommand.newTree(ident("inc"), ident("a"))
quote do:
if true:
`s`
foo()