public override void RenderIL_Load(ILCanvas canvas) { if (method.IsEffectivelyInstanceMethod() && caller != null) { caller.GetILImplicitCast(method.GetILMethodInvokationType()) .RenderIL_Load(canvas); arguments.GetILImplicitCasts(method.GetEffectiveParameterTypes()) .RenderIL_Load(canvas); if (method.IsTechnicallyInstanceMethod() && method.DeclaringType.IsReferenceType()) { canvas.Emit_Callvirt(method); } else { canvas.Emit_Call(method); } } else { arguments.GetILImplicitCasts(method.GetTechnicalParameterTypes()) .RenderIL_Load(canvas); canvas.Emit_Call(method); } }
public override void RenderIL_Load(ILCanvas canvas) { caller.RenderIL_Load(canvas); arguments.GetILImplicitCasts(constructor.GetEffectiveParameterTypes()) .RenderIL_Load(canvas); canvas.Emit_Call(constructor); }
public override void RenderIL_Load(ILCanvas canvas) { if (targets.IsNotEmpty()) { MethodInfo wrap_method = GetType().GetStaticMethod <object>("Wrap").GetNativeMethodInfo(); MethodInfo join_method = GetType().GetStaticMethod <IEnumerable[]>("Join").GetNativeMethodInfo(); join_method.GetStaticILMethodInvokation( new ILNewPopulatedArray( typeof(IEnumerable), targets.Exchange( v => v.GetValueType().IsTypicalIEnumerable() == false, v => wrap_method.GetStaticILMethodInvokation(v) ) ) ).RenderIL_Load(canvas); } else { canvas.Emit_Call(GetType().GetStaticMethod("None")); } }
public override void RenderIL_Load(ILCanvas canvas) { canvas.Emit_Ldtoken(constant); canvas.Emit_Call(typeof(Type).GetStaticMethod <RuntimeTypeHandle>("GetTypeFromHandle")); }
public override void EmitCast(ILCanvas canvas, ILValue value) { value.RenderIL_Load(canvas); canvas.Emit_Call(method); }