public void MarkAndSweep(int threadID, VMValueManager valueMan) { foreach (int i in variables) valueMan.GetValue(i).MarkAndSweep(threadID, valueMan); foreach (int i in arguments) valueMan.GetValue(i).MarkAndSweep(threadID, valueMan); }
public VMValue_arrayinst(int guid, int size, CILVariable elementType, VMValueManager valueManager) : base(guid) { this.elementType = elementType; data = new int[size]; for(int i = 0; i < size; i++) data[i] = valueManager.MakeValue(elementType).GUID; }
public StateSnapshot(VMValueManager values) { msData = new MemoryStream(); bwData = new BinaryWriter(msData); valueMap = new Hashtable(); this.values = values; seenGuids = new List<int>(); nextguid = 0; dbg_stage = 1; }
public override void MarkAndSweep(int tid, VMValueManager valueMan) { int tmp = MaSProcess(tid); if (tmp != -2) { VMValue v = valueMan.GetValue(threadStartGUID); if (v != null) v.MarkAndSweep(tmp, valueMan); } }
public override void MarkAndSweep(int tid, VMValueManager valueMan) { int tmp = MaSProcess(tid); if (tmp != -2) { // check children with tid VMValue v = valueMan.GetValue(arrayInstGuid); if (v != null) v.MarkAndSweep(tmp, valueMan); } }
public VMValueManager Duplicate() { VMValueManager ret = new VMValueManager(); ret.nextguid = nextguid; IDictionaryEnumerator iter = allValues.GetEnumerator(); while(iter.MoveNext()) ret.allValues.Add(iter.Key, ((VMValue)iter.Value).Duplicate()); return ret; }
public override void MarkAndSweep(int tid, VMValueManager valueMan) { int tmp = MaSProcess(tid); if (tmp != -2) { VMValue v = valueMan.GetValue(objGuid); if (v != null) v.MarkAndSweep(tmp, valueMan); v = valueMan.GetValue(ftnGuid); if (v != null) v.MarkAndSweep(tmp, valueMan); } }
public override void MarkAndSweep(int tid, VMValueManager valueMan) { int tmp = MaSProcess(tid); if (tmp != -2) { // check children with tid for (int i = 0; i < data.Length; i++) if (data[i] != -1) { VMValue v = valueMan.GetValue(data[i]); v.MarkAndSweep(tmp, valueMan); } } }
public VMValue_objectinst(int guid, VMValueManager valueFactory, CILClass classType) : base(guid) { this.classType = classType; this.holdingLockThreadID = -1; this.holdingLockCount = 0; IEnumerator iter = classType.GetFieldEnumerator(); while(iter.MoveNext()) { CILClassField field = (CILClassField)iter.Current; if(field.IsStatic == false) { VMValue f = valueFactory.MakeValue(field.Variable); f.IsConcrete = true; fields.Add(f.GUID); } } }
public override void MarkAndSweep(int tid, VMValueManager valueMan) { MaSProcess(tid); }
/// <summary> /// Explores all reachable VMValue from this to mark /// <param>tid: ID (guid) of the thread checking this VMValue</param> /// </summary> public abstract void MarkAndSweep(int tid, VMValueManager valueMan);
public VMValue_threadstart(int guid, VMValueManager valueFactory, int objGuid, int ftnGuid) : base(guid, valueFactory, new CILClass("[mscorlib]System.Threading.ThreadStart")) { this.objGuid = objGuid; this.ftnGuid = ftnGuid; }
public override void MarkAndSweep(int tid, VMValueManager valueMan) { int tmp = MaSProcess(tid); if (tmp != -2) { // check children with tid for (int i = 0; i < fields.Count; i++) { VMValue v = valueMan.GetValue(fields[i]); if (v != null) v.MarkAndSweep(tmp, valueMan); } } }
public VMValue_thread(int guid, VMValueManager valueFactory, int threadStartGUID) : base(guid, valueFactory, new CILClass("[mscorlib]System.Threading.Thread")) { this.threadStartGUID = threadStartGUID; }