#ifndef THIRD_PARTY_PERF_DATA_CONVERTER_QUIPPER_HUGE_PAGE_DEDUCER_H_
#define THIRD_PARTY_PERF_DATA_CONVERTER_QUIPPER_HUGE_PAGE_DEDUCER_H_

#include "compat/proto.h"

namespace quipper {

// Walks through all the perf events in |*events| and deduces correct |pgoff|
// and |filename| values for MMAP events.
//
// This may not correctly handle perf data that has been processed to remove
// MMAPs that contain no sample events, since one or more of the mappings
// necessary to resolve the huge pages mapping could have been discarded. The
// result would be that the huge pages mapping would remain as "//anon" and the
// other mappings would remain unchanged.
void DeduceHugePages(RepeatedPtrField<PerfDataProto::PerfEvent>* events);

// Walks through all the perf events in |*events| and searches for split
// mappings. Combines these split mappings into one and replaces the split
// mapping events. Modifies the events vector stored in |*events|.
void CombineMappings(RepeatedPtrField<PerfDataProto::PerfEvent>* events);

}  // namespace quipper

#endif  // THIRD_PARTY_PERF_DATA_CONVERTER_QUIPPER_HUGE_PAGE_DEDUCER_H_