public StringMangleContext(IStringMangler mangler, MethodDef sourceMethod, IILEmitter emitter, IEnumerable <StringPiece> parts) { Mangler = mangler; SourceMethod = sourceMethod; Emitter = emitter; Pieces = new Queue <StringPiece>(parts); if (Pieces.Count == 0) { throw new CodeBug.Unreachable(); } if (Pieces.Count > 1 && Mangler.Rng.NextBoolean()) { EnsureStringBuilderOnStackTop(); // if there are multiple parts, we sometimes initialize StringBuilder, and sometimes leave it to the point when the second part is about to be demangled } }
protected StringMangleMethod(IContextImpl context, string name) : base(context) { Name = name; Mangler = context.Plugin <IStringMangler>(() => new StringMangler(context)); }