Type details are no longer need when emitting ldloc
authorMarek Safar <marek.safar@gmail.com>
Wed, 20 Jul 2011 17:30:07 +0000 (18:30 +0100)
committerMarek Safar <marek.safar@gmail.com>
Wed, 20 Jul 2011 17:32:22 +0000 (18:32 +0100)
mcs/mcs/assign.cs
mcs/mcs/codegen.cs
mcs/mcs/ecore.cs
mcs/mcs/iterators.cs
mcs/mcs/statement.cs

index 292c4cac6f5c5222dee352fa5443c3ce4f5f16cd..95ca88d4a8ca62c2c5ac129a73ce5f91bc7be7d0 100644 (file)
@@ -228,7 +228,7 @@ namespace Mono.CSharp {
                        if (builder == null)
                                throw new InternalErrorException ("Emit without Store, or after Release");
 
-                       ec.Emit (OpCodes.Ldloc, builder, type);
+                       ec.Emit (OpCodes.Ldloc, builder);
                }
 
                #region IAssignMethod Members
@@ -265,7 +265,7 @@ namespace Mono.CSharp {
                        if (builder == null)
                                builder = ec.GetTemporaryLocal (type);
 
-                       ec.Emit (OpCodes.Stloc, builder, type);
+                       ec.Emit (OpCodes.Stloc, builder);
                }
 
                public void AddressOf (EmitContext ec, AddressOp mode)
@@ -278,9 +278,9 @@ namespace Mono.CSharp {
                                // if is_address, than this is just the address anyways,
                                // so we just return this.
                                //
-                               ec.Emit (OpCodes.Ldloc, builder, type);
+                               ec.Emit (OpCodes.Ldloc, builder);
                        } else {
-                               ec.Emit (OpCodes.Ldloca, builder, type);
+                               ec.Emit (OpCodes.Ldloca, builder);
                        }
                }
        }
index fc47d2bc6120644dae1b4315463aab8d9ecf93dc..a30ed926c69ad55fe823ea0243b8e62e639fc07a 100644 (file)
@@ -280,7 +280,7 @@ namespace Mono.CSharp
                        ig.Emit (opcode);
                }
 
-               public void Emit (OpCode opcode, LocalBuilder local, TypeSpec type)
+               public void Emit (OpCode opcode, LocalBuilder local)
                {
                        ig.Emit (opcode, local);
                }
index 8b41e185481381d377e56d7652774c28436e774d..9da600c8e61107f72f987ef1cbdc4c500b60e69e 100644 (file)
@@ -524,14 +524,14 @@ namespace Mono.CSharp {
 
                        // Create temporary local (we cannot load this before Emit)
                        var temp = ec.GetTemporaryLocal (type);
-                       ec.Emit (OpCodes.Stloc, temp, type);
+                       ec.Emit (OpCodes.Stloc, temp);
 
                        //
                        // Store the result to temporary field
                        //
                        var field = ec.GetTemporaryField (type);
                        ec.EmitThis ();
-                       ec.Emit (OpCodes.Ldloc, temp, type);
+                       ec.Emit (OpCodes.Ldloc, temp);
                        field.EmitAssignFromStack (ec);
 
                        ec.FreeTemporaryLocal (temp, type);
@@ -5405,8 +5405,8 @@ namespace Mono.CSharp {
                        if (need_copy) {
                                Emit (ec);
                                var temp = ec.GetTemporaryLocal (type);
-                               ec.Emit (OpCodes.Stloc, temp, type);
-                               ec.Emit (OpCodes.Ldloca, temp, type);
+                               ec.Emit (OpCodes.Stloc, temp);
+                               ec.Emit (OpCodes.Ldloca, temp);
                                ec.FreeTemporaryLocal (temp, type);
                                return;
                        }
index 7023b6c244a151b77d6d45ee097d4fe81b5163df..2d8887ff943f996f55fc8f466078e37984127dbd 100644 (file)
@@ -711,7 +711,7 @@ namespace Mono.CSharp
                                current_pc = ec.GetTemporaryLocal (ec.BuiltinTypes.UInt);
                                ec.EmitThis ();
                                ec.Emit (OpCodes.Ldfld, storey.PC.Spec);
-                               ec.Emit (OpCodes.Stloc, current_pc, ec.BuiltinTypes.UInt);
+                               ec.Emit (OpCodes.Stloc, current_pc);
                        }
 
                        ec.EmitThis ();
@@ -724,7 +724,7 @@ namespace Mono.CSharp
 
                        if (labels != null) {
                                //SymbolWriter.StartIteratorDispatcher (ec.ig);
-                               ec.Emit (OpCodes.Ldloc, current_pc, ec.BuiltinTypes.UInt);
+                               ec.Emit (OpCodes.Ldloc, current_pc);
                                ec.Emit (OpCodes.Switch, labels);
                                //SymbolWriter.EndIteratorDispatcher (ec.ig);
 
@@ -778,7 +778,7 @@ namespace Mono.CSharp
                        current_pc = ec.GetTemporaryLocal (ec.BuiltinTypes.UInt);
                        ec.EmitThis ();
                        ec.Emit (OpCodes.Ldfld, storey.PC.Spec);
-                       ec.Emit (OpCodes.Stloc, current_pc, ec.BuiltinTypes.UInt);
+                       ec.Emit (OpCodes.Stloc, current_pc);
 
                        // We're actually in state 'running', but this is as good a PC value as any if there's an abnormal exit
                        ec.EmitThis ();
@@ -798,11 +798,11 @@ namespace Mono.CSharp
                        if (need_skip_finally) {
                                skip_finally = ec.GetTemporaryLocal (ec.BuiltinTypes.Bool);
                                ec.EmitInt (0);
-                               ec.Emit (OpCodes.Stloc, skip_finally, ec.BuiltinTypes.Bool);
+                               ec.Emit (OpCodes.Stloc, skip_finally);
                        }
 
                        SymbolWriter.StartIteratorDispatcher (ec);
-                       ec.Emit (OpCodes.Ldloc, current_pc, ec.BuiltinTypes.UInt);
+                       ec.Emit (OpCodes.Ldloc, current_pc);
                        ec.Emit (OpCodes.Switch, labels);
 
                        ec.Emit (OpCodes.Br, move_next_error);
@@ -877,7 +877,7 @@ namespace Mono.CSharp
                        // mark finally blocks as disabled
                        if (unwind_protect && skip_finally != null) {
                                ec.EmitInt (1);
-                               ec.Emit (OpCodes.Stloc, skip_finally, ec.Module.Compiler.BuiltinTypes.Bool);
+                               ec.Emit (OpCodes.Stloc, skip_finally);
                        }
                }
        }
