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

Philip Reames listmail at philipreames.com
Mon Apr 20 17:19:05 PDT 2015

Can you put this up on phabricator?  That will make review easier.

You're proposing what appears to be an extension to the stackmap 
format.  You'll need to make sure your diff includes an update for the 
documentation as well.

On 04/13/2015 09:17 AM, Marius Wachtler wrote:
> 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.
Is there anything special about the fact these locations hold 
constants?  Or are you essentially just storing the location of a global 
variable as a relocatable symbol?  (Side note: What actually knows how 
to update the resulting symbol in the stackmap format?)
> 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 sounds like a bug.  Could you try to isolate and file a test case?
> 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
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150420/2d393ec3/attachment.html>

More information about the llvm-commits mailing list