blob: 0c3d3163af488478e02780a09406a1f90edbaba6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Internal.Text;
using Internal.TypeSystem;
using System.Diagnostics;
namespace ILCompiler
{
//
// The naming format of these names is known to the debugger
//
public class WindowsNodeMangler : NodeMangler
{
public const string NonGCStaticMemberName = "__NONGCSTATICS";
public const string GCStaticMemberName = "__GCSTATICS";
public const string ThreadStaticMemberName = "__THREADSTATICS";
// Mangled name of boxed version of a type
public sealed override string MangledBoxedTypeName(TypeDesc type)
{
Debug.Assert(type.IsValueType);
return "Boxed_" + NameMangler.GetMangledTypeName(type);
}
public sealed override string EEType(TypeDesc type)
{
string mangledJustTypeName;
if (type.IsValueType)
mangledJustTypeName = MangledBoxedTypeName(type);
else
mangledJustTypeName = NameMangler.GetMangledTypeName(type);
return "const " + mangledJustTypeName + "::`vftable'";
}
public sealed override string GCStatics(TypeDesc type)
{
return NameMangler.GetMangledTypeName(type) + "::" + GCStaticMemberName;
}
public sealed override string NonGCStatics(TypeDesc type)
{
return NameMangler.GetMangledTypeName(type) + "::" + NonGCStaticMemberName;
}
public sealed override string ThreadStatics(TypeDesc type)
{
if (type.Context.Target.Abi == TargetAbi.ProjectN)
return NameMangler.GetMangledTypeName(type) + "::" + ThreadStaticMemberName;
else
return NameMangler.CompilationUnitPrefix + NameMangler.GetMangledTypeName(type) + "::" + ThreadStaticMemberName;
}
public sealed override string TypeGenericDictionary(TypeDesc type)
{
return GenericDictionaryNamePrefix + NameMangler.GetMangledTypeName(type);
}
public override string MethodGenericDictionary(MethodDesc method)
{
return GenericDictionaryNamePrefix + NameMangler.GetMangledMethodName(method);
}
}
}
|