void LoadOrCreateStringBuilder() { if (_sbLocal != null) { Emitter.Ldloc(_sbLocal); } else { SmUtils.NewStringBuilder(Emitter); } }
void LoadOrCreateStringBuilder(Local initString) { if (_sbLocal != null) { Emitter.Ldloc(_sbLocal); Emitter.Ldloc(initString); Emitter.Callvirt(SmUtils.Method_StringBuilder_Append_String); } else { SmUtils.NewStringBuilder(Emitter, initString); } }
protected override void OnDispose() { switch (StackTop) { case StringMangleStackTop.StringBuilder: SmUtils.ToString(Emitter); break; case StringMangleStackTop.String: break; case StringMangleStackTop.Unknown: throw new CodeBug.Unreachable(); } if (_sbLocal != null) { Emitter.TempLocals.Release(_sbLocal); } }