tsan: move trace header into 0x600000000000 range
eliminat thread "dead info" altogether
llvm-svn: 177512
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc b/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc
index 476b670..3be9b83 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc
+++ b/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc
@@ -27,8 +27,7 @@
, thr()
, sync()
, epoch0()
- , epoch1()
- , dead_info() {
+ , epoch1() {
}
#ifndef TSAN_GO
@@ -75,8 +74,8 @@
void ThreadContext::OnReset() {
sync.Reset();
- if (dead_info)
- DestroyAndFree(dead_info);
+ FlushUnneededShadowMemory(GetThreadTrace(tid), TraceSize() * sizeof(Event));
+ //!!! FlushUnneededShadowMemory(GetThreadTraceHeader(tid), sizeof(Trace));
}
struct OnStartedArgs {
@@ -113,8 +112,10 @@
thr->clock.acquire(&sync);
thr->fast_state.SetHistorySize(flags()->history_size);
const uptr trace = (epoch0 / kTracePartSize) % TraceParts();
- thr->trace.headers[trace].epoch0 = epoch0;
+ Trace *thr_trace = ThreadTrace(thr->tid);
+ thr_trace->headers[trace].epoch0 = epoch0;
StatInc(thr, StatSyncAcquire);
+ sync.Reset();
DPrintf("#%d: ThreadStart epoch=%zu stk_addr=%zx stk_size=%zx "
"tls_addr=%zx tls_size=%zx\n",
tid, (uptr)epoch0, args->stk_addr, args->stk_size,
@@ -132,14 +133,6 @@
thr->clock.release(&sync);
StatInc(thr, StatSyncRelease);
}
- // Save from info about the thread.
- dead_info = new(internal_alloc(MBlockDeadInfo, sizeof(ThreadDeadInfo)))
- ThreadDeadInfo();
- for (uptr i = 0; i < TraceParts(); i++) {
- dead_info->trace.headers[i].epoch0 = thr->trace.headers[i].epoch0;
- dead_info->trace.headers[i].stack0.CopyFrom(
- thr->trace.headers[i].stack0);
- }
epoch1 = thr->fast_state.epoch();
#ifndef TSAN_GO