This is an archive of the discontinued LLVM Phabricator instance.

Finish decoupling TypeDatabase from TypeDumper
ClosedPublic

Authored by zturner on Jan 10 2017, 11:51 AM.

Details

Summary

This is a followup to D28486, which finishes the decoupling of the type database from the dumper.

Previously the type dumper itself was passed around to a lot of different places and manipulated in ways that were more appropriate on the type database. For example, the entire TypeDumper was passed into the symbol dumper, when all the symbol dumper wanted to do was lookup the name of a TypeIndex so it could print it. That's what the TypeDatabase is for -- mapping type indices to names.

Another example is how if the user runs llvm-pdbdump with the option to dump symbols but not types, we still have to visit all types so that we can print minimal information about the type of a symbol, but just without dumping full symbol records. The way we did this before is by hacking it up so that we run everything through the type dumper with a null printer, so that the output goes to /dev/null. But really, we don't need to dump anything, all we want to do is build the type database. Since TypeDatabaseVisitor now exists independently of TypeDumper, we can do this. We just build a custom visitor callback pipeline that includes a database visitor but not a dumper.

All the hackery around printers etc goes away. After this patch, we could probably even delete the entire CVTypeDumper class since really all it is at this point is a thin wrapper that hides the details of how to build a useful visitation pipeline. It's not a priority though, so CVTypeDumper remains for now.

After this patch we will be able to easily plug in a different style of type dumper by only implementing the proper visitation methods to dump one-line output and then sticking it on the pipeline.

Diff Detail

Event Timeline

zturner updated this revision to Diff 83838.Jan 10 2017, 11:51 AM
zturner retitled this revision from to Finish decoupling TypeDatabase from TypeDumper.
zturner updated this object.
zturner added reviewers: amccarth, inglorion, rnk.
zturner added a subscriber: llvm-commits.
amccarth accepted this revision.Jan 10 2017, 5:01 PM
amccarth edited edge metadata.

Nice refactor.

This revision is now accepted and ready to land.Jan 10 2017, 5:01 PM
This revision was automatically updated to reflect the committed changes.