This is an archive of the discontinued LLVM Phabricator instance.

[XRay] FDRTraceWriter and FDR Trace Loading
ClosedPublic

Authored by dberris on Aug 24 2018, 3:49 AM.

Details

Summary

This is the first step in the larger refactoring and reduction of
D50441.

This step in the process does the following:

  • Introduces more granular types of Records representing the many kinds of records written/read by the Flight Data Recorder (FDR) mode Trace loading function(s).
  • Introduces an abstract RecordVisitor type meant to handle the processing of the various Record derived types. This RecordVisitor has two implementations in this patch: RecordInitializer and FDRTraceWriter.
  • We also introduce a convenience interface for building a collection of Record instances called a LogBuilder. This allows us to generate sequences of Record instances manually (used in unit tests but useful otherwise).
  • The`FDRTraceWriter` class implements the RecordVisitor interface and handles the writing of metadata records to a raw_ostream. We demonstrate that in the unit test, we can generate in-memory FDR mode traces using the specific Record derived types, which we load through the loadTrace(...) function yielding valid Trace objects.

This patch introduces the required types and concepts for us to start
replacing the logic implemented in the loadFDRLog function to use the
more granular types. In subsequent patches, we will introduce more
visitor implementations which isolate the verification, printing,
indexing, production/consumption, and finally the conversion of the FDR
mode logs.

The overarching goal of these changes is to make handling FDR mode logs
better tested, more understandable, more extensible, and more
systematic. This will also allow us to better represent the execution
trace, as we improve the fidelity of the events we represent in an XRay
Trace object, which we intend to do after FDR mode log processing is
in better shape.

Diff Detail

Repository
rL LLVM

Event Timeline

dberris created this revision.Aug 24 2018, 3:49 AM
dberris updated this revision to Diff 162638.Aug 27 2018, 2:02 AM

Back-port some changes from later patches, discovered through testing.

eizan accepted this revision.Aug 30 2018, 12:01 AM
This revision is now accepted and ready to land.Aug 30 2018, 12:01 AM
This revision was automatically updated to reflect the committed changes.