Example #1
0
        public override object GetValue(ulong objRef, bool interior = false, bool convertStrings = true)
        {
            if (!HasSimpleValue)
            {
                return(null);
            }

            ulong addr = GetAddress(objRef, interior);

            if (ElementType == ClrElementType.String)
            {
                object val = _heap.GetValueAtAddress(ClrElementType.Object, addr);

                Debug.Assert(val == null || val is ulong);
                if (val == null || !(val is ulong))
                {
                    return(convertStrings ? null : (object)(ulong)0);
                }

                addr = (ulong)val;
                if (!convertStrings)
                {
                    return(addr);
                }
            }

            return(_heap.GetValueAtAddress(ElementType, addr));
        }