Пример #1
0
        public DwarfMethodDIE GetMethodDie(metadata.MethodSpec ms)
        {
            DwarfMethodDIE ret;

            if (method_dies.TryGetValue(ms, out ret))
            {
                return(ret);
            }
            ret             = new DwarfMethodDIE();
            ret.ms          = ms;
            ret.t           = t;
            ret.dcu         = this;
            method_dies[ms] = ret;
            return(ret);
        }
Пример #2
0
        private SourceLoc GetSourceLoc()
        {
            DwarfMethodDIE first = null, ctor = null;

            foreach (var die in Children)
            {
                if (die is DwarfMethodDIE)
                {
                    var dmdie = die as DwarfMethodDIE;
                    if (first == null && dmdie.SourceFileId != 0)
                    {
                        first = dmdie;
                    }
                    if (ctor == null && dmdie.ms != null && dmdie.ms.Name == ".ctor" && dmdie.SourceFileId != 0)
                    {
                        ctor = dmdie;
                        break;
                    }
                }
            }
            if (first == null)
            {
                return(null);
            }
            var ret = new SourceLoc();

            if (ctor != null)
            {
                ret.file = ctor.SourceFileId;
                ret.line = ctor.StartLine;
                ret.col  = ctor.StartColumn;
            }
            else
            {
                ret.file = first.SourceFileId;
                ret.line = first.StartLine;
                ret.col  = first.StartColumn;
            }

            return(ret);
        }