|
// 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.ReadyToRunConstants;
namespace ILCompiler.DependencyAnalysis.ReadyToRun
{
public class StringImportSignature : Signature
{
private readonly ModuleToken _token;
public StringImportSignature(ModuleToken token)
{
_token = token;
}
public override int ClassCode => 324832559;
public override ObjectData GetData(NodeFactory factory, bool relocsOnly = false)
{
ObjectDataSignatureBuilder dataBuilder = new ObjectDataSignatureBuilder(factory, relocsOnly);
if (!relocsOnly)
{
dataBuilder.AddSymbol(this);
dataBuilder.EmitFixup(factory, ReadyToRunFixupKind.StringHandle, _token.Module, factory.SignatureContext);
dataBuilder.EmitUInt(_token.TokenRid);
}
return dataBuilder.ToObjectData();
}
public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
{
sb.Append(nameMangler.CompilationUnitPrefix);
sb.Append("StringImportSignature: " + _token.ToString());
}
public override int CompareToImpl(ISortableNode other, CompilerComparer comparer)
{
StringImportSignature otherNode = (StringImportSignature)other;
return _token.CompareTo(otherNode._token);
}
}
}
|