| 82 | |
| 83 | template <typename DetectorRunner> |
| 84 | HazardResult DoDetect(const AccessContext& access_context, const AccessState& access_state, DetectorRunner detector_runner) { |
| 85 | if (access_state.next_global_barrier_index < access_context.GetGlobalBarrierCount()) { |
| 86 | AccessState new_access_state = AccessState::DefaultAccessState(); |
| 87 | new_access_state.Assign(access_state); |
| 88 | access_context.ApplyGlobalBarriers(new_access_state); |
| 89 | return detector_runner(new_access_state); |
| 90 | } else { |
| 91 | return detector_runner(access_state); |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | class HazardDetector { |
| 96 | public: |
no test coverage detected