|
@@ -211,6 +211,8 @@ def get_superclasses(a, b, **remainder):
|
|
worklist = set([name_value])
|
|
worklist = set([name_value])
|
|
found = set([])
|
|
found = set([])
|
|
|
|
|
|
|
|
+ cache_value = {}
|
|
|
|
+
|
|
while worklist:
|
|
while worklist:
|
|
name = worklist.pop()
|
|
name = worklist.pop()
|
|
if name in found:
|
|
if name in found:
|
|
@@ -233,8 +235,11 @@ def get_superclasses(a, b, **remainder):
|
|
edge, = yield [("RE", [link])]
|
|
edge, = yield [("RE", [link])]
|
|
src, dst = edge
|
|
src, dst = edge
|
|
# Look up dst's name and add it
|
|
# Look up dst's name and add it
|
|
- dst_name, = yield [("CALL_ARGS", [reverseKeyLookup, [model_dict, dst]])]
|
|
|
|
- dst_name_value, = yield [("RV", [dst_name])]
|
|
|
|
|
|
+ if dst not in cache_value:
|
|
|
|
+ dst_name, = yield [("CALL_ARGS", [reverseKeyLookup, [model_dict, dst]])]
|
|
|
|
+ dst_name_value, = yield [("RV", [dst_name])]
|
|
|
|
+ cache_value[dst] = dst_name_value
|
|
|
|
+ dst_name_value = cache_value[dst]
|
|
worklist.add(dst_name_value)
|
|
worklist.add(dst_name_value)
|
|
|
|
|
|
result, = yield [("CN", [])]
|
|
result, = yield [("CN", [])]
|