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