Cosmos/source/Cosmos.IL2CPU/Plugs/NEW_PLUGS/GetMulticastInvokeAssembler.cs
2014-12-20 17:36:45 +01:00

27 lines
917 B
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cosmos.IL2CPU.Plugs;
using Cosmos.IL2CPU.X86.IL;
using Cosmos.Assembler;
using System.Reflection;
using MethodInfo = Cosmos.IL2CPU.MethodInfo;
using CPUx86 = Cosmos.Assembler.x86;
using Cosmos.IL2CPU;
namespace Indy.IL2CPU.X86.Plugs.NEW_PLUGS
{
public class GetMulticastInvokeAssembler: AssemblerMethod
{
public override void AssembleNew(Cosmos.Assembler.Assembler aAssembler, object aMethodInfo)
{
var xAsm = (Assembler)aAssembler;
var xMethodInfo = (MethodInfo)aMethodInfo;
var xDelegate = typeof(Delegate);
var xMethod = xDelegate.GetMethod("GetInvokeMethod", BindingFlags.NonPublic | BindingFlags.Instance);
new CPUx86.Push { DestinationRef = Cosmos.Assembler.ElementReference.New(ILOp.GetMethodLabel(xMethod)) };
}
}
}