[armedbear-devel] compiler-pass2, dump-form and the dreaded 64k constant string size limit

Alessio Stalla alessiostalla at gmail.com
Sun Feb 6 22:48:28 UTC 2011


I found another limitation caused by the class file format: constant
strings are limited to a size of 64k bytes. The compiler uses
dump-form to externalize objects to FASLs, and this means that not
only literal strings are limited to 64k, but every object that is
dumped is limited by its printed representation. I found that out
while trying to compile closure-html [1], which creates a big vector
to hold generated parser states and stores it as a constant in the
code [2]. So we need to split big dumped forms over multiple strings.
I'll attempt a solution in the following days.

Bye,
Alessio

[1] http://common-lisp.net/project/closure/closure-html
[2] Incidentally, I also found out that dump-vector causes a stack
overflow error for such a vector (probably because it contains other
vectors that form circular references). What's the reason for
dump-vector not to use the normal vector printing code?




More information about the armedbear-devel mailing list