[PATCH] D32928: [CodeView] Allow random access visitation of type records
    Zachary Turner via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri May  5 17:01:14 PDT 2017
    
    
  
zturner created this revision.
In preparation for providing random access visitation of type streams, we need some plumbing that allows the vistation infrastructure to pass type indices through the pipeline.
This patches takes the simplest possible approach.  No existing interfaces are changed, but there is now an additional overload of `CVTypeVisitor::visitTypeRecord` which takes a `TypeIndex`.  When this overload is called, instead of invoking the normal `visitTypeBegin(CVType&)` method on the callback interface it invokes a new callback `visitTypeBegin(CVType&,TypeIndex)`.
To demonstrate how this is useful, a new implementation of `TypeDatabase` is introduced which allows random insertion and access of type records, and the `TypeDatabaseVisitor` is taught to be able to add records to either a `TypeDatabase` or a `RandomAccessTypeDatabase`, depending on how the visitor is constructed.
https://reviews.llvm.org/D32928
Files:
  llvm/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
  llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h
  llvm/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
  llvm/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
  llvm/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
  llvm/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
  llvm/lib/DebugInfo/CodeView/TypeDatabase.cpp
  llvm/lib/DebugInfo/CodeView/TypeDatabaseVisitor.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32928.98041.patch
Type: text/x-patch
Size: 17376 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170506/268bb418/attachment-0001.bin>
    
    
More information about the llvm-commits
mailing list