On Feb 27, 2008, at 1:10 AM, Aaron Dwyer wrote:
> I just thought of something that scared me, and I'm hoping there is a
> happy ending. I realized recently that the JITter does not
> necessarily finish JITting inside of getPointerToFunction. Instead,
> it often generates stubs which get a final JIT only upon jumping to
> them. Now--I am in the situation where I'd like to do a
> getPointerToFunction, and then take the pointer and pass it out to
> multiple cores to execute the code I've generated in parallel. This
> seems like a problem--if jumping to an address means code will be
> munged, then two or more cores trying to jump to that address at the
> same time might all try to JIT the stubs, resulting in a barrage of
> random code!!
>
> This seems like a very obvious issue, so I'm guessing there is a
> simple answer for this. What are peoples' thoughts? Any and all are
> appreciated.
The JIT is thread safe: it uses a pthread mutex to prevent multiple
threads from clobbering each other, even if lazy compilation is
happening.
-Chris