Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ SerializeHeader()

int System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.SerializeHeader ( int codeSize,
ushort maxStack,
int exceptionRegionCount,
MethodBodyAttributes attributes,
StandaloneSignatureHandle localVariablesSignature,
bool hasDynamicStackAllocation )
inlineprivate

Definition at line 96 of file MethodBodyStreamEncoder.cs.

97 {
98 bool flag = (attributes & MethodBodyAttributes.InitLocals) != 0;
99 int count;
100 if (codeSize < 64 && maxStack <= 8 && localVariablesSignature.IsNil && (!hasDynamicStackAllocation || !flag) && exceptionRegionCount == 0)
101 {
103 Builder.WriteByte((byte)((uint)(codeSize << 2) | 2u));
104 }
105 else
106 {
107 Builder.Align(4);
109 ushort num = 12291;
110 if (exceptionRegionCount > 0)
111 {
112 num = (ushort)(num | 8u);
113 }
114 if (flag)
115 {
116 num = (ushort)(num | 0x10u);
117 }
118 Builder.WriteUInt16((ushort)((uint)attributes | (uint)num));
119 Builder.WriteUInt16(maxStack);
120 Builder.WriteInt32(codeSize);
121 Builder.WriteInt32((!localVariablesSignature.IsNil) ? MetadataTokens.GetToken(localVariablesSignature) : 0);
122 }
123 return count;
124 }

References System.Reflection.Metadata.BlobBuilder.Align(), System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.Builder, System.count, System.Reflection.Metadata.BlobBuilder.Count, System.Reflection.Metadata.Ecma335.MetadataTokens.GetToken(), System.Reflection.Metadata.StandaloneSignatureHandle.IsNil, System.Reflection.Metadata.BlobBuilder.WriteByte(), System.Reflection.Metadata.BlobBuilder.WriteInt32(), and System.Reflection.Metadata.BlobBuilder.WriteUInt16().

Referenced by System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.AddMethodBody(), and System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.AddMethodBody().