protected virtual void Trace(TemplateFrame frame, int ip)
{
Template self = frame.Template;
StringBuilder tr = new StringBuilder();
BytecodeDisassembler dis = new BytecodeDisassembler(self.impl);
StringBuilder buf = new StringBuilder();
dis.DisassembleInstruction(buf, ip);
string name = self.impl.Name + ":";
if (object.ReferenceEquals(self.impl.Name, Template.UnknownName))
name = string.Empty;
tr.Append(string.Format("{0,-40}", name + buf));
tr.Append("\tstack=[");
for (int i = 0; i <= sp; i++)
{
object o = operands[i];
PrintForTrace(tr, frame, o);
}
tr.Append(" ], calls=");
tr.Append(frame.GetEnclosingInstanceStackString());
tr.Append(", sp=" + sp + ", nw=" + nwline);
string s = tr.ToString();
if (_debug)
executeTrace.Add(s);
if (trace)
Console.WriteLine(s);
}