You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2023/07/30 16:29:11 UTC

[groovy] branch master updated: Cache `elementTypeTargetMap`

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/master by this push:
     new dadcdffb66 Cache `elementTypeTargetMap`
dadcdffb66 is described below

commit dadcdffb6668d5775b9b08b6bcd102b3e7fb067a
Author: Daniel Sun <su...@apache.org>
AuthorDate: Mon Jul 31 00:28:46 2023 +0800

    Cache `elementTypeTargetMap`
---
 src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java | 8 ++++++--
 src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java   | 8 ++++++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java b/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java
index c282e1366f..7c438c2504 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java
@@ -39,6 +39,7 @@ import java.util.stream.Collectors;
  * Additional Java 16 based functions will be added here as needed.
  */
 public class Java16 extends Java10 {
+    private Map<ElementType, Integer> elementTypeTargetMap;
 
     @Override
     public int getVersion() {
@@ -47,8 +48,11 @@ public class Java16 extends Java10 {
 
     @Override
     protected Map<ElementType, Integer> getElementTypeTargetMap() {
-        Map<ElementType, Integer> elementTypeTargetMap = new EnumMap<>(super.getElementTypeTargetMap());
-        elementTypeTargetMap.put(ElementType.RECORD_COMPONENT, AnnotationNode.RECORD_COMPONENT_TARGET);
+        if (null == elementTypeTargetMap) {
+            Map<ElementType, Integer> ettm = new EnumMap<>(super.getElementTypeTargetMap());
+            ettm.put(ElementType.RECORD_COMPONENT, AnnotationNode.RECORD_COMPONENT_TARGET);
+            elementTypeTargetMap = ettm;
+        }
         return elementTypeTargetMap;
     }
 
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java
index 13b547880c..5f8fbfd37a 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java
@@ -62,6 +62,7 @@ import java.util.logging.Logger;
 import java.util.stream.Collectors;
 
 public class Java9 extends Java8 {
+    private Map<ElementType, Integer> elementTypeTargetMap;
 
     @Override
     public int getVersion() {
@@ -70,8 +71,11 @@ public class Java9 extends Java8 {
 
     @Override
     protected Map<ElementType, Integer> getElementTypeTargetMap() {
-        Map<ElementType, Integer> elementTypeTargetMap = new EnumMap<>(super.getElementTypeTargetMap());
-        elementTypeTargetMap.put(ElementType.MODULE, AnnotationNode.TYPE_TARGET); // TODO Add MODULE_TARGET too?
+        if (null == elementTypeTargetMap) {
+            Map<ElementType, Integer> ettm = new EnumMap<>(super.getElementTypeTargetMap());
+            ettm.put(ElementType.MODULE, AnnotationNode.TYPE_TARGET); // TODO Add MODULE_TARGET too?
+            elementTypeTargetMap = ettm;
+        }
         return elementTypeTargetMap;
     }