Open PaulRBerg opened 1 year ago
@paulrberg as described in the book, gas reporting traces the external contract calls. since free functions act as internal functions, we cannot correctly identify calls to them.
theoretically, we could record the jumps within each call, but 1) we wouldn't be able to decode them since free/internal functions are not a part of the artifacts 2) encountering a jump doesn't necessarily mean we've entered the internal function 3) that'd produce a lot of data which imo would dilute the value of gas reports
@mattsse @onbjerg @draganrakita @mds1 curious to hear your thoughts
Thanks for explaining the difficulties of implementing this, @rkrasiuk.
I wonder if the user could somehow help Forge identify the functions that should be metered? e.g. what if there was a field in the Foundry config like meter_free_functions
or gas_reports_free_functions
(or something along those lines)? Would that help in any way?
Btw, this is related to https://github.com/foundry-rs/foundry/issues/3723.
the config would still not solve the instruction to code reverse lookup, only the collected functions.
some thought dump:
Component
Forge
Describe the feature you would like
I would like to have gas reports for free functions, e.g.
Passing
--gas-report
to Forge doesn't generate a report. The only solution as of now is to wrap my free functions in an intermediary mock contract used specifically for testing.