Marc Feeley wrote:
On 20-Jun-07, at 4:45 PM, |/|/ Bendick wrote:
Is it possible to have gambit use two words for it's headers on a 32-bit machine?
What about using a vector of vectors? This would require one more level of indirection, but that's quite cheap(*), doesn't have any relevant limit, and doesn't require changes to the core.
(* structures defined with define-type/-structure are notoriously slow when compiled safely, but that's because of the type checking or something (could that be sped up, Marc?). You could just use a special symbol in the first position of the outer level vector for your type checking, so that you don't need more nesting, this way it should be really fast.)
For homogenous vectors, you could also use the ffi (with c-lambda or ##c-code) and malloc for writing your own representation (should only be some 30-50 lines of code or so).
Anything is possible of course. But this adds extra space and time overheads on vector-like object operations (strings, u8vectors, vectors, ...). I don't think its worth the trouble (after all very few people complain about this limitation). An alternative that is less costly to implement is to encode the length in number of *words* instead of bytes.
(I'm using ___HD_BYTES(___HEADER(obj)) in some places to determine the length of an object in bytes.)
Christian.