[compiler-rt] r267716 - tsan: fix windows Go support

Dmitry Vyukov via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 27 07:03:14 PDT 2016


Author: dvyukov
Date: Wed Apr 27 09:03:14 2016
New Revision: 267716

URL: http://llvm.org/viewvc/llvm-project?rev=267716&view=rev
Log:
tsan: fix windows Go support

Unmap can't unmap arbitrary regions on windows.


Modified:
    compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc?rev=267716&r1=267715&r2=267716&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc Wed Apr 27 09:03:14 2016
@@ -120,6 +120,12 @@ bool MetaMap::FreeRange(Processor *proc,
 // 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) {




More information about the llvm-commits mailing list