On Mon, Jan 18, 2010 at 10:29 AM, Gabriel Dos Reis <gdr@integrable-solutions.net> wrote:
Is it conceivable to pass (a pointer to) the lisp environment to each
C function, as opposed to storing it in a thread local storage?

It is conceivable, but it would involve a major rewrite. Right now what I try to do is to minimize the damage by calling ecl_process_env() once per function at most.

There is also one thing I forgot to mention: special variable binding & access is  bit too expensive in the multithreaded environment right now -- we use an EQ-hash table instead of an index into a thread-local vector.If Axiom uses a lot of special variables it could profit from rewriting that part with the unfortunate consequence that symbols garbage collection might become more complicated.

Juanjo

--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com