[LLVMdev] Should LLVM JIT default to lazy or non-lazy?

Chris Lattner clattner at apple.com
Wed Oct 28 09:50:10 PDT 2009


On Oct 28, 2009, at 9:41 AM, Jeffrey Yasskin wrote:

> In r85295, in response to the discussion at http://llvm.org/PR5184
> (Lazy JIT ain't thread-safe), I changed the default JIT from lazy to
> non-lazy. It has since come to my attention that this may have been
> the wrong change, so I wanted to ask you guys.
>
> A couple reasons to make the default non-lazy compilation:
> * The lack of thread-safety surprises new users
> * Crashes due to this will be rare and so hard to track down
> * The current lazy scheme is almost never the right answer for  
> performance
> * It's only one line of code to turn on lazy compilation when it is
> the right answer for you.
>
> And a couple to default to lazy compilation:
> * It's safe for single-threaded code.
> * There are existing users who have assumed this default.
> * PPC and ARM don't support non-lazy compilation yet (the tests
> currently run the lazy jit).
> * Gratuitous changes are bad.

If the objection was about changing the sense of a magic bool, why not  
change the argument to be an enum instead?  That should make it  
extremely clear in the source what behavior is desired.

-Chris



More information about the llvm-dev mailing list