29.6 Relations of Candidate Executions
29.6.1 agent-order
For a
- For each pair (E, D) in
EventSet (execution), execution.[[AgentOrder]] contains (E, D) if there is someAgent Events Record aer in execution.[[EventsRecords]] such that E and D are in aer.[[EventList]] and E is before D inList order of aer.[[EventList]].
Each
29.6.2 reads-bytes-from
For a
-
For each
ReadSharedMemory orReadModifyWriteSharedMemory event R inSharedDataBlockEventSet (execution), execution.[[ReadsBytesFrom]](R) is aList of length R.[[ElementSize]] whose elements areWriteSharedMemory orReadModifyWriteSharedMemory events Ws such that all of the following are true.- Each event W with index i in Ws has R.[[ByteIndex]] + i in its range.
- R is not in Ws.
29.6.3 reads-from
For a
- For each pair (R, W) in
SharedDataBlockEventSet (execution), execution.[[ReadsFrom]] contains (R, W) if execution.[[ReadsBytesFrom]](R) contains W.
29.6.4 host-synchronizes-with
For a
- If execution.[[HostSynchronizesWith]] contains (E, D), E and D are in
HostEventSet (execution). - There is no cycle in the union of execution.[[HostSynchronizesWith]] and execution.[[AgentOrder]].
For two
The host-synchronizes-with relation allows the postMessage
between HTML workers.
29.6.5 synchronizes-with
For a
-
For each pair (R, W) in execution.[[ReadsFrom]], execution.[[SynchronizesWith]] contains (W, R) if R.[[Order]] is
seq-cst , W.[[Order]] isseq-cst , and R and W have equal ranges. -
For each element eventsRecord of execution.[[EventsRecords]], the following is true.
- For each pair (S, Sw) in eventsRecord.[[AgentSynchronizesWith]], execution.[[SynchronizesWith]] contains (S, Sw).
- For each pair (E, D) in execution.[[HostSynchronizesWith]], execution.[[SynchronizesWith]] contains (E, D).
Owing to convention, write events synchronizes-with read events, instead of read events synchronizes-with write events.
Not all
For
29.6.6 happens-before
For a
- For each pair (E, D) in execution.[[AgentOrder]], execution.[[HappensBefore]] contains (E, D).
- For each pair (E, D) in execution.[[SynchronizesWith]], execution.[[HappensBefore]] contains (E, D).
- For each pair (E, D) in
SharedDataBlockEventSet (execution), execution.[[HappensBefore]] contains (E, D) if E.[[Order]] isinit and E and D have overlapping ranges. - For each pair (E, D) in
EventSet (execution), execution.[[HappensBefore]] contains (E, D) if there is an event F such that the pairs (E, F) and (F, D) are in execution.[[HappensBefore]].
Because happens-before is a superset of