this.parameters = parameters;
}
+#if !FULL_AOT_RUNTIME
void EmitPopIfNeeded (EmitContext ec)
{
if (GetReturnType () == typeof (void) && body.Type != typeof (void))
}
internal override void Emit (EmitContext ec)
+ {
+ ec.EmitCreateDelegate (this);
+ }
+
+ internal void EmitBody (EmitContext ec)
{
body.Emit (ec);
EmitPopIfNeeded (ec);
ec.ig.Emit (OpCodes.Ret);
}
+#endif
internal Type GetReturnType ()
{
- return this.Type.GetMethod ("Invoke").ReturnType;
+ return this.Type.GetInvokeMethod ().ReturnType;
}
public Delegate Compile ()
{
-#if TARGET_JVM
- System.Linq.jvm.Interpreter inter =
- new System.Linq.jvm.Interpreter (this);
- inter.Validate ();
- return inter.CreateDelegate ();
+#if TARGET_JVM || MONOTOUCH
+ return new System.Linq.jvm.Runner (this).CreateDelegate ();
#else
- var context = EmitContext.Create (this);
+ var context = new CompilationContext ();
+ context.AddCompilationUnit (this);
return context.CreateDelegate ();
#endif
}
+
+#if TARGET_JVM || MONOTOUCH
+ internal Delegate Compile (System.Linq.jvm.ExpressionInterpreter interpreter)
+ {
+ return new System.Linq.jvm.Runner (this, interpreter).CreateDelegate ();
+ }
+#endif
}
}