[PATCH] Add support for symbolic large constant entries inside stackmaps

Marius Wachtler undingen at gmail.com
Mon Apr 13 09:17:50 PDT 2015


Hi,
The attached patch implements support for embedding symbols in the array of
large constants inside a stackmap/patchpoint.
We (=Pyston project) embed in the LLVM IR we generate a lot of pointers to
external constants. I would like to cache the JITed functions and therefore
I need to make the embedded constants relocatable -> change the IR to refer
to module variables instead which I can replace when loading the cached
object.
Currently when a patchpoint has a constant variable as live argument it
will materialize it in a register. Which we don't want because the live
variables are rarely used (also the regalloc runs out of registers when
having to many const variables as argument to the pp?!?...).
This patch emits a symbol reference inside the array of large constants in
the stackmap. The stack map format is untouched by this patch.

Together with
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150330/269160.html
this should make it possible to cache more JITed functions containing
patchpoints.

Looking forward to comments on this patch.
Cheers,
Marius
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150413/e47b1742/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sym_patchpoint.patch
Type: text/x-patch
Size: 8486 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150413/e47b1742/attachment.bin>


More information about the llvm-commits mailing list