This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC + libJIT instead of LLVM


>>> It seems to
>>> me that LLVM solves many goals that are already complete and solved in
>>> GCC. So I think libJIT potentially is more useful for GCC and software
>>> developers.
>>
>> but you don't say what libjit would be more useful than, or how this
>> overlap
>> between "solved goals" between gcc and llvm implies that.  Do you simply
>> mean
>> that, because llvm and gcc both cover similar areas, and because libjit is
>> useful for llvm, it must also be useful for gcc?  Could you list some of
>> these
>> goals and explain how they relate to JIT?
>
> Hi Dave,
>
> I don't mean to invade into a pretty amusing thread, but I wanted to clarify
> one important thing: litjit and LLVM have nothing to do with each other.
>
> libjit and LLVM have very different design points.  libjit is a bit more
> than a glorified macro assembler with some late "optimizations", whereas
> LLVM is a real compiler that happens to have the ability to emit machine
> code to memory.
>
> To be perfectly clear, LLVM does not use libjit.
>
> -Chris

This is what Chris Lattner wrote a couple of years ago. Now I see an
exactly contradiction:

"

Hi All,

I was wondering what you could tell me about the differences in goals
between libjit and LLVM.  In particular, on this page:
http://www.southern-storm.com.au/doc/libjit/libjit_1.html

It is stated "Unlike other systems such as the JVM, .NET, Parrot, and
LLVM, libjit is not a virtual machine in its own right. It is the
foundation upon which a number of different virtual machines, dynamic
scripting languages, or customized rendering routines can be built."

I believe that the statement is true about .NET, JVM, and Parrot, but LLVM
is exactly what you describe: a framework that can be used to build a
number of different virtual machines.  In particular, LLVM assumes no
runtime model or library: we currently JIT C,C++,Stacker (a forth-like
language), and have good starts on Java, .NET, O-Caml, and Ruby
front-ends.

If you're not familiar with LLVM, it's actually a lot more than a JIT.
It's also a static, linktime, and offline optimizer that includes dozens
of aggressive SSA-based optimizations.  Another advantage of LLVM is that
it is mature and works well now.  :)  For more info, see:
http://llvm.cs.uiuc.edu/

Can you say a little bit about the advantages of using libjit over LLVM?
Also, can you please correct the quote above to accurately describe the
difference between libjit and LLVM?

Thanks,

-Chris

"

and
"
On Sunday 30 May 2004 12:46 pm, Chris Lattner wrote:

> What do you mean by "real" one?  They are both real.

"Real" in the sense that the other one is discontinued.  Which is essentially
what you want here: for libjit to be discontinued and turned into a thin C
API on top of LLVM.  That just isn't going to happen.  I'm just as attached
to my project as you are to yours.  Sorry.

> Sure, that's fine.  Please change the link to llvm.org though (a recent
> change).  Thanks!

I have updated the documentation in CVS and on the Web site.

Cheers,

Rhys.
"

There are also many other interesting things there:
http://lists.gnu.org/archive/html/dotgnu-libjit/2004-05/index.html


Thanks,
Kirill


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]