summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-01-09 06:54:41 -0800
committerKaz Kylheku <kaz@kylheku.com>2019-01-09 06:54:41 -0800
commitbf28aac4317f6ff020a42cef5ed4f30010357bef (patch)
treeff0af583296d68a9cd5ebd74b70a16ceaed73cd8
parent3ca278f2f1bb6799d47cf3433a649ccf6343e356 (diff)
downloadtxr-bf28aac4317f6ff020a42cef5ed4f30010357bef.tar.gz
txr-bf28aac4317f6ff020a42cef5ed4f30010357bef.tar.bz2
txr-bf28aac4317f6ff020a42cef5ed4f30010357bef.zip
asm: fix wrong level check in operand parsing.
* share/txr/stdlib/asm.tl (parse-compound-operand): The index of a (v <lev> <index>) operand must be compard to the maximum index constant, not to the maximum level constant. This bug will prevent compiling frames that have more than 64 variables, which is a serious limitation from 1024.
-rw-r--r--share/txr/stdlib/asm.tl2
1 files changed, 1 insertions, 1 deletions
diff --git a/share/txr/stdlib/asm.tl b/share/txr/stdlib/asm.tl
index d07d05d3..d3c0454c 100644
--- a/share/txr/stdlib/asm.tl
+++ b/share/txr/stdlib/asm.tl
@@ -252,7 +252,7 @@
(d (+ arg %lev-size%)))))
((sym arg1 arg2)
(when (and (<= 0 arg1 %max-v-lev%)
- (<= 0 arg2 %max-lev%))
+ (<= 0 arg2 %max-lev-idx%))
(caseq sym
(v (+ (* (ssucc arg1) %lev-size%) arg2)))))))