コード例 #1
0
ファイル: MdbReader.cs プロジェクト: pikaqiufk/Client
 private static Scope[] ReadScopes(MethodEntry entry, MethodBody body, InstructionMapper mapper)
 {
     CodeBlockEntry[] blocks = entry.GetCodeBlocks();
     Scope[]          scopes = new Scope[blocks.Length];
     CodeBlockEntry[] array  = blocks;
     for (int i = 0; i < array.Length; i++)
     {
         CodeBlockEntry block = array[i];
         if (block.BlockType == CodeBlockEntry.Type.Lexical)
         {
             Scope scope = new Scope();
             scope.Start         = mapper(block.StartOffset);
             scope.End           = mapper(block.EndOffset);
             scopes[block.Index] = scope;
             if (body.Scope == null)
             {
                 body.Scope = scope;
             }
             if (!MdbReader.AddScope(body.Scope, scope))
             {
                 body.Scope = scope;
             }
         }
     }
     return(scopes);
 }
コード例 #2
0
ファイル: SourceMethodBuilder.cs プロジェクト: ttRevan/cecil
        public void StartBlock(CodeBlockEntry.Type type, int start_offset)
        {
            if (_block_stack == null) {
                _block_stack = new Stack<CodeBlockEntry> ();
            }

            if (_blocks == null)
                _blocks = new List<CodeBlockEntry> ();

            int parent = CurrentBlock != null ? CurrentBlock.Index : -1;

            CodeBlockEntry block = new CodeBlockEntry (
                _blocks.Count + 1, parent, type, start_offset);

            _block_stack.Push (block);
            _blocks.Add (block);
        }
コード例 #3
0
ファイル: MonoSymbolFile.cs プロジェクト: ttRevan/cecil
        public MethodEntry DefineMethod(CompileUnitEntry comp_unit, int token,
						 ScopeVariable[] scope_vars, LocalVariableEntry[] locals,
						 LineNumberEntry[] lines, CodeBlockEntry[] code_blocks,
						 string real_name, MethodEntry.Flags flags,
						 int namespace_id)
        {
            if (reader != null)
                throw new InvalidOperationException ();

            MethodEntry method = new MethodEntry (
                this, comp_unit, token, scope_vars, locals, lines, code_blocks,
                real_name, flags, namespace_id);
            AddMethod (method);
            return method;
        }