In codegen:
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 31 Dec 2007 14:35:05 +0000 (14:35 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 31 Dec 2007 14:35:05 +0000 (14:35 -0000)
2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>

* SwitchInstr.cs (Emit): Switch from using strings
to LabelInfo.

In parser:
2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
* ILParser.jay: Create LabelInfo instances for switch labels,
this allows the code generator to spot invalid labels.
Fixes #350480.

svn path=/trunk/mcs/; revision=92061

mcs/ilasm/codegen/ChangeLog
mcs/ilasm/codegen/SwitchInstr.cs
mcs/ilasm/parser/ChangeLog
mcs/ilasm/parser/ILParser.jay

index f3de34daf0bd06b802affaae8929fd89af3aff59..c4f8f141a8734086b42f6736b34fc6a75ffcafcb 100644 (file)
@@ -1,3 +1,8 @@
+2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * SwitchInstr.cs (Emit): Switch from using strings
+       to LabelInfo.
+
 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
 
        * MethodPointerTypeRef.cs (.ctor): generate
index 5b6178ee15bf9b3783e00f623051458753755927..810e779628db8ccd0489308ec2f6038daf7655a2 100644 (file)
@@ -32,8 +32,8 @@ namespace Mono.ILASM {
                         if (label_list != null) {
                                 label_array = new PEAPI.CILLabel[label_list.Count];
                                 foreach (object lab in label_list) {
-                                        if (lab is string) {
-                                                label_array[count++] = meth.GetLabelDef ((string) lab);
+                                        if (lab is LabelInfo) {
+                                                label_array[count++] = ((LabelInfo)lab).Label;
                                         } else {                                                
                                                 throw new InternalErrorException ("offsets in switch statements.");
                                         }
index 62578cc2c1115efe4cb327e72fb0c99f4718d640..dbec8c35cf79a8a19cd422311e8fd87de4740c7c 100644 (file)
@@ -1,4 +1,10 @@
-2006-06-05  Rodrigo Kumpera <kumpera@gmail.com>
+2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * ILParser.jay: Create LabelInfo instances for switch labels,
+       this allows the code generator to spot invalid labels.
+       Fixes #350480.
+
+2007-06-05  Rodrigo Kumpera <kumpera@gmail.com>
 
        * ILParser.jay: Support for variance related generic modifiers <+T> and <-T> 
 
index c88d1bdd51cf196a163883f02ba6a6bcc0c33b31..9164b67ba1977d366aff4cd35d37e944acdf454e 100644 (file)
@@ -2602,7 +2602,7 @@ labels                    : /* EMPTY */
                        | id\r
                           {\r
                                 ArrayList label_list = new ArrayList ();\r
-                                label_list.Add ($1);\r
+                                label_list.Add (codegen.CurrentMethodDef.AddLabelRef ((string) $1));\r
                                 $$ = label_list;\r
                           }\r
                        | int32\r
@@ -2614,7 +2614,7 @@ labels                    : /* EMPTY */
                        | labels COMMA id\r
                           {\r
                                 ArrayList label_list = (ArrayList) $1;\r
-                                label_list.Add ($3);\r
+                                label_list.Add (codegen.CurrentMethodDef.AddLabelRef ((string) $3));\r
                           }\r
                        | labels COMMA int32\r
                           {\r