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

Jeffrey Yasskin jyasskin at google.com
Wed Oct 28 09:57:59 PDT 2009


On Wed, Oct 28, 2009 at 9:50 AM, Chris Lattner <clattner at apple.com> wrote:
>
> 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.

No, the magic bools all keep the same sense. The change affects the
behavior of programs without a call to
JIT->DisableLazyCompilation(bool). Anyone who's already calling it
with any parameter keeps their current behavior.

I'd be reasonably happy making that call required (so no default) if
people want that instead.




More information about the llvm-dev mailing list