From a645f0976ca595686811573a3c1d7b7b7484fc3c Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Fri, 28 Nov 2014 20:55:50 -0500 Subject: [PATCH] model: cache types in a hashmap instead of in a list Signed-off-by: Jean Privat --- src/model/model.nit | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/model/model.nit b/src/model/model.nit index 9be5738..fa9c4d4 100644 --- a/src/model/model.nit +++ b/src/model/model.nit @@ -388,7 +388,7 @@ class MClass self.mparameters = mparametertypes var mclass_type = new MGenericType(self, mparametertypes) self.mclass_type = mclass_type - self.get_mtype_cache.add(mclass_type) + self.get_mtype_cache[mparametertypes] = mclass_type else self.mclass_type = new MClassType(self) end @@ -458,17 +458,14 @@ class MClass do assert mtype_arguments.length == self.arity if self.arity == 0 then return self.mclass_type - for t in self.get_mtype_cache do - if t.arguments == mtype_arguments then - return t - end - end - var res = new MGenericType(self, mtype_arguments) - self.get_mtype_cache.add res + var res = get_mtype_cache.get_or_null(mtype_arguments) + if res != null then return res + res = new MGenericType(self, mtype_arguments) + self.get_mtype_cache[mtype_arguments.to_a] = res return res end - private var get_mtype_cache = new Array[MGenericType] + private var get_mtype_cache = new HashMap[Array[MType], MGenericType] end -- 1.7.9.5