Lines Matching full:epoch
136 static void DoResetImpl(uptr epoch) { in DoResetImpl() argument
139 CHECK_EQ(ctx->global_epoch, epoch); in DoResetImpl()
233 void DoReset(ThreadState* thr, uptr epoch) SANITIZER_NO_THREAD_SAFETY_ANALYSIS { in DoReset() argument
236 if (UNLIKELY(epoch == 0)) in DoReset()
237 epoch = ctx->global_epoch; in DoReset()
238 if (UNLIKELY(epoch != ctx->global_epoch)) { in DoReset()
239 // Epoch can't change once we've locked the first slot. in DoReset()
245 DPrintf("#%d: DoReset epoch=%lu\n", thr ? thr->tid : -1, epoch); in DoReset()
246 DoResetImpl(epoch); in DoReset()
257 uptr epoch; in FindSlotAndLock() local
260 epoch = ctx->global_epoch; in FindSlotAndLock()
272 if (slot->epoch() != kEpochLast) { in FindSlotAndLock()
279 DoReset(thr, epoch); in FindSlotAndLock()
288 slot->SetEpoch(slot->thr->fast_state.epoch()); in FindSlotAndLock()
291 if (slot->epoch() != kEpochLast) in FindSlotAndLock()
303 Epoch epoch = EpochInc(slot->epoch()); in SlotAttachAndLock() local
304 CHECK(!EpochOverflow(epoch)); in SlotAttachAndLock()
305 slot->SetEpoch(epoch); in SlotAttachAndLock()
307 thr->fast_state.SetEpoch(epoch); in SlotAttachAndLock()
316 thr->clock.Set(slot->sid, epoch); in SlotAttachAndLock()
317 slot->journal.PushBack({thr->tid, epoch}); in SlotAttachAndLock()
347 CHECK(exiting || thr->fast_state.epoch() == kEpochLast); in SlotDetachImpl()
348 slot->SetEpoch(thr->fast_state.epoch()); in SlotDetachImpl()
369 if (LIKELY(thr == slot->thr && thr->fast_state.epoch() != kEpochLast)) in SlotLock()
1018 // This can happen if the slot has kEpochLast epoch and another thread in TraceSwitchPartImpl()
1021 // was called with the slot locked and epoch already at kEpochLast, in TraceSwitchPartImpl()