Merge pull request #656 from LogosBible/collection_lock
[mono.git] / mcs / class / System.Core / System.Linq.Expressions / LambdaExpression.cs
index be890eefccf3651437966e913170c6d0d28a1c89..6e873b0c9b2d8b12c37a7362b4e0aaa9ff7e6620 100644 (file)
@@ -31,7 +31,10 @@ using System;
 using System.Collections.ObjectModel;
 using System.Collections.Generic;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
+
 
 namespace System.Linq.Expressions {
 
@@ -55,6 +58,7 @@ namespace System.Linq.Expressions {
                        this.parameters = parameters;
                }
 
+#if !FULL_AOT_RUNTIME
                void EmitPopIfNeeded (EmitContext ec)
                {
                        if (GetReturnType () == typeof (void) && body.Type != typeof (void))
@@ -72,6 +76,7 @@ namespace System.Linq.Expressions {
                        EmitPopIfNeeded (ec);
                        ec.ig.Emit (OpCodes.Ret);
                }
+#endif
 
                internal Type GetReturnType ()
                {
@@ -80,16 +85,20 @@ namespace System.Linq.Expressions {
 
                public Delegate Compile ()
                {
-#if TARGET_JVM
-                       System.Linq.jvm.Interpreter inter =
-                               new System.Linq.jvm.Interpreter (this);
-                       inter.Validate ();
-                       return inter.CreateDelegate ();
+#if FULL_AOT_RUNTIME
+                       return new System.Linq.jvm.Runner (this).CreateDelegate ();
 #else
                        var context = new CompilationContext ();
                        context.AddCompilationUnit (this);
                        return context.CreateDelegate ();
 #endif
                }
+
+#if FULL_AOT_RUNTIME
+               internal Delegate Compile (System.Linq.jvm.ExpressionInterpreter interpreter)
+               {
+                       return new System.Linq.jvm.Runner (this, interpreter).CreateDelegate ();
+               }
+#endif
        }
 }