示例#1
0
 void LoadOrCreateStringBuilder()
 {
     if (_sbLocal != null)
     {
         Emitter.Ldloc(_sbLocal);
     }
     else
     {
         SmUtils.NewStringBuilder(Emitter);
     }
 }
示例#2
0
 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);
     }
 }
示例#3
0
        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);
            }
        }