[erlang-questions] Low Level Virtual Machine (LLVM) for optimization across the intire lifetime of a program

Matt Kangas <>
Tue Feb 19 08:16:57 CET 2008


For what it's worth, LLVM ships with Mac OS X 10.5. It's embedded in  
the OpenGL stack, for compiling vertex shaders -- which may/may not be  
supported natively on any given video card, hence the need for a JIT:

http://lists.cs.uiuc.edu/pipermail/llvmdev/2006-August/006492.html
http://arstechnica.com/reviews/os/mac-os-x-10-5.ars/11#llvm

--Matt

On Feb 13, 2008, at 4:34 PM, Roger Larsson wrote:

> Found this interesting report via lwn.net
>
> http://llvm.org/pubs/2004-01-30-CGO-LLVM.html
>
>> From the home page http://llvm.org/
>
> "A compilation strategy designed to enable effective program  
> optimization
> across the entire lifetime of a program. LLVM supports effective  
> optimization
> at compile time, link-time (particularly interprocedural), run-time  
> and
> offline (i.e., after software is installed), while remaining  
> transparent to
> developers and maintaining compatibility with existing build scripts.
>
> A virtual instruction set - LLVM is a low-level object code  
> representation
> that uses simple RISC-like instructions, but provides rich,
> language-independent, type information and dataflow (SSA)  
> information about
> operands. This combination enables sophisticated transformations on  
> object
> code, while remaining light-weight enough to be attached to the  
> executable.
> This combination is key to allowing link-time, run-time, and offline
> transformations.
>
> A compiler infrastructure - LLVM is also a collection of source code  
> that
> implements the language and compilation strategy. The primary  
> components of
> the LLVM infrastructure are a GCC-based C & C++ front-end, a link-time
> optimization framework with a growing set of global and  
> interprocedural
> analyses and transformations, static back-ends for the X86, X86-64,  
> PowerPC
> 32/64, ARM, Thumb, IA-64, Alpha and SPARC architectures, a back-end  
> which
> emits portable C code, and a Just-In-Time compiler for X86, X86-64,  
> PowerPC
> 32/64 processors.
>
> LLVM does not imply things that you would expect from a high-level  
> virtual
> machine. It does not require garbage collection or run-time code  
> generation
> (In fact, LLVM makes a great static compiler!). Note that optional  
> LLVM
> components can be used to build high-level virtual machines and  
> other systems
> that need these services."
>
> This sounds like a much better match for code generation than Java  
> or CLI.
> A suitable examination work?
>
> /RogerL
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions

-- 
Matt Kangas
 – www.p16blog.com




More information about the erlang-questions mailing list