[llvm-dev] Building GC on statepoint-example

Philip Reames via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 8 07:21:36 PST 2018


Jordon,


I just submitted a change to the docs to hopefully address your 
confusion.  Can you take a look and let me know if you have further 
questions?  Start with the revised Stack Map Format section.


Philip


p.s. I just submitted this and it'll take a few minutes to refresh.  In 
the meantime, you could look at the diff for 346405.


On 11/2/18 2:52 PM, Jordan Rudd via llvm-dev wrote:
> Note: These instructions seem to be targeted towards people creating a 
> JIT. My compiler compiles to native. I suppose I just need a reference 
> to the stack location of the stack map, wherever that is.
> ------------------------------------------------------------------------
> *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of Jordan 
> Rudd via llvm-dev <llvm-dev at lists.llvm.org>
> *Sent:* Thursday, November 1, 2018 2:06 PM
> *To:* llvm-dev at lists.llvm.org
> *Subject:* [llvm-dev] Building GC on statepoint-example
> Hi,
>
> I'm trying to build a gc using the statepoint-example strategy. 
> However, after hours of searching, reading documentation and trying to 
> find code examples online, I cannot figure out how to access the Stack 
> Map.
>
> The documentation for statepoint-example says:
>
> /The stack map format generated by this GC strategy can be found in 
> theStack Map Section 
> <https://nam03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fllvm.org%2Fdocs%2FStackMaps.html%23stackmap-section&data=02%7C01%7C%7Ce9642625652f4a29fc1f08d6403dfa73%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636767032264647521&sdata=2cqSbyrmgxWfRh95yvOnwU6v42J1HRxI7dPwkSLARTY%3D&reserved=0>using 
> a format documentedhere 
> <https://nam03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fllvm.org%2Fdocs%2FStatepoints.html%23statepoint-stackmap-format&data=02%7C01%7C%7Ce9642625652f4a29fc1f08d6403dfa73%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636767032264647521&sdata=FhoqamuJExS4ZPyk4i2xnHkGS6A13f0v4wIszJ5oBRE%3D&reserved=0>. 
> This format is intended to be the standard format supported by LLVM 
> going forward./
>
> Ok, great, I see the format. But... how do I access the Stack Map from 
> my runtime? Where is it?
>
> The link seems to send me to this instruction:
>
> /A JIT compiler can easily access this section by providing its own 
> memory manager via the LLVM C 
> API|LLVMCreateSimpleMCJITMemoryManager()|. When creating the memory 
> manager, the JIT provides a 
> callback:|LLVMMemoryManagerAllocateDataSectionCallback()|. When LLVM 
> creates this section, it invokes the callback and passes the section 
> name./
>
> None of these API's are well-documented, so I'm kind of trying to 
> guess what to do here. As a proof of concept, I tried building a 
> do-nothing memory manager that 
> calls APILLVMCreateSimpleMCJITMemoryManager on static initialization 
> and passes the callbacks to it. I link the necessary llvm libs into my 
> runtime and fire it up.
>
> I can confirm that my safepoint poll code is getting hit. I can 
> confirm that creating the "memory manager" is called on runtime boot 
> and that it's succeeding. But the callbacks never get hit. Even if 
> they were, it's unclear how I would use the parameters of those 
> callbacks to locate the stack map.
>
> What am I missing?
>
> Thanks!
> Jordan
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181108/78198f5c/attachment.html>


More information about the llvm-dev mailing list