[PATCH] D89707: [CSSPGO][llvm-profgen] Parse mmap events from perf script
Mircea Trofin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 22 10:45:18 PDT 2020
mtrofin added inline comments.
================
Comment at: llvm/tools/llvm-profgen/llvm-profgen.cpp:66
+ // TODO:
+ IsLoaded = true;
+ }
----------------
hoy wrote:
> mtrofin wrote:
> > should this set IsLoaded to false?
> >
> > also, why not assert(!IsLoaded); or rename to "ensureLoaded";
> >
> > or - is there value in a ProfiledBinary that's not loadable? If not, how about:
> > - private ctor
> > - fields are const; no need for IsLoaded
> > - public static factory method returning a std::unique_ptr<ProfildBinary> that's null if loading fails.
> >
> > that way, a reader knows they don't need to bother worrying about ProfiledBinaries that don't work - simpler overall state. wdyt?
> Asserting the function is only run once per binary is reasonable since all provided binaries are loaded as soon as the tool starts. The initial design allowed for a load on demand, i.e, when binaries are not provided via the command line option, the profiled binaries record by mmap events will be automatically loaded while processing the events. `IsLoaded` was introduced as a signal for that. However that complicated the tool and was not continued.
>
> A load failure would result the tool to error and exit instead of returning a null object. Please see subsequent patch D89712.
>
>
So then could the loading happen in the ctor, since failure to load => fast fail? Then the ProfiledBinary is known to be always loaded, and the only mutable field is the base address - to be clear, my suggestion is for simpler maintainability.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D89707/new/
https://reviews.llvm.org/D89707
More information about the llvm-commits
mailing list