index 7fa79c6f64dafd3581b7141a4cf96b17cbe46021..78b52422ba56e21f1be776def8c68c120ad1b739 100644 (file)
@@ -837,7 +837,7 @@ namespace Mono.CSharp {
                                }
 
                                if (unwind_protect)
-                                       ec.Emit (OpCodes.Stloc, ec.TemporaryReturn (), ec.ReturnType);
+                                       ec.Emit (OpCodes.Stloc, ec.TemporaryReturn ());
                        }
 
                        if (unwind_protect)
@@ -1693,7 +1693,7 @@ namespace Mono.CSharp {
                        if ((flags & Flags.CompilerGenerated) != 0)
                                CreateBuilder (ec);
 
-                       ec.Emit (OpCodes.Ldloc, builder, type);
+                       ec.Emit (OpCodes.Ldloc, builder);
                }
 
                public void EmitAssign (EmitContext ec)
@@ -1702,12 +1702,12 @@ namespace Mono.CSharp {
                        if ((flags & Flags.CompilerGenerated) != 0)
                                CreateBuilder (ec);
 
-                       ec.Emit (OpCodes.Stloc, builder, type);
+                       ec.Emit (OpCodes.Stloc, builder);
                }
 
                public void EmitAddressOf (EmitContext ec)
                {
-                       ec.Emit (OpCodes.Ldloca, builder, type);
+                       ec.Emit (OpCodes.Ldloca, builder);
                }
 
                public string GetReadOnlyContext ()
@@ -3029,7 +3029,7 @@ namespace Mono.CSharp {
                                ec.MarkLabel (ec.ReturnLabel);
 
                        if (ec.return_value != null) {
-                               ec.Emit (OpCodes.Ldloc, ec.return_value, ec.ReturnType);
+                               ec.Emit (OpCodes.Ldloc, ec.return_value);
                                ec.Emit (OpCodes.Ret);
                        } else {
                                //
@@ -3047,7 +3047,7 @@ namespace Mono.CSharp {
 
                                if (ec.HasReturnLabel || !unreachable) {
                                        if (ec.ReturnType.Kind != MemberKind.Void)
-                                               ec.Emit (OpCodes.Ldloc, ec.TemporaryReturn (), ec.ReturnType);
+                                               ec.Emit (OpCodes.Ldloc, ec.TemporaryReturn ());
                                        ec.Emit (OpCodes.Ret);
                                }
                        }
@@ -3994,7 +3994,7 @@ namespace Mono.CSharp {
 
                        if (resume_points != null) {
                                ec.EmitInt ((int) IteratorStorey.State.Running);
-                               ec.Emit (OpCodes.Stloc, iter.CurrentPC, ec.BuiltinTypes.UInt);
+                               ec.Emit (OpCodes.Stloc, iter.CurrentPC);
                        }
 
                        ec.BeginExceptionBlock ();
@@ -4004,7 +4004,7 @@ namespace Mono.CSharp {
 
                                // For normal control flow, we want to fall-through the Switch
                                // So, we use CurrentPC rather than the $PC field, and initialize it to an outside value above
-                               ec.Emit (OpCodes.Ldloc, iter.CurrentPC, ec.BuiltinTypes.UInt);
+                               ec.Emit (OpCodes.Ldloc, iter.CurrentPC);
                                ec.EmitInt (first_resume_pc);
                                ec.Emit (OpCodes.Sub);
 
@@ -4020,7 +4020,7 @@ namespace Mono.CSharp {
 
                        Label start_finally = ec.DefineLabel ();
                        if (resume_points != null) {
-                               ec.Emit (OpCodes.Ldloc, iter.SkipFinally, ec.BuiltinTypes.Bool);
+                               ec.Emit (OpCodes.Ldloc, iter.SkipFinally);
                                ec.Emit (OpCodes.Brfalse_S, start_finally);
                                ec.Emit (OpCodes.Endfinally);
                        }
@@ -4109,7 +4109,7 @@ namespace Mono.CSharp {
 
                                if (emit_dispatcher) {
                                        //SymbolWriter.StartIteratorDispatcher (ec.ig);
-                                       ec.Emit (OpCodes.Ldloc, pc, ec.BuiltinTypes.UInt);
+                                       ec.Emit (OpCodes.Ldloc, pc);
                                        ec.EmitInt (first_resume_pc);
                                        ec.Emit (OpCodes.Sub);
                                        ec.Emit (OpCodes.Switch, labels);