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

◆ AddMethodBody() [2/4]

int System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.AddMethodBody ( InstructionEncoder instructionEncoder,
int maxStack = 8,
StandaloneSignatureHandle localVariablesSignature = default(StandaloneSignatureHandle),
MethodBodyAttributes attributes = MethodBodyAttributes::InitLocals,
bool hasDynamicStackAllocation = false )
inline

Definition at line 66 of file MethodBodyStreamEncoder.cs.

67 {
68 if ((uint)maxStack > 65535u)
69 {
70 Throw.ArgumentOutOfRange("maxStack");
71 }
72 BlobBuilder codeBuilder = instructionEncoder.CodeBuilder;
73 ControlFlowBuilder controlFlowBuilder = instructionEncoder.ControlFlowBuilder;
74 if (codeBuilder == null)
75 {
76 Throw.ArgumentNull("instructionEncoder");
77 }
78 int exceptionRegionCount = controlFlowBuilder?.ExceptionHandlerCount ?? 0;
79 if (!ExceptionRegionEncoder.IsExceptionRegionCountInBounds(exceptionRegionCount))
80 {
81 Throw.ArgumentOutOfRange("instructionEncoder", System.SR.TooManyExceptionRegions);
82 }
83 int result = SerializeHeader(codeBuilder.Count, (ushort)maxStack, exceptionRegionCount, attributes, localVariablesSignature, hasDynamicStackAllocation);
84 if (controlFlowBuilder != null && controlFlowBuilder.BranchCount > 0)
85 {
86 controlFlowBuilder.CopyCodeAndFixupBranches(codeBuilder, Builder);
87 }
88 else
89 {
90 codeBuilder.WriteContentTo(Builder);
91 }
92 controlFlowBuilder?.SerializeExceptionTable(Builder);
93 return result;
94 }
static string TooManyExceptionRegions
Definition SR.cs:148
Definition SR.cs:7
int SerializeHeader(int codeSize, ushort maxStack, int exceptionRegionCount, MethodBodyAttributes attributes, StandaloneSignatureHandle localVariablesSignature, bool hasDynamicStackAllocation)

References System.Reflection.Throw.ArgumentNull(), System.Reflection.Throw.ArgumentOutOfRange(), System.Reflection.Metadata.Ecma335.ControlFlowBuilder.BranchCount, System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.Builder, System.Reflection.Metadata.Ecma335.InstructionEncoder.CodeBuilder, System.Reflection.Metadata.Ecma335.InstructionEncoder.ControlFlowBuilder, System.Reflection.Metadata.Ecma335.ControlFlowBuilder.CopyCodeAndFixupBranches(), System.Reflection.Metadata.BlobBuilder.Count, System.Reflection.Metadata.Ecma335.ControlFlowBuilder.ExceptionHandlerCount, System.Reflection.Metadata.Ecma335.ExceptionRegionEncoder.IsExceptionRegionCountInBounds(), System.Reflection.Metadata.Ecma335.ControlFlowBuilder.SerializeExceptionTable(), System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.SerializeHeader(), System.SR.TooManyExceptionRegions, and System.Reflection.Metadata.BlobBuilder.WriteContentTo().