Skip to content

Commit 8a16b59

Browse files
committed
io-sim: EventTxCommitted log created tvars with their labels
1 parent 8bbd102 commit 8a16b59

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

io-sim/src/Control/Monad/IOSim/Internal.hs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -406,13 +406,14 @@ schedule thread@Thread{
406406

407407
Atomically a k -> execAtomically time tid tlbl nextVid (runSTM a) $ \res ->
408408
case res of
409-
StmTxCommitted x written _read _created tvarTraces nextVid' -> do
409+
StmTxCommitted x written _read created tvarTraces nextVid' -> do
410410
(wakeup, wokeby) <- threadsUnblockedByWrites written
411411
mapM_ (\(SomeTVar tvar) -> unblockAllThreadsFromTVar tvar) written
412412
let thread' = thread { threadControl = ThreadControl (k x) ctl }
413413
(unblocked,
414414
simstate') = unblockThreads wakeup simstate
415-
vids <- traverse (\(SomeTVar tvar) -> labelledTVarId tvar) written
415+
written' <- traverse (\(SomeTVar tvar) -> labelledTVarId tvar) written
416+
created' <- traverse (\(SomeTVar tvar) -> labelledTVarId tvar) created
416417
-- We don't interrupt runnable threads to provide fairness
417418
-- anywhere else. We do it here by putting the tx that committed
418419
-- a transaction to the back of the runqueue, behind all other
@@ -422,7 +423,7 @@ schedule thread@Thread{
422423
-- as it is a fair policy (all runnable threads eventually run).
423424
trace <- deschedule Yield thread' simstate' { nextVid = nextVid' }
424425
return $ SimTrace time tid tlbl (EventTxCommitted
425-
vids [nextVid..pred nextVid'] Nothing)
426+
written' created' Nothing)
426427
$ traceMany
427428
[ (time, tid', tlbl', EventTxWakeup vids')
428429
| tid' <- unblocked

io-sim/src/Control/Monad/IOSim/Types.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,7 @@ data SimEventType
760760
| EventThreadUnhandled SomeException -- terminated due to unhandled exception
761761

762762
| EventTxCommitted [Labelled TVarId] -- tx wrote to these
763-
[TVarId] -- and created these
763+
[Labelled TVarId] -- and created these
764764
(Maybe Effect) -- effect performed (only for `IOSimPOR`)
765765
| EventTxAborted (Maybe Effect) -- effect performed (only for `IOSimPOR`)
766766
| EventTxBlocked [Labelled TVarId] -- tx blocked reading these

io-sim/src/Control/Monad/IOSimPOR/Internal.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -547,11 +547,12 @@ schedule thread@Thread{
547547
simstate') = unblockThreads vClock' wakeup simstate
548548
sequence_ [ modifySTRef (tvarVClock r) (leastUpperBoundVClock vClock')
549549
| SomeTVar r <- created ++ written ]
550-
vids <- traverse (\(SomeTVar tvar) -> labelledTVarId tvar) written
550+
written' <- traverse (\(SomeTVar tvar) -> labelledTVarId tvar) written
551+
created' <- traverse (\(SomeTVar tvar) -> labelledTVarId tvar) created
551552
-- We deschedule a thread after a transaction... another may have woken up.
552553
trace <- deschedule Yield thread' simstate' { nextVid = nextVid' }
553554
return $
554-
SimPORTrace time tid tstep tlbl (EventTxCommitted vids [nextVid..pred nextVid'] (Just effect')) $
555+
SimPORTrace time tid tstep tlbl (EventTxCommitted written' created' (Just effect')) $
555556
traceMany
556557
-- TODO: step
557558
[ (time, tid', (-1), tlbl', EventTxWakeup vids')

0 commit comments

Comments
 (0)