Skip to content

Commit b72b13e

Browse files
authored
Add MetadataToken getter override to builder classes (#43330)
1 parent 9ede31a commit b72b13e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+267
-544
lines changed

src/coreclr/src/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ private void SetCustomAttributeNoLock(ConstructorInfo con, byte[] binaryAttribut
595595
TypeBuilder.DefineCustomAttribute(
596596
_manifestModuleBuilder, // pass in the in-memory assembly module
597597
AssemblyBuilderData.AssemblyDefToken,
598-
_manifestModuleBuilder.GetConstructorToken(con).Token,
598+
_manifestModuleBuilder.GetConstructorToken(con),
599599
binaryAttribute,
600600
false,
601601
typeof(DebuggableAttribute) == con.DeclaringType);

src/coreclr/src/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ internal ConstructorBuilder(string name, MethodAttributes attributes, CallingCon
2323

2424
m_methodBuilder.GetMethodSignature().InternalGetSignature(out _);
2525

26-
m_methodBuilder.GetToken();
26+
int dummy = m_methodBuilder.MetadataToken;
2727
}
2828

2929
internal ConstructorBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention,
@@ -60,7 +60,7 @@ public override string ToString()
6060
#endregion
6161

6262
#region MemberInfo Overrides
63-
internal int MetadataTokenInternal => m_methodBuilder.MetadataTokenInternal;
63+
public override int MetadataToken => m_methodBuilder.MetadataToken;
6464

6565
public override Module Module => m_methodBuilder.Module;
6666

@@ -122,11 +122,6 @@ public override bool IsDefined(Type attributeType, bool inherit)
122122
#endregion
123123

124124
#region Public Members
125-
public MethodToken GetToken()
126-
{
127-
return m_methodBuilder.GetToken();
128-
}
129-
130125
public ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string? strParamName)
131126
{
132127
// Theoretically we shouldn't allow iSequence to be 0 because in reflection ctors don't have

src/coreclr/src/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ private static void EmitValue(BinaryWriter writer, Type type, object? value)
527527
// return the byte interpretation of the custom attribute
528528
internal void CreateCustomAttribute(ModuleBuilder mod, int tkOwner)
529529
{
530-
CreateCustomAttribute(mod, tkOwner, mod.GetConstructorToken(m_con).Token, false);
530+
CreateCustomAttribute(mod, tkOwner, mod.GetConstructorToken(m_con), false);
531531
}
532532

533533
/// <summary>

src/coreclr/src/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public FieldBuilder DefineLiteral(string literalName, object? literalValue)
5050
}
5151

5252
// Get the internal metadata token for this class.
53-
public TypeToken TypeToken => m_typeBuilder.TypeToken;
53+
internal int TypeToken => m_typeBuilder.TypeToken;
5454

5555

5656
// return the underlying field for the enum

src/coreclr/src/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ internal EventBuilder(
3030
EventAttributes attr, // event attribute such as Public, Private, and Protected defined above
3131
// int eventType, // event type
3232
TypeBuilder type, // containing type
33-
EventToken evToken)
33+
int evToken)
3434
{
3535
m_name = name;
3636
m_module = mod;
@@ -41,7 +41,7 @@ internal EventBuilder(
4141

4242
// Return the Token for this event within the TypeBuilder that the
4343
// event is defined within.
44-
public EventToken GetEventToken()
44+
internal int GetEventToken()
4545
{
4646
return m_evToken;
4747
}
@@ -57,9 +57,9 @@ private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttribut
5757
ModuleBuilder module = m_module;
5858
TypeBuilder.DefineMethodSemantics(
5959
new QCallModule(ref module),
60-
m_evToken.Token,
60+
m_evToken,
6161
semantics,
62-
mdBuilder.GetToken().Token);
62+
mdBuilder.MetadataToken);
6363
}
6464

6565
public void SetAddOnMethod(MethodBuilder mdBuilder)
@@ -94,8 +94,8 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
9494

