[Openmcl-devel] compiling large files.

Gary Byers gb at clozure.com
Thu Jun 3 17:38:18 UTC 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