2010-03-17 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mcs / ilasm / codegen / GenericMethodSig.cs
index 1d7d4d688f883ef9a2693c42bf521a43a085f7cf..e8c74bec130a96f1542b8da63ca148d29fa16576 100644 (file)
@@ -8,6 +8,7 @@
 //
 
 using System;
+using System.Collections;
 
 namespace Mono.ILASM {
 
@@ -17,6 +18,8 @@ namespace Mono.ILASM {
                 private bool is_resolved;
                 private PEAPI.GenericMethodSig sig;
 
+                private static Hashtable sig_table;
+
                 public GenericMethodSig (GenericArguments gen_args)
                 {
                         this.gen_args = gen_args;
@@ -38,6 +41,22 @@ namespace Mono.ILASM {
                         return sig;
                 }
 
+                public static GenericMethodSig GetInstance (GenericArguments gen_args)
+                {
+                        GenericMethodSig sig = null;
+
+                        if (sig_table == null)
+                                sig_table = new Hashtable ();
+                        else
+                                sig = (GenericMethodSig) sig_table [gen_args.ToString ()];
+
+                        if (sig == null) {
+                                sig = new GenericMethodSig (gen_args);
+                                sig_table [gen_args.ToString ()] = sig;
+                        }
+                        
+                        return sig;
+                }
         }
 
 }