joerg added a comment.

In D111863#3071651 <https://reviews.llvm.org/D111863#3071651>, @lhames wrote:

> In D111863#3071353 <https://reviews.llvm.org/D111863#3071353>, @joerg wrote:
>
>> I would strongly prefer if ORCv2 doesn't depend on this. It essentially 
>> forces libunwind to parse the whole section just to find the delimiters of 
>> the FDEs. That's a lot of unnecessary work as JIT use normally allows 
>> registering functions individually.
>
> I don't follow this. Does libunwind provide some way to register FDEs without 
> parsing the FDE content? If so we can definitely use that, but we should 
> still process the whole section: ORC links objects (not functions), and we 
> should register every FDE for an object when it's linked in.
>
> It's also worth noting that ORC and MCJIT have always called 
> `__register_frame` on every frame, which seems like it should be at least as 
> much work as this.

`__register_frame` requires parsing the CIE header, but not the whole FDE 
program. E.g. that's the `findPCRange` logic. After that, the FDE is just added 
to the internal block list. Parsing a whole segment is more involved as it 
needs to look for the terminator of each block to find the next FDE.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D111863/new/

https://reviews.llvm.org/D111863

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to