From: Dmitry Vyukov Date: Wed, 27 Apr 2016 14:03:14 +0000 (+0000) Subject: tsan: fix windows Go support X-Git-Tag: llvmorg-3.9.0-rc1~7770 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=221e2c61ec3b83add0d54b41eaee650b9ca6b386;p=platform%2Fupstream%2Fllvm.git tsan: fix windows Go support Unmap can't unmap arbitrary regions on windows. llvm-svn: 267716 --- diff --git a/compiler-rt/lib/tsan/rtl/tsan_sync.cc b/compiler-rt/lib/tsan/rtl/tsan_sync.cc index c58821a..15759d4 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) {