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);
         }

Reply via email to