diff --git a/source2/IL2PCU/Cosmos.IL2CPU/ILScanner.cs b/source2/IL2PCU/Cosmos.IL2CPU/ILScanner.cs index 89c1c6d7c..ffbf69807 100644 --- a/source2/IL2PCU/Cosmos.IL2CPU/ILScanner.cs +++ b/source2/IL2PCU/Cosmos.IL2CPU/ILScanner.cs @@ -107,6 +107,7 @@ namespace Cosmos.IL2CPU { if (xOpCode is ILOpCodes.OpMethod) { QueueMethod(((ILOpCodes.OpMethod)xOpCode).Value); } else if (xOpCode is ILOpCodes.OpType) { + QueueType(((ILOpCodes.OpType)xOpCode).Value); } ConstructorInfo xCtor; @@ -116,18 +117,15 @@ namespace Cosmos.IL2CPU { } else { xCtor = mILOpsHi[xOpCodeVal & 0xFF]; } - // TODO: Remove this if when all shortcut expansions are completed - if (xCtor != null) { - var xILOp = xCtor.Invoke(new object[] { xOpCode }); - // What to pass to Execute method? Passing whole scanner is inappropriate - // Op needs info about branch targets for example - // are all branches within method? - //inherited execute in ILOpX6 for example can emit this label - // MethodLabel + offset since we will need method labels anyways. Method label - // can be based on a UID generated by our compiler. ie 32 bits of UID + 32 bits offset - // UInt64 xUID = xMethodID << 32 | xOffset - //xILOp.Execute(xUID); - } + var xILOp = xCtor.Invoke(new object[] { xOpCode }); + // What to pass to Execute method? Passing whole scanner is inappropriate + // Op needs info about branch targets for example + // are all branches within method? + //inherited execute in ILOpX6 for example can emit this label + // MethodLabel + offset since we will need method labels anyways. Method label + // can be based on a UID generated by our compiler. ie 32 bits of UID + 32 bits offset + // UInt64 xUID = xMethodID << 32 | xOffset + //xILOp.Execute(xUID); } } }