mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-20 21:08:51 +00:00
This commit is contained in:
parent
b20b92b4cd
commit
2b34fe04cb
1 changed files with 28 additions and 19 deletions
|
|
@ -477,30 +477,39 @@ namespace Cosmos.IL2CPU {
|
|||
private long mItemsHandled = 0;
|
||||
protected void ScanQueue() {
|
||||
while (mQueue.Count > 0) {
|
||||
if ((mQueue.Count + mItemsHandled) != mItems.Count) {
|
||||
Console.Write("");
|
||||
}
|
||||
var xItem = mQueue.Dequeue();
|
||||
// Check for MethodBase first, they are more numerous
|
||||
// and will reduce compares
|
||||
if (xItem is MethodBase) {
|
||||
ScanMethod((MethodBase)xItem, false);
|
||||
} else if (xItem is Type) {
|
||||
ScanType((Type)xItem);
|
||||
} else {
|
||||
throw new Exception("Unknown item found in queue.");
|
||||
}
|
||||
mItemsHandled++;
|
||||
if ((mItemsHandled % 5000) == 0) {
|
||||
Console.WriteLine("ItemsHandled: {0}", mItemsHandled);
|
||||
}
|
||||
if (mItemsHandled == 10000) {
|
||||
throw new Exception("Debug Abort");
|
||||
while (mQueue.Count > 0) {
|
||||
if ((mQueue.Count + mItemsHandled) != mItems.Count) {
|
||||
Console.Write("");
|
||||
}
|
||||
var xItem = mQueue.Dequeue();
|
||||
// Check for MethodBase first, they are more numerous
|
||||
// and will reduce compares
|
||||
if (xItem is MethodBase) {
|
||||
ScanMethod((MethodBase)xItem, false);
|
||||
} else if (xItem is Type) {
|
||||
ScanType((Type)xItem);
|
||||
} else {
|
||||
throw new Exception("Unknown item found in queue.");
|
||||
}
|
||||
mItemsHandled++;
|
||||
if ((mItemsHandled % 5000) == 0) {
|
||||
Console.WriteLine("ItemsHandled: {0}", mItemsHandled);
|
||||
}
|
||||
if (mItemsHandled == 10000) {
|
||||
throw new Exception("Debug Abort");
|
||||
}
|
||||
}
|
||||
// We process all items until no more are added.
|
||||
// Then we check virtuals again. If it adds more items
|
||||
// Then we need to repeat the whole process.
|
||||
CheckVirtuals();
|
||||
}
|
||||
Console.WriteLine("ItemsHandled: {0}", mItemsHandled);
|
||||
}
|
||||
|
||||
protected void CheckVirtuals() {
|
||||
}
|
||||
|
||||
protected void LogMapPoint(object aSrc, string aSrcType, object aItem) {
|
||||
// Keys cant be null. If null, we just say ILScanner is the source
|
||||
if (aSrc == null) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue