From: Keith Randall Date: Mon, 30 Dec 2013 20:14:27 +0000 (-0800) Subject: cmd/6g: inline copies of up to 4 words in length. X-Git-Tag: go1.3beta1~1089 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0ea20bc981b2135cd67e7ff4ec71c05214bccc52;p=gostls13.git cmd/6g: inline copies of up to 4 words in length. This change fixes a serious performance regression with reflect.Value growing to 4 words instead of 3. The json benchmark was ~50% slower, with this change it is ~5% slower (and the binary is 0.5% larger). Longer term, we probably need to rethink our copy generation. Using REP is really expensive time-wise. But inlining the copy grows the binary. R=golang-codereviews, r CC=golang-codereviews https://golang.org/cl/44990043 --- diff --git a/src/cmd/6g/cgen.c b/src/cmd/6g/cgen.c index ada2baa81c..da16071a8d 100644 --- a/src/cmd/6g/cgen.c +++ b/src/cmd/6g/cgen.c @@ -1513,7 +1513,7 @@ componentgen(Node *nr, Node *nl) fatal("componentgen: not a TFIELD: %lT", t); fldcount++; } - if(fldcount == 0 || fldcount > 3) + if(fldcount == 0 || fldcount > 4) goto no; break;