Revision 5e8279050bfeac11ff7b6596e927d76e321dcc3c authored by Keno Fischer on 04 August 2020, 00:46:38 UTC, committed by GitHub on 04 August 2020, 00:46:38 UTC
When inlining declines to inline something, it instead turns them into
:invoke statements. These are then turned into direct (non-inlined)
calls by codegen or otherwise receive a fast path at runtime. While
inlining has evolved quite a bit, this code has stayed much the same
since it was introduced four years ago and doesn't seem to make much
sense as is. In particular:

1. For the non-`invoke()` case we were doing an extra method look that
seems entirely superfluous, because we already had to do the very same
method lookup just to reach this point. The only thing this path was
doing at that point was creating a "compilable" specialization (which
might use a slightly different signature). We might as well do that
directly.

2. For the invoke case, we were pro-actively adding the specialization
to the `->invokes` dispatch cache. However, this doesn't make much sense
a priori either, because the bail path does not go through the runtime
`invoke()` code that uses that cache (it did many years ago when this
code was introduced, but hasn't in a long time). There does not seem
to be a good reason to believe that this signature will be any more
likely than any other to be invoked using the runtime mechanism.

This cleans up that path by getting rid of both the superfluous method
lookup and the superfluous addition to the `->invokes` cache. There
should be a slight performance improvement as well from avoiding
this superfluous work, but the bail path is less common than one
might expect (the vast majority of call sites are inlined) and in
measurements the effect seems to be in the noise. Nevertheless,
it seems like a nice simplification and is conceptually clearer.
1 parent ea07765
Raw File
.mailmap
JuliaLang <julia-dev@googlegroups.com> <julia-dev@googlegroups.com>
JuliaLang <julia-dev@googlegroups.com> <julia-math@googlegroups.com>

Jeff Bezanson <jeff.bezanson@gmail.com> <jeff.bezanson@gmail.com>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@beagle.darwinproject.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@caspian.caspian.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@evolution.local>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@mathstation045.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@mathstation049.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@mathstation186.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@post.harvard.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@scooby-doo.csail.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@shaggy.csail.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <jeff@lagann.(none)>
Jeff Bezanson <jeff.bezanson@gmail.com> <julia@beowulf1.csail.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <vcloud@julia02.domain.local>
Jeff Bezanson <jeff.bezanson@gmail.com> <je24857@gp42-bezanson.llan.ll.mit.edu>

Stefan Karpinski <stefan@karpinski.org> <stefan@karpinski.org>
Stefan Karpinski <stefan@karpinski.org> <stefan.karpinski@gmail.com>
Stefan Karpinski <stefan@karpinski.org> <stefan.karpinski@post.harvard.edu>

Viral B. Shah <viral@mayin.org> <viral@mayin.org>
Viral B. Shah <viral@mayin.org> <viral@beowulf1.csail.mit.edu>
Viral B. Shah <viral@mayin.org> <viral@neumann.cs.ucsb.edu>
Viral B. Shah <viral@mayin.org> <viral@ubuntu-VirtualBox.(none)>

George Xing <gxing@mit.edu> <gxing@mit.edu>
George Xing <gxing@mit.edu> <noobiecubie@gmail.com>

Stephan Boyer <boyers@mit.edu> <boyers@mit.edu>
Stephan Boyer <boyers@mit.edu> <stephan@julialang.xvm.mit.edu>
Stephan Boyer <boyers@mit.edu> <stephan@ubuntu.(none)>
Stephan Boyer <boyers@mit.edu> <stephan@ubuntu.ubuntu-domain>

Jiahao Chen <jiahao@mit.edu> Jiahao Chen (陈家豪) <jiahao@mit.edu>

Giuseppe Zingales <giuseppe.pet.zingales@gmail.com> <giuseppe.pet.zingales@gmail.com>
Giuseppe Zingales <giuseppe.pet.zingales@gmail.com> <g3@ubuntu.ubuntu-domain>

Jameson Nash <jameson@juliacomputing.com> <jameson@juliacomputing.com>
Jameson Nash <jameson@juliacomputing.com> <vtjnash@comcast.net>
Jameson Nash <jameson@juliacomputing.com> <vtjnash@gmail.com>
Jameson Nash <jameson@juliacomputing.com> <vtjnash@users.noreply.github.com>
Jameson Nash <jameson@juliacomputing.com> <jameson@mit.edu>

Alan Edelman <mit.edelman@gmail.com> <mit.edelman@gmail.com>

PlayMyCode <joe@playmycode.com> <joe@playmycode.com>
PlayMyCode <joe@playmycode.com> <hello@playmycode.com>

Corey M. Hoffstein <corey@hoffstein.com> <corey@hoffstein.com>
Corey M. Hoffstein <corey@hoffstein.com> <corey@newfoundresearch.com>

Stefan Kroboth <stefan.kroboth@gmail.com> <stefan.kroboth@gmail.com>

Tim Holy <tim.holy@gmail.com> <tim.holy@gmail.com>
Tim Holy <tim.holy@gmail.com> <holy@wustl.edu>

Patrick O'Leary <patrick.oleary@gmail.com> <patrick.oleary@gmail.com>

Ivan Mantova <horphus@gmail.com> <horphus@gmail.com>

Keno Fischer <keno@juliacomputing.com> <keno@juliacomputing.com>
Keno Fischer <keno@juliacomputing.com> <kfischer@college.harvard.edu>
Keno Fischer <keno@juliacomputing.com> <keno@alumni.harvard.edu>
Keno Fischer <keno@juliacomputing.com> <kfischer+github@college.harvard.edu>
Keno Fischer <keno@juliacomputing.com> <kenof@stanford.edu>
Keno Fischer <keno@juliacomputing.com> <keno@30-9-48.wireless.csail.mit.edu>

Harlan Harris <harlan@harris.name> <harlan@harris.name>
Harlan Harris <harlan@harris.name> <harlan.harris@kaplan.com>

Douglas Bates <dmbates@gmail.com> <dmbates@gmail.com>

Andreas Noack Jensen <andreasnoackjensen@gmail.com> <andreasnoackjensen@gmail.com>
Andreas Noack Jensen <andreasnoackjensen@gmail.com> <andreas@Andreass-MacBook-Pro.local>
Andreas Noack Jensen <andreasnoackjensen@gmail.com> <andreasnoack@Andreass-MacBook-Pro-2.local>
Andreas Noack Jensen <andreasnoackjensen@gmail.com> <andreas@noack.dk>

Westley Argentum Hennigh <WestleyArgentum@gmail.com> <WestleyArgentum@gmail.com>
Westley Argentum Hennigh <WestleyArgentum@gmail.com> <whennigh@forio.com>

George V. Neville-Neil <gnn@freebsd.org> <gnn@freebsd.org>
George V. Neville-Neil <gnn@freebsd.org> <gvnn3>

Alessandro Andrioni Silva <alessandroandrioni@gmail.com> <alessandroandrioni@gmail.com>
Alessandro Andrioni Silva <alessandroandrioni@gmail.com> <jakedust@gmail.com>

Toivo Henningsson <toivo.h.h@gmail.com> <toivo.h.h@gmail.com>
Toivo Henningsson <toivo.h.h@gmail.com> <toivo@control.lth.se>

Adam Savitzky <adam.savitzky@gmail.com> <adam.savitzky@gmail.com>
Adam Savitzky <adam.savitzky@gmail.com> <asavitzky@forio.com>

David Slate <dslate@speakeasy.net> <dslate@speakeasy.net>

Francois Pepin <fpepin@gmail.com> <fpepin@gmail.com>

Waldir Pimenta <waldir@email.com> <waldir@email.com>

Steven G. Johnson <stevenj@alum.mit.edu> <stevenj@mit.edu>
Steven G. Johnson <stevenj@alum.mit.edu> <stevenj@math.mit.edu>
Steven G. Johnson <stevenj@alum.mit.edu> <stevenj@fftw.org>
Steven G. Johnson <stevenj@alum.mit.edu> <stevenj.mit@gmail.com>
Steven G. Johnson <stevenj@alum.mit.edu> <stevenj@ab-initio.mit.edu>

Isaiah Norton <isaiah.norton@gmail.com> <isaiah.norton@gmail.com>
Isaiah Norton <isaiah.norton@gmail.com> <inorton@bwh.harvard.edu>
Isaiah Norton <isaiah.norton@gmail.com> <ihnorton@users.noreply.github.com>
Blake Johnson <blakejohnson04@gmail.com> <blakejohnson04@gmail.com>
Blake Johnson <blakejohnson04@gmail.com> <bjohnson@bbn.com>

Marcus Silva <msilva@bbn.com> <msilva@bbn.com>
Marcus Silva <msilva@bbn.com> <marcus.ps+github@gmail.com>

Amit Murthy <amit.murthy@gmail.com> <amit.murthy@gmail.com>

Tanmay Mohapatra <tanmaykm@gmail.com> <tanmaykm@gmail.com>
Tanmay Mohapatra <tanmaykm@gmail.com> <tanmaykm@julia.mit.edu>

Dan Luu <danluu@gmail.com> <danluu@gmail.com>
Dan Luu <danluu@gmail.com> <Dan>

Kevin Bache <kevin.bache@gmail.com> <kevin.bache@gmail.com>
Kevin Bache <kevin.bache@gmail.com> <trendymoniker@gmail.com>

Rick <rickhg12hs@gmail.com> <rickhg12hs@gmail.com>
Rick <rickhg12hs@gmail.com> <rickhg12hs@users.noreply.github.com>

David Smith <david.smith@gmail.com> <david.smith@gmail.com>
David Smith <david.smith@gmail.com> <david.smith@vanderbilt.edu>

Carlos Becker  <carlosbecker@gmail.com> <cjbecker@iccvlabsrv22.epfl.ch>

Fabian R Lischka <github@fabian-lischka.de> <hackerschool@fabian-lischka.de>

James J Porter <porterjamesj@gmail.com>

Jay Weisskopf <jay@jayschwa.net> <jweisskopf@ebay.com>

Joseph Perla <joseph@notanemail.com> <joseph@ not an email.com>

Jutho <jutho.haegeman@ugent.be> <jutho.haegeman@ugent.be>
Jutho <jutho.haegeman@ugent.be> <Jutho@users.noreply.github.com>

Tomas Lycken <tomas.lycken@gmail.com> <tomas.lycken@gmail.com>
Tomas Lycken <tomas.lycken@gmail.com> <tlycken@kth.se>

Simon Byrne <simon.byrne@gmail.com> <byrne@stats.ucl.ac.uk>
Simon Byrne <simon.byrne@gmail.com> <simonbyrne@gmail.com>

Jake Bolewski <jakebolewski@gmail.com>

Leah Hanson <astrieanna@gmail.com> <leah.a.hanson@gmail.com>

Lei Wang <kookbond@gmail.com> <kookbond@gmail.com>
Lei Wang <kookbond@gmail.com> <wlbksy@users.noreply.github.com>

Kevin Squire <kevin.squire@gmail.com> <kevin@secondspectrum.com>

Michael Fox <415fox@gmail.com> <m@antikc.com>

Miles Gould <mgould1@inf.ed.ac.uk> <miles@assyrian.org.uk>

Pierre-Yves Gerardy <py@py.gy> <pygy79@gmail.com>

Ron Rock <rrock@uchicago.edu> <rsrock@users.noreply.github.com>

Tony Kelman <tony@kelman.net>

Tobias Knopp <tobias@knoppweb.de>

Ben Arthur <bjarthur70@gmail.com> <bjarthur70@gmail.com>
Ben Arthur <bjarthur70@gmail.com> <arthurb@hhmi.org>

Odd Andersen <odd.andersen@gmail.com> <odd.andersen@gmail.com>
Odd Andersen <odd.andersen@gmail.com> <odd.andersen@sintef.no>

Ronan Arraes Jardim Chagas <ronisbr@gmail.com> <ronisbr@gmail.com>
Ronan Arraes Jardim Chagas <ronisbr@gmail.com> <ronan.chagas@ronanchagas-ops.ete.inpe.br>

Tim Besard <tim.besard@gmail.com> <tim.besard@gmail.com>
Tim Besard <tim.besard@gmail.com> <tim.besard@elis.ugent.be>

Tracy Wadleigh <twadleigh@arete.com> <twadleigh@arete.com>
Tracy Wadleigh <twadleigh@arete.com> <twadleigh@.corp.arete.com>

Mike Innes <mike.j.innes@gmail.com>

Sean Garborg <sean.garborg@gmail.com>

Scott P. Jones <scottjones@alum.mit.edu> <scottjones@alum.mit.edu>
Scott P. Jones <scottjones@alum.mit.edu> <ScottPJones@users.noreply.github.com>

M. Prentis <mcprentiss@gmail.com> <mcprentiss@gmail.com>
M. Prentis <mcprentiss@gmail.com> <mprentis@yahoo.com>

Peter <peter.margo@gmx.de> <peter.margo@gmx.de>
Peter <peter.margo@gmx.de> <https://github.com/peter1000>

Rafael Fourquet <fourquet.rafael@gmail.com> <fourquet.rafael@gmail.com>
Rafael Fourquet <fourquet.rafael@gmail.com> <fourquet.rafael+github@gmail.com> <fourquet.rafael+github@gmail.com>
Rafael Fourquet <fourquet.rafael@gmail.com> <rfourquet@users.noreply.github.com>

Dan Wlasiuk <milktrader@gmail.com> <milktrader@gmail.com>
Dan Wlasiuk <milktrader@gmail.com> <milktrader@hushmail.com>

Rene Donner <rene@donner.at> <rene@donner.at>
Rene Donner <rene@donner.at> <github@donner.at>

Waldir Pimenta <waldyrious@gmail.com> <waldyrious@gmail.com>
Waldir Pimenta <waldyrious@gmail.com> <waldir@email.com>

Young Wu <doomsplayer@gmail.com> <doomsplayer@gmail.com>

Daan Huybrechs <daan.huybrechs@cs.kuleuven.be> <daan.huybrechs@cs.kuleuven.be>

Jey Kottalam <jey@kottalam.net> <jey@kottalam.net>
Jey Kottalam <jey@kottalam.net> <jey@cs.berkeley.edu>

John Myles White <jmw@johnmyleswhite.com> <jmw@johnmyleswhite.com>
John Myles White <jmw@johnmyleswhite.com> <johnmyleswhite@gmail.com>

Katharine Hyatt <kslimes@gmail.com> <kslimes@gmail.com>
Katharine Hyatt <kslimes@gmail.com> <kshyatt@users.noreply.github.com>
Katharine Hyatt <kslimes@gmail.com> <kshyatt@users.noreply.github.com>
Katharine Hyatt <kslimes@gmail.com> <kshyatt@physics.ucsb.edu>
Katharine Hyatt <kslimes@gmail.com> <khyatt@flatironinstitute.org>

Oscar Blumberg <naellyn@gmail.com> <naellyn@gmail.com>
Oscar Blumberg <naellyn@gmail.com> <oscar.blumberg@ens.fr>

Seth Bromberger <seth@ncisecurity.com> <seth@ncisecurity.com>
Seth Bromberger <seth@ncisecurity.com> <sbromberger@users.noreply.github.com>

Tomas Lycken <tomas.lycken@gmail.com> <tomas.lycken@gmail.com>
Tomas Lycken <tomas.lycken@gmail.com> <tlycken@users.noreply.github.com>

Tracy Wadleigh <tracy.wadleigh@gmail.com> <tracy.wadleigh@gmail.com>
Tracy Wadleigh <tracy.wadleigh@gmail.com> <twadleigh@arete.com>

Sacha Verweij <sacha.vers@gmail.com> <sacha.vers@gmail.com>
Sacha Verweij <sacha@stanford.edu> <sacha.vers@gmail.com>
Sacha Verweij <sacha@stanford.edu> <Sacha0@users.noreply.github.com>
Sacha Verweij <sacha@stanford.edu> <5799177+Sacha0@users.noreply.github.com>

Kristoffer Carlsson <kcarlsson89@gmail.com> <kcarlsson89@gmail.com>
Kristoffer Carlsson <kristoffer.carlsson@chalmers.se> <kcarlsson89@gmail.com>

Valentin Churavy <vchuravy@mit.edu> <vchuravy@mit.edu>
Valentin Churavy <vchuravy@mit.edu> <v.churavy@gmail.com>
Valentin Churavy <vchuravy@mit.edu> <vchuravy@users.noreply.github.com>

Curtis Vogt <curtis.vogt@gmail.com> <curtis.vogt@gmail.com>
Curtis Vogt <curtis.vogt@gmail.com> <curtis.vogt@invenia.ca>

Rafael Fourquet <fourquet.rafael@gmail.com> <fourquet.rafael@gmail.com>
Rafael Fourquet <fourquet.rafael@gmail.com> <fourquet.rafael+github@gmail.com>
back to top