Beispiel #1
0
 public void TakeSnapshot(StateSnapshot ss)
 {
     ss.WriteInt(names.Count);
     for(int i = 0; i < names.Count; i++)
     {
         ss.WriteString(names[i]);
         ss.WriteGuid(values[i]);
     }
 }
Beispiel #2
0
 public void TakeSnapshot(StateSnapshot ss)
 {
     ss.WriteInt(theMethod.ID);
     ss.WriteInt(theMethod.GetInstructionIndex(thePC));
 }
Beispiel #3
0
        public void TakeSnapshot(StateSnapshot ss)
        {
            ss.WriteGuid(threadID);

            ss.WriteInt((int)syncState);
            ss.WriteGuid(waitingOn);

            ss.WriteInt(threadStack.Count);
            for(int i = 0; i < threadStack.Count; i++)
                ss.WriteGuid(threadStack[i]);

            ss.WriteInt(localVariableBlocks.Count);
            for(int i = 0; i < localVariableBlocks.Count; i++)
            {
                localVariableBlocks[i].TakeSnapshot(ss);
            }

            ss.WriteInt(returnAddresses.Count);
            for(int i = 0; i < returnAddresses.Count; i++)
            {
                ReturnAddress ra = returnAddresses[i];
                ra.TakeSnapshot(ss);
            }

            ss.WriteInt(currentMethod.ID);
            ss.WriteInt(currentMethod.GetInstructionIndex(pc));

            ss.WriteInt(pendingActions.Count);
            for(int i = 0; i < pendingActions.Count; i++)
            {
                DelayedAction da = (DelayedAction)pendingActions[i];
                da.TakeSnapshot(ss);
            }
        }
Beispiel #4
0
 /// <summary>
 /// Called during TakeSnapshot in State to dump the data of this value
 /// </summary>
 /// <param name="ss"></param>
 public virtual void SaveData(StateSnapshot ss)
 {
     ss.WriteInt(isConcrete);
 }
Beispiel #5
0
 /// <summary>
 /// Called during TakeSnapshot in State so that all guids
 /// are reached and renamed
 /// This function is to be overriden by subclasses to traverse
 /// to guids linked to them
 /// </summary>
 public virtual void TraverseGuids(StateSnapshot ss)
 {
     // do nothing
 }
Beispiel #6
0
 /// <summary>
 /// Called during TakeSnapshot in State so that all guids
 /// are reached and renamed
 /// This function is to be overriden by subclasses to traverse
 /// to guids linked to them
 /// </summary>
 public override void TraverseGuids(StateSnapshot ss)
 {
     ss.Convert(threadStartGUID);
 }
Beispiel #7
0
 public override void TraverseGuids(StateSnapshot ss)
 {
     for(int i = 0; i < data.Length; i++)
         ss.Convert(data[i]);
 }
Beispiel #8
0
 /// <summary>
 /// Called during TakeSnapshot in State to dump the data of this value
 /// </summary>
 /// <param name="ss"></param>
 public override void SaveData(StateSnapshot ss)
 {
     base.SaveData(ss);
     ss.WriteLong(value);
 }
Beispiel #9
0
 public override void SaveData(StateSnapshot ss)
 {
     base.SaveData(ss);
     ss.WriteGuid(objGuid);
     ss.WriteGuid(ftnGuid);
 }
Beispiel #10
0
 /// <summary>
 /// Called during TakeSnapshot in State so that all guids
 /// are reached and renamed
 /// This function is to be overriden by subclasses to traverse
 /// to guids linked to them
 /// </summary>
 public override void TraverseGuids(StateSnapshot ss)
 {
     ss.Convert(objGuid);
     ss.Convert(ftnGuid);
 }
Beispiel #11
0
 /// <summary>
 /// Called during TakeSnapshot in State so that all guids
 /// are reached and renamed
 /// This function is to be overriden by subclasses to traverse
 /// to guids linked to them
 /// </summary>
 public override void TraverseGuids(StateSnapshot ss)
 {
     for(int i = 0; i < fields.Count; i++)
         ss.Convert(fields[i]);
 }
Beispiel #12
0
 public override void SaveData(StateSnapshot ss)
 {
     base.SaveData(ss);
     ss.WriteInt(classType.ID);
     ss.WriteGuid(holdingLockThreadID);
     ss.WriteInt(holdingLockCount);
     for(int i = 0; i < fields.Count; i++)
         ss.WriteGuid(fields[i]);
 }
Beispiel #13
0
 /// <summary>
 /// Called during TakeSnapshot in State to dump the data of this value
 /// </summary>
 /// <param name="ss"></param>
 public override void SaveData(StateSnapshot ss)
 {
     base.SaveData(ss);
     ss.WriteInt(method.ID);
 }
Beispiel #14
0
 public override void SaveData(StateSnapshot ss)
 {
     base.SaveData (ss);
     ss.WriteGuid(arrayInstGuid);
 }
Beispiel #15
0
        public void TakeSnapshot(StateSnapshot ss)
        {
            ss.WriteInt(variables.Count);
            for(int i = 0; i < variables.Count; i++)
                ss.WriteGuid(variables[i]);

            ss.WriteInt(arguments.Count);
            for(int i = 0; i < arguments.Count; i++)
                ss.WriteGuid(arguments[i]);
        }
Beispiel #16
0
 public override void TraverseGuids(StateSnapshot ss)
 {
     ss.Convert(arrayInstGuid);
 }
Beispiel #17
0
 /// <summary>
 /// Called during TakeSnapshot in State so that all guids
 /// are reached and renamed
 /// This function is to be overriden by subclasses to traverse
 /// to guids linked to them
 /// </summary>
 public override void TraverseGuids(StateSnapshot ss)
 {
     ss.Convert(valueguid);
 }
Beispiel #18
0
 public override void SaveData(StateSnapshot ss)
 {
     base.SaveData (ss);
     ss.WriteInt(data.Length);
     for(int i = 0; i < data.Length; i++)
         ss.WriteGuid(data[i]);
 }
Beispiel #19
0
 /// <summary>
 /// Called during TakeSnapshot in State to dump the data of this value
 /// </summary>
 /// <param name="ss"></param>
 public override void SaveData(StateSnapshot ss)
 {
     base.SaveData(ss);
     ss.WriteGuid(valueguid);
 }
Beispiel #20
0
        /// <summary>
        /// Take a snapshot of the state to a bytestream
        /// </summary>
        /// <returns></returns>
        private void TakeSnapshot()
        {
            // TODO: Incorporating snapshot with mark and sweep as they both traverse
            // the memory graph, althought it may be very complex
            StateSnapshot ss = new StateSnapshot(values);
            heap.TakeSnapshot(ss);
            ThreadState[] arr = threads.ToArray();
            /*			int i, j;
            for(i = 0; i < arr.Length; i++)
                for(j = i + 1; j < arr.Length; j++)
                    if(arr[i].ThreadStack.Count > arr[j].ThreadStack.Count)
                    {
                        ThreadState tmp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = tmp;
                    }*/

            ss.WriteInt(arr.Length);
            for(int i = 0; i < arr.Length; i++)
                arr[i].TakeSnapshot(ss);
            snapshot = ss.GetStoringData();
            snapshotSig = md5.ComputeHash(snapshot);
        }
Beispiel #21
0
 public override void SaveData(StateSnapshot ss)
 {
     base.SaveData(ss);
     ss.WriteGuid(threadStartGUID);
 }