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 | 221e2c61ec3b83add0d54b41eaee650b9ca6b386 (patch) | |
| tree | 3c26015bcba6aaaba6e49da5837612cd43841826 | |
| parent | 51c294a9e8b109fa5b0f92516da29f327120d48c (diff) | |
| download | bcm5719-llvm-221e2c61ec3b83add0d54b41eaee650b9ca6b386.tar.gz bcm5719-llvm-221e2c61ec3b83add0d54b41eaee650b9ca6b386.zip | |
tsan: fix windows Go support
Unmap can't unmap arbitrary regions on windows.
llvm-svn: 267716
| -rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_sync.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_sync.cc b/compiler-rt/lib/tsan/rtl/tsan_sync.cc index c58821aa4a6..15759d4e09d 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_sync.cc +++ b/compiler-rt/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) { |

