예제 #1
0
        internal List <IGraphicItem> GetGraphicItems(DSASM.StackValue svData, Core core)
        {
            Validity.Assert(svData.optype == AddressType.Pointer);

            object obj = GetCLRObject(svData, core);

            if (obj != null)
            {
                return(GetGraphicItems(obj));
            }

            return(null);
        }
예제 #2
0
        internal List <IGraphicItem> GetGraphicItems(DSASM.StackValue svData, RuntimeCore runtimeCore)
        {
            Validity.Assert(svData.IsPointer);

            object obj = GetCLRObject(svData, runtimeCore);

            if (obj != null)
            {
                return(GetGraphicItems(obj));
            }

            return(null);
        }
예제 #3
0
            /// <summary>
            /// Recursively finds all Pointers from the stack value
            /// </summary>
            /// <param name="sv">Stack value</param>
            /// <param name="values">Stack values</param>
            private void GetPointersRecursively(DSASM.StackValue sv, List <DSASM.StackValue> values)
            {
                switch (sv.optype)
                {
                case ProtoCore.DSASM.AddressType.Pointer:
                    values.Add(sv);
                    break;

                case ProtoCore.DSASM.AddressType.ArrayPointer:
                    var array = runtimeCore.Heap.ToHeapObject <DSArray>(sv);
                    foreach (var item in array.Values)
                    {
                        GetPointersRecursively(item, values);
                    }
                    break;

                default:
                    break;
                }
            }
예제 #4
0
            /// <summary>
            /// Recursively finds all Pointers from the stack value
            /// </summary>
            /// <param name="sv">Stack value</param>
            /// <param name="values">Stack values</param>
            private void GetPointersRecursively(DSASM.StackValue sv, List <DSASM.StackValue> values)
            {
                switch (sv.optype)
                {
                case ProtoCore.DSASM.AddressType.Pointer:
                    values.Add(sv);
                    break;

                case ProtoCore.DSASM.AddressType.ArrayPointer:
                    List <DSASM.StackValue> stackValues = GetArrayStackValues(sv);
                    foreach (var item in stackValues)
                    {
                        GetPointersRecursively(item, values);
                    }

                    break;

                default:
                    break;
                }
            }
예제 #5
0
 private List <StackValue> GetArrayStackValues(DSASM.StackValue sv)
 {
     return(ArrayUtils.GetValues <StackValue>(sv, this.core, (DSASM.StackValue s) => s));
 }
예제 #6
0
 private DSASM.StackValue[] GetArrayStackValues(DSASM.StackValue sv)
 {
     return(core.Rmem.GetArrayElements(sv));
 }