diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/Summary.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/Summary.rsc index 47433ff8ce3..86639cb003b 100644 --- a/src/org/rascalmpl/compiler/lang/rascalcore/check/Summary.rsc +++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/Summary.rsc @@ -68,9 +68,13 @@ data ModuleSummary = map[loc def, str synopsis] synopses = (), map[loc def, loc docLoc] docLocs = ()); -private map[loc from, str tp] getLocationTypes(TModel tm) - = (key : prettyAType(tm.specializedFacts[key] ? tm.facts[key]) | key <- tm.facts); - +private map[loc from, str tp] getLocationTypes(TModel tm) { + // Share strings in memory to reduce summary memory pressure + @memo str cachedPrettyAType(AType tp) = prettyAType(tp); + + return (key : cachedPrettyAType(tm.specializedFacts[key] ? tm.facts[key]) | key <- tm.facts); +} + ModuleSummary makeSummary(TModel tm, str qualifiedModuleName) { if (!tm.usesPhysicalLocs) { tm = convertTModel2PhysicalLocs(tm);