Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions src/coreclr/tools/Common/Compiler/NativeAotNameMangler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ private Utf8String ComputeMangledTypeName(TypeDesc type)
// This problem needs a better fix.
if (isSystemPrivate)
assemblyName = string.Concat("S.P.", assemblyName.AsSpan(15));
Utf8String prependAssemblyName = SanitizeName(assemblyName);
Utf8String prependAssemblyName = new Utf8String(SanitizeName(assemblyName));

var deduplicator = new HashSet<Utf8String>();

Expand Down Expand Up @@ -358,12 +358,12 @@ static void AppendTypeName(Utf8StringBuilder sb, MetadataType t)
case TypeFlags.ByRef:
mangledName = new Utf8StringBuilder()
.Append(GetMangledTypeName(((ByRefType)type).ParameterType))
.Append(NestMangledName("ByRef")).ToUtf8String();
.Append(NestMangledName(new Utf8String("ByRef"u8.ToArray()))).ToUtf8String();
break;
case TypeFlags.Pointer:
mangledName = new Utf8StringBuilder()
.Append(GetMangledTypeName(((PointerType)type).ParameterType))
.Append(NestMangledName("Pointer")).ToUtf8String();
.Append(NestMangledName(new Utf8String("Pointer"u8.ToArray()))).ToUtf8String();
break;
case TypeFlags.FunctionPointer:
{
Expand Down Expand Up @@ -408,17 +408,17 @@ static void AppendTypeName(Utf8StringBuilder sb, MetadataType t)
}
else if (type is IPrefixMangledMethod)
{
mangledName = GetPrefixMangledMethodName((IPrefixMangledMethod)type).ToString();
mangledName = GetPrefixMangledMethodName((IPrefixMangledMethod)type);
}
else if (type is IPrefixMangledType)
{
mangledName = GetPrefixMangledTypeName((IPrefixMangledType)type).ToString();
mangledName = GetPrefixMangledTypeName((IPrefixMangledType)type);
}
else
{
// This is a type definition. Since we didn't fall in the `is EcmaType` case above,
// it's likely a compiler-generated type.
mangledName = SanitizeName(((DefType)type).GetFullName());
mangledName = new Utf8String(SanitizeName(((DefType)type).GetFullName()));
}
break;
}
Expand Down
7 changes: 0 additions & 7 deletions src/coreclr/tools/Common/Internal/Text/Utf8String.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,6 @@ public Utf8String(string s)

public int Length => _value.Length;

// For now, define implicit conversions between string and Utf8String to aid the transition
// These conversions will be removed eventually
public static implicit operator Utf8String(string s)
{
return new Utf8String(s);
}

public ReadOnlySpan<byte> AsSpan() => _value;

public override string ToString()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Internal.Text;
using Internal.TypeSystem;

namespace ILCompiler.DependencyAnalysis
Expand All @@ -14,7 +15,7 @@ public sealed class ExternEETypeSymbolNode : ExternDataSymbolNode, IEETypeNode
private TypeDesc _type;

