private bool? TryIntern()

in src/Shared/OpportunisticIntern.cs [757:963]


            private bool? TryIntern(IInternable candidate, out string interned)
            {
                int length = candidate.Length;

                // First, try the hard coded intern strings.
                // Each of the hard-coded small strings below showed up in a profile run with considerable duplication in memory.
                if (!_dontTrack)
                {
                    if (length == 2)
                    {
                        if (candidate[1] == '#')
                        {
                            if (candidate[0] == 'C')
                            {
                                interned = "C#";
                                return true;
                            }

                            if (candidate[0] == 'F')
                            {
                                interned = "F#";
                                return true;
                            }
                        }

                        if (candidate[0] == 'V' && candidate[1] == 'B')
                        {
                            interned = "VB";
                            return true;
                        }
                    }
                    else if (length == 4)
                    {
                        if (candidate[0] == 'T')
                        {
                            if (candidate[1] == 'R' && candidate[2] == 'U' && candidate[3] == 'E')
                            {
                                interned = "TRUE";
                                return true;
                            }

                            if (candidate[1] == 'r' && candidate[2] == 'u' && candidate[3] == 'e')
                            {
                                interned = "True";
                                return true;
                            }
                        }

                        if (candidate[0] == 'C' && candidate[1] == 'o' && candidate[2] == 'p' && candidate[3] == 'y')
                        {
                            interned = "Copy";
                            return true;
                        }

                        if (candidate[0] == 't' && candidate[1] == 'r' && candidate[2] == 'u' && candidate[3] == 'e')
                        {
                            interned = "true";
                            return true;
                        }

                        if (candidate[0] == 'v' && candidate[1] == '4' && candidate[2] == '.' && candidate[3] == '0')
                        {
                            interned = "v4.0";
                            return true;
                        }
                    }
                    else if (length == 5)
                    {
                        if (candidate[0] == 'F' && candidate[1] == 'A' && candidate[2] == 'L' && candidate[3] == 'S' && candidate[4] == 'E')
                        {
                            interned = "FALSE";
                            return true;
                        }

                        if (candidate[0] == 'f' && candidate[1] == 'a' && candidate[2] == 'l' && candidate[3] == 's' && candidate[4] == 'e')
                        {
                            interned = "false";
                            return true;
                        }

                        if (candidate[0] == 'D' && candidate[1] == 'e' && candidate[2] == 'b' && candidate[3] == 'u' && candidate[4] == 'g')
                        {
                            interned = "Debug";
                            return true;
                        }

                        if (candidate[0] == 'B' && candidate[1] == 'u' && candidate[2] == 'i' && candidate[3] == 'l' && candidate[4] == 'd')
                        {
                            interned = "Build";
                            return true;
                        }

                        if (candidate[0] == 'W' && candidate[1] == 'i' && candidate[2] == 'n' && candidate[3] == '3' && candidate[4] == '2')
                        {
                            interned = "Win32";
                            return true;
                        }
                    }
                    else if (length == 6)
                    {
                        if (candidate[0] == '\'' && candidate[1] == '\'' && candidate[2] == '!' && candidate[3] == '=' && candidate[4] == '\'' && candidate[5] == '\'')
                        {
                            interned = "''!=''";
                            return true;
                        }

                        if (candidate[0] == 'A' && candidate[1] == 'n' && candidate[2] == 'y' && candidate[3] == 'C' && candidate[4] == 'P' && candidate[5] == 'U')
                        {
                            interned = "AnyCPU";
                            return true;
                        }
                    }
                    else if (length == 7)
                    {
                        if (candidate[0] == 'L' && candidate[1] == 'i' && candidate[2] == 'b' && candidate[3] == 'r' && candidate[4] == 'a' && candidate[5] == 'r' && candidate[6] == 'y')
                        {
                            interned = "Library";
                            return true;
                        }

                        if (candidate[0] == 'M' && candidate[1] == 'S' && candidate[2] == 'B' && candidate[3] == 'u' && candidate[4] == 'i' && candidate[5] == 'l' && candidate[6] == 'd')
                        {
                            interned = "MSBuild";
                            return true;
                        }

                        if (candidate[0] == 'R' && candidate[1] == 'e' && candidate[2] == 'l' && candidate[3] == 'e' && candidate[4] == 'a' && candidate[5] == 's' && candidate[6] == 'e')
                        {
                            interned = "Release";
                            return true;
                        }
                    }
                    else if (length == 24)
                    {
                        if (candidate[0] == 'R' && candidate[1] == 'e' && candidate[2] == 's' && candidate[3] == 'o' && candidate[4] == 'l' && candidate[5] == 'v' && candidate[6] == 'e')
                        {
                            if (candidate[7] == 'A' && candidate[8] == 's' && candidate[9] == 's' && candidate[10] == 'e' && candidate[11] == 'm' && candidate[12] == 'b' && candidate[13] == 'l' && candidate[14] == 'y')
                            {
                                if (candidate[15] == 'R' && candidate[16] == 'e' && candidate[17] == 'f' && candidate[18] == 'e' && candidate[19] == 'r' && candidate[20] == 'e' && candidate[21] == 'n' && candidate[22] == 'c' && candidate[23] == 'e')
                                {
                                    interned = "ResolveAssemblyReference";
                                    return true;
                                }
                            }
                        }
                    }
                    else if (length > _ginormousThreshhold)
                    {
                        lock (_ginormous)
                        {
                            LinkedListNode<WeakReference> current = _ginormous.First;

                            while (current != null)
                            {
                                string last = current.Value.Target as string;
                                if (last != null && last.Length == candidate.Length && candidate.IsOrdinalEqualToStringOfSameLength(last))
                                {
                                    interned = last;
                                    _ginormousHits++;
                                    _ginormousCharsSaved += last.Length;

                                    _ginormous.Remove(current);
                                    _ginormous.AddFirst(current);

                                    return true;
                                }

                                current = current.Next;
                            }

                            _ginormousMisses++;
                            interned = candidate.ExpensiveConvertToString();

                            var lastNode = _ginormous.Last;
                            _ginormous.RemoveLast();
                            _ginormous.AddFirst(lastNode);
                            lastNode.Value.Target = interned;

                            return false;
                        }
                    }
                    else if (length >= _hugeMruThreshhold)
                    {
                        lock (_hugeMru)
                        {
                            return _hugeMru.TryGet(candidate, out interned);
                        }
                    }
                    else if (length >= _largeMruThreshhold)
                    {
                        lock (_largeMru)
                        {
                            return _largeMru.TryGet(candidate, out interned);
                        }
                    }
                    else if (length >= _smallMruThreshhold)
                    {
                        lock (_smallMru)
                        {
                            return _smallMru.TryGet(candidate, out interned);
                        }
                    }
                }

                interned = candidate.ExpensiveConvertToString();
                return null;
            }