clayborg wrote:

> This is an oft-requested feature so thanks for doing this!
> 
> My only real complaint is that the code that determines the C++ "dynamic 
> type" does much of the work that the ValueObjectVTable has to do to find the 
> vtable pointer, and it's enough code that it seems a shame to have two copies 
> of it. Maybe there should be a LanguageRuntime "GetVTablePointer" that 
> factors out the part of GetDynamicTypeAndAddress that finds the VTable. Then 
> you can get the LanguageRuntime from the Object and call this generic API. 
> That would also make it clear that this support is for the ItaniamuABI C++ 
> runtime, so that if another runtime comes along that does some other clever 
> thing, it will be straightforward to support it.

I mention this in my inline comments, but we don't want to detect the dynamic 
type here, we just want to use what ever vtable pointer we find in the current 
ValueObject that we use to ask for the vtable. We might have dynamic typing on 
or off, and we don't want to adjust the pointer at all. If we have dynamic 
typing off, then we will just be in the middle of someone else's vtable, which 
we will locate by finding the symbol that contains it, so that is ok. If we 
have dynamic typing on, then the value we ask for the vtable for will point to 
the first vtable entry for the modified type. So there is no complexity here 
like there is in the GetDynamicTypeAndAddress(). We just read a pointer and 
look for the vtable symbol.

https://github.com/llvm/llvm-project/pull/67599
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to