Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJb Evain <jb@evain.net>2017-02-13 22:37:11 +0300
committerJb Evain <jb@evain.net>2017-02-13 22:37:11 +0300
commit5088870debfaaec5b4cc4b68ede1d10eba8b128c (patch)
tree6ea13efc63036f847ee8d7ca6ad490d09152f248
parenta4a5fea3fe7d5c7e1010a00358937badbcdbd9db (diff)
Avoid list resizes
-rw-r--r--Mono.Cecil.Metadata/Buffers.cs13
1 files changed, 11 insertions, 2 deletions
diff --git a/Mono.Cecil.Metadata/Buffers.cs b/Mono.Cecil.Metadata/Buffers.cs
index 9bb2f94..d219546 100644
--- a/Mono.Cecil.Metadata/Buffers.cs
+++ b/Mono.Cecil.Metadata/Buffers.cs
@@ -326,8 +326,7 @@ namespace Mono.Cecil.Metadata {
public uint [] WriteStrings ()
{
- var sorted = new List<KeyValuePair<string, uint>> (strings);
- sorted.Sort (new SuffixSort ());
+ var sorted = SortStrings (strings);
strings = null;
// Add 1 for empty string whose index and offset are both 0
@@ -355,6 +354,16 @@ namespace Mono.Cecil.Metadata {
return string_offsets;
}
+ static List<KeyValuePair<string, uint>> SortStrings (Dictionary<string, uint> strings)
+ {
+ var sorted = new List<KeyValuePair<string, uint>> (strings.Count);
+ foreach (var pair in strings)
+ sorted.Add (pair);
+
+ sorted.Sort (new SuffixSort ());
+ return sorted;
+ }
+
static bool IsLowSurrogateChar (int c)
{
return unchecked((uint)(c - 0xDC00)) <= 0xDFFF - 0xDC00;