Hi All, Maybe my question will be naive, but has anyone an idea/opinion about using llvm as a medium to get multiple native architecture support in SF? I mean produce optimized (from high level) llvm byte code and let the already existing llvm JIT compilation tools produce the optimal native code for the target platform. As far as I can see, pros are : - platform specific low level optimizations and code generation already done, - performance vs "hand generated" assembly? - support for many platforms - no more need of a complex (to design) ABI in SF to support architectural differences of target platforms - can focus on high level optimizations only, - maintenance? - fill with your own ideas... cons may be (many "?" because I actually only know concepts of llvm, and never really played with it yet!) : - security, maturity, etc? - support for new architectures harder (need to develop new llvm backends, or do like today, losing the advantages of llvm) - support for different OS? - licensing? embedding code from external project? - time to compile? - is it possible to bridge generated code with already running code, in both directions to keep using precompiled generic routine? - performance vs "hand generated" assembly? - maintenance? - fill with your own ideas again... As I started to work on the basis of a ppc jit compiler, I realize it won't be an easy task to write and maintain good compilers for multiple (and very different) hw architectures... -Guillaume In case it was a good question, credits to a friend for the idea :)
Maybe my question will be naive, but has anyone an idea/opinion about using llvm as a medium to get multiple native architecture support in SF?
Indeed, LLVM supports all the architectures we're interested in. Before putting our eggs in the LLVM basket, though, I'd want to consider the following: * How does LLVM's compile time compare to CTI? How about other JITs and JS engines? * How would LLVM's optimization passes work with function calls to the JS runtime? * How would we specify our custom calling conventions to the LLVM infrastructure? Do you have any data / suggestions in these areas? Cheers, Geoff
participants (2)
-
Geoffrey Garen
-
Guillaume Borios