internal SyntaxToken LookupToken( char[] textBuffer, int keyStart, int keyLength, int hashCode, Func <SyntaxToken> createTokenFunction) { var value = tokenMap.FindItem(textBuffer, keyStart, keyLength, hashCode); if (value == null) { #if COLLECT_STATS Miss(); #endif value = createTokenFunction(); tokenMap.AddItem(textBuffer, keyStart, keyLength, hashCode, value); } else { #if COLLECT_STATS Hit(); #endif } return(value); }
internal SyntaxTrivia LookupTrivia( string key, int hashCode, Func <SyntaxTrivia> createTriviaFunction) { var value = _triviaMap.FindItem(key.AsSpan(), hashCode); if (value == null) { value = createTriviaFunction(); _triviaMap.AddItem(key.AsSpan(), hashCode, value); } return(value); }
internal SyntaxTrivia LookupTrivia( char[] textBuffer, int keyStart, int keyLength, int hashCode, Func <SyntaxTrivia> createTriviaFunction) { var value = triviaMap.FindItem(textBuffer, keyStart, keyLength, hashCode); if (value == null) { value = createTriviaFunction(); triviaMap.AddItem(textBuffer, keyStart, keyLength, hashCode, value); } return(value); }