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/runtime.h | |
| 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/runtime.h')
| -rw-r--r-- | src/pkg/runtime/runtime.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/src/pkg/runtime/runtime.h b/src/pkg/runtime/runtime.h index 90bd24004f..6b421348ef 100644 --- a/src/pkg/runtime/runtime.h +++ b/src/pkg/runtime/runtime.h @@ -366,7 +366,6 @@ struct M uint32 waitsemacount; uint32 waitsemalock; GCStats gcstats; - bool racecall; bool needextram; bool (*waitunlockf)(G*, void*); void* waitlock; |
