Dear all, after investigating the interaction of native code and the runtime environment (in particular the GC), I am puzzled about the static storage of some data (e.g. the young_pointer, global roots etc): * if I am not mistaken, each function obtains the young pointer in a register (%rax on x86) * the same value is stored globally in a variable allocated by the executable * several other variables are allocated that way I wonder why this is necessary. If the generated code uses one register anyway, why not put a pointer to the necessary global data structures in there as well? (say, in the first element of the minor heap). I am probably missing something here, but at first glance this strategy prevents concurrent ocaml execution in one process and at the same time it seems to be fixable, right? thanks for any comments, Christoph -- Christoph Höger Technische Universität Berlin Fakultät IV - Elektrotechnik und Informatik Übersetzerbau und Programmiersprachen Sekr. TEL12-2, Ernst-Reuter-Platz 7, 10587 Berlin Tel.: +49 (30) 314-24890 E-Mail: christoph.hoeger@tu-berlin.de