@@ -86,11 +86,7 @@ let memoizeNamespaceRightTable = new ConcurrentDictionary<string,string option *
8686
8787
8888let splitNamespace nm =
89- let mutable res = Unchecked.defaultof<_>
90- let ok = memoizeNamespaceTable.TryGetValue( nm,& res)
91- if ok then res else
92- let x = splitNamespaceAux nm
93- ( memoizeNamespaceTable.[ nm] <- x; x)
89+ memoizeNamespaceTable.GetOrAdd( nm, splitNamespaceAux)
9490
9591let splitNamespaceMemoized nm = splitNamespace nm
9692
@@ -99,12 +95,9 @@ let memoizeNamespaceArrayTable =
9995 Concurrent.ConcurrentDictionary< string, string[]>()
10096
10197let splitNamespaceToArray nm =
102- let mutable res = Unchecked.defaultof<_>
103- let ok = memoizeNamespaceArrayTable.TryGetValue( nm,& res)
104- if ok then res else
105- let x = Array.ofList ( splitNamespace nm)
106- ( memoizeNamespaceArrayTable.[ nm] <- x; x)
107-
98+ memoizeNamespaceArrayTable.GetOrAdd( nm, fun nm ->
99+ let x = Array.ofList ( splitNamespace nm)
100+ x)
108101
109102let splitILTypeName ( nm : string ) =
110103 match nm.LastIndexOf '.' with
@@ -157,11 +150,7 @@ let splitTypeNameRightAux nm =
157150 else None, nm
158151
159152let splitTypeNameRight nm =
160- let mutable res = Unchecked.defaultof<_>
161- let ok = memoizeNamespaceRightTable.TryGetValue( nm,& res)
162- if ok then res else
163- let x = splitTypeNameRightAux nm
164- ( memoizeNamespaceRightTable.[ nm] <- x; x)
153+ memoizeNamespaceRightTable.GetOrAdd( nm, splitTypeNameRightAux)
165154
166155// --------------------------------------------------------------------
167156// Ordered lists with a lookup table
0 commit comments