public ExternEETypeSymbolNode(NodeFactory factory, TypeDesc type)
: base(factory.NameMangler.NodeMangler.MethodTable(type))
: base(new Utf8String(factory.NameMangler.NodeMangler.MethodTable(type)))
{
_type = type;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Internal.Text;
using Internal.TypeSystem;

namespace ILCompiler.DependencyAnalysis
Expand All @@ -14,7 +15,7 @@ public sealed class ExternMethodSymbolNode : ExternFunctionSymbolNode, IMethodNo
private MethodDesc _method;

public ExternMethodSymbolNode(NodeFactory factory, MethodDesc method, bool isUnboxing = false)
: base(isUnboxing ? UnboxingStubNode.GetMangledName(factory.NameMangler, method) :
: base(isUnboxing ? new Utf8String(UnboxingStubNode.GetMangledName(factory.NameMangler, method)) :
factory.NameMangler.GetMangledMethodName(method))
{
_method = method;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
// The .NET Foundation licenses this file to you under the MIT license.

using System;

using Internal.Text;
using Internal.TypeSystem;

namespace ILCompiler.DependencyAnalysis
Expand All @@ -15,12 +17,12 @@ public override IEETypeNode ImportedEETypeNode(NodeFactory factory, TypeDesc typ

public override ISortableSymbolNode ImportedGCStaticNode(NodeFactory factory, MetadataType type)
{
return new ExternDataSymbolNode(GCStaticsNode.GetMangledName(type, factory.NameMangler));
return new ExternDataSymbolNode(new Utf8String(GCStaticsNode.GetMangledName(type, factory.NameMangler)));
}

public override ISortableSymbolNode ImportedNonGCStaticNode(NodeFactory factory, MetadataType type)
{
return new ExternDataSymbolNode(NonGCStaticsNode.GetMangledName(type, factory.NameMangler));
return new ExternDataSymbolNode(new Utf8String(NonGCStaticsNode.GetMangledName(type, factory.NameMangler)));
}

public override ISortableSymbolNode ImportedMethodDictionaryNode(NodeFactory factory, MethodDesc method)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public NodeFactory(
{
_target = context.Target;

InitialInterfaceDispatchStub = new AddressTakenExternFunctionSymbolNode("RhpInitialDynamicInterfaceDispatch");
InitialInterfaceDispatchStub = new AddressTakenExternFunctionSymbolNode(new Utf8String("RhpInitialDynamicInterfaceDispatch"u8.ToArray()));

_context = context;
_compilationModuleGroup = compilationModuleGroup;
Expand Down Expand Up @@ -275,15 +275,15 @@ private void CreateNodeCaches()

_externFunctionSymbols = new NodeCache<string, ExternFunctionSymbolNode>((string name) =>
{
return new ExternFunctionSymbolNode(name);
return new ExternFunctionSymbolNode(new Utf8String(name));
});
_externIndirectFunctionSymbols = new NodeCache<string, ExternFunctionSymbolNode>((string name) =>
{
return new ExternFunctionSymbolNode(name, isIndirection: true);
return new ExternFunctionSymbolNode(new Utf8String(name), isIndirection: true);
});
_externDataSymbols = new NodeCache<string, ExternDataSymbolNode>((string name) =>
{
return new ExternDataSymbolNode(name);
return new ExternDataSymbolNode(new Utf8String(name));
});

_pInvokeModuleFixups = new NodeCache<PInvokeModuleData, PInvokeModuleFixupNode>((PInvokeModuleData moduleData) =>
Expand Down Expand Up @@ -1520,7 +1520,7 @@ public ISymbolNode ConstantUtf8String(string str)
byte[] stringBytes = new byte[stringBytesCount + 1];
Encoding.UTF8.GetBytes(str, 0, str.Length, stringBytes, 0);

string symbolName = "__utf8str_" + NameMangler.GetMangledStringName(str);
Utf8String symbolName = new Utf8String("__utf8str_" + NameMangler.GetMangledStringName(str));

return ReadOnlyDataBlob(symbolName, stringBytes, 1);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
{
sb.Append(nameMangler.GetMangledTypeName(DeclaringModule.GetGlobalModuleType()));
sb.Append('_');
sb.Append(nameMangler.SanitizeName(ModuleName));
sb.Append(nameMangler.SanitizeName(new Utf8String(ModuleName)));
if (DllImportSearchPath.HasValue)
{
sb.Append('_');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Internal.Text;
using Internal.TypeSystem;
using Internal.TypeSystem.Ecma;

Expand All @@ -14,7 +15,7 @@ public class RuntimeImportMethodNode : ExternFunctionSymbolNode, IMethodNode, IS
private MethodDesc _method;

public RuntimeImportMethodNode(MethodDesc method, NameMangler nameMangler)
: base(nameMangler.NodeMangler.ExternMethod(((EcmaMethod)method).GetRuntimeImportName(), method))
: base(new Utf8String(nameMangler.NodeMangler.ExternMethod(((EcmaMethod)method).GetRuntimeImportName(), method)))
{
_method = method;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using ILCompiler.DependencyAnalysis;
using ILCompiler.DependencyAnalysisFramework;

using Internal.Text;
using Internal.TypeSystem;

using Debug = System.Diagnostics.Debug;
Expand Down Expand Up @@ -142,7 +143,7 @@ public void RootModuleMetadata(ModuleDesc module, string reason)

public void RootReadOnlyDataBlob(byte[] data, int alignment, string reason, string exportName, bool exportHidden)
{
var blob = _factory.ReadOnlyDataBlob("__readonlydata_" + exportName, data, alignment);
var blob = _factory.ReadOnlyDataBlob(new Utf8String($"__readonlydata_{exportName}"), data, alignment);
_rootAdder(blob, reason);
exportName = _factory.NameMangler.NodeMangler.ExternVariable(exportName);
_factory.NodeAliases.Add(blob, (exportName, exportHidden));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Diagnostics;
using System.Reflection.Metadata;

using Internal.Text;
using Internal.TypeSystem;
using Internal.TypeSystem.Ecma;
using Internal.TypeSystem.TypesDebugInfo;
Expand Down Expand Up @@ -61,7 +62,7 @@ public uint GetStateMachineThisVariableTypeIndex(TypeDesc type)
ClassTypeDescriptor classTypeDescriptor = new ClassTypeDescriptor
{
IsStruct = 1,
Name = $"StateMachineLocals_{System.Reflection.Metadata.Ecma335.MetadataTokens.GetToken(((EcmaType)defType.GetTypeDefinition()).Handle):X}",
Name = new Utf8String($"StateMachineLocals_{System.Reflection.Metadata.Ecma335.MetadataTokens.GetToken(((EcmaType)defType.GetTypeDefinition()).Handle):X}"),
InstanceSize = defType.InstanceByteCount.IsIndeterminate ? 0 : (ulong)defType.InstanceByteCount.AsInt,
};

Expand Down Expand Up @@ -764,7 +765,7 @@ private void InsertStaticFieldRegionMember(List<DataFieldDescriptor> fieldDescs,
ClassTypeDescriptor classTypeDescriptor = new ClassTypeDescriptor
{
IsStruct = !staticDataInObject ? 1 : 0,
Name = $"__type{staticFieldForm}{_objectWriter.GetMangledName(defType)}",
Name = new Utf8String($"__type{staticFieldForm}{_objectWriter.GetMangledName(defType)}"),
BaseClassId = 0
};

Expand All @@ -788,7 +789,7 @@ private void InsertStaticFieldRegionMember(List<DataFieldDescriptor> fieldDescs,
ClassTypeDescriptor helperClassTypeDescriptor = new ClassTypeDescriptor
{
IsStruct = 1,
Name = $"__ThreadStaticHelper<{classTypeDescriptor.Name}>",
Name = new Utf8String($"__ThreadStaticHelper<{classTypeDescriptor.Name}>"),
BaseClassId = 0
};
var pointerTypeDescriptor = new PointerTypeDescriptor
Expand Down
Loading