In Martin Odersky's talk :http://youtu.be/9PkxE_L_LMo , at 49. minute he talks about a problem that "the compiler is not re-entrant" because of static data.
I have a basic understaning about what the term "reentrancy" means in Java (for example, if I invoke a synchronized method recursively then I won't get into a deadlock) , but I still don't understand what Martin is talking about.
Why is it not possible to run two compilers in the same JVM if the code is written as shown at 49th minute of the talk?
What kind of reentrancy is he talking about?
I assume when he refers to reentrancy in the 49. minute of his talk, he does not mean the kind of reentrancy that allows one to use recursive synchronized method invocations in Java without getting into deadlock. Am I right? I am not sure.
Is he simply refering to the fact that when on has mutable static data accessed from several threads then the program will work incorrectly due to race conditions?
Please enlighten me!