[Openmcl-devel] compiling large files.
Gary Byers
gb at clozure.com
Thu Jun 3 10:38:18 PDT 2004
On Thu, 3 Jun 2004, Marco Baringer wrote:
>
> i have a relativly large data set which i keep in memory (about 59MB)
> under the form of a list. to avoid having to process the data each
> time the app starts i'd like to put it all in a compiled file which i
> can simply load, the trick i'm using is this:
>
> data.lisp:
>
> (in-package :my-package)
> (setf *data* #.*data*)
>
> unfortunetly openmcl dies in vector-push-extend (i end up the kernel
> debugger) when attempting to compile this file. is there some limit
> i'm running into?
>
> --
> -Marco
Exceeding a limit on the total size of an array - 2^24 - isn't supposed
to drop you into the kernel debugger. (It's not clear how you could
exceed that limit unless something tries to create something larger,
and I don't think that there's a way to create a large array without
checking to see if this limit has been exceeded and signaling an error
if so.)
COMPILE-FILE uses a hash table to detect circularity; hash tables store
alternating keys and values in a single underlying vector (and there are
a few other words of information in that vector), so there's an upper
limit of a bit under 2^23 on the number of values that can be kept in
a hash table. Depending on the length and structure of *DATA*, I
can imagine that this could be approached; but it's not really
clear how VECTOR-PUSH-EXTEND fits into this ...
If you can reproduce this, could I see the output that :B (backtrace)
and :L (show lisp register values) produce in the kernel debugger ?
More information about the Openmcl-devel
mailing list