I'm working on improving support for v-tables under the Microsoft C++ ABI, and while poking around in IRGen, I discovered the VTableContext class that lives in the AST library.
This class is responsible for generally laying out the (single, unless the class needs a construction v-table) v-table for each class that needs one. It is very specific to the Itanium ABI concept of a virtual table, which means it can't be used as-is for the Microsoft ABI. Trouble is, it's used by various pieces of IRGen--which is how I discovered it.
So, I'm asking for your advice. What should I do about this?
- Should I make certain methods of VTableContext virtual, and override them for the Microsoft ABI?
- Should I hide this class behind the CXXABI objects? If I go this route, I'll have to indirect the pieces of IRGen currently using this object through the CGCXXABI object.
I'm leaning towards the first, but I'm open to suggestions. Any ideas?