[LLVMdev] GC infrastructure checked in
Carl Friedrich Bolz
cfbolz at gmx.de
Mon Jan 7 07:54:23 PST 2008
Gordon Henriksen wrote:
> On 2008-01-07, at 05:29, Jon Harrop wrote:
>> On Monday 07 January 2008 02:32:47 Gordon Henriksen wrote:
>>> Everything described in GarbageCollection.html should now be live.
>> This is wonderful news! Are there any example programs using these
> The division of labor is such that the user program must provide the
> stack walker (in addition to the GC), so complete GC programs are
> nontrivial. This is somewhat similar to the state of exception
> handling in LLVM. It would be an excellent project to provide
> reference implementations of these facilities.
> That said, the PyPy group has llvmgcroot support on a branch; you
> could ask Armin Rigo <arigo at tunes dot org> for details about
> accessing it.
> On his benchmarks, Armin saw an 8% speedup vs. a shadow stack. Their
> gcc backend still outperforms the LLVM backend, though—and llvm-gcc
> outperforms that further still.
The second part of this is not correct. I don't think we ever even tried
llvm-gcc on the output of our C backend. What we see on x86 machines is
that LLVM's own code generators produce slower code than using LLVM's C
backend and then running GCC on this. This however is then faster than
our own C backend using GCC. Hm, summary:
pypy-llvm-backend with llvm's codegen
< pypy-c-backend with GCC
< pypy-llvm-backend using llvm's C backend and then GCC
The above is only true when using the Boehm GC, I don't really know the
numbers when using our own GC frameworks (and thus LLVM's GC support). I
guess what we would really like to have is LLVM's codegen to be better
to get rid of the shadow stack we are currently using with our own GCs.
> So perhaps those llvm-gcc GC
> extensions could be put to good use after all! :)
Right now using LLVM's GC features is not really helpful for us, because
the benefits of having a proper stack walker disappear again due to the
worse code generator of LLVM.
Carl Friedrich Bolz
More information about the llvm-dev