internal static int [] getLineNumbers (InterpreterData data) { UintMap presentLines = new UintMap (); sbyte [] iCode = data.itsICode; int iCodeLength = iCode.Length; for (int pc = 0; pc != iCodeLength; ) { int bytecode = iCode [pc]; int span = bytecodeSpan (bytecode); if (bytecode == Icode_LINE) { if (span != 3) Context.CodeBug (); int line = GetIndex (iCode, pc + 1); presentLines.put (line, 0); } pc += span; } return presentLines.Keys; }
/// <param name="indent">How much to indent the decompiled result /// /// </param> /// <param name="flags">Flags specifying format of decompilation output /// </param> internal override string Decompile(int indent, int flags) { string encodedSource = EncodedSource; if (encodedSource == null) { return base.Decompile (indent, flags); } else { UintMap properties = new UintMap (1); properties.put (Decompiler.INITIAL_INDENT_PROP, indent); return Decompiler.Decompile (encodedSource, flags, properties); } }