summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Toub <stoub@microsoft.com>2019-01-17 18:10:48 -0500
committerGitHub <noreply@github.com>2019-01-17 18:10:48 -0500
commitb9788c29e3787b45e2a5c02c28ede5946621957f (patch)
treef1a7ad0cfe5ed3474f2818d461cc21fae0d4341d
parentdb08a628a85b18352b9e8ae3dc9315c17325ab84 (diff)
downloadcoreclr-b9788c29e3787b45e2a5c02c28ede5946621957f.tar.gz
coreclr-b9788c29e3787b45e2a5c02c28ede5946621957f.tar.bz2
coreclr-b9788c29e3787b45e2a5c02c28ede5946621957f.zip
Remove ToString from RuntimeAssembly.GetManifestResourceStream (#22012)
* Remove ToString from RuntimeAssembly.GetManifestResourceStream A small allocation we can avoid with the span-based string.Concat. * Address PR feedback
-rw-r--r--src/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs7
-rw-r--r--src/System.Private.CoreLib/src/System/Resources/ManifestBasedResourceGroveler.cs7
2 files changed, 10 insertions, 4 deletions
diff --git a/src/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs b/src/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs
index 45d73a65bf..3035117b9e 100644
--- a/src/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs
+++ b/src/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs
@@ -207,8 +207,11 @@ namespace System.Reflection
throw new ArgumentNullException(nameof(type));
string nameSpace = type?.Namespace;
- string delimiter = (nameSpace != null && name != null) ? Type.Delimiter.ToString() : null;
- string resourceName = string.Concat(nameSpace, delimiter, name);
+
+ char c = Type.Delimiter;
+ string resourceName = nameSpace != null && name != null ?
+ string.Concat(nameSpace, new ReadOnlySpan<char>(ref c, 1), name) :
+ string.Concat(nameSpace, name);
return GetManifestResourceStream(resourceName);
}
diff --git a/src/System.Private.CoreLib/src/System/Resources/ManifestBasedResourceGroveler.cs b/src/System.Private.CoreLib/src/System/Resources/ManifestBasedResourceGroveler.cs
index fe95bf1c8f..42b601336a 100644
--- a/src/System.Private.CoreLib/src/System/Resources/ManifestBasedResourceGroveler.cs
+++ b/src/System.Private.CoreLib/src/System/Resources/ManifestBasedResourceGroveler.cs
@@ -330,8 +330,11 @@ namespace System.Resources
Debug.Assert(name != null, "name shouldn't be null; check caller");
string nameSpace = _mediator.LocationInfo?.Namespace;
- string delimiter = (nameSpace != null && name != null) ? Type.Delimiter.ToString() : null;
- string resourceName = string.Concat(nameSpace, delimiter, name);
+
+ char c = Type.Delimiter;
+ string resourceName = nameSpace != null && name != null ?
+ string.Concat(nameSpace, new ReadOnlySpan<char>(ref c, 1), name) :
+ string.Concat(nameSpace, name);
string canonicalName = null;
foreach (string existingName in satellite.GetManifestResourceNames())