@@ -86,11 +86,7 @@ let memoizeNamespaceRightTable = new ConcurrentDictionary<string,string option *
86
86
87
87
88
88
let 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)
94
90
95
91
let splitNamespaceMemoized nm = splitNamespace nm
96
92
@@ -99,12 +95,9 @@ let memoizeNamespaceArrayTable =
99
95
Concurrent.ConcurrentDictionary< string, string[]>()
100
96
101
97
let 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)
108
101
109
102
let splitILTypeName ( nm : string ) =
110
103
match nm.LastIndexOf '.' with
@@ -157,11 +150,7 @@ let splitTypeNameRightAux nm =
157
150
else None, nm
158
151
159
152
let 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)
165
154
166
155
// --------------------------------------------------------------------
167
156
// Ordered lists with a lookup table
0 commit comments