From 5be4bf4dce4243bf0aadb9947fbe2af3b7e7bf6a Mon Sep 17 00:00:00 2001 From: Toine Hartman Date: Thu, 22 Oct 2026 18:15:58 +0200 Subject: [PATCH] Share location type strings in memory. --- .../compiler/lang/rascalcore/check/Summary.rsc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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);