diff options
| author | Rob Pike <r@golang.org> | 2014-06-30 11:06:47 -0700 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2014-06-30 11:06:47 -0700 |
| commit | 3050a0a7d2bccede88c56828609902469328e15f (patch) | |
| tree | fbbbf69d86b978ccc4bb570173214f0a435ff703 /src/pkg/runtime/stack.c | |
| parent | 3e692becfe69a7b80dbf4af983eb620f65549f02 (diff) | |
| download | go-3050a0a7d2bccede88c56828609902469328e15f.tar.xz | |
encoding/gob: remove unsafe, use reflection.
This removes a major unsafe thorn in our side, a perennial obstacle
to clean garbage collection.
Not coincidentally: In cleaning this up, several bugs were found,
including code that reached inside by-value interfaces to create
pointers for pointer-receiver methods. Unsafe code is just as
advertised.
Performance of course suffers, but not too badly. The Pipe number
is more indicative, since it's doing I/O that simulates a network
connection. Plus these are end-to-end, so each end suffers
only half of this pain.
The edit is pretty much a line-by-line conversion, with a few
simplifications and a couple of new tests. There may be more
performance to gain.
BenchmarkEndToEndByteBuffer 2493 3033 +21.66%
BenchmarkEndToEndPipe 4953 5597 +13.00%
Fixes #5159.
LGTM=rsc
R=rsc
CC=golang-codereviews, khr
https://golang.org/cl/102680045
Diffstat (limited to 'src/pkg/runtime/stack.c')
0 files changed, 0 insertions, 0 deletions
