diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-02-10 20:22:15 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-02-10 20:22:15 -0800 |
commit | 7d5ebc10065443a69bc848e65636a96ce8db632f (patch) | |
tree | 77122735769bde0b2088dcbd83a552b191fd5fce | |
parent | 7a957692314786f988cf126fcc86aad2708d8ba7 (diff) | |
download | txr-7d5ebc10065443a69bc848e65636a96ce8db632f.tar.gz txr-7d5ebc10065443a69bc848e65636a96ce8db632f.tar.bz2 txr-7d5ebc10065443a69bc848e65636a96ce8db632f.zip |
vm: remove hard-coded constants.
* genvmop.txr: Define VM_LEV_SIZE from %lev-size%.
* vm.c (vm_make_desc): Use VM_MAX_LEV and VM_LEV_SIZE instead
of incorrect hard-coded values of 256 that were right for an
old version of the vm.
* vmop.h: Regenerated.
-rw-r--r-- | genvmop.txr | 1 | ||||
-rw-r--r-- | vm.c | 12 | ||||
-rw-r--r-- | vmop.h | 1 |
3 files changed, 8 insertions, 6 deletions
diff --git a/genvmop.txr b/genvmop.txr index 5e80948a..7cc097e6 100644 --- a/genvmop.txr +++ b/genvmop.txr @@ -23,4 +23,5 @@ typedef enum vm_op { #define VM_SM_LEV_MASK @(fmt "0x~X" (pred (ash 1 sys:%sm-lev-bits%))) #define VM_MAX_LEV @{sys:%max-lev%} #define VM_MAX_V_LEV @{sys:%max-v-lev%} +#define VM_LEV_SIZE @{sys:%lev-size%} @(end) @@ -117,13 +117,13 @@ val vm_make_desc(val nlevels, val nregs, val bytecode, val self = lit("sys:vm-make-desc"); int nlvl = c_int(nlevels, self), nreg = c_int(nregs, self); - if (nlvl < 2 || nlvl > 256) - uw_throwf(error_s, lit("~a: nlevels must be 2 to 256; ~s given"), - self, nlevels, nao); + if (nlvl < 2 || nlvl > VM_MAX_LEV) + uw_throwf(error_s, lit("~a: nlevels must be 2 to ~s; ~s given"), + self, num(VM_MAX_LEV), nlevels, nao); - if (nreg < 1 || nreg > 256) - uw_throwf(error_s, lit("~a: nregs must be 1 to 256; ~s given"), - self, nregs, nao); + if (nreg < 1 || nreg > VM_LEV_SIZE) + uw_throwf(error_s, lit("~a: nregs must be 1 to ~s; ~s given"), + self, num(VM_LEV_SIZE), nregs, nao); { mem_t *code = buf_get(bytecode, self); @@ -77,3 +77,4 @@ typedef enum vm_op { #define VM_SM_LEV_MASK 0x3F #define VM_MAX_LEV 63 #define VM_MAX_V_LEV 61 +#define VM_LEV_SIZE 1024 |