]> Cypherpunks repositories - gostls13.git/commit
cmd/gc: enable inlining in generated method wrappers.
authorRémy Oudompheng <oudomphe@phare.normalesup.org>
Mon, 11 Mar 2013 20:24:51 +0000 (21:24 +0100)
committerRémy Oudompheng <oudomphe@phare.normalesup.org>
Mon, 11 Mar 2013 20:24:51 +0000 (21:24 +0100)
commit386ad0ab9056e2f9a0d05d7f86c8ae323262228b
treef3d1473eb09344d90dab94c5622cd9447e24b9e5
parent404e4a90cb8c127166ee8cfa0f7c29e231a9f1bb
cmd/gc: enable inlining in generated method wrappers.

Method calls on interfaces with large stored values
will call the pointer receiver method which may be
a wrapper over a method with value receiver.

This is particularly inefficient for very small bodies.
Inlining the wrapped method body saves a potentially expensive
function call.

benchmark                old ns/op    new ns/op    delta
BenchmarkSortString1K       802295       641387  -20.06%
BenchmarkSortInt1K          359914       238234  -33.81%
BenchmarkSortInt64K       35764226     22803078  -36.24%

Fixes #4707.

R=golang-dev, daniel.morsing, rsc
CC=golang-dev
https://golang.org/cl/7214044
src/cmd/gc/inl.c
src/cmd/gc/obj.c
src/cmd/gc/subr.c