This is an automated email from the ASF dual-hosted git repository. emilles pushed a commit to branch GROOVY-11841 in repository https://gitbox.apache.org/repos/asf/groovy.git
commit bebc51f3274b35d608bbbbdef6aabb2683e64610 Author: Eric Milles <[email protected]> AuthorDate: Thu Jan 15 08:51:59 2026 -0600 GROOVY-11841: use `ConcurrentHashMap` for mutable property index maps --- src/main/java/groovy/lang/MetaClassImpl.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java index 3995facfe9..61e6a2c0d5 100644 --- a/src/main/java/groovy/lang/MetaClassImpl.java +++ b/src/main/java/groovy/lang/MetaClassImpl.java @@ -154,12 +154,13 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass { protected final boolean isMap; protected final MetaMethodIndex metaMethodIndex; - private static Map<String, MetaProperty> subMap(Map<CachedClass, LinkedHashMap<String, MetaProperty>> map, CachedClass key) { + private static Map<String, MetaProperty> subMap(Map<CachedClass, Map<String, MetaProperty>> map, CachedClass key) { return map.computeIfAbsent(key, k -> new LinkedHashMap<>()); } - private final Map<CachedClass, LinkedHashMap<String, MetaProperty>> classPropertyIndexForSuper = new LinkedHashMap<>(); - private final Map<CachedClass, LinkedHashMap<String, MetaProperty>> classPropertyIndex = new LinkedHashMap<>(); - private final Map<String, MetaProperty> staticPropertyIndex = new LinkedHashMap<>(); + private final Map<CachedClass, Map<String, MetaProperty>> classPropertyIndexForSuper = new ConcurrentHashMap<>(); + private final Map<CachedClass, Map<String, MetaProperty>> classPropertyIndex = new ConcurrentHashMap<>(); + private final Map<String, MetaProperty> staticPropertyIndex = new ConcurrentHashMap<>(); + private final Map<String, MetaMethod> listeners = new LinkedHashMap<>(); private final List<MetaMethod> allMethods = new ArrayList<>(); private final Set<MetaMethod> newGroovyMethodsSet = new LinkedHashSet<>(); @@ -2486,7 +2487,7 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass { } } - private void applyStrayPropertyMethods(Iterable<CachedClass> classes, Map<CachedClass, LinkedHashMap<String, MetaProperty>> propertyIndex, boolean isThis) { + private void applyStrayPropertyMethods(Iterable<CachedClass> classes, Map<CachedClass, Map<String, MetaProperty>> propertyIndex, boolean isThis) { for (CachedClass cc : classes) { applyStrayPropertyMethods(cc, subMap(propertyIndex, cc), isThis); }
