• Austin Clements's avatar
    runtime: avoid repeated findmoduledatap calls · 0efc8b21
    Austin Clements authored
    Currently almost every function that deals with a *_func has to first
    look up the *moduledata for the module containing the function's entry
    point. This means we almost always do at least two identical module
    lookups whenever we deal with a *_func (one to get the *_func and
    another to get something from its module data) and sometimes several
    more.
    
    Fix this by making findfunc return a new funcInfo type that embeds
    *_func, but also includes the *moduledata, and making all of the
    functions that currently take a *_func instead take a funcInfo and use
    the already-found *moduledata.
    
    This transformation is trivial for the most part, since the *_func
    type is usually inferred. The annoying part is that we can no longer
    use nil to indicate failure, so this introduces a funcInfo.valid()
    method and replaces nil checks with calls to valid.
    
    Change-Id: I9b8075ef1c31185c1943596d96dec45c7ab5100f
    Reviewed-on: https://go-review.googlesource.com/37331
    Run-TryBot: Austin Clements <austin@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarMichael Hudson-Doyle <michael.hudson@canonical.com>
    0efc8b21
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...