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); }
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); }
/// <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; } }
/// <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; } }
private List <StackValue> GetArrayStackValues(DSASM.StackValue sv) { return(ArrayUtils.GetValues <StackValue>(sv, this.core, (DSASM.StackValue s) => s)); }
private DSASM.StackValue[] GetArrayStackValues(DSASM.StackValue sv) { return(core.Rmem.GetArrayElements(sv)); }