sgraenitz added inline comments.

================
Comment at: source/Core/Mangled.cpp:310
+#elif defined(LLDB_USE_LLVM_DEMANGLER)
+        llvm::ItaniumPartialDemangler IPD;
+        bool demangle_err = IPD.partialDemangle(mangled_name);
----------------
sgraenitz wrote:
> erik.pilkington wrote:
> > I think this is going to really tank performance: ItaniumPartialDemangler 
> > dynamically allocates a pretty big buffer on construction that it uses to 
> > store the AST (and reuse for subsequent calls to partialDemangle). Is there 
> > somewhere that you can put IPD it so that it stays alive between demangles?
> > 
> > An alternative, if its more convenient, would be to just put the buffer 
> > inline into ItaniumPartialDemangler, and `= delete` the move operations.
> Thanks for the remark, I didn't dig deep enough to see what's going on in the 
> `BumpPointerAllocator` class. I guess there is a reason for having 
> `ASTAllocator` in the `Db` struct as an instance and thus allocating upfront, 
> instead of having a pointer there and postponing the instantiation to 
> `Db::reset()`?
> 
> I am not familiar enough with the code yet to know how it will look exactly, 
> but having a heavy demangler in every `Mangled` per se sounds unreasonable. 
> There's just too many of them that don't require demangling at all. For each 
> successfully initiated `partialDemangle()` I will need to keep one of course.
> 
> I will have a closer look on Monday. So far thanks for mentioning that!
Well, right the pointer to `BumpPointerAllocator` won't solve anything. Ok will 
have a look.


https://reviews.llvm.org/D49612



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

Reply via email to