On 9/8/09 1:04 PM, Alessio Stalla wrote: […]
I don't quite see the parts of the compiler that need to write to the filesystem. Can anyone point me to the places where that happens?
Going from memory, when it compiles local functions/closures, it needs to write each one to its own class file. The compiled top-level function will contain instructions like loadCompiledFunction("tempClassFileFoo1234.cls"). After the compiled function is loaded, if the runtime compiler has been used, temporary files are deleted.
I also vaguely remember that the compiler uses temporary memory (remember/recall) for constants and other things, and generates code in the compiled class files like 'fetch contant 1234 from the compiler'. So, if it's still like this, that's a problem for the OP, too.
But I haven't got the abcl source handy now, so that might be incorrect.
Ok, I understand the first use now, still hunting for the second.
A possible strategy to cover the first use is by binding a per-thread special variable on entrance to CL:LOAD that would tell Lisp.loadCompiledFunction() where to look if it can't find the requested 'file'. I started to follow that strategy for the "load from JAR files patch", but it turned out not to be necessary.
More investigation in a bit…