mirror of
https://github.com/golang/go
synced 2024-11-20 05:34:40 -07:00
cmd/5g, cmd/6g, cmd/8g: remove width check for componentgen.
The move to 64-bit ints in 6g made componentgen ineffective. In componentgen, the code already selects which values it can handle. On amd64: benchmark old ns/op new ns/op delta BenchmarkBinaryTree17 9477970000 9582314000 +1.10% BenchmarkFannkuch11 5928750000 5255080000 -11.36% BenchmarkGobDecode 37103040 31451120 -15.23% BenchmarkGobEncode 16042490 16844730 +5.00% BenchmarkGzip 811337400 741373600 -8.62% BenchmarkGunzip 197928700 192844500 -2.57% BenchmarkJSONEncode 224164100 140064200 -37.52% BenchmarkJSONDecode 258346800 231829000 -10.26% BenchmarkMandelbrot200 7561780 7601615 +0.53% BenchmarkParse 12970340 11624360 -10.38% BenchmarkRevcomp 1969917000 1699137000 -13.75% BenchmarkTemplate 296182000 263117400 -11.16% R=nigeltao, dave, daniel.morsing CC=golang-dev https://golang.org/cl/6821052
This commit is contained in:
parent
ee26a5e4f2
commit
022b361ae2
@ -1356,9 +1356,9 @@ sgen(Node *n, Node *res, int64 w)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(w == 8 || w == 12)
|
// Avoid taking the address for simple enough types.
|
||||||
if(componentgen(n, res))
|
if(componentgen(n, res))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// determine alignment.
|
// determine alignment.
|
||||||
// want to avoid unaligned access, so have to use
|
// want to avoid unaligned access, so have to use
|
||||||
@ -1495,9 +1495,10 @@ cadable(Node *n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* copy a structure component by component
|
* copy a composite value by moving its individual components.
|
||||||
|
* Slices, strings and interfaces are supported.
|
||||||
|
* nr is N when assigning a zero value.
|
||||||
* return 1 if can do, 0 if cant.
|
* return 1 if can do, 0 if cant.
|
||||||
* nr is N for copy zero
|
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
componentgen(Node *nr, Node *nl)
|
componentgen(Node *nr, Node *nl)
|
||||||
|
@ -618,9 +618,9 @@ clearfat(Node *nl)
|
|||||||
|
|
||||||
|
|
||||||
w = nl->type->width;
|
w = nl->type->width;
|
||||||
if(w == 8 || w == 12)
|
// Avoid taking the address for simple enough types.
|
||||||
if(componentgen(N, nl))
|
if(componentgen(N, nl))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
c = w % 4; // bytes
|
c = w % 4; // bytes
|
||||||
q = w / 4; // quads
|
q = w / 4; // quads
|
||||||
|
@ -1254,9 +1254,9 @@ sgen(Node *n, Node *ns, int64 w)
|
|||||||
if(w < 0)
|
if(w < 0)
|
||||||
fatal("sgen copy %lld", w);
|
fatal("sgen copy %lld", w);
|
||||||
|
|
||||||
if(w == 16)
|
// Avoid taking the address for simple enough types.
|
||||||
if(componentgen(n, ns))
|
if(componentgen(n, ns))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(w == 0) {
|
if(w == 0) {
|
||||||
// evaluate side effects only
|
// evaluate side effects only
|
||||||
@ -1378,9 +1378,10 @@ cadable(Node *n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* copy a structure component by component
|
* copy a composite value by moving its individual components.
|
||||||
|
* Slices, strings and interfaces are supported.
|
||||||
|
* nr is N when assigning a zero value.
|
||||||
* return 1 if can do, 0 if cant.
|
* return 1 if can do, 0 if cant.
|
||||||
* nr is N for copy zero
|
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
componentgen(Node *nr, Node *nl)
|
componentgen(Node *nr, Node *nl)
|
||||||
|
@ -1028,9 +1028,9 @@ clearfat(Node *nl)
|
|||||||
|
|
||||||
|
|
||||||
w = nl->type->width;
|
w = nl->type->width;
|
||||||
if(w == 16)
|
// Avoid taking the address for simple enough types.
|
||||||
if(componentgen(N, nl))
|
if(componentgen(N, nl))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
c = w % 8; // bytes
|
c = w % 8; // bytes
|
||||||
q = w / 8; // quads
|
q = w / 8; // quads
|
||||||
|
@ -1276,10 +1276,9 @@ sgen(Node *n, Node *res, int64 w)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w == 8 || w == 12) {
|
// Avoid taking the address for simple enough types.
|
||||||
if(componentgen(n, res))
|
if(componentgen(n, res))
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
// offset on the stack
|
// offset on the stack
|
||||||
osrc = stkof(n);
|
osrc = stkof(n);
|
||||||
@ -1381,9 +1380,10 @@ cadable(Node *n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* copy a structure component by component
|
* copy a composite value by moving its individual components.
|
||||||
|
* Slices, strings and interfaces are supported.
|
||||||
|
* nr is N when assigning a zero value.
|
||||||
* return 1 if can do, 0 if cant.
|
* return 1 if can do, 0 if cant.
|
||||||
* nr is N for copy zero
|
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
componentgen(Node *nr, Node *nl)
|
componentgen(Node *nr, Node *nl)
|
||||||
|
@ -59,9 +59,9 @@ clearfat(Node *nl)
|
|||||||
dump("\nclearfat", nl);
|
dump("\nclearfat", nl);
|
||||||
|
|
||||||
w = nl->type->width;
|
w = nl->type->width;
|
||||||
if(w == 8 || w == 12)
|
// Avoid taking the address for simple enough types.
|
||||||
if(componentgen(N, nl))
|
if(componentgen(N, nl))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
c = w % 4; // bytes
|
c = w % 4; // bytes
|
||||||
q = w / 4; // quads
|
q = w / 4; // quads
|
||||||
|
Loading…
Reference in New Issue
Block a user