diff options
| author | Dmitriy Vyukov <dvyukov@google.com> | 2014-03-06 23:48:30 +0400 |
|---|---|---|
| committer | Dmitriy Vyukov <dvyukov@google.com> | 2014-03-06 23:48:30 +0400 |
| commit | a1695d2ea321e9bed50d90732a8cef5e71cd7a89 (patch) | |
| tree | 9b06b580f8db2686eb33728166016c01be9c9aa1 /src/pkg/runtime/malloc.goc | |
| parent | 5db255fa3c8b3f5d5aa1560d1e5be4688dfb7925 (diff) | |
| download | go-a1695d2ea321e9bed50d90732a8cef5e71cd7a89.tar.xz | |
runtime: use custom thunks for race calls instead of cgo
Implement custom assembly thunks for hot race calls (memory accesses and function entry/exit).
The thunks extract caller pc, verify that the address is in heap or global and switch to g0 stack.
Before:
ok regexp 3.692s
ok compress/bzip2 9.461s
ok encoding/json 6.380s
After:
ok regexp 2.229s (-40%)
ok compress/bzip2 4.703s (-50%)
ok encoding/json 3.629s (-43%)
For comparison, normal non-race build:
ok regexp 0.348s
ok compress/bzip2 0.304s
ok encoding/json 0.661s
Race build:
ok regexp 2.229s (+540%)
ok compress/bzip2 4.703s (+1447%)
ok encoding/json 3.629s (+449%)
Also removes some race-related special cases from cgocall and scheduler.
In long-term it will allow to remove cyclic runtime/race dependency on cmd/cgo.
Fixes #4249.
Fixes #7460.
Update #6508
Update #6688
R=iant, rsc, bradfitz
CC=golang-codereviews
https://golang.org/cl/55100044
Diffstat (limited to 'src/pkg/runtime/malloc.goc')
| -rw-r--r-- | src/pkg/runtime/malloc.goc | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/src/pkg/runtime/malloc.goc b/src/pkg/runtime/malloc.goc index 0e8a812641..bd50cafb81 100644 --- a/src/pkg/runtime/malloc.goc +++ b/src/pkg/runtime/malloc.goc @@ -295,9 +295,6 @@ runtime·free(void *v) if(size < TinySize) runtime·throw("freeing too small block"); - if(raceenabled) - runtime·racefree(v); - // Ensure that the span is swept. // If we free into an unswept span, we will corrupt GC bitmaps. runtime·MSpan_EnsureSwept(s); |
