| 973 | } |
| 974 | |
| 975 | Site* pickMatchOrMove(Context* c, |
| 976 | Read* r, |
| 977 | Site* nextWord, |
| 978 | unsigned index, |
| 979 | bool intersectRead) |
| 980 | { |
| 981 | Site* s = pickSite(c, r->value, nextWord, index, true); |
| 982 | SiteMask mask; |
| 983 | if (intersectRead) { |
| 984 | r->intersect(&mask); |
| 985 | } |
| 986 | if (s and s->match(c, mask)) { |
| 987 | return s; |
| 988 | } |
| 989 | |
| 990 | return pickSiteOrMove(c, |
| 991 | r->value, |
| 992 | mask.intersectionWith(nextWord->nextWordMask(c, index)), |
| 993 | true, |
| 994 | true); |
| 995 | } |
| 996 | |
| 997 | Site* pickSiteOrMove(Context* c, |
| 998 | Value* src, |
no test coverage detected