Mono.Debugger.Backend.Mono.MonoLanguageBackend.CreateBoxedObject C# (CSharp) Method

CreateBoxedObject() public method

public CreateBoxedObject ( Thread thread, TargetObject value ) : TargetObjectObject
thread Thread
value Mono.Debugger.Languages.TargetObject
return Mono.Debugger.Languages.TargetObjectObject
        public override TargetObjectObject CreateBoxedObject(Thread thread, TargetObject value)
        {
            TargetAddress klass;

            if ((value is MonoClassObject)  && !value.Type.IsByRef)
                klass = ((MonoClassObject) value).KlassAddress;
            else if (value is TargetFundamentalObject) {
                MonoClassType ctype = ((MonoFundamentalType) value.Type).MonoClassType;
                MonoClassInfo info = (MonoClassInfo) thread.ThreadServant.DoTargetAccess (
                    delegate (TargetMemoryAccess target) {
                        return ctype.ResolveClass (target, true);
                    });
                klass = info.KlassAddress;
            } else
                throw new InvalidOperationException ();

            if (!thread.CurrentFrame.Language.IsManaged)
                throw new TargetException (TargetError.InvalidContext);

            TargetAddress boxed = thread.CallMethod (MonoDebuggerInfo.GetBoxedObjectMethod, klass, value);
            if (boxed.IsNull)
                return null;

            return new MonoObjectObject (builtin_types.ObjectType, new AbsoluteTargetLocation (boxed));
        }