Cosmos/source2/IL2CPU/Cosmos.IL2CPU/IL/Ret.cs
mterwoord_cp e9a2fb40df .
2014-07-13 22:33:53 +00:00

26 lines
No EOL
842 B
C#

using System;
using CPUx86 = Cosmos.Assembler.x86;
namespace Cosmos.IL2CPU.X86.IL
{
[Cosmos.IL2CPU.OpCode(ILOpCode.Code.Ret)]
public class Ret : ILOp
{
public Ret(Cosmos.Assembler.Assembler aAsmblr) : base(aAsmblr)
{
}
public override void Execute(MethodInfo aMethod, ILOpCode aOpCode)
{
//TODO: Return
Jump_End(aMethod);
// Need to jump to end of method. Assembler can emit this label for now
//new CPU.Jump { DestinationLabel = MethodFooterOp.EndOfMethodLabelNameNormal };
var methodInf = aMethod.MethodBase as System.Reflection.MethodInfo;
if (methodInf != null && methodInf.ReturnType != typeof (void))
{
Assembler.Stack.Pop();
}
}
}
}