Esempio n. 1
0
 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));
 }