[prev in list] [next in list] [prev in thread] [next in thread]
List: llvm-dev
Subject: Re: [LLVMdev] mcjit
From: "Kaylor, Andrew" <andrew.kaylor () intel ! com>
Date: 2012-07-31 17:25:33
Message-ID: 0983E6C011D2DC4188F8761B533492DE077CCF66 () ORSMSX105 ! amr ! corp ! intel ! com
[Download RAW message or body]
Hi Pawel,
Everthing Verena said is an accurate reflection of the current LLVM trunk \
implementation of MCJIT. However, I have a couple of additional comments.
> * MCJIT doesn't work on Windows, because it doesn't support COFF. If you want to \
> use it on Windows you have to either target Mach-O (not clear whether that will \
> work in general) or ELF (need to get a patch from Intel to be able to use this).
I'm hoping to get a solution into LLVM trunk soon to enable ELF on Windows. It's not \
at the top of the priority list, but it's one of the things I proposed in a recent \
list of MCJIT work and I expect to reopen the discussion to seek a general solution \
in the next couple of weeks.
> * In JIT codegen happens when you call getPointerToFunction. In MCJIT this happens \
> when you create the ExecutionEngine. So you cannot have any code generation after \
> that. Creation of the ExecutionEngine should be the last thing you do (before \
> calling getPointerToFunction).
I'll be submitting a patch very soon to delay code generation until \
getPointerToFunction is called.
> * MCJIT supports only a single Module. You need all your code to be self-contained, \
> If you call functions in other Modules there will be a ("liker" type) error.
It is possible to create one MCJIT engine per module and cross-link between the \
modules. I'd need to review some code to give you details but I know that it works. \
The MCJIT engine uses a memory manager to look up unresolved functions (that is, \
function that are external to the single module passed to an instance of MCJIT).
I hope that as someone using the MCJIT feature you will participate in the discussion \
of the MCJIT enhancements as it unfolds. You can find the start of the discussion \
here:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-July/052022.html
-Andy
On 31/07/2012 11:16, Paweł Bylica wrote:
> Thu Jul 12 03:42:12 CDT 2012, Verena Beckham verena at codeplay.com :
> > I would not say it is trivial, having done it myself.
> >
> > MCJIT also doesn't support multiple modules, and it does not do
> > JITing on demand, instead, it does all of it at the same time in the
> > constructor (unless that is what you call "not lazy").
> > So depending on how you've written your code there is some
> > significant reshuffling to do to, to move the creation of the
> > ExecutionEngine to the end, and possibly add ExecutionEngines.
> >
> > Verena
>
> Can you share any information how to do it?
>
> >
> >
> > On 11/07/2012 17:14, Jim Grosbach wrote:
> > >
> > > On Jul 11, 2012, at 6:04 AM, Benjamin Kramer wrote:
> > >
> > > >
> > > > On 11.07.2012, at 14:39, Reed Kotler <rkotler at mips.com> wrote:
> > > >
> > > > > Does anyone know which projects rely on mcjit?
> > > > >
> > > > > There is the oldjit too; it's still being used?
> > > >
> > > > The most prominent user of the MC JIT is probably LLDB.
> > > >
> > > > The only issue with MCJIT I know of is the lack of windows support, and I \
> > > > expect oldjit to go away once that is sorted out. Switching between the JIT \
> > > > implementations is really trivial and transparent, if you don't have to \
> > > > support windows it's worth a try.
> > >
> > > MCJIT also doesn't yet support lazy compilation. That's not a big problem to \
> > > add; it's just not been necessary for anyone yet.
> > > -Jim
> > > _______________________________________________
> > > LLVM Developers mailing list
> > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> > >
_______________________________________________
LLVM Developers mailing list
LLVMdev@cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
_______________________________________________
LLVM Developers mailing list
LLVMdev@cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic