(&mut self, ip: InstPtr, at: InputAt)
| 283 | } |
| 284 | |
| 285 | fn has_visited(&mut self, ip: InstPtr, at: InputAt) -> bool { |
| 286 | let k = ip * (self.input.len() + 1) + at.pos(); |
| 287 | let k1 = k / BIT_SIZE; |
| 288 | let k2 = usize_to_u32(1 << (k & (BIT_SIZE - 1))); |
| 289 | if self.m.visited[k1] & k2 == 0 { |
| 290 | self.m.visited[k1] |= k2; |
| 291 | false |
| 292 | } else { |
| 293 | true |
| 294 | } |
| 295 | } |
| 296 | } |
| 297 | |
| 298 | fn usize_to_u32(n: usize) -> u32 { |
no test coverage detected