rjmccall added a comment.

In https://reviews.llvm.org/D47233#1129110, @smeenai wrote:

> Wrapping an Objective-C exception inside a C++ exception means dynamically 
> constructing a C++ exception object and traversing the class hierarchy of the 
> thrown Obj-C object to populate the catchable types array of the C++ 
> exception. Microsoft's C++ runtime will perform the appropriate catch type 
> comparisons, and this patch makes the compiler emit the right typeinfos into 
> the exception handling tables for all of that to work. 
> https://github.com/Microsoft/libobjc2/blob/f2e4c5ac4b3ac17f413a38bbc7ee1242f9efd0f7/msvc/eh_winobjc.cc#L116
>  is how WinObjC does this wrapping, for example.


I see.  The idea of creating the type descriptors and mangled names ad-hoc for 
the catchable-types array is clever, and it's nice that the ABI is defined in a 
way that makes that work.  (Expensive, but hey, it's the exceptions path.)

Alright, now that I understand why this only matters for the catch side, I'll 
take a look at the patch.


Repository:
  rC Clang

https://reviews.llvm.org/D47233



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

Reply via email to