Forráskód Böngészése

Faster read_attribute code by preventing 1 reverseKeyLookup from happening

Yentl Van Tendeloo 8 éve
szülő
commit
61785b66fc
1 módosított fájl, 4 hozzáadás és 5 törlés
  1. 4 5
      bootstrap/modelling.alc

+ 4 - 5
bootstrap/modelling.alc

@@ -158,7 +158,6 @@ Element function get_subclasses(model : Element, name : String):
 
 	nodes = create_node()
 	set_add(nodes, name)
-	inheritance = "Inheritance"
 
 	// Initialize empty set
 	result = create_node()
@@ -173,7 +172,7 @@ Element function get_subclasses(model : Element, name : String):
 			j = 0
 			while (j < num_edges):
 				edge = read_in(model["model"][elem], j)
-				if (value_eq(model["type_mapping"][reverseKeyLookup(model["model"], edge)], inheritance)):
+				if (value_eq(model["type_mapping"][reverseKeyLookup(model["model"], edge)], "Inheritance")):
 					set_add(nodes, reverseKeyLookup(model["model"], read_edge_src(edge)))
 				j = j + 1
 
@@ -379,7 +378,7 @@ Element function read_attribute(model : Element, element : String, attribute : S
 	Integer i
 	Integer count
 	Element edge
-	String edge_type_name
+	Element edge_type
 	Element elem
 	Element typing
 	Element name
@@ -394,8 +393,8 @@ Element function read_attribute(model : Element, element : String, attribute : S
 			edge = read_out(elem, i)
 			name = reverseKeyLookup(model["model"], edge)
 			if (dict_in(typing, name)):
-				edge_type_name = typing[name]
-				if (edge_type_name == reverseKeyLookup(model["metamodel"]["model"], dict_read_edge(read_edge_src(model["metamodel"]["model"][edge_type_name]), attribute))):
+				edge_type = model["metamodel"]["model"][typing[name]]
+				if (element_eq(edge_type, dict_read_edge(read_edge_src(edge_type), attribute))):
 					return read_edge_dst(edge)!
 			i = i + 1