summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2016-04-27 14:03:14 +0000
committerDmitry Vyukov <dvyukov@google.com>2016-04-27 14:03:14 +0000
commit221e2c61ec3b83add0d54b41eaee650b9ca6b386 (patch)
tree3c26015bcba6aaaba6e49da5837612cd43841826
parent51c294a9e8b109fa5b0f92516da29f327120d48c (diff)
downloadbcm5719-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.cc6
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) {
OpenPOWER on IntegriCloud