9595
TypeBuilder.DefineCustomAttribute(
9696
m_module,
97-
m_evToken.Token,
98-
m_module.GetConstructorToken(con).Token,
97+
m_evToken,
98+
m_module.GetConstructorToken(con),
9999
binaryAttribute,
100100
false, false);
101101
}
@@ -108,12 +108,12 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
108108
throw new ArgumentNullException(nameof(customBuilder));
109109
}
110110
m_type.ThrowIfCreated();
111-
customBuilder.CreateCustomAttribute(m_module, m_evToken.Token);
111+
customBuilder.CreateCustomAttribute(m_module, m_evToken);
112112
}
113113

114114
// These are package private so that TypeBuilder can access them.
115115
private string m_name; // The name of the event
116-
private EventToken m_evToken; // The token of this event
116+
private int m_evToken; // The token of this event
117117
private ModuleBuilder m_module;
118118
private EventAttributes m_attributes;
119119
private TypeBuilder m_type;

src/coreclr/src/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ public sealed class FieldBuilder : FieldInfo
1010
{
1111
#region Private Data Members
1212
private int m_fieldTok;
13-
private FieldToken m_tkField;
1413
private TypeBuilder m_typeBuilder;
1514
private string m_fieldName;
1615
private FieldAttributes m_Attributes;
@@ -48,9 +47,7 @@ internal FieldBuilder(TypeBuilder typeBuilder, string fieldName, Type type,
4847

4948
ModuleBuilder module = m_typeBuilder.GetModuleBuilder();
5049
m_fieldTok = TypeBuilder.DefineField(new QCallModule(ref module),
51-
typeBuilder.TypeToken.Token, fieldName, signature, sigLength, m_Attributes);
52-
53-
m_tkField = new FieldToken(m_fieldTok, type);
50+
typeBuilder.TypeToken, fieldName, signature, sigLength, m_Attributes);
5451
}
5552

5653
#endregion
@@ -59,12 +56,12 @@ internal FieldBuilder(TypeBuilder typeBuilder, string fieldName, Type type,
5956
internal void SetData(byte[]? data, int size)
6057
{
6158
ModuleBuilder module = m_typeBuilder.GetModuleBuilder();
62-
ModuleBuilder.SetFieldRVAContent(new QCallModule(ref module), m_tkField.Token, data, size);
59+
ModuleBuilder.SetFieldRVAContent(new QCallModule(ref module), m_fieldTok, data, size);
6360
}
6461
#endregion
6562

6663
#region MemberInfo Overrides
67-
internal int MetadataTokenInternal => m_fieldTok;
64+
public override int MetadataToken => m_fieldTok;
6865

6966
public override Module Module => m_typeBuilder.Module;
7067

@@ -140,17 +137,12 @@ public override bool IsDefined(Type attributeType, bool inherit)
140137
#endregion
141138

142139
#region Public Members
143-
public FieldToken GetToken()
144-
{
145-
return m_tkField;
146-
}
147-
148140
public void SetOffset(int iOffset)
149141
{
150142
m_typeBuilder.ThrowIfCreated();
151143

152144
ModuleBuilder module = m_typeBuilder.GetModuleBuilder();
153-
TypeBuilder.SetFieldLayoutOffset(new QCallModule(ref module), GetToken().Token, iOffset);
145+
TypeBuilder.SetFieldLayoutOffset(new QCallModule(ref module), m_fieldTok, iOffset);
154146
}
155147

156148
public void SetConstant(object? defaultValue)
@@ -164,7 +156,7 @@ public void SetConstant(object? defaultValue)
164156
throw new ArgumentException(SR.Argument_ConstantNull);
165157
}
166158

167-
TypeBuilder.SetConstantValue(m_typeBuilder.GetModuleBuilder(), GetToken().Token, m_fieldType, defaultValue);
159+
TypeBuilder.SetConstantValue(m_typeBuilder.GetModuleBuilder(), m_fieldTok, m_fieldType, defaultValue);
168160
}
169161

170162
public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
@@ -180,7 +172,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute)
180172
m_typeBuilder.ThrowIfCreated();
181173

