8238076: Fix OpenJDK 7 Bootstrap Broken by JFR Backport

Thu, 30 Jan 2020 00:21:06 +0000

author
andrew
date
Thu, 30 Jan 2020 00:21:06 +0000
changeset 9890
429bb572ee65
parent 9889
63a1206b8286
child 9891
4904bded9702

8238076: Fix OpenJDK 7 Bootstrap Broken by JFR Backport
Summary: Avoid use of lambdas and StringJoiner so GenerateJfrFiles builds with OpenJDK 7
Reviewed-by: shade

make/aix/makefiles/rules.make file | annotate | diff | comparison | revisions
make/bsd/makefiles/rules.make file | annotate | diff | comparison | revisions
make/linux/makefiles/rules.make file | annotate | diff | comparison | revisions
make/solaris/makefiles/rules.make file | annotate | diff | comparison | revisions
make/windows/makefiles/rules.make file | annotate | diff | comparison | revisions
src/share/vm/jfr/GenerateJfrFiles.java file | annotate | diff | comparison | revisions
     1.1 --- a/make/aix/makefiles/rules.make	Fri Jan 17 17:32:41 2020 +0800
     1.2 +++ b/make/aix/makefiles/rules.make	Thu Jan 30 00:21:06 2020 +0000
     1.3 @@ -126,8 +126,8 @@
     1.4  RUN.JAR$(MAKE_VERBOSE) += >/dev/null
     1.5  
     1.6  # Settings for javac
     1.7 -BOOT_SOURCE_LANGUAGE_VERSION = 6
     1.8 -BOOT_TARGET_CLASS_VERSION = 6
     1.9 +BOOT_SOURCE_LANGUAGE_VERSION = 7
    1.10 +BOOT_TARGET_CLASS_VERSION = 7
    1.11  JAVAC_FLAGS = -g -encoding ascii
    1.12  BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
    1.13  
     2.1 --- a/make/bsd/makefiles/rules.make	Fri Jan 17 17:32:41 2020 +0800
     2.2 +++ b/make/bsd/makefiles/rules.make	Thu Jan 30 00:21:06 2020 +0000
     2.3 @@ -126,8 +126,8 @@
     2.4  RUN.JAR$(MAKE_VERBOSE) += >/dev/null
     2.5  
     2.6  # Settings for javac
     2.7 -BOOT_SOURCE_LANGUAGE_VERSION = 8
     2.8 -BOOT_TARGET_CLASS_VERSION = 8
     2.9 +BOOT_SOURCE_LANGUAGE_VERSION = 7
    2.10 +BOOT_TARGET_CLASS_VERSION = 7
    2.11  JAVAC_FLAGS = -g -encoding ascii
    2.12  BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
    2.13  
     3.1 --- a/make/linux/makefiles/rules.make	Fri Jan 17 17:32:41 2020 +0800
     3.2 +++ b/make/linux/makefiles/rules.make	Thu Jan 30 00:21:06 2020 +0000
     3.3 @@ -126,8 +126,8 @@
     3.4  RUN.JAR$(MAKE_VERBOSE) += >/dev/null
     3.5  
     3.6  # Settings for javac
     3.7 -BOOT_SOURCE_LANGUAGE_VERSION = 8
     3.8 -BOOT_TARGET_CLASS_VERSION = 8
     3.9 +BOOT_SOURCE_LANGUAGE_VERSION = 7
    3.10 +BOOT_TARGET_CLASS_VERSION = 7
    3.11  JAVAC_FLAGS = -g -encoding ascii
    3.12  BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
    3.13  
     4.1 --- a/make/solaris/makefiles/rules.make	Fri Jan 17 17:32:41 2020 +0800
     4.2 +++ b/make/solaris/makefiles/rules.make	Thu Jan 30 00:21:06 2020 +0000
     4.3 @@ -118,8 +118,8 @@
     4.4  RUN.JAR$(MAKE_VERBOSE) += >/dev/null
     4.5  
     4.6  # Settings for javac
     4.7 -BOOT_SOURCE_LANGUAGE_VERSION = 8
     4.8 -BOOT_TARGET_CLASS_VERSION = 8
     4.9 +BOOT_SOURCE_LANGUAGE_VERSION = 7
    4.10 +BOOT_TARGET_CLASS_VERSION = 7
    4.11  JAVAC_FLAGS = -g -encoding ascii
    4.12  BOOTSTRAP_JAVAC_FLAGS = $(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
    4.13  
     5.1 --- a/make/windows/makefiles/rules.make	Fri Jan 17 17:32:41 2020 +0800
     5.2 +++ b/make/windows/makefiles/rules.make	Thu Jan 30 00:21:06 2020 +0000
     5.3 @@ -44,8 +44,8 @@
     5.4  !endif
     5.5  
     5.6  # Settings for javac
     5.7 -BOOT_SOURCE_LANGUAGE_VERSION=8
     5.8 -BOOT_TARGET_CLASS_VERSION=8
     5.9 +BOOT_SOURCE_LANGUAGE_VERSION=7
    5.10 +BOOT_TARGET_CLASS_VERSION=7
    5.11  JAVAC_FLAGS=-g -encoding ascii
    5.12  BOOTSTRAP_JAVAC_FLAGS=$(JAVAC_FLAGS) -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
    5.13  
     6.1 --- a/src/share/vm/jfr/GenerateJfrFiles.java	Fri Jan 17 17:32:41 2020 +0800
     6.2 +++ b/src/share/vm/jfr/GenerateJfrFiles.java	Thu Jan 30 00:21:06 2020 +0000
     6.3 @@ -9,11 +9,11 @@
     6.4  import java.util.ArrayList;
     6.5  import java.util.Arrays;
     6.6  import java.util.HashMap;
     6.7 +import java.util.Iterator;
     6.8  import java.util.LinkedHashMap;
     6.9 +import java.util.LinkedList;
    6.10  import java.util.List;
    6.11  import java.util.Map;
    6.12 -import java.util.StringJoiner;
    6.13 -import java.util.function.Predicate;
    6.14  
    6.15  import javax.xml.XMLConstants;
    6.16  import javax.xml.parsers.ParserConfigurationException;
    6.17 @@ -73,6 +73,38 @@
    6.18          boolean supportStruct;
    6.19      }
    6.20  
    6.21 +    interface TypePredicate {
    6.22 +        boolean isType(TypeElement type);
    6.23 +    }
    6.24 +
    6.25 +    static class StringJoiner {
    6.26 +        private final CharSequence delimiter;
    6.27 +        private final List<CharSequence> elements;
    6.28 +
    6.29 +        public StringJoiner(CharSequence delimiter) {
    6.30 +            this.delimiter = delimiter;
    6.31 +            elements = new LinkedList<CharSequence>();
    6.32 +        }
    6.33 +
    6.34 +        public StringJoiner add(CharSequence newElement) {
    6.35 +            elements.add(newElement);
    6.36 +            return this;
    6.37 +        }
    6.38 +
    6.39 +        @Override
    6.40 +        public String toString() {
    6.41 +            StringBuilder builder = new StringBuilder();
    6.42 +            Iterator<CharSequence> i = elements.iterator();
    6.43 +            while (i.hasNext()) {
    6.44 +                builder.append(i.next());
    6.45 +                if (i.hasNext()) {
    6.46 +                    builder.append(delimiter);
    6.47 +                }
    6.48 +            }
    6.49 +            return builder.toString();
    6.50 +        }
    6.51 +    }
    6.52 +
    6.53      static class Metadata {
    6.54          final Map<String, TypeElement> types = new LinkedHashMap<>();
    6.55          final Map<String, XmlType> xmlTypes = new HashMap<>();
    6.56 @@ -85,22 +117,37 @@
    6.57          }
    6.58  
    6.59          List<EventElement> getEvents() {
    6.60 -            return getList(t -> t.getClass() == EventElement.class);
    6.61 +            return getList(new TypePredicate() {
    6.62 +                @Override
    6.63 +                public boolean isType(TypeElement t) {
    6.64 +                    return t.getClass() == EventElement.class;
    6.65 +                }
    6.66 +            });
    6.67          }
    6.68  
    6.69          List<TypeElement> getEventsAndStructs() {
    6.70 -            return getList(t -> t.getClass() == EventElement.class || t.supportStruct);
    6.71 +            return getList(new TypePredicate() {
    6.72 +                @Override
    6.73 +                public boolean isType(TypeElement t) {
    6.74 +                    return t.getClass() == EventElement.class || t.supportStruct;
    6.75 +                }
    6.76 +            });
    6.77          }
    6.78  
    6.79          List<TypeElement> getTypesAndStructs() {
    6.80 -            return getList(t -> t.getClass() == TypeElement.class || t.supportStruct);
    6.81 +            return getList(new TypePredicate() {
    6.82 +                @Override
    6.83 +                public boolean isType(TypeElement t) {
    6.84 +                    return t.getClass() == TypeElement.class || t.supportStruct;
    6.85 +                }
    6.86 +            });
    6.87          }
    6.88  
    6.89          @SuppressWarnings("unchecked")
    6.90 -        <T> List<T> getList(Predicate<? super TypeElement> pred) {
    6.91 +        <T> List<T> getList(TypePredicate pred) {
    6.92              List<T> result = new ArrayList<>(types.size());
    6.93              for (TypeElement t : types.values()) {
    6.94 -                if (pred.test(t)) {
    6.95 +                if (pred.isType(t)) {
    6.96                      result.add((T) t);
    6.97                  }
    6.98              }
    6.99 @@ -108,19 +155,39 @@
   6.100          }
   6.101  
   6.102          List<EventElement> getPeriodicEvents() {
   6.103 -            return getList(t -> t.getClass() == EventElement.class && ((EventElement) t).periodic);
   6.104 +            return getList(new TypePredicate() {
   6.105 +                @Override
   6.106 +                public boolean isType(TypeElement t) {
   6.107 +                    return t.getClass() == EventElement.class && ((EventElement) t).periodic;
   6.108 +                }
   6.109 +            });
   6.110          }
   6.111  
   6.112          List<TypeElement> getNonEventsAndNonStructs() {
   6.113 -            return getList(t -> t.getClass() != EventElement.class && !t.supportStruct);
   6.114 +            return getList(new TypePredicate() {
   6.115 +                @Override
   6.116 +                public boolean isType(TypeElement t) {
   6.117 +                    return t.getClass() != EventElement.class && !t.supportStruct;
   6.118 +                }
   6.119 +            });
   6.120          }
   6.121  
   6.122          List<TypeElement> getTypes() {
   6.123 -            return getList(t -> t.getClass() == TypeElement.class && !t.supportStruct);
   6.124 +            return getList(new TypePredicate() {
   6.125 +                @Override
   6.126 +                public boolean isType(TypeElement t) {
   6.127 +                    return t.getClass() == TypeElement.class && !t.supportStruct;
   6.128 +                }
   6.129 +            });
   6.130          }
   6.131  
   6.132          List<TypeElement> getStructs() {
   6.133 -            return getList(t -> t.getClass() == TypeElement.class && t.supportStruct);
   6.134 +            return getList(new TypePredicate() {
   6.135 +                @Override
   6.136 +                public boolean isType(TypeElement t) {
   6.137 +                    return t.getClass() == TypeElement.class && t.supportStruct;
   6.138 +                }
   6.139 +            });
   6.140          }
   6.141  
   6.142          void verify()  {

mercurial