From 0ea20bc981b2135cd67e7ff4ec71c05214bccc52 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Mon, 30 Dec 2013 12:14:27 -0800 Subject: [PATCH] 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 --- src/cmd/6g/cgen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; -- 2.48.1