summaryrefslogtreecommitdiff
path: root/lib/tsan/go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2013-02-13 13:05:36 +0000
committerDmitry Vyukov <dvyukov@google.com>2013-02-13 13:05:36 +0000
commiteaa0190fc9a510a621d871becce0536950c5468d (patch)
treedf2e36439f5fe26c551cc51806f993a7cf6e099c /lib/tsan/go
parent606d3bc68a071c35acd0490678ce9ebc4c7e6332 (diff)
downloadcompiler-rt-eaa0190fc9a510a621d871becce0536950c5468d.tar.gz
compiler-rt-eaa0190fc9a510a621d871becce0536950c5468d.tar.bz2
compiler-rt-eaa0190fc9a510a621d871becce0536950c5468d.tar.xz
tsan: do not imitate memory write on malloc() (Go)
better memory range access functions (put only 1 event to trace) (Go) git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@175056 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/go')
-rw-r--r--lib/tsan/go/tsan_go.cc8
1 files changed, 3 insertions, 5 deletions
diff --git a/lib/tsan/go/tsan_go.cc b/lib/tsan/go/tsan_go.cc
index c9c533a7..b2aa6220 100644
--- a/lib/tsan/go/tsan_go.cc
+++ b/lib/tsan/go/tsan_go.cc
@@ -116,14 +116,12 @@ void __tsan_write(ThreadState *thr, void *addr, void *pc) {
void __tsan_read_range(ThreadState *thr, void *addr, uptr size, uptr step,
void *pc) {
- for (uptr i = 0; i < size; i += step)
- MemoryRead(thr, (uptr)pc, (uptr)addr + i, kSizeLog1);
+ MemoryAccessRangeStep(thr, (uptr)pc, (uptr)addr, size, step, false);
}
void __tsan_write_range(ThreadState *thr, void *addr, uptr size, uptr step,
void *pc) {
- for (uptr i = 0; i < size; i += step)
- MemoryWrite(thr, (uptr)pc, (uptr)addr + i, kSizeLog1);
+ MemoryAccessRangeStep(thr, (uptr)pc, (uptr)addr, size, step, true);
}
void __tsan_func_enter(ThreadState *thr, void *pc) {
@@ -138,7 +136,7 @@ void __tsan_malloc(ThreadState *thr, void *p, uptr sz, void *pc) {
if (thr == 0) // probably before __tsan_init()
return;
thr->in_rtl++;
- MemoryRangeImitateWrite(thr, (uptr)pc, (uptr)p, sz);
+ MemoryResetRange(thr, (uptr)pc, (uptr)p, sz);
thr->in_rtl--;
}