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 db96c928511f56037fa16aa25cab35cd01faccba
Author: Eric Milles <[email protected]>
AuthorDate: Thu Jan 15 08:56:35 2026 -0600

    GROOVY-11841: use `ConcurrentHashMap` for mutable property index maps
---
 src/main/java/groovy/lang/MetaClassImpl.java | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/main/java/groovy/lang/MetaClassImpl.java 
b/src/main/java/groovy/lang/MetaClassImpl.java
index ac6e5ead70..36fe87d98b 100644
--- a/src/main/java/groovy/lang/MetaClassImpl.java
+++ b/src/main/java/groovy/lang/MetaClassImpl.java
@@ -153,12 +153,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<CachedClass, Map<String, MetaProperty>> 
classPropertyIndexForSuper = new ConcurrentHashMap<>();
+    private final Map<CachedClass, Map<String, MetaProperty>> 
classPropertyIndex = new ConcurrentHashMap<>();
     private final Map<String, MetaProperty> staticPropertyIndex = new 
LinkedHashMap<>();
+
     private final Map<String, MetaMethod> listeners = new LinkedHashMap<>();
     private final List<MetaMethod> allMethods = new ArrayList<>();
     private final Set<MetaMethod> newGroovyMethodsSet = new LinkedHashSet<>();
@@ -2483,7 +2484,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