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

◆ BakeByteArray()

byte[] System.Reflection.Emit.ILGenerator.BakeByteArray ( )
inlinepackage

Definition at line 148 of file ILGenerator.cs.

149 {
150 if (m_currExcStackCount != 0)
151 {
152 throw new ArgumentException(SR.Argument_UnclosedExceptionBlock);
153 }
154 if (m_length == 0)
155 {
156 return null;
157 }
158 byte[] array = new byte[m_length];
160 for (int i = 0; i < m_fixupCount; i++)
161 {
162 __FixupData _FixupData = m_fixupData[i];
163 int num = GetLabelPos(_FixupData.m_fixupLabel) - (_FixupData.m_fixupPos + _FixupData.m_fixupInstSize);
164 if (_FixupData.m_fixupInstSize == 1)
165 {
166 if (num < -128 || num > 127)
167 {
168 throw new NotSupportedException(SR.Format(SR.NotSupported_IllegalOneByteBranch, _FixupData.m_fixupPos, num));
169 }
170 array[_FixupData.m_fixupPos] = (byte)num;
171 }
172 else
173 {
174 BinaryPrimitives.WriteInt32LittleEndian(array.AsSpan(_FixupData.m_fixupPos), num);
175 }
176 }
177 return array;
178 }
static void WriteInt32LittleEndian(Span< byte > destination, int value)

References System.SR.Argument_UnclosedExceptionBlock, System.array, System.Array.Copy(), System.SR.Format(), System.Reflection.Emit.ILGenerator.GetLabelPos(), System.Reflection.Emit.ILGenerator.m_currExcStackCount, System.Reflection.Emit.ILGenerator.m_fixupCount, System.Reflection.Emit.ILGenerator.m_fixupData, System.Reflection.Emit.__FixupData.m_fixupInstSize, System.Reflection.Emit.__FixupData.m_fixupLabel, System.Reflection.Emit.__FixupData.m_fixupPos, System.Reflection.Emit.ILGenerator.m_ILStream, System.Reflection.Emit.ILGenerator.m_length, System.SR.NotSupported_IllegalOneByteBranch, and System.Buffers.Binary.BinaryPrimitives.WriteInt32LittleEndian().

Referenced by System.Reflection.Emit.DynamicResolver.DynamicResolver(), and System.Reflection.Emit.MethodBuilder.CreateMethodBodyHelper().