Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the first commit, RegexCompiler/Emitter.EmitFindFirstChar are updated to separate out each of the strategies into their own function. There are no functional changes as part of this; the code is simply moved into a helper and then that helper invoked where the original code was. This will be easiest reviewed ignoring whitespace.
In the second commit, RegexInterpreter.FindFirstChar is also updated. However, this does involve some functional changes. Rather than each call to FindFirstChar needing to figure out which strategy to use, we now compute that once in the RegexInterpreter ctor, and then in FindFirstChar just branch to the right place.
I have some subsequent changes around vectorization for FindFirstChar I aim to make, and it was getting unwieldy doing so with the code as previously structured.