GNU bug report logs -
#11087
vector limitation in compiling to bytecode
Previous Next
Full log
View this message in rfc822 format
Hi guilers,
Earlier today I had a compilation warning while running a script.
~/src/mine/algorithms-course $ guile -L . -s invsinarray.scm
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /home/ian/src/mine/algorithms-course/invsinarray.scm
;;; WARNING: compilation of /home/ian/src/mine/algorithms-course/invsinarray.scm failed:
;;; ERROR: In procedure bytevector-u8-set!: Value out of range: 390
It ran fine, but the compilation problem was that I had a vector
constant containing 100000 values[0]. Now, the vector instruction in the
vm expects the value to be less than 2^16, and when compiling this it
performs splits the value into two by taking the value and modulus from
dividing by 256. This leads to the instruction (vector 390 160), which
further on down the line write-byte fails on.
This limitation is documented, and somewhat reasonable, but on IRC mark
weaver asked me to file a bug anyway, since he thinks the assembler
should have a fall back plan.
[0] as you can guess from the names, it was data provided for an online
algorithms class I'm taking. I did the lazy thing and just wrapped the
file in #(...). I've since changed it to actually read the vector from
the file.
--
Ian Price
"Programming is like pinball. The reward for doing it well is
the opportunity to do it again" - from "The Wizardy Compiled"
This bug report was last modified 12 years and 323 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.