182174
TypeBuilder.DefineCustomAttribute(module,
183-
m_tkField.Token, module.GetConstructorToken(con).Token, binaryAttribute, false, false);
175+
m_fieldTok, module.GetConstructorToken(con), binaryAttribute, false, false);
184176
}
185177

186178
public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
@@ -192,7 +184,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder)
192184

193185
ModuleBuilder? module = m_typeBuilder.Module as ModuleBuilder;
194186

195-
customBuilder.CreateCustomAttribute(module!, m_tkField.Token);
187+
customBuilder.CreateCustomAttribute(module!, m_fieldTok);
196188
}
197189

198190
#endregion

src/coreclr/src/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public override bool Equals(object? o)
5353

5454
public override bool IsByRefLike => false;
5555

56-
internal int MetadataTokenInternal => m_type.MetadataTokenInternal;
56+
public override int MetadataToken => m_type.MetadataToken;
5757
#endregion
5858

5959
#region Type Overrides

src/coreclr/src/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ public virtual void EmitCalli(OpCode opcode, CallingConventions callingConventio
542542
UpdateStackSize(OpCodes.Calli, stackchange);
543543

544544
RecordTokenFixup();
545-
PutInteger4(modBuilder.GetSignatureToken(sig).Token);
545+
PutInteger4(modBuilder.GetSignatureToken(sig));
546546
}
547547

548548
public virtual void EmitCalli(OpCode opcode, CallingConvention unmanagedCallConv, Type? returnType, Type[]? parameterTypes)
@@ -585,7 +585,7 @@ public virtual void EmitCalli(OpCode opcode, CallingConvention unmanagedCallConv
585585
EnsureCapacity(7);
586586
Emit(OpCodes.Calli);
587587
RecordTokenFixup();
588-
PutInteger4(modBuilder.GetSignatureToken(sig).Token);
588+
PutInteger4(modBuilder.GetSignatureToken(sig));
589589
}
590590

591591
public virtual void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? optionalParameterTypes)
@@ -630,9 +630,9 @@ public virtual void Emit(OpCode opcode, SignatureHelper signature)
630630

631631
int stackchange = 0;
632632
ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module;
633-
SignatureToken sig = modBuilder.GetSignatureToken(signature);
633+
int sig = modBuilder.GetSignatureToken(signature);
634634

635-
int tempVal = sig.Token;
635+
int tempVal = sig;
636636

637637
EnsureCapacity(7);
638638
InternalEmit(opcode);
@@ -709,13 +709,13 @@ public virtual void Emit(OpCode opcode, Type cls)
709709
if (opcode == OpCodes.Ldtoken && cls != null && cls.IsGenericTypeDefinition)
710710
{
711711
// This gets the token for the generic type definition if cls is one.
712-
tempVal = modBuilder.GetTypeToken(cls).Token;
712+
tempVal = modBuilder.GetTypeToken(cls);
713713
}
714714
else
715715
{
716716
// This gets the token for the generic type instantiated on the formal parameters
717717
// if cls is a generic type definition.
718-
tempVal = modBuilder.GetTypeTokenInternal(cls!).Token;
718+
tempVal = modBuilder.GetTypeTokenInternal(cls!);
719719
}
720720

721721
EnsureCapacity(7);
@@ -800,7 +800,7 @@ public virtual void Emit(OpCode opcode, Label[] labels)
800800
public virtual void Emit(OpCode opcode, FieldInfo field)
801801
{
802802
ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module;
803-
int tempVal = modBuilder.GetFieldToken(field).Token;
803+
int tempVal = modBuilder.GetFieldToken(field);
804804
EnsureCapacity(7);
805805
InternalEmit(opcode);
806806
RecordTokenFixup();
@@ -814,7 +814,7 @@ public virtual void Emit(OpCode opcode, string str)
814814
// fixups if the module is persisted to a PE.
815815

816816
ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module;
817-
int tempVal = modBuilder.GetStringConstant(str).Token;
817+
int tempVal = modBuilder.GetStringConstant(str);
818818
EnsureCapacity(7);
819819
InternalEmit(opcode);
820820
PutInteger4(tempVal);

0 commit comments

Comments
 (0)