public BlobEncoder(BlobBuilder builder) { if (builder == null) { Throw.BuilderArgumentNull(); } Builder = builder; }
/// <summary> /// Creates an encoder backed by code and control-flow builders. /// </summary> /// <param name="codeBuilder">Builder to write encoded instructions to.</param> /// <param name="controlFlowBuilder"> /// Builder tracking labels, branches and exception handlers. /// Must be specified to be able to use some of the control-flow factory methods of <see cref="InstructionEncoder"/>, /// such as <see cref="Branch(ILOpCode, LabelHandle)"/>, <see cref="DefineLabel"/>, <see cref="MarkLabel(LabelHandle)"/> etc. /// </param> public InstructionEncoder(BlobBuilder codeBuilder, ControlFlowBuilder controlFlowBuilder = null) { if (codeBuilder == null) { Throw.BuilderArgumentNull(); } CodeBuilder = codeBuilder; ControlFlowBuilder = controlFlowBuilder; }
public MethodBodyStreamEncoder(BlobBuilder builder) { if (builder == null) { Throw.BuilderArgumentNull(); } // Fat methods are 4-byte aligned. We calculate the alignment relative to the start of the ILStream. // // See ECMA-335 paragraph 25.4.5, Method data section: // "At the next 4-byte boundary following the method body can be extra method data sections." if ((builder.Count % 4) != 0) { throw new ArgumentException(SR.BuilderMustAligned, nameof(builder)); } Builder = builder; }