diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2016-04-27 14:03:14 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2016-04-27 14:03:14 +0000 |
commit | 9721f9a6b1b8b1e1582ab4f39fbe11e00060eae0 (patch) | |
tree | 15a0682a8baacf0e5e35bc30f7a043183aa4d253 /lib/tsan | |
parent | bcf9970cb4abd1bbb7b254594c535c3e3b0116a1 (diff) |
tsan: fix windows Go support
Unmap can't unmap arbitrary regions on windows.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@267716 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan')
-rw-r--r-- | lib/tsan/rtl/tsan_sync.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/tsan/rtl/tsan_sync.cc b/lib/tsan/rtl/tsan_sync.cc index c58821aa4..15759d4e0 100644 --- a/lib/tsan/rtl/tsan_sync.cc +++ b/lib/tsan/rtl/tsan_sync.cc @@ -120,6 +120,12 @@ bool MetaMap::FreeRange(Processor *proc, uptr p, uptr sz) { // without meta objects, at this point it stops freeing meta objects. Because // thread stacks grow top-down, we do the same starting from end as well. void MetaMap::ResetRange(Processor *proc, uptr p, uptr sz) { + if (kGoMode) { + // UnmapOrDie/MmapFixedNoReserve does not work on Windows, + // so we do the optimization only for C/C++. + FreeRange(proc, p, sz); + return; + } const uptr kMetaRatio = kMetaShadowCell / kMetaShadowSize; const uptr kPageSize = GetPageSizeCached() * kMetaRatio; if (sz <= 4 * kPageSize) { |