void FixupData()
{
int start_t = d.StartTime;
int end_t = ((TimeData) d.Data [d.Data.Count - 1]).Time;
int del_t = end_t - start_t;
data = new ArrayList ();
int size_threshold = (Profile.MaxSize / ysize) * 3;
foreach (TimeData td in d.Data) {
if (td.HeapSize < size_threshold)
continue;
TimePoint p = new TimePoint ();
data.Add (p);
p.Data = td;
p.Time = td.Time;
p.X = (td.Time - start_t) * xsize / del_t;
p.OtherSize = td.OtherSize;
p.TypeData = new int [tl.TypeIndexes.Length];
p.HeapSize = td.HeapSize;
for (int i = 0; i < tl.TypeIndexes.Length; i ++) {
int ty = tl.TypeIndexes [i];
if (td.TypeData [ty] < size_threshold) {
p.OtherSize += td.TypeData [ty];
continue;
}
p.TypeData [i] = td.TypeData [ty];
}
}
}