[LLVMdev] New JIT APIs

Philip Reames listmail at philipreames.com
Wed Jan 14 14:46:06 PST 2015


On 01/14/2015 02:33 PM, David Blaikie wrote:
>
>
> On Wed, Jan 14, 2015 at 2:22 PM, Lang Hames <lhames at gmail.com 
> <mailto:lhames at gmail.com>> wrote:
>
>     Hi Dave,
>
>             To confirm - I have no plans to remove MCJIT. I don't want
>             to change any behavior for existing clients. The new stuff
>             is opt-in.
>
>
>         Why not? We did work to remove the legacy JIT in favor of
>         MCJIT for the usual reasons (less code/maintenance burden/etc)
>         - it'd seem unfortunate to then go back to maintaining two
>         JITs again.
>
>         You mention the intent to provide a superset of MCJIT's
>         behavior, at which point it seems it'd be preferable to kill
>         of MCJIT in favor of ORC (heck, we killed of the legacy JIT
>         before MCJIT had feature parity).
>
>
>     Not having plans at the moment doesn't preclude making plans in
>     the future, it's just premature to think about replacing MCJIT
>     when the "replacement" hasn't even been submitted to llvm-commits
>     yet. :)
>
>
> Not necessarily - it doesn't seem unreasonable to make a plan to 
> ensure we don't end up with duplicate functionality to debug/test/fix 
> indefinitely before adding the duplicate. Seems to be common in the 
> project to make replacements, introduce them as an alternative but 
> with an explicit goal/plan from the start that this is not a perpetual 
> state. (for example, Chandler's pass manager work and I think most of 
> the bits that Chandler's rewritten (shuffling, inlining, etc) were 
> this way - maybe there are counterexamples where similar/duplicate 
> functionality was introduced without such a goal, but none come to my 
> mind)
>
> But I dunno, maybe other people find that to be an OK state of 
> affairs, I'm not a code owner/authority in much/any of this.
As a user of the JIT, I am *very* strongly in favour of Lang's espoused 
position.

p.s. I don't think we know what the "right" interface is for the JIT 
yet.  Until we do, having multiple interfaces (with a single shared 
implementation, based on the rest of LLVM) seems entirely reasonable and 
appropriate.

p.p.s. If Lang was proposing the replacement of MCJIT - he's not! - the 
review barrier would be far far higher.  He'd have to satisfy all 
existing - well, all vocal - users of the old interface that his new one 
met their needs.  This would be a much slower process and we want to let 
things evolve more quickly than that.  We *don't* want to be looking at 
an old-JIT retirement v2.  That took literally years and blocked a lot 
of useful work on the JIT infrastructure.

>
> - David
>
>     The bar for transitioning is higher now, since MCJIT has more
>     substantial clients than the legacy JIT had. The impetus for
>     transitioning is also lower: The legacy JIT required a lot of
>     custom infrastructure to be kept around. MCJIT is much more
>     lightweight, and shares most of its foundation (RuntimeDyld) with Orc.
>
>     If MCJITReplacement reaches full feature and performance parity
>     with MCJIT (which I do actually want to see), and the transition
>     can be done either transparently (by having ExecutionEngineBuilder
>     return an MCJITReplacement instead of an MCJIT), or in a manual
>     way that all clients are happy to buy into, then I'd be ok with
>     deprecating and eventually removing MCJIT. That's a discussion for
>     the future though.
>
>     So clients should rest easy: We just went through a difficult
>     transition from the legacy JIT, and I don't want to put you
>     through that again any time soon.
>
>     - Lang.
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150114/8e41c052/attachment.html>


More information about the llvm-dev mailing list