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
This commit is contained in:
Keith Randall 2013-12-30 12:14:27 -08:00
parent 1cc2ff8fc7
commit 0ea20bc981

View file

@ -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;