--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.activation-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.activation
+header exports javax/activation requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;0,name\u0020;java.datatransfer\u0020;flags\u0020;20 target linux-amd64 flags 8000 runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.base-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,310 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.base
+header exports java/io,java/lang,java/lang/annotation,java/lang/invoke,java/lang/module,java/lang/ref,java/lang/reflect,java/math,java/net,java/net/spi,java/nio,java/nio/channels,java/nio/channels/spi,java/nio/charset,java/nio/charset/spi,java/nio/file,java/nio/file/attribute,java/nio/file/spi,java/security,java/security/acl,java/security/cert,java/security/interfaces,java/security/spec,java/text,java/text/spi,java/time,java/time/chrono,java/time/format,java/time/temporal,java/time/zone,java/util,java/util/concurrent,java/util/concurrent/atomic,java/util/concurrent/locks,java/util/function,java/util/jar,java/util/regex,java/util/spi,java/util/stream,java/util/zip,javax/crypto,javax/crypto/interfaces,javax/crypto/spec,javax/net,javax/net/ssl,javax/security/auth,javax/security/auth/callback,javax/security/auth/login,javax/security/auth/spi,javax/security/auth/x500,javax/security/cert uses java/lang/System$LoggerFinder,java/net/ContentHandlerFactory,java/net/spi/URLStreamHandlerProvider,java/nio/channels/spi/AsynchronousChannelProvider,java/nio/channels/spi/SelectorProvider,java/nio/charset/spi/CharsetProvider,java/nio/file/spi/FileSystemProvider,java/nio/file/spi/FileTypeDetector,java/security/Provider,java/text/spi/BreakIteratorProvider,java/text/spi/CollatorProvider,java/text/spi/DateFormatProvider,java/text/spi/DateFormatSymbolsProvider,java/text/spi/DecimalFormatSymbolsProvider,java/text/spi/NumberFormatProvider,java/time/chrono/AbstractChronology,java/time/chrono/Chronology,java/time/zone/ZoneRulesProvider,java/util/spi/CalendarDataProvider,java/util/spi/CalendarNameProvider,java/util/spi/CurrencyNameProvider,java/util/spi/LocaleNameProvider,java/util/spi/ResourceBundleControlProvider,java/util/spi/ResourceBundleProvider,java/util/spi/TimeZoneNameProvider,java/util/spi/ToolProvider,javax/security/auth/spi/LoginModule,jdk/internal/logger/DefaultLoggerFinder,sun/security/ssl/ClientKeyExchangeService,sun/text/spi/JavaTimeDateTimePatternProvider,sun/util/locale/provider/LocaleDataMetaInfo,sun/util/resources/LocaleData$CommonResourceBundleProvider,sun/util/resources/LocaleData$SupplementaryResourceBundleProvider,sun/util/spi/CalendarProvider provides interface\u0020;java/nio/file/spi/FileSystemProvider\u0020;impls\u0020;jdk/internal/jrtfs/JrtFileSystemProvider target linux-amd64 flags 8000
+
+class name java/io/ByteArrayOutputStream
+method name toString descriptor (Ljava/nio/charset/Charset;)Ljava/lang/String; flags 21
+
+class name java/io/FileInputStream
+-method name finalize descriptor ()V
+method name finalize descriptor ()V thrownTypes java/io/IOException flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/io/FileOutputStream
+-method name finalize descriptor ()V
+method name finalize descriptor ()V thrownTypes java/io/IOException flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/io/ObjectStreamClass
+header extends java/lang/Object implements java/io/Serializable flags 21
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
+class name java/io/PrintStream
+method name <init> descriptor (Ljava/io/OutputStream;ZLjava/nio/charset/Charset;)V flags 1
+method name <init> descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;)V thrownTypes java/io/IOException flags 1
+method name <init> descriptor (Ljava/io/File;Ljava/nio/charset/Charset;)V thrownTypes java/io/IOException flags 1
+
+class name java/io/PrintWriter
+method name <init> descriptor (Ljava/io/OutputStream;ZLjava/nio/charset/Charset;)V flags 1
+method name <init> descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;)V thrownTypes java/io/IOException flags 1
+method name <init> descriptor (Ljava/io/File;Ljava/nio/charset/Charset;)V thrownTypes java/io/IOException flags 1
+
+class name java/io/Reader
+method name transferTo descriptor (Ljava/io/Writer;)J thrownTypes java/io/IOException flags 1
+
+class name java/lang/Math
+-method name multiplyHigh descriptor (JJ)J
+method name multiplyHigh descriptor (JJ)J flags 9 runtimeAnnotations @Ljdk/internal/HotSpotIntrinsicCandidate;
+
+class name java/lang/Module
+header extends java/lang/Object implements java/lang/reflect/AnnotatedElement flags 31
+innerclass innerClass java/lang/module/ModuleDescriptor$Version outerClass java/lang/module/ModuleDescriptor innerClassName Version flags 19
+innerclass innerClass java/lang/module/ModuleDescriptor$Exports outerClass java/lang/module/ModuleDescriptor innerClassName Exports flags 19
+innerclass innerClass java/lang/module/ModuleDescriptor$Opens outerClass java/lang/module/ModuleDescriptor innerClassName Opens flags 19
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
+class name java/lang/Runtime
+-method name getLocalizedInputStream descriptor (Ljava/io/InputStream;)Ljava/io/InputStream;
+-method name getLocalizedOutputStream descriptor (Ljava/io/OutputStream;)Ljava/io/OutputStream;
+
+class name java/lang/Runtime$Version
+-method name major descriptor ()I
+-method name minor descriptor ()I
+-method name security descriptor ()I
+method name feature descriptor ()I flags 1
+method name interim descriptor ()I flags 1
+method name update descriptor ()I flags 1
+method name patch descriptor ()I flags 1
+method name major descriptor ()I flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="10")
+method name minor descriptor ()I flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="10")
+method name security descriptor ()I flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="10")
+
+class name java/lang/SecurityManager
+-field name inCheck descriptor Z
+-method name getInCheck descriptor ()Z
+-method name currentClassLoader descriptor ()Ljava/lang/ClassLoader;
+-method name currentLoadedClass descriptor ()Ljava/lang/Class;
+-method name classDepth descriptor (Ljava/lang/String;)I
+-method name classLoaderDepth descriptor ()I
+-method name inClass descriptor (Ljava/lang/String;)Z
+-method name inClassLoader descriptor ()Z
+-method name checkMemberAccess descriptor (Ljava/lang/Class;I)V
+method name checkMemberAccess descriptor (Ljava/lang/Class;I)V flags 1 deprecated true signature (Ljava/lang/Class<*>;I)V runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="1.8")
+
+class name java/lang/StackWalker$StackFrame
+method name getMethodType descriptor ()Ljava/lang/invoke/MethodType; flags 1
+method name getDescriptor descriptor ()Ljava/lang/String; flags 1
+
+class name java/lang/invoke/MethodType
+method name lastParameterType descriptor ()Ljava/lang/Class; flags 1 signature ()Ljava/lang/Class<*>;
+
+class name java/lang/reflect/MalformedParameterizedTypeException
+method name <init> descriptor (Ljava/lang/String;)V flags 1
+
+class name java/net/URLDecoder
+method name decode descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String; flags 9
+
+class name java/net/URLEncoder
+method name encode descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String; flags 9
+
+class name java/nio/channels/Channels
+method name newReader descriptor (Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/Charset;)Ljava/io/Reader; flags 9
+method name newWriter descriptor (Ljava/nio/channels/WritableByteChannel;Ljava/nio/charset/Charset;)Ljava/io/Writer; flags 9
+
+class name java/nio/file/FileStore
+method name getBlockSize descriptor ()J thrownTypes java/io/IOException flags 1
+
+class name java/security/Certificate
+header extends java/lang/Object flags 601 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="1.2")
+
+class name java/security/Identity
+header extends java/lang/Object implements java/security/Principal,java/io/Serializable flags 421 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="1.2")
+
+class name java/security/IdentityScope
+header extends java/security/Identity flags 421 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="1.2")
+
+class name java/security/Signer
+header extends java/security/Identity flags 421 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="1.2")
+
+class name java/security/acl/Acl
+header extends java/lang/Object implements java/security/acl/Owner flags 601 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/security/acl/AclEntry
+header extends java/lang/Object implements java/lang/Cloneable flags 601 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/security/acl/AclNotFoundException
+header extends java/lang/Exception flags 21 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/security/acl/Group
+header extends java/lang/Object implements java/security/Principal flags 601 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/security/acl/LastOwnerException
+header extends java/lang/Exception flags 21 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/security/acl/NotOwnerException
+header extends java/lang/Exception flags 21 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/security/acl/Owner
+header extends java/lang/Object flags 601 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/security/acl/Permission
+header extends java/lang/Object flags 601 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/time/chrono/AbstractChronology
+header extends java/lang/Object implements java/time/chrono/Chronology flags 421 classAnnotations @Ljdk/Profile+Annotation;(value=I1)
+
+class name java/time/chrono/ChronoLocalDate
+header extends java/lang/Object implements java/time/temporal/Temporal,java/time/temporal/TemporalAdjuster,java/lang/Comparable flags 601 signature Ljava/lang/Object;Ljava/time/temporal/Temporal;Ljava/time/temporal/TemporalAdjuster;Ljava/lang/Comparable<Ljava/time/chrono/ChronoLocalDate;>;
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
+class name java/time/chrono/ChronoLocalDateTime
+header extends java/lang/Object implements java/time/temporal/Temporal,java/time/temporal/TemporalAdjuster,java/lang/Comparable flags 601 signature <D::Ljava/time/chrono/ChronoLocalDate;>Ljava/lang/Object;Ljava/time/temporal/Temporal;Ljava/time/temporal/TemporalAdjuster;Ljava/lang/Comparable<Ljava/time/chrono/ChronoLocalDateTime<*>;>;
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
+class name java/time/chrono/ChronoZonedDateTime
+header extends java/lang/Object implements java/time/temporal/Temporal,java/lang/Comparable flags 601 signature <D::Ljava/time/chrono/ChronoLocalDate;>Ljava/lang/Object;Ljava/time/temporal/Temporal;Ljava/lang/Comparable<Ljava/time/chrono/ChronoZonedDateTime<*>;>;
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
+class name java/time/chrono/HijrahEra
+method name getDisplayName descriptor (Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String; flags 1
+
+class name java/time/chrono/MinguoEra
+method name getDisplayName descriptor (Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String; flags 1
+
+class name java/time/chrono/ThaiBuddhistEra
+method name getDisplayName descriptor (Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String; flags 1
+
+class name java/time/format/DateTimeFormatter
+method name localizedBy descriptor (Ljava/util/Locale;)Ljava/time/format/DateTimeFormatter; flags 1
+
+class name java/util/Calendar
+header extends java/lang/Object implements java/io/Serializable,java/lang/Cloneable,java/lang/Comparable flags 421 signature Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Cloneable;Ljava/lang/Comparable<Ljava/util/Calendar;>;
+innerclass innerClass java/util/Calendar$Builder outerClass java/util/Calendar innerClassName Builder flags 9
+innerclass innerClass java/util/Locale$Category outerClass java/util/Locale innerClassName Category flags 4019
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
+class name java/util/DoubleSummaryStatistics
+header extends java/lang/Object implements java/util/function/DoubleConsumer flags 21
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+method name <init> descriptor (JDDD)V thrownTypes java/lang/IllegalArgumentException flags 1
+
+class name java/util/Formatter
+method name <init> descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;Ljava/util/Locale;)V thrownTypes java/io/IOException flags 1
+method name <init> descriptor (Ljava/io/File;Ljava/nio/charset/Charset;Ljava/util/Locale;)V thrownTypes java/io/IOException flags 1
+method name <init> descriptor (Ljava/io/OutputStream;Ljava/nio/charset/Charset;Ljava/util/Locale;)V flags 1
+
+class name java/util/HashSet
+header extends java/util/AbstractSet implements java/util/Set,java/lang/Cloneable,java/io/Serializable flags 21 signature <E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/util/Set<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
+innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
+
+class name java/util/IntSummaryStatistics
+method name <init> descriptor (JIIJ)V thrownTypes java/lang/IllegalArgumentException flags 1
+
+class name java/util/List
+method name copyOf descriptor (Ljava/util/Collection;)Ljava/util/List; flags 9 signature <E:Ljava/lang/Object;>(Ljava/util/Collection<+TE;>;)Ljava/util/List<TE;>;
+
+class name java/util/Locale
+header extends java/lang/Object implements java/lang/Cloneable,java/io/Serializable flags 31
+innerclass innerClass java/util/Locale$LanguageRange outerClass java/util/Locale innerClassName LanguageRange flags 19
+innerclass innerClass java/util/Locale$FilteringMode outerClass java/util/Locale innerClassName FilteringMode flags 4019
+innerclass innerClass java/util/Locale$Builder outerClass java/util/Locale innerClassName Builder flags 19
+innerclass innerClass java/util/Locale$Category outerClass java/util/Locale innerClassName Category flags 4019
+innerclass innerClass java/util/Locale$IsoCountryCode outerClass java/util/Locale innerClassName IsoCountryCode flags 4409
+innerclass innerClass java/io/ObjectOutputStream$PutField outerClass java/io/ObjectOutputStream innerClassName PutField flags 409
+innerclass innerClass java/io/ObjectInputStream$GetField outerClass java/io/ObjectInputStream innerClassName GetField flags 409
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
+class name java/util/LongSummaryStatistics
+method name <init> descriptor (JJJJ)V thrownTypes java/lang/IllegalArgumentException flags 1
+
+class name java/util/Map
+method name copyOf descriptor (Ljava/util/Map;)Ljava/util/Map; flags 9 signature <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<+TK;+TV;>;)Ljava/util/Map<TK;TV;>;
+
+class name java/util/Optional
+method name orElseThrow descriptor ()Ljava/lang/Object; flags 1 signature ()TT;
+
+class name java/util/OptionalDouble
+method name orElseThrow descriptor ()D flags 1
+
+class name java/util/OptionalInt
+method name orElseThrow descriptor ()I flags 1
+
+class name java/util/OptionalLong
+method name orElseThrow descriptor ()J flags 1
+
+class name java/util/Properties
+method name <init> descriptor (I)V flags 1
+method name storeToXML descriptor (Ljava/io/OutputStream;Ljava/lang/String;Ljava/nio/charset/Charset;)V thrownTypes java/io/IOException flags 1
+
+class name java/util/Scanner
+method name <init> descriptor (Ljava/io/InputStream;Ljava/nio/charset/Charset;)V flags 1
+method name <init> descriptor (Ljava/io/File;Ljava/nio/charset/Charset;)V thrownTypes java/io/IOException flags 1
+method name <init> descriptor (Ljava/nio/file/Path;Ljava/nio/charset/Charset;)V thrownTypes java/io/IOException flags 1
+method name <init> descriptor (Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/Charset;)V flags 1
+
+class name java/util/Set
+method name copyOf descriptor (Ljava/util/Collection;)Ljava/util/Set; flags 9 signature <E:Ljava/lang/Object;>(Ljava/util/Collection<+TE;>;)Ljava/util/Set<TE;>;
+
+class name java/util/SimpleTimeZone
+-method name hashCode descriptor ()I
+method name hashCode descriptor ()I flags 1
+
+class name java/util/SplittableRandom
+method name nextBytes descriptor ([B)V flags 1
+
+class name java/util/concurrent/ConcurrentSkipListMap
+header extends java/util/AbstractMap implements java/util/concurrent/ConcurrentNavigableMap,java/lang/Cloneable,java/io/Serializable flags 21 signature <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/concurrent/ConcurrentNavigableMap<TK;TV;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
+innerclass innerClass java/util/AbstractMap$SimpleImmutableEntry outerClass java/util/AbstractMap innerClassName SimpleImmutableEntry flags 9
+innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
+class name java/util/concurrent/FutureTask
+method name toString descriptor ()Ljava/lang/String; flags 1
+
+class name java/util/concurrent/locks/StampedLock
+method name isWriteLockStamp descriptor (J)Z flags 9
+method name isReadLockStamp descriptor (J)Z flags 9
+method name isLockStamp descriptor (J)Z flags 9
+method name isOptimisticReadStamp descriptor (J)Z flags 9
+
+class name java/util/jar/JarEntry
+method name getRealName descriptor ()Ljava/lang/String; flags 1
+
+class name java/util/jar/JarFile
+header extends java/util/zip/ZipFile flags 21
+innerclass innerClass java/lang/Runtime$Version outerClass java/lang/Runtime innerClassName Version flags 19
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+method name versionedStream descriptor ()Ljava/util/stream/Stream; flags 1 signature ()Ljava/util/stream/Stream<Ljava/util/jar/JarEntry;>;
+
+class name java/util/spi/LocaleNameProvider
+method name getDisplayUnicodeExtensionKey descriptor (Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String; flags 1
+method name getDisplayUnicodeExtensionType descriptor (Ljava/lang/String;Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String; flags 1
+
+class name java/util/stream/Collectors
+method name toUnmodifiableList descriptor ()Ljava/util/stream/Collector; flags 9 signature <T:Ljava/lang/Object;>()Ljava/util/stream/Collector<TT;*Ljava/util/List<TT;>;>;
+method name toUnmodifiableSet descriptor ()Ljava/util/stream/Collector; flags 9 signature <T:Ljava/lang/Object;>()Ljava/util/stream/Collector<TT;*Ljava/util/Set<TT;>;>;
+method name toUnmodifiableMap descriptor (Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/util/stream/Collector; flags 9 signature <T:Ljava/lang/Object;K:Ljava/lang/Object;U:Ljava/lang/Object;>(Ljava/util/function/Function<-TT;+TK;>;Ljava/util/function/Function<-TT;+TU;>;)Ljava/util/stream/Collector<TT;*Ljava/util/Map<TK;TU;>;>;
+method name toUnmodifiableMap descriptor (Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;)Ljava/util/stream/Collector; flags 9 signature <T:Ljava/lang/Object;K:Ljava/lang/Object;U:Ljava/lang/Object;>(Ljava/util/function/Function<-TT;+TK;>;Ljava/util/function/Function<-TT;+TU;>;Ljava/util/function/BinaryOperator<TU;>;)Ljava/util/stream/Collector<TT;*Ljava/util/Map<TK;TU;>;>;
+
+class name java/util/zip/Deflater
+-method name finalize descriptor ()V
+method name finalize descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/util/zip/Inflater
+-method name finalize descriptor ()V
+method name finalize descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name java/util/zip/ZipFile
+header extends java/lang/Object implements java/util/zip/ZipConstants,java/io/Closeable flags 21
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+-method name finalize descriptor ()V
+method name finalize descriptor ()V thrownTypes java/io/IOException flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
+class name javax/security/auth/Policy
+header extends java/lang/Object flags 421 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="1.4")
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.compiler-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,115 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.compiler
+header exports javax/annotation/processing,javax/lang/model,javax/lang/model/element,javax/lang/model/type,javax/lang/model/util,javax/tools requires name\u0020;java.base\u0020;flags\u0020;8000 uses javax/tools/DocumentationTool,javax/tools/JavaCompiler target linux-amd64 flags 8000
+
+class name javax/lang/model/SourceVersion
+field name RELEASE_10 descriptor Ljavax/lang/model/SourceVersion; flags 4019
+
+class name javax/lang/model/util/AbstractAnnotationValueVisitor6
+-method name <init> descriptor ()V
+method name <init> descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+
+class name javax/lang/model/util/AbstractAnnotationValueVisitor9
+header extends javax/lang/model/util/AbstractAnnotationValueVisitor8 flags 421 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/AbstractAnnotationValueVisitor8<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_10;)
+
+class name javax/lang/model/util/AbstractElementVisitor6
+-method name <init> descriptor ()V
+method name <init> descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+
+class name javax/lang/model/util/AbstractElementVisitor9
+header extends javax/lang/model/util/AbstractElementVisitor8 flags 421 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/AbstractElementVisitor8<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_10;)
+
+class name javax/lang/model/util/AbstractTypeVisitor6
+-method name <init> descriptor ()V
+method name <init> descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+
+class name javax/lang/model/util/AbstractTypeVisitor9
+header extends javax/lang/model/util/AbstractTypeVisitor8 flags 421 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/AbstractTypeVisitor8<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_10;)
+
+class name javax/lang/model/util/ElementKindVisitor6
+-method name <init> descriptor ()V
+-method name <init> descriptor (Ljava/lang/Object;)V
+method name <init> descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+method name <init> descriptor (Ljava/lang/Object;)V flags 4 deprecated true signature (TR;)V runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+
+class name javax/lang/model/util/ElementKindVisitor9
+header extends javax/lang/model/util/ElementKindVisitor8 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/ElementKindVisitor8<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_10;)
+
+class name javax/lang/model/util/ElementScanner6
+-method name <init> descriptor ()V
+-method name <init> descriptor (Ljava/lang/Object;)V
+method name <init> descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+method name <init> descriptor (Ljava/lang/Object;)V flags 4 deprecated true signature (TR;)V runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+
+class name javax/lang/model/util/ElementScanner9
+header extends javax/lang/model/util/ElementScanner8 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/ElementScanner8<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_10;)
+
+class name javax/lang/model/util/SimpleAnnotationValueVisitor6
+-method name <init> descriptor ()V
+-method name <init> descriptor (Ljava/lang/Object;)V
+method name <init> descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+method name <init> descriptor (Ljava/lang/Object;)V flags 4 deprecated true signature (TR;)V runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+
+class name javax/lang/model/util/SimpleAnnotationValueVisitor9
+header extends javax/lang/model/util/SimpleAnnotationValueVisitor8 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/SimpleAnnotationValueVisitor8<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_10;)
+
+class name javax/lang/model/util/SimpleElementVisitor6
+-method name <init> descriptor ()V
+-method name <init> descriptor (Ljava/lang/Object;)V
+method name <init> descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+method name <init> descriptor (Ljava/lang/Object;)V flags 4 deprecated true signature (TR;)V runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+
+class name javax/lang/model/util/SimpleElementVisitor9
+header extends javax/lang/model/util/SimpleElementVisitor8 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/SimpleElementVisitor8<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_10;)
+
+class name javax/lang/model/util/SimpleTypeVisitor6
+-method name <init> descriptor ()V
+-method name <init> descriptor (Ljava/lang/Object;)V
+method name <init> descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+method name <init> descriptor (Ljava/lang/Object;)V flags 4 deprecated true signature (TR;)V runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+
+class name javax/lang/model/util/SimpleTypeVisitor9
+header extends javax/lang/model/util/SimpleTypeVisitor8 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/SimpleTypeVisitor8<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_10;)
+
+class name javax/lang/model/util/TypeKindVisitor6
+-method name <init> descriptor ()V
+-method name <init> descriptor (Ljava/lang/Object;)V
+method name <init> descriptor ()V flags 4 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+method name <init> descriptor (Ljava/lang/Object;)V flags 4 deprecated true signature (TR;)V runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+method name visitNoTypeAsModule descriptor (Ljavax/lang/model/type/NoType;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Ljavax/lang/model/type/NoType;TP;)TR;
+
+class name javax/lang/model/util/TypeKindVisitor9
+header extends javax/lang/model/util/TypeKindVisitor8 flags 21 signature <R:Ljava/lang/Object;P:Ljava/lang/Object;>Ljavax/lang/model/util/TypeKindVisitor8<TR;TP;>; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_10;)
+method name visitNoTypeAsModule descriptor (Ljavax/lang/model/type/NoType;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Ljavax/lang/model/type/NoType;TP;)TR;
+
+class name javax/tools/ToolProvider
+-method name getSystemToolClassLoader descriptor ()Ljava/lang/ClassLoader;
+method name getSystemToolClassLoader descriptor ()Ljava/lang/ClassLoader; flags 9 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="9")
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.corba-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.corba
+header exports javax/activity,javax/rmi,javax/rmi/CORBA,org/omg/CORBA,org/omg/CORBA/DynAnyPackage,org/omg/CORBA/ORBPackage,org/omg/CORBA/TypeCodePackage,org/omg/CORBA/portable,org/omg/CORBA_2_3,org/omg/CORBA_2_3/portable,org/omg/CosNaming,org/omg/CosNaming/NamingContextExtPackage,org/omg/CosNaming/NamingContextPackage,org/omg/Dynamic,org/omg/DynamicAny,org/omg/DynamicAny/DynAnyFactoryPackage,org/omg/DynamicAny/DynAnyPackage,org/omg/IOP,org/omg/IOP/CodecFactoryPackage,org/omg/IOP/CodecPackage,org/omg/Messaging,org/omg/PortableInterceptor,org/omg/PortableInterceptor/ORBInitInfoPackage,org/omg/PortableServer,org/omg/PortableServer/CurrentPackage,org/omg/PortableServer/POAManagerPackage,org/omg/PortableServer/POAPackage,org/omg/PortableServer/ServantLocatorPackage,org/omg/PortableServer/portable,org/omg/SendingContext,org/omg/stub/java/rmi requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;0,name\u0020;java.naming\u0020;flags\u0020;0,name\u0020;java.transaction\u0020;flags\u0020;0,name\u0020;jdk.unsupported\u0020;flags\u0020;0,name\u0020;java.desktop\u0020;flags\u0020;20,name\u0020;java.rmi\u0020;flags\u0020;20 target linux-amd64 flags 8000 runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.datatransfer-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.datatransfer
+header exports java/awt/datatransfer requires name\u0020;java.base\u0020;flags\u0020;8000 uses sun/datatransfer/DesktopDatatransferService target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.desktop-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,87 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.desktop
+header exports java/applet,java/awt,java/awt/color,java/awt/desktop,java/awt/dnd,java/awt/event,java/awt/font,java/awt/geom,java/awt/im,java/awt/im/spi,java/awt/image,java/awt/image/renderable,java/awt/print,java/beans,java/beans/beancontext,javax/accessibility,javax/imageio,javax/imageio/event,javax/imageio/metadata,javax/imageio/plugins/bmp,javax/imageio/plugins/jpeg,javax/imageio/plugins/tiff,javax/imageio/spi,javax/imageio/stream,javax/print,javax/print/attribute,javax/print/attribute/standard,javax/print/event,javax/sound/midi,javax/sound/midi/spi,javax/sound/sampled,javax/sound/sampled/spi,javax/swing,javax/swing/border,javax/swing/colorchooser,javax/swing/event,javax/swing/filechooser,javax/swing/plaf,javax/swing/plaf/basic,javax/swing/plaf/metal,javax/swing/plaf/multi,javax/swing/plaf/nimbus,javax/swing/plaf/synth,javax/swing/table,javax/swing/text,javax/swing/text/html,javax/swing/text/html/parser,javax/swing/text/rtf,javax/swing/tree,javax/swing/undo requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.prefs\u0020;flags\u0020;0,name\u0020;java.datatransfer\u0020;flags\u0020;20,name\u0020;java.xml\u0020;flags\u0020;20 uses java/awt/im/spi/InputMethodDescriptor,javax/accessibility/AccessibilityProvider,javax/imageio/spi/ImageInputStreamSpi,javax/imageio/spi/ImageOutputStreamSpi,javax/imageio/spi/ImageReaderSpi,javax/imageio/spi/ImageTranscoderSpi,javax/imageio/spi/ImageWriterSpi,javax/print/PrintServiceLookup,javax/print/StreamPrintServiceFactory,javax/sound/midi/spi/MidiDeviceProvider,javax/sound/midi/spi/MidiFileReader,javax/sound/midi/spi/MidiFileWriter,javax/sound/midi/spi/SoundbankReader,javax/sound/sampled/spi/AudioFileReader,javax/sound/sampled/spi/AudioFileWriter,javax/sound/sampled/spi/FormatConversionProvider,javax/sound/sampled/spi/MixerProvider provides interface\u0020;sun/datatransfer/DesktopDatatransferService\u0020;impls\u0020;sun/awt/datatransfer/DesktopDatatransferServiceImpl,interface\u0020;java/net/ContentHandlerFactory\u0020;impls\u0020;sun/awt/www/content/MultimediaContentHandlers,interface\u0020;javax/print/PrintServiceLookup\u0020;impls\u0020;sun/print/PrintServiceLookupProvider,interface\u0020;javax/print/StreamPrintServiceFactory\u0020;impls\u0020;sun/print/PSStreamPrinterFactory,interface\u0020;javax/sound/midi/spi/MidiDeviceProvider\u0020;impls\u0020;com/sun/media/sound/MidiInDeviceProvider\u005C;u002C;com/sun/media/sound/MidiOutDeviceProvider\u005C;u002C;com/sun/media/sound/RealTimeSequencerProvider\u005C;u002C;com/sun/media/sound/SoftProvider,interface\u0020;javax/sound/midi/spi/MidiFileReader\u0020;impls\u0020;com/sun/media/sound/StandardMidiFileReader,interface\u0020;javax/sound/midi/spi/MidiFileWriter\u0020;impls\u0020;com/sun/media/sound/StandardMidiFileWriter,interface\u0020;javax/sound/midi/spi/SoundbankReader\u0020;impls\u0020;com/sun/media/sound/AudioFileSoundbankReader\u005C;u002C;com/sun/media/sound/DLSSoundbankReader\u005C;u002C;com/sun/media/sound/JARSoundbankReader\u005C;u002C;com/sun/media/sound/SF2SoundbankReader,interface\u0020;javax/sound/sampled/spi/AudioFileReader\u0020;impls\u0020;com/sun/media/sound/AiffFileReader\u005C;u002C;com/sun/media/sound/AuFileReader\u005C;u002C;com/sun/media/sound/SoftMidiAudioFileReader\u005C;u002C;com/sun/media/sound/WaveFileReader\u005C;u002C;com/sun/media/sound/WaveFloatFileReader\u005C;u002C;com/sun/media/sound/WaveExtensibleFileReader,interface\u0020;javax/sound/sampled/spi/AudioFileWriter\u0020;impls\u0020;com/sun/media/sound/AiffFileWriter\u005C;u002C;com/sun/media/sound/AuFileWriter\u005C;u002C;com/sun/media/sound/WaveFileWriter\u005C;u002C;com/sun/media/sound/WaveFloatFileWriter,interface\u0020;javax/sound/sampled/spi/FormatConversionProvider\u0020;impls\u0020;com/sun/media/sound/AlawCodec\u005C;u002C;com/sun/media/sound/AudioFloatFormatConverter\u005C;u002C;com/sun/media/sound/PCMtoPCMCodec\u005C;u002C;com/sun/media/sound/UlawCodec,interface\u0020;javax/sound/sampled/spi/MixerProvider\u0020;impls\u0020;com/sun/media/sound/DirectAudioDeviceProvider\u005C;u002C;com/sun/media/sound/PortMixerProvider target linux-amd64 flags 8000
+
+class name java/awt/GraphicsEnvironment
+-method name getLocalGraphicsEnvironment descriptor ()Ljava/awt/GraphicsEnvironment;
+method name getLocalGraphicsEnvironment descriptor ()Ljava/awt/GraphicsEnvironment; flags 9
+
+class name java/awt/Toolkit
+-method name getMenuShortcutKeyMask descriptor ()I
+method name getMenuShortcutKeyMask descriptor ()I thrownTypes java/awt/HeadlessException flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="10")
+method name getMenuShortcutKeyMaskEx descriptor ()I thrownTypes java/awt/HeadlessException flags 1
+
+class name java/awt/geom/Path2D
+method name trimToSize descriptor ()V flags 401
+
+class name java/awt/geom/Path2D$Double
+method name trimToSize descriptor ()V flags 11
+
+class name java/awt/geom/Path2D$Float
+method name trimToSize descriptor ()V flags 11
+
+class name java/awt/image/BufferedImage
+-method name setRGB descriptor (III)V
+method name setRGB descriptor (III)V flags 1
+
+class name java/awt/image/FilteredImageSource
+-method name startProduction descriptor (Ljava/awt/image/ImageConsumer;)V
+-method name requestTopDownLeftRightResend descriptor (Ljava/awt/image/ImageConsumer;)V
+method name startProduction descriptor (Ljava/awt/image/ImageConsumer;)V flags 21
+method name requestTopDownLeftRightResend descriptor (Ljava/awt/image/ImageConsumer;)V flags 21
+
+class name javax/swing/ButtonModel
+method name getGroup descriptor ()Ljavax/swing/ButtonGroup; flags 1
+
+class name javax/swing/LayoutFocusTraversalPolicy
+header extends javax/swing/SortingFocusTraversalPolicy implements java/io/Serializable flags 21 classAnnotations @Ljdk/Profile+Annotation;(value=I4)
+
+class name javax/swing/event/EventListenerList
+-field name listenerList descriptor [Ljava/lang/Object;
+field name listenerList descriptor [Ljava/lang/Object; flags c4
+
+class name javax/swing/filechooser/FileSystemView
+header extends java/lang/Object flags 421
+innerclass innerClass java/lang/ref/Cleaner$Cleanable outerClass java/lang/ref/Cleaner innerClassName Cleanable flags 609
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
+class name javax/swing/plaf/basic/BasicMenuUI
+method name getMinimumSize descriptor (Ljavax/swing/JComponent;)Ljava/awt/Dimension; flags 1
+
+class name javax/swing/text/DefaultCaret
+header extends java/awt/Rectangle implements javax/swing/text/Caret,java/awt/event/FocusListener,java/awt/event/MouseListener,java/awt/event/MouseMotionListener flags 21
+innerclass innerClass javax/swing/text/Position$Bias outerClass javax/swing/text/Position innerClassName Bias flags 19
+innerclass innerClass javax/swing/text/NavigationFilter$FilterBypass outerClass javax/swing/text/NavigationFilter innerClassName FilterBypass flags 409
+innerclass innerClass javax/swing/text/Highlighter$HighlightPainter outerClass javax/swing/text/Highlighter innerClassName HighlightPainter flags 609
+innerclass innerClass java/io/ObjectInputStream$GetField outerClass java/io/ObjectInputStream innerClassName GetField flags 409
+innerclass innerClass javax/swing/text/LayeredHighlighter$LayerPainter outerClass javax/swing/text/LayeredHighlighter innerClassName LayerPainter flags 409
+innerclass innerClass java/awt/event/FocusEvent$Cause outerClass java/awt/event/FocusEvent innerClassName Cause flags 4019
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.instrument-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.instrument
+header exports java/lang/instrument requires name\u0020;java.base\u0020;flags\u0020;8000 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.logging-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.logging
+header exports java/util/logging requires name\u0020;java.base\u0020;flags\u0020;8000 provides interface\u0020;jdk/internal/logger/DefaultLoggerFinder\u0020;impls\u0020;sun/util/logging/internal/LoggingProviderImpl target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.management-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.management
+header exports java/lang/management,javax/management,javax/management/loading,javax/management/modelmbean,javax/management/monitor,javax/management/openmbean,javax/management/relation,javax/management/remote,javax/management/timer requires name\u0020;java.base\u0020;flags\u0020;8000 uses javax/management/remote/JMXConnectorProvider,javax/management/remote/JMXConnectorServerProvider,sun/management/spi/PlatformMBeanProvider provides interface\u0020;javax/security/auth/spi/LoginModule\u0020;impls\u0020;com/sun/jmx/remote/security/FileLoginModule target linux-amd64 flags 8000
+
+class name java/lang/management/RuntimeMXBean
+header extends java/lang/Object implements java/lang/management/PlatformManagedObject flags 601
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+method name getPid descriptor ()J flags 1
+
+class name java/lang/management/ThreadMXBean
+method name getThreadInfo descriptor ([JZZI)[Ljava/lang/management/ThreadInfo; flags 1
+method name dumpAllThreads descriptor (ZZI)[Ljava/lang/management/ThreadInfo; flags 1
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.management.rmi-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,44 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.management.rmi
+header exports javax/management/remote/rmi requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.naming\u0020;flags\u0020;0,name\u0020;java.management\u0020;flags\u0020;20,name\u0020;java.rmi\u0020;flags\u0020;20 provides interface\u0020;javax/management/remote/JMXConnectorProvider\u0020;impls\u0020;com/sun/jmx/remote/protocol/rmi/ClientProvider,interface\u0020;javax/management/remote/JMXConnectorServerProvider\u0020;impls\u0020;com/sun/jmx/remote/protocol/rmi/ServerProvider target linux-amd64 flags 8000
+
+class name javax/management/remote/rmi/RMIConnectorServer
+-field name CREDENTIAL_TYPES descriptor Ljava/lang/String;
+field name CREDENTIAL_TYPES descriptor Ljava/lang/String; constantValue jmx.remote.rmi.server.credential.types flags 19 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="10")
+field name CREDENTIALS_FILTER_PATTERN descriptor Ljava/lang/String; constantValue jmx.remote.rmi.server.credentials.filter.pattern flags 19
+field name SERIAL_FILTER_PATTERN descriptor Ljava/lang/String; constantValue jmx.remote.rmi.server.serial.filter.pattern flags 19
+
+class name javax/management/remote/rmi/RMIJRMPServerImpl
+header extends javax/management/remote/rmi/RMIServerImpl flags 21
+innerclass innerClass java/io/ObjectInputFilter$FilterInfo outerClass java/io/ObjectInputFilter innerClassName FilterInfo flags 609
+innerclass innerClass java/io/ObjectInputFilter$Status outerClass java/io/ObjectInputFilter innerClassName Status flags 4019
+innerclass innerClass java/io/ObjectInputFilter$Config outerClass java/io/ObjectInputFilter innerClassName Config flags 19
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.naming-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.naming
+header exports javax/naming,javax/naming/directory,javax/naming/event,javax/naming/ldap,javax/naming/spi requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.security.sasl\u0020;flags\u0020;0 uses javax/naming/ldap/StartTlsResponse,javax/naming/spi/InitialContextFactory provides interface\u0020;java/security/Provider\u0020;impls\u0020;sun/security/provider/certpath/ldap/JdkLDAP target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.prefs-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.prefs
+header exports java/util/prefs requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.xml\u0020;flags\u0020;0 uses java/util/prefs/PreferencesFactory target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.rmi-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.rmi
+header exports java/rmi,java/rmi/activation,java/rmi/dgc,java/rmi/registry,java/rmi/server,javax/rmi/ssl requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;0 uses java/rmi/server/RMIClassLoaderSpi target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.scripting-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.scripting
+header exports javax/script requires name\u0020;java.base\u0020;flags\u0020;8000 uses javax/script/ScriptEngineFactory target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.se-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.se
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.compiler\u0020;flags\u0020;20,name\u0020;java.datatransfer\u0020;flags\u0020;20,name\u0020;java.desktop\u0020;flags\u0020;20,name\u0020;java.instrument\u0020;flags\u0020;20,name\u0020;java.logging\u0020;flags\u0020;20,name\u0020;java.management\u0020;flags\u0020;20,name\u0020;java.management.rmi\u0020;flags\u0020;20,name\u0020;java.naming\u0020;flags\u0020;20,name\u0020;java.prefs\u0020;flags\u0020;20,name\u0020;java.rmi\u0020;flags\u0020;20,name\u0020;java.scripting\u0020;flags\u0020;20,name\u0020;java.security.jgss\u0020;flags\u0020;20,name\u0020;java.security.sasl\u0020;flags\u0020;20,name\u0020;java.sql\u0020;flags\u0020;20,name\u0020;java.sql.rowset\u0020;flags\u0020;20,name\u0020;java.xml\u0020;flags\u0020;20,name\u0020;java.xml.crypto\u0020;flags\u0020;20 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.se.ee-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.se.ee
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.se\u0020;flags\u0020;20,name\u0020;java.activation\u0020;flags\u0020;20,name\u0020;java.corba\u0020;flags\u0020;20,name\u0020;java.transaction\u0020;flags\u0020;20,name\u0020;java.xml.bind\u0020;flags\u0020;20,name\u0020;java.xml.ws\u0020;flags\u0020;20,name\u0020;java.xml.ws.annotation\u0020;flags\u0020;20 target linux-amd64 flags 8000 runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.security.jgss-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.security.jgss
+header exports javax/security/auth/kerberos,org/ietf/jgss requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.naming\u0020;flags\u0020;0 provides interface\u0020;java/security/Provider\u0020;impls\u0020;sun/security/jgss/SunProvider,interface\u0020;sun/security/ssl/ClientKeyExchangeService\u0020;impls\u0020;sun/security/krb5/internal/ssl/Krb5KeyExchangeService target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.security.sasl-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.security.sasl
+header exports javax/security/sasl requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;0 provides interface\u0020;java/security/Provider\u0020;impls\u0020;com/sun/security/sasl/Provider target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.smartcardio-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.smartcardio
+header exports javax/smartcardio requires name\u0020;java.base\u0020;flags\u0020;8000 provides interface\u0020;java/security/Provider\u0020;impls\u0020;sun/security/smartcardio/SunPCSC target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.sql-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.sql
+header exports java/sql,javax/sql,javax/transaction/xa requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;20,name\u0020;java.xml\u0020;flags\u0020;20 uses java/sql/Driver target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.sql.rowset-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.sql.rowset
+header exports javax/sql/rowset,javax/sql/rowset/serial,javax/sql/rowset/spi requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;20,name\u0020;java.naming\u0020;flags\u0020;20,name\u0020;java.sql\u0020;flags\u0020;20 uses javax/sql/rowset/RowSetFactory target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.transaction-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.transaction
+header exports javax/transaction requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.rmi\u0020;flags\u0020;20 target linux-amd64 flags 8000 runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.xml-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,57 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.xml
+header exports javax/xml,javax/xml/catalog,javax/xml/datatype,javax/xml/namespace,javax/xml/parsers,javax/xml/stream,javax/xml/stream/events,javax/xml/stream/util,javax/xml/transform,javax/xml/transform/dom,javax/xml/transform/sax,javax/xml/transform/stax,javax/xml/transform/stream,javax/xml/validation,javax/xml/xpath,org/w3c/dom,org/w3c/dom/bootstrap,org/w3c/dom/events,org/w3c/dom/ls,org/w3c/dom/ranges,org/w3c/dom/traversal,org/w3c/dom/views,org/xml/sax,org/xml/sax/ext,org/xml/sax/helpers requires name\u0020;java.base\u0020;flags\u0020;8000 uses javax/xml/datatype/DatatypeFactory,javax/xml/parsers/DocumentBuilderFactory,javax/xml/parsers/SAXParserFactory,javax/xml/stream/XMLEventFactory,javax/xml/stream/XMLInputFactory,javax/xml/stream/XMLOutputFactory,javax/xml/transform/TransformerFactory,javax/xml/validation/SchemaFactory,javax/xml/xpath/XPathFactory,org/xml/sax/XMLReader target linux-amd64 flags 8000
+
+class name javax/xml/namespace/NamespaceContext
+-method name getPrefixes descriptor (Ljava/lang/String;)Ljava/util/Iterator;
+method name getPrefixes descriptor (Ljava/lang/String;)Ljava/util/Iterator; flags 401 signature (Ljava/lang/String;)Ljava/util/Iterator<Ljava/lang/String;>;
+
+class name javax/xml/stream/XMLInputFactory
+method name newFactory descriptor ()Ljavax/xml/stream/XMLInputFactory; thrownTypes javax/xml/stream/FactoryConfigurationError flags 9
+-method name newFactory descriptor ()Ljavax/xml/stream/XMLInputFactory;
+
+class name javax/xml/xpath/XPathFunction
+-method name evaluate descriptor (Ljava/util/List;)Ljava/lang/Object;
+method name evaluate descriptor (Ljava/util/List;)Ljava/lang/Object; thrownTypes javax/xml/xpath/XPathFunctionException flags 401 signature (Ljava/util/List<*>;)Ljava/lang/Object;
+
+class name org/xml/sax/HandlerBase
+header extends java/lang/Object implements org/xml/sax/EntityResolver,org/xml/sax/DTDHandler,org/xml/sax/DocumentHandler,org/xml/sax/ErrorHandler flags 21 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="1.5")
+
+class name org/xml/sax/helpers/AttributeListImpl
+header extends java/lang/Object implements org/xml/sax/AttributeList flags 21 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="1.5")
+
+class name org/xml/sax/helpers/NamespaceSupport
+-method name getPrefixes descriptor ()Ljava/util/Enumeration;
+-method name getPrefixes descriptor (Ljava/lang/String;)Ljava/util/Enumeration;
+-method name getDeclaredPrefixes descriptor ()Ljava/util/Enumeration;
+method name getPrefixes descriptor ()Ljava/util/Enumeration; flags 1 signature ()Ljava/util/Enumeration<Ljava/lang/String;>;
+method name getPrefixes descriptor (Ljava/lang/String;)Ljava/util/Enumeration; flags 1 signature (Ljava/lang/String;)Ljava/util/Enumeration<Ljava/lang/String;>;
+method name getDeclaredPrefixes descriptor ()Ljava/util/Enumeration; flags 1 signature ()Ljava/util/Enumeration<Ljava/lang/String;>;
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.xml.bind-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.xml.bind
+header exports javax/xml/bind,javax/xml/bind/annotation,javax/xml/bind/annotation/adapters,javax/xml/bind/attachment,javax/xml/bind/helpers,javax/xml/bind/util requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.compiler\u0020;flags\u0020;0,name\u0020;java.desktop\u0020;flags\u0020;0,name\u0020;java.logging\u0020;flags\u0020;0,name\u0020;jdk.unsupported\u0020;flags\u0020;0,name\u0020;java.activation\u0020;flags\u0020;20,name\u0020;java.xml\u0020;flags\u0020;20 uses javax/xml/bind/JAXBContextFactory target linux-amd64 flags 8000 runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.xml.crypto-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.xml.crypto
+header exports javax/xml/crypto,javax/xml/crypto/dom,javax/xml/crypto/dsig,javax/xml/crypto/dsig/dom,javax/xml/crypto/dsig/keyinfo,javax/xml/crypto/dsig/spec requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;0,name\u0020;java.xml\u0020;flags\u0020;20 provides interface\u0020;java/security/Provider\u0020;impls\u0020;org/jcp/xml/dsig/internal/dom/XMLDSigRI target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.xml.ws-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.xml.ws
+header exports javax/jws,javax/jws/soap,javax/xml/soap,javax/xml/ws,javax/xml/ws/handler,javax/xml/ws/handler/soap,javax/xml/ws/http,javax/xml/ws/soap,javax/xml/ws/spi,javax/xml/ws/spi/http,javax/xml/ws/wsaddressing requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.desktop\u0020;flags\u0020;0,name\u0020;java.logging\u0020;flags\u0020;0,name\u0020;java.management\u0020;flags\u0020;0,name\u0020;java.xml.ws.annotation\u0020;flags\u0020;0,name\u0020;jdk.httpserver\u0020;flags\u0020;0,name\u0020;jdk.unsupported\u0020;flags\u0020;0,name\u0020;java.activation\u0020;flags\u0020;20,name\u0020;java.xml\u0020;flags\u0020;20,name\u0020;java.xml.bind\u0020;flags\u0020;20 uses javax/xml/ws/spi/Provider,javax/xml/soap/MessageFactory,javax/xml/soap/SAAJMetaFactory,javax/xml/soap/SOAPConnectionFactory,javax/xml/soap/SOAPFactory target linux-amd64 flags 8000 runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/java.xml.ws.annotation-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name java.xml.ws.annotation
+header exports javax/annotation requires name\u0020;java.base\u0020;flags\u0020;8000 target linux-amd64 flags 8000 runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="9")
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.accessibility-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.accessibility
+header exports com/sun/java/accessibility/util requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.desktop\u0020;flags\u0020;20 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.attach-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.attach
+header exports com/sun/tools/attach,com/sun/tools/attach/spi requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;jdk.internal.jvmstat\u0020;flags\u0020;0 uses com/sun/tools/attach/spi/AttachProvider provides interface\u0020;com/sun/tools/attach/spi/AttachProvider\u0020;impls\u0020;sun/tools/attach/AttachProviderImpl target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.charsets-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.charsets
+header requires name\u0020;java.base\u0020;flags\u0020;8000 provides interface\u0020;java/nio/charset/spi/CharsetProvider\u0020;impls\u0020;sun/nio/cs/ext/ExtendedCharsets target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.compiler-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,72 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.compiler
+header exports com/sun/source/doctree,com/sun/source/tree,com/sun/source/util,com/sun/tools/javac requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.compiler\u0020;flags\u0020;20 uses javax/annotation/processing/Processor,com/sun/source/util/Plugin,com/sun/tools/javac/platform/PlatformProvider provides interface\u0020;java/util/spi/ToolProvider\u0020;impls\u0020;com/sun/tools/javac/main/JavacToolProvider,interface\u0020;com/sun/tools/javac/platform/PlatformProvider\u0020;impls\u0020;com/sun/tools/javac/platform/JDKPlatformProvider,interface\u0020;javax/tools/JavaCompiler\u0020;impls\u0020;com/sun/tools/javac/api/JavacTool,interface\u0020;javax/tools/Tool\u0020;impls\u0020;com/sun/tools/javac/api/JavacTool target linux-amd64 flags 8000
+
+class name com/sun/source/doctree/DocCommentTree
+method name getPreamble descriptor ()Ljava/util/List; flags 1 signature ()Ljava/util/List<+Lcom/sun/source/doctree/DocTree;>;
+method name getPostamble descriptor ()Ljava/util/List; flags 1 signature ()Ljava/util/List<+Lcom/sun/source/doctree/DocTree;>;
+
+class name com/sun/source/doctree/DocTree$Kind
+field name DOC_TYPE descriptor Lcom/sun/source/doctree/DocTree$Kind; flags 4019
+field name SUMMARY descriptor Lcom/sun/source/doctree/DocTree$Kind; flags 4019
+
+class name com/sun/source/doctree/DocTreeVisitor
+-method name visitHidden descriptor (Lcom/sun/source/doctree/HiddenTree;Ljava/lang/Object;)Ljava/lang/Object;
+-method name visitIndex descriptor (Lcom/sun/source/doctree/IndexTree;Ljava/lang/Object;)Ljava/lang/Object;
+-method name visitProvides descriptor (Lcom/sun/source/doctree/ProvidesTree;Ljava/lang/Object;)Ljava/lang/Object;
+-method name visitUses descriptor (Lcom/sun/source/doctree/UsesTree;Ljava/lang/Object;)Ljava/lang/Object;
+method name visitDocType descriptor (Lcom/sun/source/doctree/DocTypeTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/DocTypeTree;TP;)TR;
+method name visitHidden descriptor (Lcom/sun/source/doctree/HiddenTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/HiddenTree;TP;)TR;
+method name visitIndex descriptor (Lcom/sun/source/doctree/IndexTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/IndexTree;TP;)TR;
+method name visitProvides descriptor (Lcom/sun/source/doctree/ProvidesTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/ProvidesTree;TP;)TR;
+method name visitSummary descriptor (Lcom/sun/source/doctree/SummaryTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/SummaryTree;TP;)TR;
+method name visitUses descriptor (Lcom/sun/source/doctree/UsesTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/UsesTree;TP;)TR;
+
+class name com/sun/source/doctree/DocTypeTree
+header extends java/lang/Object implements com/sun/source/doctree/DocTree flags 601
+method name getText descriptor ()Ljava/lang/String; flags 401
+
+class name com/sun/source/doctree/SummaryTree
+header extends java/lang/Object implements com/sun/source/doctree/InlineTagTree flags 601
+method name getSummary descriptor ()Ljava/util/List; flags 401 signature ()Ljava/util/List<+Lcom/sun/source/doctree/DocTree;>;
+
+class name com/sun/source/util/DocTreeFactory
+method name newDocCommentTree descriptor (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Lcom/sun/source/doctree/DocCommentTree; flags 401 signature (Ljava/util/List<+Lcom/sun/source/doctree/DocTree;>;Ljava/util/List<+Lcom/sun/source/doctree/DocTree;>;Ljava/util/List<+Lcom/sun/source/doctree/DocTree;>;Ljava/util/List<+Lcom/sun/source/doctree/DocTree;>;)Lcom/sun/source/doctree/DocCommentTree;
+method name newDocTypeTree descriptor (Ljava/lang/String;)Lcom/sun/source/doctree/DocTypeTree; flags 401
+method name newSummaryTree descriptor (Ljava/util/List;)Lcom/sun/source/doctree/SummaryTree; flags 1 signature (Ljava/util/List<+Lcom/sun/source/doctree/DocTree;>;)Lcom/sun/source/doctree/SummaryTree;
+
+class name com/sun/source/util/DocTreeScanner
+method name visitDocType descriptor (Lcom/sun/source/doctree/DocTypeTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/DocTypeTree;TP;)TR;
+method name visitSummary descriptor (Lcom/sun/source/doctree/SummaryTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/SummaryTree;TP;)TR;
+
+class name com/sun/source/util/SimpleDocTreeVisitor
+method name visitDocType descriptor (Lcom/sun/source/doctree/DocTypeTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/DocTypeTree;TP;)TR;
+method name visitSummary descriptor (Lcom/sun/source/doctree/SummaryTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/doctree/SummaryTree;TP;)TR;
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.crypto.cryptoki-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.crypto.cryptoki
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;jdk.crypto.ec\u0020;flags\u0020;0 provides interface\u0020;java/security/Provider\u0020;impls\u0020;sun/security/pkcs11/SunPKCS11 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.crypto.ec-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.crypto.ec
+header requires name\u0020;java.base\u0020;flags\u0020;8000 provides interface\u0020;java/security/Provider\u0020;impls\u0020;sun/security/ec/SunEC target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.dynalink-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,34 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.dynalink
+header exports jdk/dynalink,jdk/dynalink/beans,jdk/dynalink/linker,jdk/dynalink/linker/support,jdk/dynalink/support requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;0 uses jdk/dynalink/linker/GuardingDynamicLinkerExporter target linux-amd64 flags 8000
+
+class name jdk/dynalink/StandardOperation
+field name REMOVE descriptor Ljdk/dynalink/StandardOperation; flags 4019
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.editpad-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.editpad
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.desktop\u0020;flags\u0020;0,name\u0020;jdk.internal.ed\u0020;flags\u0020;0 provides interface\u0020;jdk/internal/editor/spi/BuildInEditorProvider\u0020;impls\u0020;jdk/editpad/EditPadProvider target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.hotspot.agent-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.hotspot.agent
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.datatransfer\u0020;flags\u0020;0,name\u0020;java.desktop\u0020;flags\u0020;0,name\u0020;java.rmi\u0020;flags\u0020;0,name\u0020;java.scripting\u0020;flags\u0020;0 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.httpserver-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.httpserver
+header exports com/sun/net/httpserver,com/sun/net/httpserver/spi requires name\u0020;java.base\u0020;flags\u0020;8000 uses com/sun/net/httpserver/spi/HttpServerProvider target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.incubator.httpclient-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,187 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.incubator.httpclient
+header exports jdk/incubator/http requires name\u0020;java.base\u0020;flags\u0020;8000 target linux-amd64 resolution 9 flags 8000
+
+class name jdk/incubator/http/HttpClient
+header extends java/lang/Object flags 421
+innerclass innerClass jdk/incubator/http/HttpClient$Redirect outerClass jdk/incubator/http/HttpClient innerClassName Redirect flags 4019
+innerclass innerClass jdk/incubator/http/HttpClient$Version outerClass jdk/incubator/http/HttpClient innerClassName Version flags 4019
+innerclass innerClass jdk/incubator/http/HttpClient$Builder outerClass jdk/incubator/http/HttpClient innerClassName Builder flags 409
+innerclass innerClass jdk/incubator/http/HttpResponse$BodyHandler outerClass jdk/incubator/http/HttpResponse innerClassName BodyHandler flags 609
+innerclass innerClass jdk/incubator/http/HttpResponse$MultiSubscriber outerClass jdk/incubator/http/HttpResponse innerClassName MultiSubscriber flags 609
+innerclass innerClass jdk/incubator/http/WebSocket$Builder outerClass jdk/incubator/http/WebSocket innerClassName Builder flags 609
+-method name cookieManager descriptor ()Ljava/util/Optional;
+-method name sslParameters descriptor ()Ljava/util/Optional;
+-method name executor descriptor ()Ljava/util/concurrent/Executor;
+-method name sendAsync descriptor (Ljdk/incubator/http/HttpRequest;Ljdk/incubator/http/HttpResponse$MultiProcessor;)Ljava/util/concurrent/CompletableFuture;
+-method name newWebSocketBuilder descriptor (Ljava/net/URI;Ljdk/incubator/http/WebSocket$Listener;)Ljdk/incubator/http/WebSocket$Builder;
+method name cookieHandler descriptor ()Ljava/util/Optional; flags 401 signature ()Ljava/util/Optional<Ljava/net/CookieHandler;>;
+method name sslParameters descriptor ()Ljavax/net/ssl/SSLParameters; flags 401
+method name executor descriptor ()Ljava/util/Optional; flags 401 signature ()Ljava/util/Optional<Ljava/util/concurrent/Executor;>;
+method name sendAsync descriptor (Ljdk/incubator/http/HttpRequest;Ljdk/incubator/http/HttpResponse$MultiSubscriber;)Ljava/util/concurrent/CompletableFuture; flags 401 signature <U:Ljava/lang/Object;T:Ljava/lang/Object;>(Ljdk/incubator/http/HttpRequest;Ljdk/incubator/http/HttpResponse$MultiSubscriber<TU;TT;>;)Ljava/util/concurrent/CompletableFuture<TU;>;
+method name newWebSocketBuilder descriptor ()Ljdk/incubator/http/WebSocket$Builder; flags 1
+
+class name jdk/incubator/http/HttpClient$Builder
+field name NO_PROXY descriptor Ljava/net/ProxySelector; flags 19
+-method name cookieManager descriptor (Ljava/net/CookieManager;)Ljdk/incubator/http/HttpClient$Builder;
+method name cookieHandler descriptor (Ljava/net/CookieHandler;)Ljdk/incubator/http/HttpClient$Builder; flags 401
+
+class name jdk/incubator/http/HttpHeaders
+header extends java/lang/Object flags 421
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+-method name firstValue descriptor (Ljava/lang/String;)Ljava/util/Optional;
+-method name firstValueAsLong descriptor (Ljava/lang/String;)Ljava/util/OptionalLong;
+-method name allValues descriptor (Ljava/lang/String;)Ljava/util/List;
+method name <init> descriptor ()V flags 4
+method name firstValue descriptor (Ljava/lang/String;)Ljava/util/Optional; flags 1 signature (Ljava/lang/String;)Ljava/util/Optional<Ljava/lang/String;>;
+method name firstValueAsLong descriptor (Ljava/lang/String;)Ljava/util/OptionalLong; flags 1
+method name allValues descriptor (Ljava/lang/String;)Ljava/util/List; flags 1 signature (Ljava/lang/String;)Ljava/util/List<Ljava/lang/String;>;
+method name equals descriptor (Ljava/lang/Object;)Z flags 11
+method name hashCode descriptor ()I flags 11
+method name toString descriptor ()Ljava/lang/String; flags 1
+
+class name jdk/incubator/http/HttpRequest
+header extends java/lang/Object flags 421
+innerclass innerClass jdk/incubator/http/HttpRequest$BodyPublisher outerClass jdk/incubator/http/HttpRequest innerClassName BodyPublisher flags 609
+innerclass innerClass jdk/incubator/http/HttpRequest$Builder outerClass jdk/incubator/http/HttpRequest innerClassName Builder flags 409
+innerclass innerClass jdk/incubator/http/HttpClient$Version outerClass jdk/incubator/http/HttpClient innerClassName Version flags 4019
+-method name bodyProcessor descriptor ()Ljava/util/Optional;
+-method name duration descriptor ()Ljava/time/Duration;
+-method name noBody descriptor ()Ljdk/incubator/http/HttpRequest$BodyProcessor;
+method name bodyPublisher descriptor ()Ljava/util/Optional; flags 401 signature ()Ljava/util/Optional<Ljdk/incubator/http/HttpRequest$BodyPublisher;>;
+method name timeout descriptor ()Ljava/util/Optional; flags 401 signature ()Ljava/util/Optional<Ljava/time/Duration;>;
+method name equals descriptor (Ljava/lang/Object;)Z flags 11
+method name hashCode descriptor ()I flags 11
+
+-class name jdk/incubator/http/HttpRequest$BodyProcessor
+
+class name jdk/incubator/http/HttpRequest$BodyPublisher
+header extends java/lang/Object implements java/util/concurrent/Flow$Publisher flags 601 signature Ljava/lang/Object;Ljava/util/concurrent/Flow$Publisher<Ljava/nio/ByteBuffer;>;
+innerclass innerClass java/util/concurrent/Flow$Publisher outerClass java/util/concurrent/Flow innerClassName Publisher flags 609
+innerclass innerClass jdk/incubator/http/HttpRequest$BodyPublisher outerClass jdk/incubator/http/HttpRequest innerClassName BodyPublisher flags 609
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+method name fromPublisher descriptor (Ljava/util/concurrent/Flow$Publisher;)Ljdk/incubator/http/HttpRequest$BodyPublisher; flags 9 signature (Ljava/util/concurrent/Flow$Publisher<+Ljava/nio/ByteBuffer;>;)Ljdk/incubator/http/HttpRequest$BodyPublisher;
+method name fromPublisher descriptor (Ljava/util/concurrent/Flow$Publisher;J)Ljdk/incubator/http/HttpRequest$BodyPublisher; flags 9 signature (Ljava/util/concurrent/Flow$Publisher<+Ljava/nio/ByteBuffer;>;J)Ljdk/incubator/http/HttpRequest$BodyPublisher;
+method name fromString descriptor (Ljava/lang/String;)Ljdk/incubator/http/HttpRequest$BodyPublisher; flags 9
+method name fromString descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;)Ljdk/incubator/http/HttpRequest$BodyPublisher; flags 9
+method name fromInputStream descriptor (Ljava/util/function/Supplier;)Ljdk/incubator/http/HttpRequest$BodyPublisher; flags 9 signature (Ljava/util/function/Supplier<+Ljava/io/InputStream;>;)Ljdk/incubator/http/HttpRequest$BodyPublisher;
+method name fromByteArray descriptor ([B)Ljdk/incubator/http/HttpRequest$BodyPublisher; flags 9
+method name fromByteArray descriptor ([BII)Ljdk/incubator/http/HttpRequest$BodyPublisher; flags 9
+method name fromFile descriptor (Ljava/nio/file/Path;)Ljdk/incubator/http/HttpRequest$BodyPublisher; thrownTypes java/io/FileNotFoundException flags 9
+method name fromByteArrays descriptor (Ljava/lang/Iterable;)Ljdk/incubator/http/HttpRequest$BodyPublisher; flags 9 signature (Ljava/lang/Iterable<[B>;)Ljdk/incubator/http/HttpRequest$BodyPublisher;
+method name noBody descriptor ()Ljdk/incubator/http/HttpRequest$BodyPublisher; flags 9
+method name contentLength descriptor ()J flags 401
+
+class name jdk/incubator/http/HttpRequest$Builder
+header extends java/lang/Object flags 421
+innerclass innerClass jdk/incubator/http/HttpRequest$Builder outerClass jdk/incubator/http/HttpRequest innerClassName Builder flags 409
+innerclass innerClass jdk/incubator/http/HttpClient$Version outerClass jdk/incubator/http/HttpClient innerClassName Version flags 4019
+innerclass innerClass jdk/incubator/http/HttpRequest$BodyPublisher outerClass jdk/incubator/http/HttpRequest innerClassName BodyPublisher flags 609
+-method name POST descriptor (Ljdk/incubator/http/HttpRequest$BodyProcessor;)Ljdk/incubator/http/HttpRequest$Builder;
+-method name PUT descriptor (Ljdk/incubator/http/HttpRequest$BodyProcessor;)Ljdk/incubator/http/HttpRequest$Builder;
+-method name DELETE descriptor (Ljdk/incubator/http/HttpRequest$BodyProcessor;)Ljdk/incubator/http/HttpRequest$Builder;
+-method name method descriptor (Ljava/lang/String;Ljdk/incubator/http/HttpRequest$BodyProcessor;)Ljdk/incubator/http/HttpRequest$Builder;
+method name POST descriptor (Ljdk/incubator/http/HttpRequest$BodyPublisher;)Ljdk/incubator/http/HttpRequest$Builder; flags 401
+method name PUT descriptor (Ljdk/incubator/http/HttpRequest$BodyPublisher;)Ljdk/incubator/http/HttpRequest$Builder; flags 401
+method name DELETE descriptor (Ljdk/incubator/http/HttpRequest$BodyPublisher;)Ljdk/incubator/http/HttpRequest$Builder; flags 401
+method name method descriptor (Ljava/lang/String;Ljdk/incubator/http/HttpRequest$BodyPublisher;)Ljdk/incubator/http/HttpRequest$Builder; flags 401
+
+class name jdk/incubator/http/HttpResponse
+header extends java/lang/Object flags 421 signature <T:Ljava/lang/Object;>Ljava/lang/Object;
+innerclass innerClass jdk/incubator/http/HttpResponse$MultiSubscriber outerClass jdk/incubator/http/HttpResponse innerClassName MultiSubscriber flags 609
+innerclass innerClass jdk/incubator/http/HttpResponse$BodySubscriber outerClass jdk/incubator/http/HttpResponse innerClassName BodySubscriber flags 609
+innerclass innerClass jdk/incubator/http/HttpResponse$BodyHandler outerClass jdk/incubator/http/HttpResponse innerClassName BodyHandler flags 609
+innerclass innerClass jdk/incubator/http/HttpClient$Version outerClass jdk/incubator/http/HttpClient innerClassName Version flags 4019
+-method name finalRequest descriptor ()Ljdk/incubator/http/HttpRequest;
+-method name trailers descriptor ()Ljava/util/concurrent/CompletableFuture;
+method name previousResponse descriptor ()Ljava/util/Optional; flags 401 signature ()Ljava/util/Optional<Ljdk/incubator/http/HttpResponse<TT;>;>;
+
+class name jdk/incubator/http/HttpResponse$BodyHandler
+header extends java/lang/Object flags 601 signature <T:Ljava/lang/Object;>Ljava/lang/Object; runtimeAnnotations @Ljava/lang/FunctionalInterface;
+innerclass innerClass jdk/incubator/http/HttpResponse$BodySubscriber outerClass jdk/incubator/http/HttpResponse innerClassName BodySubscriber flags 609
+innerclass innerClass java/util/concurrent/Flow$Subscriber outerClass java/util/concurrent/Flow innerClassName Subscriber flags 609
+innerclass innerClass jdk/incubator/http/HttpResponse$BodyHandler outerClass jdk/incubator/http/HttpResponse innerClassName BodyHandler flags 609
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+-method name apply descriptor (ILjdk/incubator/http/HttpHeaders;)Ljdk/incubator/http/HttpResponse$BodyProcessor;
+method name apply descriptor (ILjdk/incubator/http/HttpHeaders;)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 401 signature (ILjdk/incubator/http/HttpHeaders;)Ljdk/incubator/http/HttpResponse$BodySubscriber<TT;>;
+method name fromSubscriber descriptor (Ljava/util/concurrent/Flow$Subscriber;)Ljdk/incubator/http/HttpResponse$BodyHandler; flags 9 signature (Ljava/util/concurrent/Flow$Subscriber<-Ljava/util/List<Ljava/nio/ByteBuffer;>;>;)Ljdk/incubator/http/HttpResponse$BodyHandler<Ljava/lang/Void;>;
+method name fromSubscriber descriptor (Ljava/util/concurrent/Flow$Subscriber;Ljava/util/function/Function;)Ljdk/incubator/http/HttpResponse$BodyHandler; flags 9 signature <S::Ljava/util/concurrent/Flow$Subscriber<-Ljava/util/List<Ljava/nio/ByteBuffer;>;>;T:Ljava/lang/Object;>(TS;Ljava/util/function/Function<TS;TT;>;)Ljdk/incubator/http/HttpResponse$BodyHandler<TT;>;
+method name asInputStream descriptor ()Ljdk/incubator/http/HttpResponse$BodyHandler; flags 9 signature ()Ljdk/incubator/http/HttpResponse$BodyHandler<Ljava/io/InputStream;>;
+method name buffering descriptor (Ljdk/incubator/http/HttpResponse$BodyHandler;I)Ljdk/incubator/http/HttpResponse$BodyHandler; flags 9 signature <T:Ljava/lang/Object;>(Ljdk/incubator/http/HttpResponse$BodyHandler<TT;>;I)Ljdk/incubator/http/HttpResponse$BodyHandler<TT;>;
+
+-class name jdk/incubator/http/HttpResponse$BodyProcessor
+
+class name jdk/incubator/http/HttpResponse$BodySubscriber
+header extends java/lang/Object implements java/util/concurrent/Flow$Subscriber flags 601 signature <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/Flow$Subscriber<Ljava/util/List<Ljava/nio/ByteBuffer;>;>;
+innerclass innerClass java/util/concurrent/Flow$Subscriber outerClass java/util/concurrent/Flow innerClassName Subscriber flags 609
+innerclass innerClass jdk/incubator/http/HttpResponse$BodySubscriber outerClass jdk/incubator/http/HttpResponse innerClassName BodySubscriber flags 609
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+method name getBody descriptor ()Ljava/util/concurrent/CompletionStage; flags 401 signature ()Ljava/util/concurrent/CompletionStage<TT;>;
+method name fromSubscriber descriptor (Ljava/util/concurrent/Flow$Subscriber;)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 9 signature <S::Ljava/util/concurrent/Flow$Subscriber<-Ljava/util/List<Ljava/nio/ByteBuffer;>;>;>(TS;)Ljdk/incubator/http/HttpResponse$BodySubscriber<Ljava/lang/Void;>;
+method name fromSubscriber descriptor (Ljava/util/concurrent/Flow$Subscriber;Ljava/util/function/Function;)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 9 signature <S::Ljava/util/concurrent/Flow$Subscriber<-Ljava/util/List<Ljava/nio/ByteBuffer;>;>;T:Ljava/lang/Object;>(TS;Ljava/util/function/Function<TS;TT;>;)Ljdk/incubator/http/HttpResponse$BodySubscriber<TT;>;
+method name asString descriptor (Ljava/nio/charset/Charset;)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 9 signature (Ljava/nio/charset/Charset;)Ljdk/incubator/http/HttpResponse$BodySubscriber<Ljava/lang/String;>;
+method name asByteArray descriptor ()Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 9 signature ()Ljdk/incubator/http/HttpResponse$BodySubscriber<[B>;
+method name asFile descriptor (Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 89 signature (Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljdk/incubator/http/HttpResponse$BodySubscriber<Ljava/nio/file/Path;>;
+method name asFile descriptor (Ljava/nio/file/Path;)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 9 signature (Ljava/nio/file/Path;)Ljdk/incubator/http/HttpResponse$BodySubscriber<Ljava/nio/file/Path;>;
+method name asByteArrayConsumer descriptor (Ljava/util/function/Consumer;)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 9 signature (Ljava/util/function/Consumer<Ljava/util/Optional<[B>;>;)Ljdk/incubator/http/HttpResponse$BodySubscriber<Ljava/lang/Void;>;
+method name asInputStream descriptor ()Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 9 signature ()Ljdk/incubator/http/HttpResponse$BodySubscriber<Ljava/io/InputStream;>;
+method name discard descriptor (Ljava/lang/Object;)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 9 signature <U:Ljava/lang/Object;>(TU;)Ljdk/incubator/http/HttpResponse$BodySubscriber<TU;>;
+method name buffering descriptor (Ljdk/incubator/http/HttpResponse$BodySubscriber;I)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 9 signature <T:Ljava/lang/Object;>(Ljdk/incubator/http/HttpResponse$BodySubscriber<TT;>;I)Ljdk/incubator/http/HttpResponse$BodySubscriber<TT;>;
+method name access$000 descriptor (Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljdk/incubator/http/HttpResponse$BodySubscriber; flags 1009
+
+-class name jdk/incubator/http/HttpResponse$MultiProcessor
+
+class name jdk/incubator/http/HttpResponse$MultiSubscriber
+header extends java/lang/Object flags 601 signature <U:Ljava/lang/Object;T:Ljava/lang/Object;>Ljava/lang/Object;
+innerclass innerClass jdk/incubator/http/HttpResponse$BodyHandler outerClass jdk/incubator/http/HttpResponse innerClassName BodyHandler flags 609
+innerclass innerClass jdk/incubator/http/HttpResponse$MultiSubscriber outerClass jdk/incubator/http/HttpResponse innerClassName MultiSubscriber flags 609
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+method name onRequest descriptor (Ljdk/incubator/http/HttpRequest;)Ljdk/incubator/http/HttpResponse$BodyHandler; flags 401 signature (Ljdk/incubator/http/HttpRequest;)Ljdk/incubator/http/HttpResponse$BodyHandler<TT;>;
+method name onPushPromise descriptor (Ljdk/incubator/http/HttpRequest;)Ljava/util/Optional; flags 401 signature (Ljdk/incubator/http/HttpRequest;)Ljava/util/Optional<Ljdk/incubator/http/HttpResponse$BodyHandler<TT;>;>;
+method name onResponse descriptor (Ljdk/incubator/http/HttpResponse;)V flags 401 signature (Ljdk/incubator/http/HttpResponse<TT;>;)V
+method name onError descriptor (Ljdk/incubator/http/HttpRequest;Ljava/lang/Throwable;)V flags 401
+method name completion descriptor (Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletableFuture; flags 401 signature (Ljava/util/concurrent/CompletableFuture<Ljava/lang/Void;>;Ljava/util/concurrent/CompletableFuture<Ljava/lang/Void;>;)Ljava/util/concurrent/CompletableFuture<TU;>;
+method name asMap descriptor (Ljava/util/function/Function;Z)Ljdk/incubator/http/HttpResponse$MultiSubscriber; flags 9 signature <V:Ljava/lang/Object;>(Ljava/util/function/Function<Ljdk/incubator/http/HttpRequest;Ljava/util/Optional<Ljdk/incubator/http/HttpResponse$BodyHandler<TV;>;>;>;Z)Ljdk/incubator/http/HttpResponse$MultiSubscriber<Ljdk/incubator/http/MultiMapResult<TV;>;TV;>;
+method name asMap descriptor (Ljava/util/function/Function;)Ljdk/incubator/http/HttpResponse$MultiSubscriber; flags 9 signature <V:Ljava/lang/Object;>(Ljava/util/function/Function<Ljdk/incubator/http/HttpRequest;Ljava/util/Optional<Ljdk/incubator/http/HttpResponse$BodyHandler<TV;>;>;>;)Ljdk/incubator/http/HttpResponse$MultiSubscriber<Ljdk/incubator/http/MultiMapResult<TV;>;TV;>;
+
+class name jdk/incubator/http/WebSocket
+-method name isClosed descriptor ()Z
+-method name abort descriptor ()V
+method name isOutputClosed descriptor ()Z flags 401
+method name isInputClosed descriptor ()Z flags 401
+method name abort descriptor ()V flags 401
+
+class name jdk/incubator/http/WebSocket$Builder
+header extends java/lang/Object flags 601
+innerclass innerClass jdk/incubator/http/WebSocket$Builder outerClass jdk/incubator/http/WebSocket innerClassName Builder flags 609
+innerclass innerClass jdk/incubator/http/WebSocket$Listener outerClass jdk/incubator/http/WebSocket innerClassName Listener flags 609
+-method name buildAsync descriptor ()Ljava/util/concurrent/CompletableFuture;
+method name buildAsync descriptor (Ljava/net/URI;Ljdk/incubator/http/WebSocket$Listener;)Ljava/util/concurrent/CompletableFuture; flags 401 signature (Ljava/net/URI;Ljdk/incubator/http/WebSocket$Listener;)Ljava/util/concurrent/CompletableFuture<Ljdk/incubator/http/WebSocket;>;
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jartool-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jartool
+header exports com/sun/jarsigner,jdk/security/jarsigner requires name\u0020;java.base\u0020;flags\u0020;8000 provides interface\u0020;java/util/spi/ToolProvider\u0020;impls\u0020;sun/tools/jar/JarToolProvider target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.javadoc-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.javadoc
+header exports com/sun/javadoc,com/sun/tools/javadoc,jdk/javadoc/doclet requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.xml\u0020;flags\u0020;0,name\u0020;java.compiler\u0020;flags\u0020;20,name\u0020;jdk.compiler\u0020;flags\u0020;20 provides interface\u0020;java/util/spi/ToolProvider\u0020;impls\u0020;jdk/javadoc/internal/tool/JavadocToolProvider,interface\u0020;javax/tools/DocumentationTool\u0020;impls\u0020;jdk/javadoc/internal/api/JavadocTool,interface\u0020;javax/tools/Tool\u0020;impls\u0020;jdk/javadoc/internal/api/JavadocTool target linux-amd64 flags 8000
+
+-class name com/sun/tools/doclets/Taglet
+
+-class name com/sun/tools/doclets/standard/Standard
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jcmd-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jcmd
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;jdk.attach\u0020;flags\u0020;0,name\u0020;jdk.internal.jvmstat\u0020;flags\u0020;0 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jconsole-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jconsole
+header exports com/sun/tools/jconsole requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.management.rmi\u0020;flags\u0020;0,name\u0020;java.rmi\u0020;flags\u0020;0,name\u0020;jdk.attach\u0020;flags\u0020;0,name\u0020;jdk.internal.jvmstat\u0020;flags\u0020;0,name\u0020;jdk.management\u0020;flags\u0020;0,name\u0020;jdk.management.agent\u0020;flags\u0020;0,name\u0020;java.desktop\u0020;flags\u0020;20,name\u0020;java.management\u0020;flags\u0020;20 uses com/sun/tools/jconsole/JConsolePlugin target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jdeps-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jdeps
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.compiler\u0020;flags\u0020;0,name\u0020;jdk.compiler\u0020;flags\u0020;0 provides interface\u0020;java/util/spi/ToolProvider\u0020;impls\u0020;com/sun/tools/javap/Main$JavapToolProvider\u005C;u002C;com/sun/tools/jdeps/Main$JDepsToolProvider target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jdi-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jdi
+header exports com/sun/jdi,com/sun/jdi/connect,com/sun/jdi/connect/spi,com/sun/jdi/event,com/sun/jdi/request requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;jdk.attach\u0020;flags\u0020;0,name\u0020;jdk.jdwp.agent\u0020;flags\u0020;0 uses com/sun/jdi/connect/Connector,com/sun/jdi/connect/spi/TransportService provides interface\u0020;com/sun/jdi/connect/Connector\u0020;impls\u0020;com/sun/tools/jdi/ProcessAttachingConnector\u005C;u002C;com/sun/tools/jdi/RawCommandLineLauncher\u005C;u002C;com/sun/tools/jdi/SocketAttachingConnector\u005C;u002C;com/sun/tools/jdi/SocketListeningConnector\u005C;u002C;com/sun/tools/jdi/SunCommandLineLauncher target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jdwp.agent-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jdwp.agent
+header requires name\u0020;java.base\u0020;flags\u0020;8000 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jlink-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jlink
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;jdk.internal.opt\u0020;flags\u0020;0,name\u0020;jdk.jdeps\u0020;flags\u0020;0 uses jdk/tools/jlink/plugin/Plugin provides interface\u0020;java/util/spi/ToolProvider\u0020;impls\u0020;jdk/tools/jmod/Main$JmodToolProvider\u005C;u002C;jdk/tools/jlink/internal/Main$JlinkToolProvider,interface\u0020;jdk/tools/jlink/plugin/Plugin\u0020;impls\u0020;jdk/tools/jlink/internal/plugins/StripDebugPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/ExcludePlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/ExcludeFilesPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/ExcludeJmodSectionPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/LegalNoticeFilePlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/SystemModulesPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/StripNativeCommandsPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/OrderResourcesPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/DefaultCompressPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/ExcludeVMPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/IncludeLocalesPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/GenerateJLIClassesPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/ReleaseInfoPlugin\u005C;u002C;jdk/tools/jlink/internal/plugins/ClassForNamePlugin target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jshell-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,37 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jshell
+header exports jdk/jshell,jdk/jshell/execution,jdk/jshell/spi,jdk/jshell/tool requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;0,name\u0020;jdk.compiler\u0020;flags\u0020;0,name\u0020;jdk.internal.ed\u0020;flags\u0020;0,name\u0020;jdk.internal.le\u0020;flags\u0020;0,name\u0020;jdk.internal.opt\u0020;flags\u0020;0,name\u0020;java.compiler\u0020;flags\u0020;20,name\u0020;java.prefs\u0020;flags\u0020;20,name\u0020;jdk.jdi\u0020;flags\u0020;20 uses jdk/jshell/spi/ExecutionControlProvider,jdk/internal/editor/spi/BuildInEditorProvider provides interface\u0020;javax/tools/Tool\u0020;impls\u0020;jdk/internal/jshell/tool/JShellToolProvider,interface\u0020;jdk/jshell/spi/ExecutionControlProvider\u0020;impls\u0020;jdk/jshell/execution/JdiExecutionControlProvider\u005C;u002C;jdk/jshell/execution/LocalExecutionControlProvider\u005C;u002C;jdk/jshell/execution/FailOverExecutionControlProvider target linux-amd64 flags 8000
+
+class name jdk/jshell/SourceCodeAnalysis
+method name sourceToSnippets descriptor (Ljava/lang/String;)Ljava/util/List; flags 401 signature (Ljava/lang/String;)Ljava/util/List<Ljdk/jshell/Snippet;>;
+
+class name jdk/jshell/tool/JavaShellToolBuilder
+method name start descriptor ([Ljava/lang/String;)I thrownTypes java/lang/Exception flags 81
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jsobject-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jsobject
+header exports netscape/javascript requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.desktop\u0020;flags\u0020;0 uses jdk/internal/netscape/javascript/spi/JSObjectProvider target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.jstatd-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.jstatd
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.rmi\u0020;flags\u0020;0,name\u0020;jdk.internal.jvmstat\u0020;flags\u0020;0 provides interface\u0020;sun/jvmstat/monitor/MonitoredHostService\u0020;impls\u0020;sun/jvmstat/perfdata/monitor/protocol/rmi/MonitoredHostRmiService target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.localedata-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.localedata
+header requires name\u0020;java.base\u0020;flags\u0020;8000 provides interface\u0020;sun/util/locale/provider/LocaleDataMetaInfo\u0020;impls\u0020;sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo\u005C;u002C;sun/util/resources/provider/NonBaseLocaleDataMetaInfo,interface\u0020;sun/util/resources/LocaleData$CommonResourceBundleProvider\u0020;impls\u0020;sun/util/resources/provider/LocaleDataProvider,interface\u0020;sun/util/resources/LocaleData$SupplementaryResourceBundleProvider\u0020;impls\u0020;sun/util/resources/provider/SupplementaryLocaleDataProvider target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.management-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.management
+header exports com/sun/management requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.management\u0020;flags\u0020;20 provides interface\u0020;sun/management/spi/PlatformMBeanProvider\u0020;impls\u0020;com/sun/management/internal/PlatformMBeanProviderImpl target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.management.agent-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.management.agent
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.management\u0020;flags\u0020;0,name\u0020;java.management.rmi\u0020;flags\u0020;0 uses jdk/internal/agent/spi/AgentProvider target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.naming.dns-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.naming.dns
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.naming\u0020;flags\u0020;0 provides interface\u0020;javax/naming/spi/InitialContextFactory\u0020;impls\u0020;com/sun/jndi/dns/DnsContextFactory target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.naming.rmi-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.naming.rmi
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.naming\u0020;flags\u0020;0,name\u0020;java.rmi\u0020;flags\u0020;0 provides interface\u0020;javax/naming/spi/InitialContextFactory\u0020;impls\u0020;com/sun/jndi/rmi/registry/RegistryContextFactory target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.net-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,34 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.net
+header exports jdk/net requires name\u0020;java.base\u0020;flags\u0020;8000 target linux-amd64 flags 8000
+
+class name jdk/net/ExtendedSocketOptions
+field name TCP_QUICKACK descriptor Ljava/net/SocketOption; flags 19 signature Ljava/net/SocketOption<Ljava/lang/Boolean;>;
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.pack-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.pack
+header requires name\u0020;java.base\u0020;flags\u0020;8000 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.policytool-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+-module name jdk.policytool
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.rmic-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.rmic
+header requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.corba\u0020;flags\u0020;0,name\u0020;jdk.compiler\u0020;flags\u0020;0,name\u0020;jdk.javadoc\u0020;flags\u0020;0 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.scripting.nashorn-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.scripting.nashorn
+header exports jdk/nashorn/api/scripting,jdk/nashorn/api/tree requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;0,name\u0020;jdk.dynalink\u0020;flags\u0020;0,name\u0020;java.scripting\u0020;flags\u0020;20 provides interface\u0020;javax/script/ScriptEngineFactory\u0020;impls\u0020;jdk/nashorn/api/scripting/NashornScriptEngineFactory,interface\u0020;jdk/dynalink/linker/GuardingDynamicLinkerExporter\u0020;impls\u0020;jdk/nashorn/api/linker/NashornLinkerExporter target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.sctp-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.sctp
+header exports com/sun/nio/sctp requires name\u0020;java.base\u0020;flags\u0020;8000 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.security.auth-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,45 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.security.auth
+header exports com/sun/security/auth,com/sun/security/auth/callback,com/sun/security/auth/login,com/sun/security/auth/module requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.security.jgss\u0020;flags\u0020;0,name\u0020;java.naming\u0020;flags\u0020;20 provides interface\u0020;javax/security/auth/spi/LoginModule\u0020;impls\u0020;com/sun/security/auth/module/Krb5LoginModule\u005C;u002C;com/sun/security/auth/module/UnixLoginModule\u005C;u002C;com/sun/security/auth/module/JndiLoginModule\u005C;u002C;com/sun/security/auth/module/KeyStoreLoginModule\u005C;u002C;com/sun/security/auth/module/LdapLoginModule\u005C;u002C;com/sun/security/auth/module/NTLoginModule target linux-amd64 flags 8000
+
+-class name com/sun/security/auth/PolicyFile
+
+-class name com/sun/security/auth/SolarisNumericGroupPrincipal
+
+-class name com/sun/security/auth/SolarisNumericUserPrincipal
+
+-class name com/sun/security/auth/SolarisPrincipal
+
+-class name com/sun/security/auth/X500Principal
+
+-class name com/sun/security/auth/module/SolarisLoginModule
+
+-class name com/sun/security/auth/module/SolarisSystem
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.security.jgss-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.security.jgss
+header exports com/sun/security/jgss requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.logging\u0020;flags\u0020;0,name\u0020;java.security.sasl\u0020;flags\u0020;0,name\u0020;java.security.jgss\u0020;flags\u0020;20 provides interface\u0020;java/security/Provider\u0020;impls\u0020;com/sun/security/sasl/gsskerb/JdkSASL target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.unsupported-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,39 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.unsupported
+header exports com/sun/nio/file,sun/misc,sun/reflect requires name\u0020;java.base\u0020;flags\u0020;8000 target linux-amd64 flags 8000
+
+class name com/sun/nio/file/ExtendedOpenOption
+field name DIRECT descriptor Lcom/sun/nio/file/ExtendedOpenOption; flags 4019
+
+class name sun/reflect/ReflectionFactory
+header extends java/lang/Object flags 21 classAnnotations @Lsun/Proprietary+Annotation;
+innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19
+method name newInstanceForSerialization descriptor (Ljava/lang/reflect/Constructor;[Ljava/security/ProtectionDomain;)Ljava/lang/Object; thrownTypes java/lang/InstantiationException,java/lang/reflect/InvocationTargetException,java/lang/IllegalAccessException flags 11 signature (Ljava/lang/reflect/Constructor<*>;[Ljava/security/ProtectionDomain;)Ljava/lang/Object;
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.xml.dom-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.xml.dom
+header exports org/w3c/dom/css,org/w3c/dom/html,org/w3c/dom/stylesheets,org/w3c/dom/xpath requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.xml\u0020;flags\u0020;20 target linux-amd64 flags 8000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/symbols/jdk.zipfs-A.sym.txt Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+module name jdk.zipfs
+header requires name\u0020;java.base\u0020;flags\u0020;8000 provides interface\u0020;java/nio/file/spi/FileSystemProvider\u0020;impls\u0020;jdk/nio/zipfs/ZipFileSystemProvider target linux-amd64 flags 8000
+
--- a/make/data/symbols/symbols Sun May 06 16:19:56 2018 +0200
+++ b/make/data/symbols/symbols Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -27,10 +27,11 @@
# ##########################################################
#
#command used to generate this file:
-#build.tools.symbolgenerator.CreateSymbols build-description new-symbols symbols/include.list 8 JDK8.classes <none> 7 JDK7.classes 8 6 JDK6u4.classes 7 9 JDK9.classes 8
+#build.tools.symbolgenerator.CreateSymbols build-description-incremental symbols include.list
#
-generate platforms 6:7:8:9
+generate platforms 6:7:8:9:A
platform version 8 files java.activation-8.sym.txt:java.base-8.sym.txt:java.compiler-8.sym.txt:java.corba-8.sym.txt:java.datatransfer-8.sym.txt:java.desktop-8.sym.txt:java.instrument-8.sym.txt:java.logging-8.sym.txt:java.management-8.sym.txt:java.management.rmi-8.sym.txt:java.naming-8.sym.txt:java.prefs-8.sym.txt:java.rmi-8.sym.txt:java.scripting-8.sym.txt:java.security.jgss-8.sym.txt:java.security.sasl-8.sym.txt:java.sql-8.sym.txt:java.sql.rowset-8.sym.txt:java.transaction-8.sym.txt:java.xml-8.sym.txt:java.xml.bind-8.sym.txt:java.xml.crypto-8.sym.txt:java.xml.ws-8.sym.txt:java.xml.ws.annotation-8.sym.txt:jdk.httpserver-8.sym.txt:jdk.management-8.sym.txt:jdk.scripting.nashorn-8.sym.txt:jdk.sctp-8.sym.txt:jdk.security.auth-8.sym.txt:jdk.security.jgss-8.sym.txt
platform version 7 base 8 files java.base-7.sym.txt:java.compiler-7.sym.txt:java.datatransfer-7.sym.txt:java.desktop-7.sym.txt:java.logging-7.sym.txt:java.management-7.sym.txt:java.naming-7.sym.txt:java.prefs-7.sym.txt:java.rmi-7.sym.txt:java.scripting-7.sym.txt:java.security.jgss-7.sym.txt:java.security.sasl-7.sym.txt:java.sql-7.sym.txt:java.sql.rowset-7.sym.txt:java.xml-7.sym.txt:java.xml.bind-7.sym.txt:java.xml.ws.annotation-7.sym.txt:jdk.httpserver-7.sym.txt:jdk.management-7.sym.txt:jdk.scripting.nashorn-7.sym.txt:jdk.sctp-7.sym.txt:jdk.security.auth-7.sym.txt:jdk.security.jgss-7.sym.txt
platform version 6 base 7 files java.base-6.sym.txt:java.compiler-6.sym.txt:java.desktop-6.sym.txt:java.logging-6.sym.txt:java.management-6.sym.txt:java.rmi-6.sym.txt:java.security.jgss-6.sym.txt:java.sql-6.sym.txt:java.sql.rowset-6.sym.txt:java.xml-6.sym.txt:java.xml.bind-6.sym.txt:java.xml.ws-6.sym.txt:java.xml.ws.annotation-6.sym.txt:jdk.management-6.sym.txt:jdk.sctp-6.sym.txt:jdk.security.jgss-6.sym.txt
platform version 9 base 8 files java.activation-9.sym.txt:java.base-9.sym.txt:java.compiler-9.sym.txt:java.corba-9.sym.txt:java.datatransfer-9.sym.txt:java.desktop-9.sym.txt:java.instrument-9.sym.txt:java.logging-9.sym.txt:java.management-9.sym.txt:java.management.rmi-9.sym.txt:java.naming-9.sym.txt:java.prefs-9.sym.txt:java.rmi-9.sym.txt:java.scripting-9.sym.txt:java.se-9.sym.txt:java.se.ee-9.sym.txt:java.security.jgss-9.sym.txt:java.security.sasl-9.sym.txt:java.smartcardio-9.sym.txt:java.sql-9.sym.txt:java.sql.rowset-9.sym.txt:java.transaction-9.sym.txt:java.xml-9.sym.txt:java.xml.bind-9.sym.txt:java.xml.crypto-9.sym.txt:java.xml.ws-9.sym.txt:java.xml.ws.annotation-9.sym.txt:jdk.accessibility-9.sym.txt:jdk.attach-9.sym.txt:jdk.charsets-9.sym.txt:jdk.compiler-9.sym.txt:jdk.crypto.cryptoki-9.sym.txt:jdk.crypto.ec-9.sym.txt:jdk.dynalink-9.sym.txt:jdk.editpad-9.sym.txt:jdk.hotspot.agent-9.sym.txt:jdk.httpserver-9.sym.txt:jdk.incubator.httpclient-9.sym.txt:jdk.jartool-9.sym.txt:jdk.javadoc-9.sym.txt:jdk.jcmd-9.sym.txt:jdk.jconsole-9.sym.txt:jdk.jdeps-9.sym.txt:jdk.jdi-9.sym.txt:jdk.jdwp.agent-9.sym.txt:jdk.jlink-9.sym.txt:jdk.jshell-9.sym.txt:jdk.jsobject-9.sym.txt:jdk.jstatd-9.sym.txt:jdk.localedata-9.sym.txt:jdk.management-9.sym.txt:jdk.management.agent-9.sym.txt:jdk.naming.dns-9.sym.txt:jdk.naming.rmi-9.sym.txt:jdk.net-9.sym.txt:jdk.pack-9.sym.txt:jdk.policytool-9.sym.txt:jdk.rmic-9.sym.txt:jdk.scripting.nashorn-9.sym.txt:jdk.sctp-9.sym.txt:jdk.security.auth-9.sym.txt:jdk.security.jgss-9.sym.txt:jdk.unsupported-9.sym.txt:jdk.xml.dom-9.sym.txt:jdk.zipfs-9.sym.txt
+platform version A base 9 files java.activation-A.sym.txt:java.base-A.sym.txt:java.compiler-A.sym.txt:java.corba-A.sym.txt:java.datatransfer-A.sym.txt:java.desktop-A.sym.txt:java.instrument-A.sym.txt:java.logging-A.sym.txt:java.management-A.sym.txt:java.management.rmi-A.sym.txt:java.naming-A.sym.txt:java.prefs-A.sym.txt:java.rmi-A.sym.txt:java.scripting-A.sym.txt:java.se-A.sym.txt:java.se.ee-A.sym.txt:java.security.jgss-A.sym.txt:java.security.sasl-A.sym.txt:java.smartcardio-A.sym.txt:java.sql-A.sym.txt:java.sql.rowset-A.sym.txt:java.transaction-A.sym.txt:java.xml-A.sym.txt:java.xml.bind-A.sym.txt:java.xml.crypto-A.sym.txt:java.xml.ws-A.sym.txt:java.xml.ws.annotation-A.sym.txt:jdk.accessibility-A.sym.txt:jdk.attach-A.sym.txt:jdk.charsets-A.sym.txt:jdk.compiler-A.sym.txt:jdk.crypto.cryptoki-A.sym.txt:jdk.crypto.ec-A.sym.txt:jdk.dynalink-A.sym.txt:jdk.editpad-A.sym.txt:jdk.hotspot.agent-A.sym.txt:jdk.httpserver-A.sym.txt:jdk.incubator.httpclient-A.sym.txt:jdk.jartool-A.sym.txt:jdk.javadoc-A.sym.txt:jdk.jcmd-A.sym.txt:jdk.jconsole-A.sym.txt:jdk.jdeps-A.sym.txt:jdk.jdi-A.sym.txt:jdk.jdwp.agent-A.sym.txt:jdk.jlink-A.sym.txt:jdk.jshell-A.sym.txt:jdk.jsobject-A.sym.txt:jdk.jstatd-A.sym.txt:jdk.localedata-A.sym.txt:jdk.management-A.sym.txt:jdk.management.agent-A.sym.txt:jdk.naming.dns-A.sym.txt:jdk.naming.rmi-A.sym.txt:jdk.net-A.sym.txt:jdk.pack-A.sym.txt:jdk.policytool-A.sym.txt:jdk.rmic-A.sym.txt:jdk.scripting.nashorn-A.sym.txt:jdk.sctp-A.sym.txt:jdk.security.auth-A.sym.txt:jdk.security.jgss-A.sym.txt:jdk.unsupported-A.sym.txt:jdk.xml.dom-A.sym.txt:jdk.zipfs-A.sym.txt
--- a/make/gendata/Gendata-jdk.compiler.gmk Sun May 06 16:19:56 2018 +0200
+++ b/make/gendata/Gendata-jdk.compiler.gmk Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -75,14 +75,13 @@
build-ctsym \
$(CT_DATA_DESCRIPTION) \
$(@D)
- $(MKDIR) $(@D)/A
$(JAVA_SMALL) $(INTERIM_LANGTOOLS_ARGS) \
$(COMPILECREATESYMBOLS_ADD_EXPORTS) \
-classpath $(BUILDTOOLS_OUTPUTDIR)/create_symbols \
build.tools.symbolgenerator.TransitiveDependencies \
+ $(@D) \
$(CT_MODULESOURCEPATH) \
- $(CT_MODULES) \
- >$(@D)/A/system-modules
+ $(CT_MODULES)
$(TOUCH) $@
# Can't generate ct.sym directly into modules libs as the SetupJarArchive macro
--- a/make/langtools/src/classes/build/tools/symbolgenerator/CreateSymbols.java Sun May 06 16:19:56 2018 +0200
+++ b/make/langtools/src/classes/build/tools/symbolgenerator/CreateSymbols.java Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
import build.tools.symbolgenerator.CreateSymbols
.ModuleHeaderDescription
.RequiresDescription;
+import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -38,8 +39,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.StringWriter;
import java.io.Writer;
-import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
@@ -49,23 +50,34 @@
import java.util.stream.Stream;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
+import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.Set;
+import java.util.TimeZone;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileManager.Location;
+import javax.tools.JavaFileObject;
+import javax.tools.JavaFileObject.Kind;
+import javax.tools.StandardLocation;
+
+import com.sun.source.util.JavacTask;
import com.sun.tools.classfile.AccessFlags;
import com.sun.tools.classfile.Annotation;
import com.sun.tools.classfile.Annotation.Annotation_element_value;
@@ -115,18 +127,20 @@
import com.sun.tools.classfile.RuntimeVisibleAnnotations_attribute;
import com.sun.tools.classfile.RuntimeVisibleParameterAnnotations_attribute;
import com.sun.tools.classfile.Signature_attribute;
+import com.sun.tools.javac.api.JavacTool;
import com.sun.tools.javac.jvm.Target;
import com.sun.tools.javac.util.Assert;
+import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.Pair;
-import java.io.StringWriter;
/**
* A tool for processing the .sym.txt files. It allows to:
* * convert the .sym.txt into class/sig files for ct.sym
* * in cooperation with the adjacent history Probe, construct .sym.txt files for previous platforms
+ * * enhance existing .sym.txt files with a a new set .sym.txt for the current platform
*
* To convert the .sym.txt files to class/sig files from ct.sym, run:
- * java build.tool.symbolgenerator.CreateSymbols build-ctsym [JOINED_VERSIONS|SEPARATE] <platform-description-file> <target-directory>
+ * java build.tool.symbolgenerator.CreateSymbols build-ctsym <platform-description-file> <target-directory>
*
* The <platform-description-file> is a file of this format:
* generate platforms <platform-ids-to-generate separate with ':'>
@@ -166,11 +180,15 @@
* To generate the .sym.txt files for OpenJDK 7 and 8:
* <jdk-7>/bin/java build.tools.symbolgenerator.Probe OpenJDK7.classes
* <jdk-8>/bin/java build.tools.symbolgenerator.Probe OpenJDK8.classes
- * java build.tools.symbolgenerator.CreateSymbols build-description langtools/make/data/symbols $TOPDIR langtools/make/data/symbols/include.list
+ * java build.tools.symbolgenerator.CreateSymbols build-description make/data/symbols $TOPDIR make/data/symbols/include.list
* 8 OpenJDK8.classes '<none>'
* 7 OpenJDK7.classes 8
*
* Note: the versions are expected to be a single character.
+ *
+ * To enhance existing historical data with data for JDK N, run:
+ * <jdk-N>/bin/java build.tools.symbolgenerator.CreateSymbols build-description-incremental make/data/symbols/symbols make/data/symbols/include.list
+ *
*/
public class CreateSymbols {
@@ -180,11 +198,11 @@
*/
@SuppressWarnings("unchecked")
public void createSymbols(String ctDescriptionFile, String ctSymLocation, CtSymKind ctSymKind) throws IOException {
- Pair<ClassList, List<ModuleDescription>> data = load(Paths.get(ctDescriptionFile));
-
- splitHeaders(data.fst);
-
- for (ModuleDescription md : data.snd) {
+ LoadDescriptions data = load(Paths.get(ctDescriptionFile), null);
+
+ splitHeaders(data.classes);
+
+ for (ModuleDescription md : data.modules.values()) {
for (ModuleHeaderDescription mhd : md.header) {
List<String> versionsList =
Collections.singletonList(mhd.versions);
@@ -195,7 +213,7 @@
}
}
- for (ClassDescription classDescription : data.fst) {
+ for (ClassDescription classDescription : data.classes) {
for (ClassHeaderDescription header : classDescription.header) {
switch (ctSymKind) {
case JOINED_VERSIONS:
@@ -219,7 +237,7 @@
public static String EXTENSION = ".sig";
- Pair<ClassList, List<ModuleDescription>> load(Path ctDescription) throws IOException {
+ LoadDescriptions load(Path ctDescription, String deletePlatform) throws IOException {
List<PlatformInput> platforms = new ArrayList<>();
Set<String> generatePlatforms = null;
@@ -228,11 +246,14 @@
switch (reader.lineKey) {
case "generate":
String[] platformsAttr = reader.attributes.get("platforms").split(":");
- generatePlatforms = new HashSet<>(Arrays.asList(platformsAttr));
+ generatePlatforms = new HashSet<>(List.of(platformsAttr));
+ generatePlatforms.remove(deletePlatform);
reader.moveNext();
break;
case "platform":
- platforms.add(PlatformInput.load(reader));
+ PlatformInput platform = PlatformInput.load(reader);
+ if (!platform.version.equals(deletePlatform))
+ platforms.add(platform);
reader.moveNext();
break;
default:
@@ -250,7 +271,9 @@
addNewVersion(cd.fields, platform.basePlatform, platform.version);
addNewVersion(cd.methods, platform.basePlatform, platform.version);
}
- //XXX: enhance module versions
+ for (ModuleDescription md : modules.values()) {
+ addNewVersion(md.header, platform.basePlatform, platform.version);
+ }
for (String input : platform.files) {
Path inputFile = ctDescription.getParent().resolve(input);
try (LineBasedReader reader = new LineBasedReader(inputFile)) {
@@ -270,13 +293,23 @@
cd.read(reader, platform.basePlatform,
platform.version);
break;
- case "module":
+ case "module": {
ModuleDescription md =
modules.computeIfAbsent(nameAttr,
n -> new ModuleDescription());
md.read(reader, platform.basePlatform,
platform.version);
break;
+ }
+ case "-module": {
+ ModuleDescription md =
+ modules.computeIfAbsent(nameAttr,
+ n -> new ModuleDescription());
+ removeVersion(md.header, h -> true,
+ platform.version);
+ reader.moveNext();
+ break;
+ }
}
}
}
@@ -323,7 +356,7 @@
result.add(desc);
}
- List<ModuleDescription> moduleList = new ArrayList<>();
+ Map<String, ModuleDescription> moduleList = new HashMap<>();
for (ModuleDescription desc : modules.values()) {
Iterator<ModuleHeaderDescription> mhdIt = desc.header.iterator();
@@ -340,10 +373,25 @@
continue;
}
- moduleList.add(desc);
+ moduleList.put(desc.name, desc);
}
- return Pair.of(result, moduleList);
+ return new LoadDescriptions(result, moduleList, platforms);
+ }
+
+ static final class LoadDescriptions {
+ public final ClassList classes;
+ public final Map<String, ModuleDescription> modules;
+ public final List<PlatformInput> versions;
+
+ public LoadDescriptions(ClassList classes,
+ Map<String, ModuleDescription> modules,
+ List<PlatformInput> versions) {
+ this.classes = classes;
+ this.modules = modules;
+ this.versions = versions;
+ }
+
}
static final class LineBasedReader implements AutoCloseable {
@@ -423,7 +471,7 @@
public static PlatformInput load(LineBasedReader in) throws IOException {
return new PlatformInput(in.attributes.get("version"),
in.attributes.get("base"),
- Arrays.asList(in.attributes.get("files").split(":")));
+ List.of(in.attributes.get("files").split(":")));
}
}
@@ -792,7 +840,7 @@
private void addAttributes(MethodDescription desc, List<CPInfo> constantPool, Map<String, Attribute> attributes) {
addGenericAttributes(desc, constantPool, attributes);
- if (desc.thrownTypes != null && !desc.thrownTypes.isEmpty()) {
+ if (desc.thrownTypes != null) {
int[] exceptions = new int[desc.thrownTypes.size()];
int i = 0;
for (String exc : desc.thrownTypes) {
@@ -1081,175 +1129,228 @@
Map<String, ModuleDescription> modules = new HashMap<>();
for (VersionDescription desc : versions) {
- Map<String, ModuleDescription> currentVersionModules =
- new HashMap<>();
+ List<byte[]> classFileData = new ArrayList<>();
+
try (BufferedReader descIn =
Files.newBufferedReader(Paths.get(desc.classes))) {
- String classFileData;
-
- while ((classFileData = descIn.readLine()) != null) {
+ String line;
+ while ((line = descIn.readLine()) != null) {
ByteArrayOutputStream data = new ByteArrayOutputStream();
- for (int i = 0; i < classFileData.length(); i += 2) {
- String hex = classFileData.substring(i, i + 2);
- data.write(Integer.parseInt(hex, 16));
- }
- try (InputStream in =
- new ByteArrayInputStream(data.toByteArray())) {
- inspectModuleInfoClassFile(in,
- currentVersionModules, desc.version);
- } catch (IOException | ConstantPoolException ex) {
- throw new IllegalStateException(ex);
- }
- }
- }
-
- ExcludeIncludeList currentEIList = excludesIncludes;
-
- if (!currentVersionModules.isEmpty()) {
- Set<String> includes = new HashSet<>();
-
- for (ModuleDescription md : currentVersionModules.values()) {
- md.header.get(0).exports.stream().map(e -> e + '/')
- .forEach(includes::add);
- }
-
- currentEIList = new ExcludeIncludeList(includes,
- Collections.emptySet());
- }
-
- ClassList currentVersionClasses = new ClassList();
- try (BufferedReader descIn =
- Files.newBufferedReader(Paths.get(desc.classes))) {
- String classFileData;
-
- while ((classFileData = descIn.readLine()) != null) {
- ByteArrayOutputStream data = new ByteArrayOutputStream();
- for (int i = 0; i < classFileData.length(); i += 2) {
- String hex = classFileData.substring(i, i + 2);
+ for (int i = 0; i < line.length(); i += 2) {
+ String hex = line.substring(i, i + 2);
data.write(Integer.parseInt(hex, 16));
}
- try (InputStream in =
- new ByteArrayInputStream(data.toByteArray())) {
- inspectClassFile(in, currentVersionClasses,
- currentEIList, desc.version);
- } catch (IOException | ConstantPoolException ex) {
- throw new IllegalStateException(ex);
- }
+ classFileData.add(data.toByteArray());
}
+ } catch (IOException ex) {
+ throw new IllegalStateException(ex);
}
- ModuleDescription unsupported =
- currentVersionModules.get("jdk.unsupported");
-
- if (unsupported != null) {
- for (ClassDescription cd : currentVersionClasses.classes) {
- if (unsupported.header
- .get(0)
- .exports
- .contains(cd.packge().replace('.', '/'))) {
- ClassHeaderDescription ch = cd.header.get(0);
- if (ch.classAnnotations == null) {
- ch.classAnnotations = new ArrayList<>();
- }
- AnnotationDescription ad;
- ad = new AnnotationDescription(PROPERITARY_ANNOTATION,
- Collections.emptyMap());
- ch.classAnnotations.add(ad);
- }
- }
+ loadVersionClasses(classes, modules, classFileData, excludesIncludes, desc.version);
+ }
+
+ List<PlatformInput> platforms =
+ versions.stream()
+ .map(desc -> new PlatformInput(desc.version,
+ desc.primaryBaseline,
+ null))
+ .collect(Collectors.toList());
+
+ dumpDescriptions(classes, modules, platforms, descDest.resolve("symbols"), args);
+ }
+ //where:
+ private static final String DO_NO_MODIFY =
+ "#\n" +
+ "# Copyright (c) {YEAR}, Oracle and/or its affiliates. All rights reserved.\n" +
+ "# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.\n" +
+ "#\n" +
+ "# This code is free software; you can redistribute it and/or modify it\n" +
+ "# under the terms of the GNU General Public License version 2 only, as\n" +
+ "# published by the Free Software Foundation. Oracle designates this\n" +
+ "# particular file as subject to the \"Classpath\" exception as provided\n" +
+ "# by Oracle in the LICENSE file that accompanied this code.\n" +
+ "#\n" +
+ "# This code is distributed in the hope that it will be useful, but WITHOUT\n" +
+ "# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n" +
+ "# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n" +
+ "# version 2 for more details (a copy is included in the LICENSE file that\n" +
+ "# accompanied this code).\n" +
+ "#\n" +
+ "# You should have received a copy of the GNU General Public License version\n" +
+ "# 2 along with this work; if not, write to the Free Software Foundation,\n" +
+ "# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n" +
+ "#\n" +
+ "# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA\n" +
+ "# or visit www.oracle.com if you need additional information or have any\n" +
+ "# questions.\n" +
+ "#\n" +
+ "# ##########################################################\n" +
+ "# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###\n" +
+ "# ##########################################################\n" +
+ "#\n";
+
+ private void loadVersionClasses(ClassList classes,
+ Map<String, ModuleDescription> modules,
+ Iterable<byte[]> classData,
+ ExcludeIncludeList excludesIncludes,
+ String version) {
+ Map<String, ModuleDescription> currentVersionModules =
+ new HashMap<>();
+
+ for (byte[] classFileData : classData) {
+ try (InputStream in = new ByteArrayInputStream(classFileData)) {
+ inspectModuleInfoClassFile(in,
+ currentVersionModules, version);
+ } catch (IOException | ConstantPoolException ex) {
+ throw new IllegalStateException(ex);
}
-
- Set<String> includedClasses = new HashSet<>();
- boolean modified;
-
- do {
- modified = false;
-
- for (ClassDescription clazz : currentVersionClasses) {
- ClassHeaderDescription header = clazz.header.get(0);
-
- if (includeEffectiveAccess(currentVersionClasses, clazz)) {
- modified |= include(includedClasses, currentVersionClasses, clazz.name);
+ }
+
+ ExcludeIncludeList currentEIList = excludesIncludes;
+
+ if (!currentVersionModules.isEmpty()) {
+ Set<String> includes = new HashSet<>();
+
+ for (ModuleDescription md : currentVersionModules.values()) {
+ md.header.get(0).exports.stream().map(e -> e + '/')
+ .forEach(includes::add);
+ }
+
+ currentEIList = new ExcludeIncludeList(includes,
+ Collections.emptySet());
+ }
+
+ ClassList currentVersionClasses = new ClassList();
+
+ for (byte[] classFileData : classData) {
+ try (InputStream in = new ByteArrayInputStream(classFileData)) {
+ inspectClassFile(in, currentVersionClasses,
+ currentEIList, version);
+ } catch (IOException | ConstantPoolException ex) {
+ throw new IllegalStateException(ex);
+ }
+ }
+
+ ModuleDescription unsupported =
+ currentVersionModules.get("jdk.unsupported");
+
+ if (unsupported != null) {
+ for (ClassDescription cd : currentVersionClasses.classes) {
+ if (unsupported.header
+ .get(0)
+ .exports
+ .contains(cd.packge().replace('.', '/'))) {
+ ClassHeaderDescription ch = cd.header.get(0);
+ if (ch.classAnnotations == null) {
+ ch.classAnnotations = new ArrayList<>();
}
-
- if (includedClasses.contains(clazz.name)) {
- modified |= include(includedClasses, currentVersionClasses, header.extendsAttr);
- for (String i : header.implementsAttr) {
- modified |= include(includedClasses, currentVersionClasses, i);
- }
-
- modified |= includeOutputType(Collections.singleton(header),
- h -> "",
- includedClasses,
- currentVersionClasses);
- modified |= includeOutputType(clazz.fields,
- f -> f.descriptor,
- includedClasses,
- currentVersionClasses);
- modified |= includeOutputType(clazz.methods,
- m -> m.descriptor,
- includedClasses,
- currentVersionClasses);
- }
- }
- } while (modified);
-
- for (ClassDescription clazz : currentVersionClasses) {
- if (!includedClasses.contains(clazz.name)) {
- continue;
- }
-
- ClassHeaderDescription header = clazz.header.get(0);
-
- if (header.innerClasses != null) {
- Iterator<InnerClassInfo> innerClassIt = header.innerClasses.iterator();
-
- while(innerClassIt.hasNext()) {
- InnerClassInfo ici = innerClassIt.next();
- if (!includedClasses.contains(ici.innerClass))
- innerClassIt.remove();
- }
- }
-
- ClassDescription existing = classes.find(clazz.name, true);
-
- if (existing != null) {
- addClassHeader(existing, header, desc.version);
- for (MethodDescription currentMethod : clazz.methods) {
- addMethod(existing, currentMethod, desc.version);
- }
- for (FieldDescription currentField : clazz.fields) {
- addField(existing, currentField, desc.version);
- }
- } else {
- classes.add(clazz);
- }
- }
-
- for (ModuleDescription module : currentVersionModules.values()) {
- ModuleHeaderDescription header = module.header.get(0);
-
- if (header.innerClasses != null) {
- Iterator<InnerClassInfo> innerClassIt =
- header.innerClasses.iterator();
-
- while(innerClassIt.hasNext()) {
- InnerClassInfo ici = innerClassIt.next();
- if (!includedClasses.contains(ici.innerClass))
- innerClassIt.remove();
- }
- }
-
- ModuleDescription existing = modules.get(module.name);
-
- if (existing != null) {
- addModuleHeader(existing, header, desc.version);
- } else {
- modules.put(module.name, module);
+ AnnotationDescription ad;
+ ad = new AnnotationDescription(PROPERITARY_ANNOTATION,
+ Collections.emptyMap());
+ ch.classAnnotations.add(ad);
}
}
}
+ Set<String> includedClasses = new HashSet<>();
+ boolean modified;
+
+ do {
+ modified = false;
+
+ for (ClassDescription clazz : currentVersionClasses) {
+ ClassHeaderDescription header = clazz.header.get(0);
+
+ if (includeEffectiveAccess(currentVersionClasses, clazz)) {
+ modified |= include(includedClasses, currentVersionClasses, clazz.name);
+ }
+
+ if (includedClasses.contains(clazz.name)) {
+ modified |= include(includedClasses, currentVersionClasses, header.extendsAttr);
+ for (String i : header.implementsAttr) {
+ modified |= include(includedClasses, currentVersionClasses, i);
+ }
+
+ modified |= includeOutputType(Collections.singleton(header),
+ h -> "",
+ includedClasses,
+ currentVersionClasses);
+ modified |= includeOutputType(clazz.fields,
+ f -> f.descriptor,
+ includedClasses,
+ currentVersionClasses);
+ modified |= includeOutputType(clazz.methods,
+ m -> m.descriptor,
+ includedClasses,
+ currentVersionClasses);
+ }
+ }
+ } while (modified);
+
+ for (ClassDescription clazz : currentVersionClasses) {
+ if (!includedClasses.contains(clazz.name)) {
+ continue;
+ }
+
+ ClassHeaderDescription header = clazz.header.get(0);
+
+ if (header.innerClasses != null) {
+ Iterator<InnerClassInfo> innerClassIt = header.innerClasses.iterator();
+
+ while(innerClassIt.hasNext()) {
+ InnerClassInfo ici = innerClassIt.next();
+ if (!includedClasses.contains(ici.innerClass))
+ innerClassIt.remove();
+ }
+ }
+
+ ClassDescription existing = classes.find(clazz.name, true);
+
+ if (existing != null) {
+ addClassHeader(existing, header, version);
+ for (MethodDescription currentMethod : clazz.methods) {
+ addMethod(existing, currentMethod, version);
+ }
+ for (FieldDescription currentField : clazz.fields) {
+ addField(existing, currentField, version);
+ }
+ } else {
+ classes.add(clazz);
+ }
+ }
+
+ for (ModuleDescription module : currentVersionModules.values()) {
+ ModuleHeaderDescription header = module.header.get(0);
+
+ if (header.innerClasses != null) {
+ Iterator<InnerClassInfo> innerClassIt =
+ header.innerClasses.iterator();
+
+ while(innerClassIt.hasNext()) {
+ InnerClassInfo ici = innerClassIt.next();
+ if (!includedClasses.contains(ici.innerClass))
+ innerClassIt.remove();
+ }
+ }
+
+ ModuleDescription existing = modules.get(module.name);
+
+ if (existing != null) {
+ addModuleHeader(existing, header, version);
+ } else {
+ modules.put(module.name, module);
+ }
+ }
+ }
+ //where:
+ private static final String PROPERITARY_ANNOTATION =
+ "Lsun/Proprietary+Annotation;";
+
+ private void dumpDescriptions(ClassList classes,
+ Map<String, ModuleDescription> modules,
+ List<PlatformInput> versions,
+ Path ctDescriptionFile,
+ String[] args) throws IOException {
classes.sort();
Map<String, String> package2Modules = new HashMap<>();
@@ -1298,46 +1399,52 @@
.filter(m -> !module2Classes.containsKey(m))
.forEach(m -> module2Classes.put(m, Collections.emptyList()));
- Path symbolsFile = descDest.resolve("symbols");
-
- Files.createDirectories(symbolsFile.getParent());
-
- try (Writer symbolsOut = Files.newBufferedWriter(symbolsFile)) {
- Map<VersionDescription, List<Path>> outputFiles = new LinkedHashMap<>();
-
- for (Entry<String, List<ClassDescription>> e : module2Classes.entrySet()) {
- for (VersionDescription desc : versions) {
- StringWriter data = new StringWriter();
- ModuleDescription module = modules.get(e.getKey());
-
- module.write(data, desc.primaryBaseline, desc.version);
-
- for (ClassDescription clazz : e.getValue()) {
- clazz.write(data, desc.primaryBaseline, desc.version);
- }
-
- Path f = descDest.resolve(e.getKey() + "-" + desc.version + ".sym.txt");
-
- String dataString = data.toString();
-
- if (!dataString.isEmpty()) {
- try (Writer out = Files.newBufferedWriter(f)) {
- out.append(DO_NO_MODIFY);
- out.write(dataString);
+ Files.createDirectories(ctDescriptionFile.getParent());
+
+ int year = Calendar.getInstance(TimeZone.getTimeZone("UTF"), Locale.ROOT)
+ .get(Calendar.YEAR);
+
+ try (Writer symbolsOut = Files.newBufferedWriter(ctDescriptionFile)) {
+ Map<PlatformInput, List<String>> outputFiles = new LinkedHashMap<>();
+
+ for (PlatformInput desc : versions) {
+ List<String> files = desc.files;
+
+ if (files == null) {
+ files = new ArrayList<>();
+ for (Entry<String, List<ClassDescription>> e : module2Classes.entrySet()) {
+ StringWriter data = new StringWriter();
+ ModuleDescription module = modules.get(e.getKey());
+
+ module.write(data, desc.basePlatform, desc.version);
+
+ for (ClassDescription clazz : e.getValue()) {
+ clazz.write(data, desc.basePlatform, desc.version);
}
- outputFiles.computeIfAbsent(desc, d -> new ArrayList<>())
- .add(f);
+ String fileName = e.getKey() + "-" + desc.version + ".sym.txt";
+ Path f = ctDescriptionFile.getParent().resolve(fileName);
+
+ String dataString = data.toString();
+
+ if (!dataString.isEmpty()) {
+ try (Writer out = Files.newBufferedWriter(f)) {
+ out.append(DO_NO_MODIFY.replace("{YEAR}", String.valueOf(year)));
+ out.write(dataString);
+ }
+ files.add(f.getFileName().toString());
+ }
}
}
+
+ outputFiles.put(desc, files);
}
- symbolsOut.append(DO_NO_MODIFY);
+ symbolsOut.append(DO_NO_MODIFY.replace("{YEAR}", "2015, " + year));
symbolsOut.append("#command used to generate this file:\n");
symbolsOut.append("#")
.append(CreateSymbols.class.getName())
.append(" ")
- .append(Arrays.asList(args)
- .stream()
+ .append(Arrays.stream(args)
.collect(Collectors.joining(" ")))
.append("\n");
symbolsOut.append("#\n");
@@ -1347,31 +1454,102 @@
.sorted()
.collect(Collectors.joining(":")))
.append("\n");
- for (Entry<VersionDescription, List<Path>> versionFileEntry : outputFiles.entrySet()) {
+ for (Entry<PlatformInput, List<String>> versionFileEntry : outputFiles.entrySet()) {
symbolsOut.append("platform version ")
.append(versionFileEntry.getKey().version);
- if (versionFileEntry.getKey().primaryBaseline != null) {
+ if (versionFileEntry.getKey().basePlatform != null) {
symbolsOut.append(" base ")
- .append(versionFileEntry.getKey().primaryBaseline);
+ .append(versionFileEntry.getKey().basePlatform);
}
symbolsOut.append(" files ")
.append(versionFileEntry.getValue()
.stream()
- .map(p -> p.getFileName().toString())
+ .map(p -> p)
.sorted()
.collect(Collectors.joining(":")))
.append("\n");
}
}
}
+
+ public void createIncrementalBaseLine(String ctDescriptionFile,
+ String excludeFile,
+ String[] args) throws IOException {
+ String specVersion = System.getProperty("java.specification.version");
+ String currentVersion =
+ Integer.toString(Integer.parseInt(specVersion), Character.MAX_RADIX);
+ currentVersion = currentVersion.toUpperCase(Locale.ROOT);
+ Path ctDescriptionPath = Paths.get(ctDescriptionFile).toAbsolutePath();
+ LoadDescriptions data = load(ctDescriptionPath, currentVersion);
+
+ ClassList classes = data.classes;
+ Map<String, ModuleDescription> modules = data.modules;
+ List<PlatformInput> versions = data.versions;
+
+ ExcludeIncludeList excludeList =
+ ExcludeIncludeList.create(excludeFile);
+
+ Iterable<byte[]> classBytes = dumpCurrentClasses();
+ loadVersionClasses(classes, modules, classBytes, excludeList, currentVersion);
+
+ String baseline;
+
+ if (versions.isEmpty()) {
+ baseline = null;
+ } else {
+ baseline = versions.stream()
+ .sorted((v1, v2) -> v2.version.compareTo(v1.version))
+ .findFirst()
+ .get()
+ .version;
+ }
+
+ versions.add(new PlatformInput(currentVersion, baseline, null));
+ dumpDescriptions(classes, modules, versions, ctDescriptionPath, args);
+ }
+
+ private List<byte[]> dumpCurrentClasses() throws IOException {
+ JavacTool tool = JavacTool.create();
+ Context ctx = new Context();
+ String version = System.getProperty("java.specification.version");
+ JavacTask task = tool.getTask(null, null, null,
+ List.of("--release", version),
+ null, null, ctx);
+ task.getElements().getTypeElement("java.lang.Object");
+ JavaFileManager fm = ctx.get(JavaFileManager.class);
+
+ List<byte[]> data = new ArrayList<>();
+ for (Location modLoc : LOCATIONS) {
+ for (Set<JavaFileManager.Location> module :
+ fm.listLocationsForModules(modLoc)) {
+ for (JavaFileManager.Location loc : module) {
+ Iterable<JavaFileObject> files =
+ fm.list(loc,
+ "",
+ EnumSet.of(Kind.CLASS),
+ true);
+
+ for (JavaFileObject jfo : files) {
+ try (InputStream is = jfo.openInputStream();
+ InputStream in =
+ new BufferedInputStream(is)) {
+ ByteArrayOutputStream baos =
+ new ByteArrayOutputStream();
+
+ in.transferTo(baos);
+ data.add(baos.toByteArray());
+ }
+ }
+ }
+ }
+ }
+
+ return data;
+ }
//where:
- private static final String DO_NO_MODIFY =
- "# ##########################################################\n" +
- "# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###\n" +
- "# ##########################################################\n" +
- "#\n";
- private static final String PROPERITARY_ANNOTATION =
- "Lsun/Proprietary+Annotation;";
+ private static final List<StandardLocation> LOCATIONS =
+ List.of(StandardLocation.SYSTEM_MODULES,
+ StandardLocation.UPGRADE_MODULE_PATH);
//<editor-fold defaultstate="collapsed" desc="Class Reading">
//non-final for tests:
@@ -2006,11 +2184,11 @@
signature = reader.attributes.get("signature");
String inClassAnnotations = reader.attributes.get("classAnnotations");
if (inClassAnnotations != null) {
- classAnnotations = parseAnnotations(unquote(inClassAnnotations), new int[1]);
+ classAnnotations = parseAnnotations(inClassAnnotations, new int[1]);
}
String inRuntimeAnnotations = reader.attributes.get("runtimeAnnotations");
if (inRuntimeAnnotations != null) {
- runtimeAnnotations = parseAnnotations(unquote(inRuntimeAnnotations), new int[1]);
+ runtimeAnnotations = parseAnnotations(inRuntimeAnnotations, new int[1]);
}
}
@@ -2115,6 +2293,7 @@
ModuleHeaderDescription mhd =
new ModuleHeaderDescription();
mhd.read(reader);
+ mhd.name = name;
mhd.versions = version;
header.add(mhd);
break;
@@ -2695,7 +2874,11 @@
name = reader.attributes.get("name");
descriptor = reader.attributes.get("descriptor");
- thrownTypes = deserializeList(reader.attributes.get("thrownTypes"));
+ String thrownTypesValue = reader.attributes.get("thrownTypes");
+
+ if (thrownTypesValue != null) {
+ thrownTypes = deserializeList(thrownTypesValue);
+ }
String inAnnotationDefaultValue = reader.attributes.get("annotationDefaultValue");
@@ -2803,9 +2986,9 @@
if (inConstantValue != null) {
switch (descriptor) {
case "Z": constantValue = "true".equals(inConstantValue); break;
- case "B": constantValue = Byte.parseByte(inConstantValue); break;
+ case "B": constantValue = Integer.parseInt(inConstantValue); break;
case "C": constantValue = inConstantValue.charAt(0); break;
- case "S": constantValue = Short.parseShort(inConstantValue); break;
+ case "S": constantValue = Integer.parseInt(inConstantValue); break;
case "I": constantValue = Integer.parseInt(inConstantValue); break;
case "J": constantValue = Long.parseLong(inConstantValue); break;
case "F": constantValue = Float.parseFloat(inConstantValue); break;
@@ -3141,7 +3324,7 @@
serialized = unquote ? unquote(serialized) : serialized;
if (serialized == null)
return new ArrayList<>();
- return new ArrayList<>(Arrays.asList(serialized.split(",")));
+ return new ArrayList<>(List.of(serialized.split(",")));
}
private static String quote(String value, boolean quoteQuotes) {
@@ -3291,7 +3474,7 @@
}
switch (args[0]) {
- case "build-description":
+ case "build-description": {
if (args.length < 3) {
help();
return ;
@@ -3332,6 +3515,16 @@
descDest,
args);
break;
+ }
+ case "build-description-incremental": {
+ if (args.length != 3) {
+ help();
+ return ;
+ }
+
+ new CreateSymbols().createIncrementalBaseLine(args[1], args[2], args);
+ break;
+ }
case "build-ctsym":
if (args.length != 3) {
help();
--- a/make/langtools/src/classes/build/tools/symbolgenerator/TransitiveDependencies.java Sun May 06 16:19:56 2018 +0200
+++ b/make/langtools/src/classes/build/tools/symbolgenerator/TransitiveDependencies.java Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,56 +26,67 @@
package build.tools.symbolgenerator;
import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayDeque;
import java.util.Arrays;
+import java.util.Deque;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
+import java.util.Locale;
import java.util.Set;
import java.util.stream.Collectors;
import javax.lang.model.element.ModuleElement.RequiresDirective;
import javax.lang.model.util.Elements;
import javax.tools.JavaCompiler;
-import javax.tools.ToolProvider;
import com.sun.tools.javac.api.JavacTaskImpl;
import com.sun.tools.javac.api.JavacTool;
+import com.sun.tools.javac.code.Source;
import com.sun.tools.javac.code.Symbol.ModuleSymbol;
+import com.sun.tools.javac.jvm.Target;
/**
- * Print reflexive transitive closure of the given modules along their requires transitive edges.
+ * Write reflexive transitive closure of the given modules along their requires transitive edges into
+ * file <version>/system-modules in the specified directory.
*/
public class TransitiveDependencies {
private static void help() {
- System.err.println("java TransitiveDependencies <module-source-path> <root-modules>");
+ System.err.println("java TransitiveDependencies <target-directory> <module-source-path> <root-modules>");
}
public static void main(String... args) throws IOException {
- if (args.length < 1) {
+ if (args.length < 2) {
help();
return ;
}
JavaCompiler compiler = JavacTool.create();
- List<String> options = Arrays.asList("-source", "10",
- "-target", "10",
- "-proc:only",
- "--system", "none",
- "--module-source-path", args[0],
- "--add-modules", Arrays.stream(args)
- .skip(1)
- .collect(Collectors.joining(",")));
- List<String> jlObjectList = Arrays.asList("java.lang.Object");
+ List<String> options = List.of("-source", Source.DEFAULT.name,
+ "-target", Target.DEFAULT.name,
+ "-proc:only",
+ "--system", "none",
+ "--module-source-path", args[1],
+ "--add-modules", Arrays.stream(args)
+ .skip(2)
+ .collect(Collectors.joining(",")));
+ List<String> jlObjectList = List.of("java.lang.Object");
JavacTaskImpl task = (JavacTaskImpl) compiler.getTask(null, null, null, options, jlObjectList, null);
task.enter();
Elements elements = task.getElements();
- List<String> todo = new LinkedList<>();
- Arrays.stream(args).skip(1).forEach(todo::add);
+ Deque<String> todo = new ArrayDeque<>();
+ Arrays.stream(args).skip(2).forEach(todo::add);
Set<String> allModules = new HashSet<>();
while (!todo.isEmpty()) {
- String current = todo.remove(0);
+ String current = todo.removeFirst();
if (!allModules.add(current))
continue;
@@ -89,7 +100,7 @@
//use the internal structure to avoid unnecesarily completing the symbol using the UsesProvidesVisitor:
for (RequiresDirective rd : mod.requires) {
if (rd.isTransitive()) {
- todo.add(rd.getDependency().getQualifiedName().toString());
+ todo.offerLast(rd.getDependency().getQualifiedName().toString());
}
}
}
@@ -97,9 +108,20 @@
allModules.add("java.base");
allModules.add("jdk.unsupported");
- allModules.stream()
- .sorted()
- .forEach(System.out::println);
+ String version =
+ Integer.toString(Integer.parseInt(Source.DEFAULT.name), Character.MAX_RADIX);
+ version = version.toUpperCase(Locale.ROOT);
+
+ Path targetFile = Paths.get(args[0]).resolve(version).resolve("system-modules");
+
+ Files.createDirectories(targetFile.getParent());
+
+ try (Writer w = Files.newBufferedWriter(targetFile);
+ PrintWriter out = new PrintWriter(w)) {
+ allModules.stream()
+ .sorted()
+ .forEach(out::println);
+ }
}
}
--- a/src/hotspot/os_cpu/aix_ppc/atomic_aix_ppc.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/aix_ppc/atomic_aix_ppc.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 SAP SE. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,8 +26,8 @@
#ifndef OS_CPU_AIX_OJDKPPC_VM_ATOMIC_AIX_PPC_HPP
#define OS_CPU_AIX_OJDKPPC_VM_ATOMIC_AIX_PPC_HPP
-#ifndef _LP64
-#error "Atomic currently only impleneted for PPC64"
+#ifndef PPC64
+#error "Atomic currently only implemented for PPC64"
#endif
#include "utilities/debug.hpp"
@@ -35,39 +35,39 @@
// Implementation of class atomic
//
-// machine barrier instructions:
+// machine barrier instructions:
//
-// - ppc_sync two-way memory barrier, aka fence
-// - ppc_lwsync orders Store|Store,
-// Load|Store,
-// Load|Load,
-// but not Store|Load
-// - ppc_eieio orders memory accesses for device memory (only)
-// - ppc_isync invalidates speculatively executed instructions
-// From the POWER ISA 2.06 documentation:
-// "[...] an isync instruction prevents the execution of
-// instructions following the isync until instructions
-// preceding the isync have completed, [...]"
-// From IBM's AIX assembler reference:
-// "The isync [...] instructions causes the processor to
-// refetch any instructions that might have been fetched
-// prior to the isync instruction. The instruction isync
-// causes the processor to wait for all previous instructions
-// to complete. Then any instructions already fetched are
-// discarded and instruction processing continues in the
-// environment established by the previous instructions."
+// - sync two-way memory barrier, aka fence
+// - lwsync orders Store|Store,
+// Load|Store,
+// Load|Load,
+// but not Store|Load
+// - eieio orders memory accesses for device memory (only)
+// - isync invalidates speculatively executed instructions
+// From the POWER ISA 2.06 documentation:
+// "[...] an isync instruction prevents the execution of
+// instructions following the isync until instructions
+// preceding the isync have completed, [...]"
+// From IBM's AIX assembler reference:
+// "The isync [...] instructions causes the processor to
+// refetch any instructions that might have been fetched
+// prior to the isync instruction. The instruction isync
+// causes the processor to wait for all previous instructions
+// to complete. Then any instructions already fetched are
+// discarded and instruction processing continues in the
+// environment established by the previous instructions."
//
-// semantic barrier instructions:
-// (as defined in orderAccess.hpp)
+// semantic barrier instructions:
+// (as defined in orderAccess.hpp)
//
-// - ppc_release orders Store|Store, (maps to ppc_lwsync)
-// Load|Store
-// - ppc_acquire orders Load|Store, (maps to ppc_lwsync)
-// Load|Load
-// - ppc_fence orders Store|Store, (maps to ppc_sync)
-// Load|Store,
-// Load|Load,
-// Store|Load
+// - release orders Store|Store, (maps to lwsync)
+// Load|Store
+// - acquire orders Load|Store, (maps to lwsync)
+// Load|Load
+// - fence orders Store|Store, (maps to sync)
+// Load|Store,
+// Load|Load,
+// Store|Load
//
#define strasm_sync "\n sync \n"
@@ -79,80 +79,105 @@
#define strasm_nobarrier ""
#define strasm_nobarrier_clobber_memory ""
+inline void pre_membar(atomic_memory_order order) {
+ switch (order) {
+ case memory_order_relaxed:
+ case memory_order_acquire: break;
+ case memory_order_release:
+ case memory_order_acq_rel: __asm__ __volatile__ (strasm_lwsync); break;
+ default /*conservative*/ : __asm__ __volatile__ (strasm_sync); break;
+ }
+}
+
+inline void post_membar(atomic_memory_order order) {
+ switch (order) {
+ case memory_order_relaxed:
+ case memory_order_release: break;
+ case memory_order_acquire:
+ case memory_order_acq_rel: __asm__ __volatile__ (strasm_isync); break;
+ default /*conservative*/ : __asm__ __volatile__ (strasm_sync); break;
+ }
+}
+
+
template<size_t byte_size>
struct Atomic::PlatformAdd
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const;
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
D result;
+ pre_membar(order);
+
__asm__ __volatile__ (
- strasm_lwsync
"1: lwarx %0, 0, %2 \n"
" add %0, %0, %1 \n"
" stwcx. %0, 0, %2 \n"
" bne- 1b \n"
- strasm_isync
: /*%0*/"=&r" (result)
: /*%1*/"r" (add_value), /*%2*/"r" (dest)
: "cc", "memory" );
+ post_membar(order);
+
return result;
}
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
D result;
+ pre_membar(order);
+
__asm__ __volatile__ (
- strasm_lwsync
"1: ldarx %0, 0, %2 \n"
" add %0, %0, %1 \n"
" stdcx. %0, 0, %2 \n"
" bne- 1b \n"
- strasm_isync
: /*%0*/"=&r" (result)
: /*%1*/"r" (add_value), /*%2*/"r" (dest)
: "cc", "memory" );
+ post_membar(order);
+
return result;
}
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
- STATIC_ASSERT(4 == sizeof(T));
+ T volatile* dest,
+ atomic_memory_order order) const {
// Note that xchg doesn't necessarily do an acquire
// (see synchronizer.cpp).
T old_value;
const uint64_t zero = 0;
+ pre_membar(order);
+
__asm__ __volatile__ (
- /* lwsync */
- strasm_lwsync
/* atomic loop */
"1: \n"
" lwarx %[old_value], %[dest], %[zero] \n"
" stwcx. %[exchange_value], %[dest], %[zero] \n"
" bne- 1b \n"
- /* isync */
- strasm_sync
/* exit */
"2: \n"
/* out */
@@ -168,13 +193,16 @@
"memory"
);
+ post_membar(order);
+
return old_value;
}
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
// Note that xchg doesn't necessarily do an acquire
// (see synchronizer.cpp).
@@ -182,16 +210,14 @@
T old_value;
const uint64_t zero = 0;
+ pre_membar(order);
+
__asm__ __volatile__ (
- /* lwsync */
- strasm_lwsync
/* atomic loop */
"1: \n"
" ldarx %[old_value], %[dest], %[zero] \n"
" stdcx. %[exchange_value], %[dest], %[zero] \n"
" bne- 1b \n"
- /* isync */
- strasm_sync
/* exit */
"2: \n"
/* out */
@@ -207,25 +233,9 @@
"memory"
);
- return old_value;
-}
+ post_membar(order);
-inline void cmpxchg_pre_membar(cmpxchg_memory_order order) {
- if (order != memory_order_relaxed) {
- __asm__ __volatile__ (
- /* fence */
- strasm_sync
- );
- }
-}
-
-inline void cmpxchg_post_membar(cmpxchg_memory_order order) {
- if (order != memory_order_relaxed) {
- __asm__ __volatile__ (
- /* fence */
- strasm_sync
- );
- }
+ return old_value;
}
template<>
@@ -233,7 +243,7 @@
inline T Atomic::PlatformCmpxchg<1>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(1 == sizeof(T));
// Note that cmpxchg guarantees a two-way memory barrier across
@@ -254,7 +264,7 @@
unsigned int old_value, value32;
- cmpxchg_pre_membar(order);
+ pre_membar(order);
__asm__ __volatile__ (
/* simple guard */
@@ -293,7 +303,7 @@
"memory"
);
- cmpxchg_post_membar(order);
+ post_membar(order);
return PrimitiveConversions::cast<T>((unsigned char)old_value);
}
@@ -303,7 +313,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
// Note that cmpxchg guarantees a two-way memory barrier across
@@ -313,7 +323,7 @@
T old_value;
const uint64_t zero = 0;
- cmpxchg_pre_membar(order);
+ pre_membar(order);
__asm__ __volatile__ (
/* simple guard */
@@ -343,7 +353,7 @@
"memory"
);
- cmpxchg_post_membar(order);
+ post_membar(order);
return old_value;
}
@@ -353,7 +363,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
// Note that cmpxchg guarantees a two-way memory barrier across
@@ -363,7 +373,7 @@
T old_value;
const uint64_t zero = 0;
- cmpxchg_pre_membar(order);
+ pre_membar(order);
__asm__ __volatile__ (
/* simple guard */
@@ -393,7 +403,7 @@
"memory"
);
- cmpxchg_post_membar(order);
+ post_membar(order);
return old_value;
}
--- a/src/hotspot/os_cpu/bsd_x86/atomic_bsd_x86.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/bsd_x86/atomic_bsd_x86.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,12 +32,13 @@
: Atomic::FetchAndAdd<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D fetch_and_add(I add_value, D volatile* dest) const;
+ D fetch_and_add(I add_value, D volatile* dest, atomic_memory_order /* order */) const;
};
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::fetch_and_add(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::fetch_and_add(I add_value, D volatile* dest,
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
D old_value;
@@ -51,7 +52,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(4 == sizeof(T));
__asm__ volatile ( "xchgl (%2),%0"
: "=r" (exchange_value)
@@ -65,7 +67,7 @@
inline T Atomic::PlatformCmpxchg<1>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order /* order */) const {
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(1 == sizeof(T));
__asm__ volatile ( "lock cmpxchgb %1,(%3)"
: "=a" (exchange_value)
@@ -79,7 +81,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order /* order */) const {
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(4 == sizeof(T));
__asm__ volatile ( "lock cmpxchgl %1,(%3)"
: "=a" (exchange_value)
@@ -91,7 +93,8 @@
#ifdef AMD64
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::fetch_and_add(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::fetch_and_add(I add_value, D volatile* dest,
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
D old_value;
@@ -105,7 +108,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(8 == sizeof(T));
__asm__ __volatile__ ("xchgq (%2),%0"
: "=r" (exchange_value)
@@ -119,7 +123,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order /* order */) const {
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(8 == sizeof(T));
__asm__ __volatile__ ( "lock cmpxchgq %1,(%3)"
: "=a" (exchange_value)
@@ -141,7 +145,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(8 == sizeof(T));
return cmpxchg_using_helper<int64_t>(_Atomic_cmpxchg_long, exchange_value, dest, compare_value);
}
--- a/src/hotspot/os_cpu/bsd_zero/atomic_bsd_zero.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/bsd_zero/atomic_bsd_zero.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2011, 2015, Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -164,12 +164,13 @@
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const;
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
@@ -186,7 +187,8 @@
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
@@ -196,7 +198,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
#ifdef ARM
return xchg_using_helper<int>(arm_lock_test_and_set, exchange_value, dest);
@@ -222,7 +225,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
T result = __sync_lock_test_and_set (dest, exchange_value);
__sync_synchronize();
@@ -238,7 +242,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
#ifdef ARM
return cmpxchg_using_helper<int>(arm_compare_and_swap, exchange_value, dest, compare_value);
@@ -256,7 +260,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
return __sync_val_compare_and_swap(dest, compare_value, exchange_value);
}
--- a/src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -39,7 +39,7 @@
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const {
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const {
return __sync_add_and_fetch(dest, add_value);
}
};
@@ -47,7 +47,8 @@
template<size_t byte_size>
template<typename T>
inline T Atomic::PlatformXchg<byte_size>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(byte_size == sizeof(T));
T res = __sync_lock_test_and_set(dest, exchange_value);
FULL_MEM_BARRIER;
@@ -59,7 +60,7 @@
inline T Atomic::PlatformCmpxchg<byte_size>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(byte_size == sizeof(T));
if (order == memory_order_relaxed) {
T value = compare_value;
--- a/src/hotspot/os_cpu/linux_arm/atomic_linux_arm.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/linux_arm/atomic_linux_arm.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -81,12 +81,13 @@
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const;
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
#ifdef AARCH64
@@ -110,7 +111,8 @@
#ifdef AARCH64
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
D val;
@@ -131,7 +133,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
#ifdef AARCH64
T old_val;
@@ -154,7 +157,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
T old_val;
int tmp;
@@ -200,7 +204,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
#ifdef AARCH64
T rv;
@@ -230,7 +234,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
#ifdef AARCH64
T rv;
--- a/src/hotspot/os_cpu/linux_ppc/atomic_linux_ppc.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/linux_ppc/atomic_linux_ppc.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 SAP SE. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -77,79 +77,105 @@
#define strasm_nobarrier ""
#define strasm_nobarrier_clobber_memory ""
+inline void pre_membar(atomic_memory_order order) {
+ switch (order) {
+ case memory_order_relaxed:
+ case memory_order_acquire: break;
+ case memory_order_release:
+ case memory_order_acq_rel: __asm__ __volatile__ (strasm_lwsync); break;
+ default /*conservative*/ : __asm__ __volatile__ (strasm_sync); break;
+ }
+}
+
+inline void post_membar(atomic_memory_order order) {
+ switch (order) {
+ case memory_order_relaxed:
+ case memory_order_release: break;
+ case memory_order_acquire:
+ case memory_order_acq_rel: __asm__ __volatile__ (strasm_isync); break;
+ default /*conservative*/ : __asm__ __volatile__ (strasm_sync); break;
+ }
+}
+
+
template<size_t byte_size>
struct Atomic::PlatformAdd
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const;
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
D result;
+ pre_membar(order);
+
__asm__ __volatile__ (
- strasm_lwsync
"1: lwarx %0, 0, %2 \n"
" add %0, %0, %1 \n"
" stwcx. %0, 0, %2 \n"
" bne- 1b \n"
- strasm_isync
: /*%0*/"=&r" (result)
: /*%1*/"r" (add_value), /*%2*/"r" (dest)
: "cc", "memory" );
+ post_membar(order);
+
return result;
}
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
D result;
+ pre_membar(order);
+
__asm__ __volatile__ (
- strasm_lwsync
"1: ldarx %0, 0, %2 \n"
" add %0, %0, %1 \n"
" stdcx. %0, 0, %2 \n"
" bne- 1b \n"
- strasm_isync
: /*%0*/"=&r" (result)
: /*%1*/"r" (add_value), /*%2*/"r" (dest)
: "cc", "memory" );
+ post_membar(order);
+
return result;
}
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
// Note that xchg doesn't necessarily do an acquire
// (see synchronizer.cpp).
T old_value;
const uint64_t zero = 0;
+ pre_membar(order);
+
__asm__ __volatile__ (
- /* lwsync */
- strasm_lwsync
/* atomic loop */
"1: \n"
" lwarx %[old_value], %[dest], %[zero] \n"
" stwcx. %[exchange_value], %[dest], %[zero] \n"
" bne- 1b \n"
- /* isync */
- strasm_sync
/* exit */
"2: \n"
/* out */
@@ -165,13 +191,16 @@
"memory"
);
+ post_membar(order);
+
return old_value;
}
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
// Note that xchg doesn't necessarily do an acquire
// (see synchronizer.cpp).
@@ -179,16 +208,14 @@
T old_value;
const uint64_t zero = 0;
+ pre_membar(order);
+
__asm__ __volatile__ (
- /* lwsync */
- strasm_lwsync
/* atomic loop */
"1: \n"
" ldarx %[old_value], %[dest], %[zero] \n"
" stdcx. %[exchange_value], %[dest], %[zero] \n"
" bne- 1b \n"
- /* isync */
- strasm_sync
/* exit */
"2: \n"
/* out */
@@ -204,25 +231,9 @@
"memory"
);
- return old_value;
-}
+ post_membar(order);
-inline void cmpxchg_pre_membar(cmpxchg_memory_order order) {
- if (order != memory_order_relaxed) {
- __asm__ __volatile__ (
- /* fence */
- strasm_sync
- );
- }
-}
-
-inline void cmpxchg_post_membar(cmpxchg_memory_order order) {
- if (order != memory_order_relaxed) {
- __asm__ __volatile__ (
- /* fence */
- strasm_sync
- );
- }
+ return old_value;
}
template<>
@@ -230,7 +241,7 @@
inline T Atomic::PlatformCmpxchg<1>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(1 == sizeof(T));
// Note that cmpxchg guarantees a two-way memory barrier across
@@ -251,7 +262,7 @@
unsigned int old_value, value32;
- cmpxchg_pre_membar(order);
+ pre_membar(order);
__asm__ __volatile__ (
/* simple guard */
@@ -290,7 +301,7 @@
"memory"
);
- cmpxchg_post_membar(order);
+ post_membar(order);
return PrimitiveConversions::cast<T>((unsigned char)old_value);
}
@@ -300,7 +311,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
// Note that cmpxchg guarantees a two-way memory barrier across
@@ -310,7 +321,7 @@
T old_value;
const uint64_t zero = 0;
- cmpxchg_pre_membar(order);
+ pre_membar(order);
__asm__ __volatile__ (
/* simple guard */
@@ -340,7 +351,7 @@
"memory"
);
- cmpxchg_post_membar(order);
+ post_membar(order);
return old_value;
}
@@ -350,7 +361,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
// Note that cmpxchg guarantees a two-way memory barrier across
@@ -360,7 +371,7 @@
T old_value;
const uint64_t zero = 0;
- cmpxchg_pre_membar(order);
+ pre_membar(order);
__asm__ __volatile__ (
/* simple guard */
@@ -390,7 +401,7 @@
"memory"
);
- cmpxchg_post_membar(order);
+ post_membar(order);
return old_value;
}
--- a/src/hotspot/os_cpu/linux_s390/atomic_linux_s390.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/linux_s390/atomic_linux_s390.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2016 SAP SE. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,23 +68,31 @@
// The return value of the method is the value that was successfully stored. At the
// time the caller receives back control, the value in memory may have changed already.
+// New atomic operations only include specific-operand-serialization, not full
+// memory barriers. We can use the Fast-BCR-Serialization Facility for them.
+inline void z196_fast_sync() {
+ __asm__ __volatile__ ("bcr 14, 0" : : : "memory");
+}
+
template<size_t byte_size>
struct Atomic::PlatformAdd
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const;
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I inc, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I inc, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
D old, upd;
if (VM_Version::has_LoadAndALUAtomicV1()) {
+ if (order == memory_order_conservative) { z196_fast_sync(); }
__asm__ __volatile__ (
" LGFR 0,%[inc] \n\t" // save increment
" LA 3,%[mem] \n\t" // force data address into ARG2
@@ -106,6 +114,7 @@
//---< clobbered >---
: "cc", "r0", "r2", "r3", "memory"
);
+ if (order == memory_order_conservative) { z196_fast_sync(); }
} else {
__asm__ __volatile__ (
" LLGF %[old],%[mem] \n\t" // get old value
@@ -129,13 +138,15 @@
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::add_and_fetch(I inc, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::add_and_fetch(I inc, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
D old, upd;
if (VM_Version::has_LoadAndALUAtomicV1()) {
+ if (order == memory_order_conservative) { z196_fast_sync(); }
__asm__ __volatile__ (
" LGR 0,%[inc] \n\t" // save increment
" LA 3,%[mem] \n\t" // force data address into ARG2
@@ -157,6 +168,7 @@
//---< clobbered >---
: "cc", "r0", "r2", "r3", "memory"
);
+ if (order == memory_order_conservative) { z196_fast_sync(); }
} else {
__asm__ __volatile__ (
" LG %[old],%[mem] \n\t" // get old value
@@ -197,7 +209,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order unused) const {
STATIC_ASSERT(4 == sizeof(T));
T old;
@@ -220,7 +233,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order unused) const {
STATIC_ASSERT(8 == sizeof(T));
T old;
@@ -278,7 +292,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T xchg_val,
T volatile* dest,
T cmp_val,
- cmpxchg_memory_order unused) const {
+ atomic_memory_order unused) const {
STATIC_ASSERT(4 == sizeof(T));
T old;
@@ -302,7 +316,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T xchg_val,
T volatile* dest,
T cmp_val,
- cmpxchg_memory_order unused) const {
+ atomic_memory_order unused) const {
STATIC_ASSERT(8 == sizeof(T));
T old;
--- a/src/hotspot/os_cpu/linux_sparc/atomic_linux_sparc.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/linux_sparc/atomic_linux_sparc.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,12 +32,13 @@
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const;
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
@@ -59,7 +60,8 @@
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
@@ -82,7 +84,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
T rv = exchange_value;
__asm__ volatile(
@@ -96,7 +99,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
T rv = exchange_value;
__asm__ volatile(
@@ -123,7 +127,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
T rv;
__asm__ volatile(
@@ -139,7 +143,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
T rv;
__asm__ volatile(
--- a/src/hotspot/os_cpu/linux_x86/atomic_linux_x86.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/linux_x86/atomic_linux_x86.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,12 +32,13 @@
: Atomic::FetchAndAdd<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D fetch_and_add(I add_value, D volatile* dest) const;
+ D fetch_and_add(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::fetch_and_add(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::fetch_and_add(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
D old_value;
@@ -51,7 +52,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
__asm__ volatile ( "xchgl (%2),%0"
: "=r" (exchange_value)
@@ -65,7 +67,7 @@
inline T Atomic::PlatformCmpxchg<1>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order /* order */) const {
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(1 == sizeof(T));
__asm__ volatile ("lock cmpxchgb %1,(%3)"
: "=a" (exchange_value)
@@ -79,7 +81,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order /* order */) const {
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(4 == sizeof(T));
__asm__ volatile ("lock cmpxchgl %1,(%3)"
: "=a" (exchange_value)
@@ -92,7 +94,8 @@
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::fetch_and_add(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::fetch_and_add(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
D old_value;
@@ -105,8 +108,8 @@
template<>
template<typename T>
-inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+inline T Atomic::PlatformXchg<8>::operator()(T exchange_value, T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
__asm__ __volatile__ ("xchgq (%2),%0"
: "=r" (exchange_value)
@@ -120,7 +123,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order /* order */) const {
+ atomic_memory_order /* order */) const {
STATIC_ASSERT(8 == sizeof(T));
__asm__ __volatile__ ("lock cmpxchgq %1,(%3)"
: "=a" (exchange_value)
@@ -142,7 +145,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
return cmpxchg_using_helper<int64_t>(_Atomic_cmpxchg_long, exchange_value, dest, compare_value);
}
--- a/src/hotspot/os_cpu/linux_zero/atomic_linux_zero.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/linux_zero/atomic_linux_zero.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007, 2008, 2011, 2015, Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -35,12 +35,13 @@
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const;
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
@@ -49,7 +50,8 @@
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
return __sync_add_and_fetch(dest, add_value);
@@ -58,7 +60,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
// __sync_lock_test_and_set is a bizarrely named atomic exchange
// operation. Note that some platforms only support this with the
@@ -76,7 +79,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
T result = __sync_lock_test_and_set (dest, exchange_value);
__sync_synchronize();
@@ -92,7 +96,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
return __sync_val_compare_and_swap(dest, compare_value, exchange_value);
}
@@ -102,7 +106,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
return __sync_val_compare_and_swap(dest, compare_value, exchange_value);
}
--- a/src/hotspot/os_cpu/solaris_sparc/atomic_solaris_sparc.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/solaris_sparc/atomic_solaris_sparc.hpp Mon May 07 16:41:38 2018 +0200
@@ -31,7 +31,7 @@
template<size_t byte_size>
struct Atomic::PlatformAdd {
template<typename I, typename D>
- inline D operator()(I add_value, D volatile* dest) const {
+ inline D operator()(I add_value, D volatile* dest, atomic_memory_order order) const {
D old_value = *dest;
while (true) {
D new_value = old_value + add_value;
@@ -46,7 +46,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
__asm__ volatile ( "swap [%2],%0"
: "=r" (exchange_value)
@@ -58,7 +59,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
T old_value = *dest;
while (true) {
@@ -78,7 +80,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
T rv;
__asm__ volatile(
@@ -94,7 +96,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
T rv;
__asm__ volatile(
--- a/src/hotspot/os_cpu/solaris_x86/atomic_solaris_x86.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/solaris_x86/atomic_solaris_x86.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,13 +45,14 @@
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const;
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const;
};
// Not using add_using_helper; see comment for cmpxchg.
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
return PrimitiveConversions::cast<D>(
@@ -62,7 +63,8 @@
// Not using add_using_helper; see comment for cmpxchg.
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
return PrimitiveConversions::cast<D>(
@@ -73,7 +75,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
return PrimitiveConversions::cast<T>(
_Atomic_xchg(PrimitiveConversions::cast<int32_t>(exchange_value),
@@ -85,7 +88,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<8>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
return PrimitiveConversions::cast<T>(
_Atomic_xchg_long(PrimitiveConversions::cast<int64_t>(exchange_value),
@@ -103,7 +107,7 @@
inline T Atomic::PlatformCmpxchg<1>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(1 == sizeof(T));
return PrimitiveConversions::cast<T>(
_Atomic_cmpxchg_byte(PrimitiveConversions::cast<int8_t>(exchange_value),
@@ -116,7 +120,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
return PrimitiveConversions::cast<T>(
_Atomic_cmpxchg(PrimitiveConversions::cast<int32_t>(exchange_value),
@@ -129,7 +133,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
return PrimitiveConversions::cast<T>(
_Atomic_cmpxchg_long(PrimitiveConversions::cast<int64_t>(exchange_value),
--- a/src/hotspot/os_cpu/windows_x86/atomic_windows_x86.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/os_cpu/windows_x86/atomic_windows_x86.hpp Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,19 +47,21 @@
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
{
template<typename I, typename D>
- D add_and_fetch(I add_value, D volatile* dest) const;
+ D add_and_fetch(I add_value, D volatile* dest, atomic_memory_order order) const;
};
#ifdef AMD64
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
return add_using_helper<int32_t>(os::atomic_add_func, add_value, dest);
}
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
return add_using_helper<int64_t>(os::atomic_add_long_func, add_value, dest);
}
@@ -67,7 +69,8 @@
template<> \
template<typename T> \
inline T Atomic::PlatformXchg<ByteSize>::operator()(T exchange_value, \
- T volatile* dest) const { \
+ T volatile* dest, \
+ atomic_memory_order order) const { \
STATIC_ASSERT(ByteSize == sizeof(T)); \
return xchg_using_helper<StubType>(StubName, exchange_value, dest); \
}
@@ -83,7 +86,7 @@
inline T Atomic::PlatformCmpxchg<ByteSize>::operator()(T exchange_value, \
T volatile* dest, \
T compare_value, \
- cmpxchg_memory_order order) const { \
+ atomic_memory_order order) const { \
STATIC_ASSERT(ByteSize == sizeof(T)); \
return cmpxchg_using_helper<StubType>(StubName, exchange_value, dest, compare_value); \
}
@@ -98,7 +101,8 @@
template<>
template<typename I, typename D>
-inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
+inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
__asm {
@@ -113,7 +117,8 @@
template<>
template<typename T>
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
- T volatile* dest) const {
+ T volatile* dest,
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
// alternative for InterlockedExchange
__asm {
@@ -128,7 +133,7 @@
inline T Atomic::PlatformCmpxchg<1>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(1 == sizeof(T));
// alternative for InterlockedCompareExchange
__asm {
@@ -144,7 +149,7 @@
inline T Atomic::PlatformCmpxchg<4>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
// alternative for InterlockedCompareExchange
__asm {
@@ -160,7 +165,7 @@
inline T Atomic::PlatformCmpxchg<8>::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
int32_t ex_lo = (int32_t)exchange_value;
int32_t ex_hi = *( ((int32_t*)&exchange_value) + 1 );
--- a/src/hotspot/share/gc/cms/cmsHeap.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/cmsHeap.cpp Mon May 07 16:41:38 2018 +0200
@@ -100,7 +100,7 @@
_young_manager = new GCMemoryManager("ParNew", "end of minor GC");
_old_manager = new GCMemoryManager("ConcurrentMarkSweep", "end of major GC");
- ParNewGeneration* young = (ParNewGeneration*) young_gen();
+ ParNewGeneration* young = young_gen();
_eden_pool = new ContiguousSpacePool(young->eden(),
"Par Eden Space",
young->max_eden_size(),
@@ -128,18 +128,11 @@
}
-void CMSHeap::check_gen_kinds() {
- assert(young_gen()->kind() == Generation::ParNew,
- "Wrong youngest generation type");
- assert(old_gen()->kind() == Generation::ConcurrentMarkSweep,
- "Wrong generation kind");
-}
-
CMSHeap* CMSHeap::heap() {
CollectedHeap* heap = Universe::heap();
assert(heap != NULL, "Uninitialized access to CMSHeap::heap()");
assert(heap->kind() == CollectedHeap::CMS, "Invalid name");
- return (CMSHeap*) heap;
+ return static_cast<CMSHeap*>(heap);
}
void CMSHeap::gc_threads_do(ThreadClosure* tc) const {
--- a/src/hotspot/share/gc/cms/cmsHeap.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/cmsHeap.hpp Mon May 07 16:41:38 2018 +0200
@@ -26,6 +26,7 @@
#define SHARE_VM_GC_CMS_CMSHEAP_HPP
#include "gc/cms/concurrentMarkSweepGeneration.hpp"
+#include "gc/cms/parNewGeneration.hpp"
#include "gc/shared/collectedHeap.hpp"
#include "gc/shared/gcCause.hpp"
#include "gc/shared/genCollectedHeap.hpp"
@@ -42,10 +43,6 @@
class WorkGang;
class CMSHeap : public GenCollectedHeap {
-
-protected:
- virtual void check_gen_kinds();
-
public:
CMSHeap(GenCollectorPolicy *policy);
@@ -97,6 +94,24 @@
GCMemoryManager* old_manager() const { return _old_manager; }
+ ParNewGeneration* young_gen() const {
+ assert(_young_gen->kind() == Generation::ParNew, "Wrong generation type");
+ return static_cast<ParNewGeneration*>(_young_gen);
+ }
+
+ ConcurrentMarkSweepGeneration* old_gen() const {
+ assert(_old_gen->kind() == Generation::ConcurrentMarkSweep, "Wrong generation kind");
+ return static_cast<ConcurrentMarkSweepGeneration*>(_old_gen);
+ }
+
+ // Apply "cur->do_oop" or "older->do_oop" to all the oops in objects
+ // allocated since the last call to save_marks in the young generation.
+ // The "cur" closure is applied to references in the younger generation
+ // at "level", and the "older" closure to older generations.
+ template <typename OopClosureType1, typename OopClosureType2>
+ void oop_since_save_marks_iterate(OopClosureType1* cur,
+ OopClosureType2* older);
+
private:
WorkGang* _workers;
MemoryPool* _eden_pool;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/cms/cmsHeap.inline.hpp Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_GC_CMS_CMSHEAP_INLINE_HPP
+#define SHARE_GC_CMS_CMSHEAP_INLINE_HPP
+
+#include "gc/cms/cmsHeap.hpp"
+#include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
+#include "gc/serial/defNewGeneration.inline.hpp"
+
+template <typename OopClosureType1, typename OopClosureType2>
+void CMSHeap::oop_since_save_marks_iterate(OopClosureType1* cur,
+ OopClosureType2* older) {
+ young_gen()->oop_since_save_marks_iterate(cur);
+ old_gen()->oop_since_save_marks_iterate(older);
+}
+
+#endif // SHARE_GC_CMS_CMSHEAP_INLINE_HPP
--- a/src/hotspot/share/gc/cms/cms_specialized_oop_closures.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/cms_specialized_oop_closures.hpp Mon May 07 16:41:38 2018 +0200
@@ -60,14 +60,4 @@
f(CMSKeepAliveClosure,_nv) \
f(CMSInnerParMarkAndPushClosure,_nv)
-#define SPECIALIZED_PAR_OOP_ITERATE_CLOSURES(f) \
- f(MarkRefsIntoAndScanClosure,_nv) \
- f(PushAndMarkClosure,_nv) \
- f(ParMarkRefsIntoAndScanClosure,_nv) \
- f(ParPushAndMarkClosure,_nv)
-
-#define SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES_YOUNG_P(f) \
- f(ParScanWithBarrierClosure,_nv) \
- f(ParScanWithoutBarrierClosure,_nv)
-
#endif // SHARE_GC_CMS_CMS_SPECIALIZED_OOP_CLOSURES_HPP
--- a/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp Mon May 07 16:41:38 2018 +0200
@@ -2103,22 +2103,6 @@
return _promoInfo.noPromotions();
}
-#define CFLS_OOP_SINCE_SAVE_MARKS_DEFN(OopClosureType, nv_suffix) \
- \
-void CompactibleFreeListSpace:: \
-oop_since_save_marks_iterate##nv_suffix(OopClosureType* blk) { \
- _promoInfo.promoted_oops_iterate##nv_suffix(blk); \
- /* \
- * This also restores any displaced headers and removes the elements from \
- * the iteration set as they are processed, so that we have a clean slate \
- * at the end of the iteration. Note, thus, that if new objects are \
- * promoted as a result of the iteration they are iterated over as well. \
- */ \
- assert(_promoInfo.noPromotions(), "_promoInfo inconsistency"); \
-}
-
-ALL_SINCE_SAVE_MARKS_CLOSURES(CFLS_OOP_SINCE_SAVE_MARKS_DEFN)
-
bool CompactibleFreeListSpace::linearAllocationWouldFail() const {
return _smallLinearAllocBlock._word_size == 0;
}
--- a/src/hotspot/share/gc/cms/compactibleFreeListSpace.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/compactibleFreeListSpace.hpp Mon May 07 16:41:38 2018 +0200
@@ -501,10 +501,8 @@
// Fields in objects allocated by applications of the closure
// *are* included in the iteration. Thus, when the iteration completes
// there should be no further such objects remaining.
- #define CFLS_OOP_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \
- void oop_since_save_marks_iterate##nv_suffix(OopClosureType* blk);
- ALL_SINCE_SAVE_MARKS_CLOSURES(CFLS_OOP_SINCE_SAVE_MARKS_DECL)
- #undef CFLS_OOP_SINCE_SAVE_MARKS_DECL
+ template <typename OopClosureType>
+ void oop_since_save_marks_iterate(OopClosureType* blk);
// Allocation support
HeapWord* allocate(size_t size);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/cms/compactibleFreeListSpace.inline.hpp Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_GC_CMS_COMPACTIBLEFREELISTSPACE_INLINE_HPP
+#define SHARE_GC_CMS_COMPACTIBLEFREELISTSPACE_INLINE_HPP
+
+#include "gc/cms/compactibleFreeListSpace.hpp"
+#include "gc/cms/promotionInfo.inline.hpp"
+
+template <typename OopClosureType>
+void CompactibleFreeListSpace::oop_since_save_marks_iterate(OopClosureType* blk) {
+ _promoInfo.promoted_oops_iterate(blk);
+
+ // This also restores any displaced headers and removes the elements from
+ // the iteration set as they are processed, so that we have a clean slate
+ // at the end of the iteration. Note, thus, that if new objects are
+ // promoted as a result of the iteration they are iterated over as well.
+ assert(_promoInfo.noPromotions(), "_promoInfo inconsistency");
+}
+
+#endif // SHARE_GC_CMS_COMPACTIBLEFREELISTSPACE_INLINE_HPP
--- a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp Mon May 07 16:41:38 2018 +0200
@@ -36,6 +36,7 @@
#include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
#include "gc/cms/concurrentMarkSweepThread.hpp"
#include "gc/cms/parNewGeneration.hpp"
+#include "gc/cms/promotionInfo.inline.hpp"
#include "gc/cms/vmCMSOperations.hpp"
#include "gc/serial/genMarkSweep.hpp"
#include "gc/serial/tenuredGeneration.hpp"
@@ -54,6 +55,7 @@
#include "gc/shared/genOopClosures.inline.hpp"
#include "gc/shared/isGCActiveMark.hpp"
#include "gc/shared/referencePolicy.hpp"
+#include "gc/shared/space.inline.hpp"
#include "gc/shared/strongRootsScope.hpp"
#include "gc/shared/taskqueue.inline.hpp"
#include "gc/shared/weakProcessor.hpp"
@@ -602,8 +604,7 @@
// Support for parallelizing young gen rescan
CMSHeap* heap = CMSHeap::heap();
- assert(heap->young_gen()->kind() == Generation::ParNew, "CMS can only be used with ParNew");
- _young_gen = (ParNewGeneration*)heap->young_gen();
+ _young_gen = heap->young_gen();
if (heap->supports_inline_contig_alloc()) {
_top_addr = heap->top_addr();
_end_addr = heap->end_addr();
@@ -770,7 +771,6 @@
log.trace(" Capacity " SIZE_FORMAT, capacity() / 1000);
log.trace(" Desired capacity " SIZE_FORMAT, desired_capacity / 1000);
CMSHeap* heap = CMSHeap::heap();
- assert(heap->is_old_gen(this), "The CMS generation should always be the old generation");
size_t young_size = heap->young_gen()->capacity();
log.trace(" Young gen size " SIZE_FORMAT, young_size / 1000);
log.trace(" unsafe_max_alloc_nogc " SIZE_FORMAT, unsafe_max_alloc_nogc() / 1000);
@@ -1101,7 +1101,7 @@
par_oop_since_save_marks_iterate_done(int thread_num) {
CMSParGCThreadState* ps = _par_gc_thread_states[thread_num];
ParScanWithoutBarrierClosure* dummy_cl = NULL;
- ps->promo.promoted_oops_iterate_nv(dummy_cl);
+ ps->promo.promoted_oops_iterate(dummy_cl);
// Because card-scanning has been completed, subsequent phases
// (e.g., reference processing) will not need to recognize which
@@ -2463,18 +2463,6 @@
return cmsSpace()->no_allocs_since_save_marks();
}
-#define CMS_SINCE_SAVE_MARKS_DEFN(OopClosureType, nv_suffix) \
- \
-void ConcurrentMarkSweepGeneration:: \
-oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl) { \
- cl->set_generation(this); \
- cmsSpace()->oop_since_save_marks_iterate##nv_suffix(cl); \
- cl->reset_generation(); \
- save_marks(); \
-}
-
-ALL_SINCE_SAVE_MARKS_CLOSURES(CMS_SINCE_SAVE_MARKS_DEFN)
-
void
ConcurrentMarkSweepGeneration::oop_iterate(ExtendedOopClosure* cl) {
if (freelistLock()->owned_by_self()) {
--- a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.hpp Mon May 07 16:41:38 2018 +0200
@@ -1195,12 +1195,8 @@
virtual void safe_object_iterate(ObjectClosure* cl);
virtual void object_iterate(ObjectClosure* cl);
- // Need to declare the full complement of closures, whether we'll
- // override them or not, or get message from the compiler:
- // oop_since_save_marks_iterate_nv hides virtual function...
- #define CMS_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \
- void oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl);
- ALL_SINCE_SAVE_MARKS_CLOSURES(CMS_SINCE_SAVE_MARKS_DECL)
+ template <typename OopClosureType>
+ void oop_since_save_marks_iterate(OopClosureType* cl);
// Smart allocation XXX -- move to CFLSpace?
void setNearLargestChunk();
--- a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.inline.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.inline.hpp Mon May 07 16:41:38 2018 +0200
@@ -27,7 +27,7 @@
#include "gc/cms/cmsHeap.hpp"
#include "gc/cms/cmsLockVerifier.hpp"
-#include "gc/cms/compactibleFreeListSpace.hpp"
+#include "gc/cms/compactibleFreeListSpace.inline.hpp"
#include "gc/cms/concurrentMarkSweepGeneration.hpp"
#include "gc/cms/concurrentMarkSweepThread.hpp"
#include "gc/cms/parNewGeneration.hpp"
@@ -375,6 +375,14 @@
return _cmsSpace->used_region_at_save_marks();
}
+template <typename OopClosureType>
+void ConcurrentMarkSweepGeneration::oop_since_save_marks_iterate(OopClosureType* cl) {
+ cl->set_generation(this);
+ cmsSpace()->oop_since_save_marks_iterate(cl);
+ cl->reset_generation();
+ save_marks();
+}
+
inline void MarkFromRootsClosure::do_yield_check() {
if (ConcurrentMarkSweepThread::should_yield() &&
!_collector->foregroundGCIsActive() &&
--- a/src/hotspot/share/gc/cms/jvmFlagConstraintsCMS.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/jvmFlagConstraintsCMS.cpp Mon May 07 16:41:38 2018 +0200
@@ -126,7 +126,7 @@
static JVMFlag::Error CMSReservedAreaConstraintFunc(const char* name, size_t value, bool verbose) {
if (UseConcMarkSweepGC) {
- ConcurrentMarkSweepGeneration* cms = (ConcurrentMarkSweepGeneration*)GenCollectedHeap::heap()->old_gen();
+ ConcurrentMarkSweepGeneration* cms = CMSHeap::heap()->old_gen();
const size_t ergo_max = cms->cmsSpace()->max_flag_size_for_task_size();
if (value > ergo_max) {
CommandLineError::print(verbose,
@@ -189,7 +189,7 @@
JVMFlag::Error CMSSamplingGrainConstraintFunc(uintx value, bool verbose) {
if (UseConcMarkSweepGC) {
- size_t max_capacity = GenCollectedHeap::heap()->young_gen()->max_capacity();
+ size_t max_capacity = CMSHeap::heap()->young_gen()->max_capacity();
if (value > max_uintx - max_capacity) {
CommandLineError::print(verbose,
"CMSSamplingGrain (" UINTX_FORMAT ") must be "
@@ -212,7 +212,7 @@
// Skip for current default value.
if (UseConcMarkSweepGC && FLAG_IS_CMDLINE(CMSBitMapYieldQuantum)) {
// CMSBitMapYieldQuantum should be compared with mark bitmap size.
- ConcurrentMarkSweepGeneration* cms = (ConcurrentMarkSweepGeneration*)GenCollectedHeap::heap()->old_gen();
+ ConcurrentMarkSweepGeneration* cms = CMSHeap::heap()->old_gen();
size_t bitmap_size = cms->collector()->markBitMap()->sizeInWords();
if (value > bitmap_size) {
--- a/src/hotspot/share/gc/cms/parNewGeneration.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/parNewGeneration.cpp Mon May 07 16:41:38 2018 +0200
@@ -23,7 +23,7 @@
*/
#include "precompiled.hpp"
-#include "gc/cms/cmsHeap.hpp"
+#include "gc/cms/cmsHeap.inline.hpp"
#include "gc/cms/compactibleFreeListSpace.hpp"
#include "gc/cms/concurrentMarkSweepGeneration.hpp"
#include "gc/cms/parNewGeneration.inline.hpp"
@@ -36,7 +36,6 @@
#include "gc/shared/gcTimer.hpp"
#include "gc/shared/gcTrace.hpp"
#include "gc/shared/gcTraceTime.inline.hpp"
-#include "gc/shared/genCollectedHeap.hpp"
#include "gc/shared/genOopClosures.inline.hpp"
#include "gc/shared/generation.hpp"
#include "gc/shared/plab.inline.hpp"
@@ -836,20 +835,19 @@
ScanClosure(g, gc_barrier)
{ }
-EvacuateFollowersClosureGeneral::
+template <typename OopClosureType1, typename OopClosureType2>
+EvacuateFollowersClosureGeneral<OopClosureType1, OopClosureType2>::
EvacuateFollowersClosureGeneral(CMSHeap* heap,
- OopsInGenClosure* cur,
- OopsInGenClosure* older) :
+ OopClosureType1* cur,
+ OopClosureType2* older) :
_heap(heap),
_scan_cur_or_nonheap(cur), _scan_older(older)
{ }
-void EvacuateFollowersClosureGeneral::do_void() {
+template <typename OopClosureType1, typename OopClosureType2>
+void EvacuateFollowersClosureGeneral<OopClosureType1, OopClosureType2>::do_void() {
do {
- // Beware: this call will lead to closure applications via virtual
- // calls.
- _heap->oop_since_save_marks_iterate(GenCollectedHeap::YoungGen,
- _scan_cur_or_nonheap,
+ _heap->oop_since_save_marks_iterate(_scan_cur_or_nonheap,
_scan_older);
} while (!_heap->no_allocs_since_save_marks());
}
@@ -977,8 +975,8 @@
ScanClosure scan_without_gc_barrier(this, false);
ScanClosureWithParBarrier scan_with_gc_barrier(this, true);
set_promo_failure_scan_stack_closure(&scan_without_gc_barrier);
- EvacuateFollowersClosureGeneral evacuate_followers(gch,
- &scan_without_gc_barrier, &scan_with_gc_barrier);
+ EvacuateFollowersClosureGeneral<ScanClosure, ScanClosureWithParBarrier> evacuate_followers(
+ gch, &scan_without_gc_barrier, &scan_with_gc_barrier);
rp->setup_policy(clear_all_soft_refs);
// Can the mt_degree be set later (at run_task() time would be best)?
rp->set_active_mt_degree(active_workers);
--- a/src/hotspot/share/gc/cms/parNewGeneration.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/parNewGeneration.hpp Mon May 07 16:41:38 2018 +0200
@@ -258,15 +258,16 @@
virtual void do_oop(narrowOop* p);
};
+template <typename OopClosureType1, typename OopClosureType2>
class EvacuateFollowersClosureGeneral: public VoidClosure {
private:
CMSHeap* _heap;
- OopsInGenClosure* _scan_cur_or_nonheap;
- OopsInGenClosure* _scan_older;
+ OopClosureType1* _scan_cur_or_nonheap;
+ OopClosureType2* _scan_older;
public:
EvacuateFollowersClosureGeneral(CMSHeap* heap,
- OopsInGenClosure* cur,
- OopsInGenClosure* older);
+ OopClosureType1* cur,
+ OopClosureType2* older);
virtual void do_void();
};
--- a/src/hotspot/share/gc/cms/promotionInfo.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/promotionInfo.cpp Mon May 07 16:41:38 2018 +0200
@@ -60,60 +60,6 @@
assert(!((FreeChunk*)this)->is_free(), "Error");
}
-//////////////////////////////////////////////////////////////////////////////
-// We go over the list of promoted objects, removing each from the list,
-// and applying the closure (this may, in turn, add more elements to
-// the tail of the promoted list, and these newly added objects will
-// also be processed) until the list is empty.
-// To aid verification and debugging, in the non-product builds
-// we actually forward _promoHead each time we process a promoted oop.
-// Note that this is not necessary in general (i.e. when we don't need to
-// call PromotionInfo::verify()) because oop_iterate can only add to the
-// end of _promoTail, and never needs to look at _promoHead.
-
-#define PROMOTED_OOPS_ITERATE_DEFN(OopClosureType, nv_suffix) \
- \
-void PromotionInfo::promoted_oops_iterate##nv_suffix(OopClosureType* cl) { \
- NOT_PRODUCT(verify()); \
- PromotedObject *curObj, *nextObj; \
- for (curObj = _promoHead; curObj != NULL; curObj = nextObj) { \
- if ((nextObj = curObj->next()) == NULL) { \
- /* protect ourselves against additions due to closure application \
- below by resetting the list. */ \
- assert(_promoTail == curObj, "Should have been the tail"); \
- _promoHead = _promoTail = NULL; \
- } \
- if (curObj->hasDisplacedMark()) { \
- /* restore displaced header */ \
- oop(curObj)->set_mark_raw(nextDisplacedHeader()); \
- } else { \
- /* restore prototypical header */ \
- oop(curObj)->init_mark_raw(); \
- } \
- /* The "promoted_mark" should now not be set */ \
- assert(!curObj->hasPromotedMark(), \
- "Should have been cleared by restoring displaced mark-word"); \
- NOT_PRODUCT(_promoHead = nextObj); \
- if (cl != NULL) oop(curObj)->oop_iterate(cl); \
- if (nextObj == NULL) { /* start at head of list reset above */ \
- nextObj = _promoHead; \
- } \
- } \
- assert(noPromotions(), "post-condition violation"); \
- assert(_promoHead == NULL && _promoTail == NULL, "emptied promoted list");\
- assert(_spoolHead == _spoolTail, "emptied spooling buffers"); \
- assert(_firstIndex == _nextIndex, "empty buffer"); \
-}
-
-// This should have been ALL_SINCE_...() just like the others,
-// but, because the body of the method above is somehwat longer,
-// the MSVC compiler cannot cope; as a workaround, we split the
-// macro into its 3 constituent parts below (see original macro
-// definition in specializedOopClosures.hpp).
-SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES_YOUNG(PROMOTED_OOPS_ITERATE_DEFN)
-PROMOTED_OOPS_ITERATE_DEFN(OopsInGenClosure,_v)
-
-
// Return the next displaced header, incrementing the pointer and
// recycling spool area as necessary.
markOop PromotionInfo::nextDisplacedHeader() {
--- a/src/hotspot/share/gc/cms/promotionInfo.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/cms/promotionInfo.hpp Mon May 07 16:41:38 2018 +0200
@@ -165,13 +165,10 @@
bool ensure_spooling_space() {
return has_spooling_space() || ensure_spooling_space_work();
}
- #define PROMOTED_OOPS_ITERATE_DECL(OopClosureType, nv_suffix) \
- void promoted_oops_iterate##nv_suffix(OopClosureType* cl);
- ALL_SINCE_SAVE_MARKS_CLOSURES(PROMOTED_OOPS_ITERATE_DECL)
- #undef PROMOTED_OOPS_ITERATE_DECL
- void promoted_oops_iterate(OopsInGenClosure* cl) {
- promoted_oops_iterate_v(cl);
- }
+
+ template <typename OopClosureType>
+ void promoted_oops_iterate(OopClosureType* cl);
+
void verify() const;
void reset() {
_promoHead = NULL;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/cms/promotionInfo.inline.hpp Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_GC_CMS_PROMOTIONINFO_INLINE_HPP
+#define SHARE_GC_CMS_PROMOTIONINFO_INLINE_HPP
+
+#include "gc/cms/promotionInfo.hpp"
+#include "oops/oop.inline.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/macros.hpp"
+
+//////////////////////////////////////////////////////////////////////////////
+// We go over the list of promoted objects, removing each from the list,
+// and applying the closure (this may, in turn, add more elements to
+// the tail of the promoted list, and these newly added objects will
+// also be processed) until the list is empty.
+// To aid verification and debugging, in the non-product builds
+// we actually forward _promoHead each time we process a promoted oop.
+// Note that this is not necessary in general (i.e. when we don't need to
+// call PromotionInfo::verify()) because oop_iterate can only add to the
+// end of _promoTail, and never needs to look at _promoHead.
+
+template <typename OopClosureType>
+void PromotionInfo::promoted_oops_iterate(OopClosureType* cl) {
+ NOT_PRODUCT(verify());
+ PromotedObject *curObj, *nextObj;
+ for (curObj = _promoHead; curObj != NULL; curObj = nextObj) {
+ if ((nextObj = curObj->next()) == NULL) {
+ /* protect ourselves against additions due to closure application
+ below by resetting the list. */
+ assert(_promoTail == curObj, "Should have been the tail");
+ _promoHead = _promoTail = NULL;
+ }
+ if (curObj->hasDisplacedMark()) {
+ /* restore displaced header */
+ oop(curObj)->set_mark_raw(nextDisplacedHeader());
+ } else {
+ /* restore prototypical header */
+ oop(curObj)->init_mark_raw();
+ }
+ /* The "promoted_mark" should now not be set */
+ assert(!curObj->hasPromotedMark(),
+ "Should have been cleared by restoring displaced mark-word");
+ NOT_PRODUCT(_promoHead = nextObj);
+ if (cl != NULL) oop(curObj)->oop_iterate(cl);
+ if (nextObj == NULL) { /* start at head of list reset above */
+ nextObj = _promoHead;
+ }
+ }
+ assert(noPromotions(), "post-condition violation");
+ assert(_promoHead == NULL && _promoTail == NULL, "emptied promoted list");
+ assert(_spoolHead == _spoolTail, "emptied spooling buffers");
+ assert(_firstIndex == _nextIndex, "empty buffer");
+}
+
+#endif // SHARE_GC_CMS_PROMOTIONINFO_INLINE_HPP
--- a/src/hotspot/share/gc/serial/defNewGeneration.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/serial/defNewGeneration.cpp Mon May 07 16:41:38 2018 +0200
@@ -24,6 +24,8 @@
#include "precompiled.hpp"
#include "gc/serial/defNewGeneration.inline.hpp"
+#include "gc/serial/serialHeap.inline.hpp"
+#include "gc/serial/tenuredGeneration.hpp"
#include "gc/shared/adaptiveSizePolicy.hpp"
#include "gc/shared/ageTable.inline.hpp"
#include "gc/shared/cardTableRS.hpp"
@@ -34,7 +36,6 @@
#include "gc/shared/gcTimer.hpp"
#include "gc/shared/gcTrace.hpp"
#include "gc/shared/gcTraceTime.inline.hpp"
-#include "gc/shared/genCollectedHeap.hpp"
#include "gc/shared/genOopClosures.inline.hpp"
#include "gc/shared/generationSpec.hpp"
#include "gc/shared/preservedMarks.inline.hpp"
@@ -56,9 +57,6 @@
#include "utilities/copy.hpp"
#include "utilities/globalDefinitions.hpp"
#include "utilities/stack.inline.hpp"
-#if INCLUDE_CMSGC
-#include "gc/cms/parOopClosures.hpp"
-#endif
//
// DefNewGeneration functions.
@@ -92,34 +90,19 @@
void DefNewGeneration::FastKeepAliveClosure::do_oop(oop* p) { DefNewGeneration::FastKeepAliveClosure::do_oop_work(p); }
void DefNewGeneration::FastKeepAliveClosure::do_oop(narrowOop* p) { DefNewGeneration::FastKeepAliveClosure::do_oop_work(p); }
-DefNewGeneration::EvacuateFollowersClosure::
-EvacuateFollowersClosure(GenCollectedHeap* gch,
- ScanClosure* cur,
- ScanClosure* older) :
- _gch(gch), _scan_cur_or_nonheap(cur), _scan_older(older)
-{}
-
-void DefNewGeneration::EvacuateFollowersClosure::do_void() {
- do {
- _gch->oop_since_save_marks_iterate(GenCollectedHeap::YoungGen, _scan_cur_or_nonheap, _scan_older);
- } while (!_gch->no_allocs_since_save_marks());
-}
-
DefNewGeneration::FastEvacuateFollowersClosure::
-FastEvacuateFollowersClosure(GenCollectedHeap* gch,
+FastEvacuateFollowersClosure(SerialHeap* heap,
FastScanClosure* cur,
FastScanClosure* older) :
- _gch(gch), _scan_cur_or_nonheap(cur), _scan_older(older)
+ _heap(heap), _scan_cur_or_nonheap(cur), _scan_older(older)
{
- assert(_gch->young_gen()->kind() == Generation::DefNew, "Generation should be DefNew");
- _young_gen = (DefNewGeneration*)_gch->young_gen();
}
void DefNewGeneration::FastEvacuateFollowersClosure::do_void() {
do {
- _gch->oop_since_save_marks_iterate(GenCollectedHeap::YoungGen, _scan_cur_or_nonheap, _scan_older);
- } while (!_gch->no_allocs_since_save_marks());
- guarantee(_young_gen->promo_failure_scan_is_complete(), "Failed to finish scan");
+ _heap->oop_since_save_marks_iterate(_scan_cur_or_nonheap, _scan_older);
+ } while (!_heap->no_allocs_since_save_marks());
+ guarantee(_heap->young_gen()->promo_failure_scan_is_complete(), "Failed to finish scan");
}
ScanClosure::ScanClosure(DefNewGeneration* g, bool gc_barrier) :
@@ -576,29 +559,29 @@
bool is_tlab) {
assert(full || size > 0, "otherwise we don't want to collect");
- GenCollectedHeap* gch = GenCollectedHeap::heap();
+ SerialHeap* heap = SerialHeap::heap();
_gc_timer->register_gc_start();
DefNewTracer gc_tracer;
- gc_tracer.report_gc_start(gch->gc_cause(), _gc_timer->gc_start());
+ gc_tracer.report_gc_start(heap->gc_cause(), _gc_timer->gc_start());
- _old_gen = gch->old_gen();
+ _old_gen = heap->old_gen();
// If the next generation is too full to accommodate promotion
// from this generation, pass on collection; let the next generation
// do it.
if (!collection_attempt_is_safe()) {
log_trace(gc)(":: Collection attempt not safe ::");
- gch->set_incremental_collection_failed(); // Slight lie: we did not even attempt one
+ heap->set_incremental_collection_failed(); // Slight lie: we did not even attempt one
return;
}
assert(to()->is_empty(), "Else not collection_attempt_is_safe");
init_assuming_no_promotion_failure();
- GCTraceTime(Trace, gc, phases) tm("DefNew", NULL, gch->gc_cause());
+ GCTraceTime(Trace, gc, phases) tm("DefNew", NULL, heap->gc_cause());
- gch->trace_heap_before_gc(&gc_tracer);
+ heap->trace_heap_before_gc(&gc_tracer);
// These can be shared for all code paths
IsAliveClosure is_alive(this);
@@ -609,23 +592,23 @@
// The preserved marks should be empty at the start of the GC.
_preserved_marks_set.init(1);
- gch->rem_set()->prepare_for_younger_refs_iterate(false);
+ heap->rem_set()->prepare_for_younger_refs_iterate(false);
- assert(gch->no_allocs_since_save_marks(),
+ assert(heap->no_allocs_since_save_marks(),
"save marks have not been newly set.");
FastScanClosure fsc_with_no_gc_barrier(this, false);
FastScanClosure fsc_with_gc_barrier(this, true);
CLDScanClosure cld_scan_closure(&fsc_with_no_gc_barrier,
- gch->rem_set()->cld_rem_set()->accumulate_modified_oops());
+ heap->rem_set()->cld_rem_set()->accumulate_modified_oops());
set_promo_failure_scan_stack_closure(&fsc_with_no_gc_barrier);
- FastEvacuateFollowersClosure evacuate_followers(gch,
+ FastEvacuateFollowersClosure evacuate_followers(heap,
&fsc_with_no_gc_barrier,
&fsc_with_gc_barrier);
- assert(gch->no_allocs_since_save_marks(),
+ assert(heap->no_allocs_since_save_marks(),
"save marks have not been newly set.");
{
@@ -634,10 +617,10 @@
// See: CardTableRS::non_clean_card_iterate_possibly_parallel.
StrongRootsScope srs(0);
- gch->young_process_roots(&srs,
- &fsc_with_no_gc_barrier,
- &fsc_with_gc_barrier,
- &cld_scan_closure);
+ heap->young_process_roots(&srs,
+ &fsc_with_no_gc_barrier,
+ &fsc_with_gc_barrier,
+ &cld_scan_closure);
}
// "evacuate followers".
@@ -654,12 +637,12 @@
gc_tracer.report_tenuring_threshold(tenuring_threshold());
pt.print_all_references();
- assert(gch->no_allocs_since_save_marks(), "save marks have not been newly set.");
+ assert(heap->no_allocs_since_save_marks(), "save marks have not been newly set.");
WeakProcessor::weak_oops_do(&is_alive, &keep_alive);
// Verify that the usage of keep_alive didn't copy any objects.
- assert(gch->no_allocs_since_save_marks(), "save marks have not been newly set.");
+ assert(heap->no_allocs_since_save_marks(), "save marks have not been newly set.");
if (!_promotion_failed) {
// Swap the survivor spaces.
@@ -683,9 +666,9 @@
// A successful scavenge should restart the GC time limit count which is
// for full GC's.
- AdaptiveSizePolicy* size_policy = gch->size_policy();
+ AdaptiveSizePolicy* size_policy = heap->size_policy();
size_policy->reset_gc_overhead_limit_count();
- assert(!gch->incremental_collection_failed(), "Should be clear");
+ assert(!heap->incremental_collection_failed(), "Should be clear");
} else {
assert(_promo_failure_scan_stack.is_empty(), "post condition");
_promo_failure_scan_stack.clear(true); // Clear cached segments.
@@ -699,14 +682,14 @@
// and from-space.
swap_spaces(); // For uniformity wrt ParNewGeneration.
from()->set_next_compaction_space(to());
- gch->set_incremental_collection_failed();
+ heap->set_incremental_collection_failed();
// Inform the next generation that a promotion failure occurred.
_old_gen->promotion_failure_occurred();
gc_tracer.report_promotion_failed(_promotion_failed_info);
// Reset the PromotionFailureALot counters.
- NOT_PRODUCT(gch->reset_promotion_should_fail();)
+ NOT_PRODUCT(heap->reset_promotion_should_fail();)
}
// We should have processed and cleared all the preserved marks.
_preserved_marks_set.reclaim();
@@ -720,7 +703,7 @@
jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
update_time_of_last_gc(now);
- gch->trace_heap_after_gc(&gc_tracer);
+ heap->trace_heap_after_gc(&gc_tracer);
_gc_timer->register_gc_end();
@@ -828,22 +811,6 @@
return to()->saved_mark_at_top();
}
-#define DefNew_SINCE_SAVE_MARKS_DEFN(OopClosureType, nv_suffix) \
- \
-void DefNewGeneration:: \
-oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl) { \
- cl->set_generation(this); \
- eden()->oop_since_save_marks_iterate##nv_suffix(cl); \
- to()->oop_since_save_marks_iterate##nv_suffix(cl); \
- from()->oop_since_save_marks_iterate##nv_suffix(cl); \
- cl->reset_generation(); \
- save_marks(); \
-}
-
-ALL_SINCE_SAVE_MARKS_CLOSURES(DefNew_SINCE_SAVE_MARKS_DEFN)
-
-#undef DefNew_SINCE_SAVE_MARKS_DEFN
-
void DefNewGeneration::contribute_scratch(ScratchBlock*& list, Generation* requestor,
size_t max_alloc_words) {
if (requestor == this || _promotion_failed) {
@@ -1006,11 +973,9 @@
// have to use it here, as well.
HeapWord* result = eden()->par_allocate(word_size);
if (result != NULL) {
-#if INCLUDE_CMSGC
- if (CMSEdenChunksRecordAlways && _old_gen != NULL) {
+ if (_old_gen != NULL) {
_old_gen->sample_eden_chunk();
}
-#endif
} else {
// If the eden is full and the last collection bailed out, we are running
// out of heap space, and we try to allocate the from-space, too.
@@ -1024,11 +989,9 @@
HeapWord* DefNewGeneration::par_allocate(size_t word_size,
bool is_tlab) {
HeapWord* res = eden()->par_allocate(word_size);
-#if INCLUDE_CMSGC
- if (CMSEdenChunksRecordAlways && _old_gen != NULL) {
+ if (_old_gen != NULL) {
_old_gen->sample_eden_chunk();
}
-#endif
return res;
}
--- a/src/hotspot/share/gc/serial/defNewGeneration.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/serial/defNewGeneration.hpp Mon May 07 16:41:38 2018 +0200
@@ -39,6 +39,7 @@
class STWGCTimer;
class CSpaceCounters;
class ScanWeakRefClosure;
+class SerialHeap;
// DefNewGeneration is a young generation containing eden, from- and
// to-space.
@@ -178,23 +179,12 @@
virtual void do_oop(narrowOop* p);
};
- class EvacuateFollowersClosure: public VoidClosure {
- GenCollectedHeap* _gch;
- ScanClosure* _scan_cur_or_nonheap;
- ScanClosure* _scan_older;
- public:
- EvacuateFollowersClosure(GenCollectedHeap* gch,
- ScanClosure* cur, ScanClosure* older);
- void do_void();
- };
-
class FastEvacuateFollowersClosure: public VoidClosure {
- GenCollectedHeap* _gch;
- DefNewGeneration* _young_gen;
+ SerialHeap* _heap;
FastScanClosure* _scan_cur_or_nonheap;
FastScanClosure* _scan_older;
public:
- FastEvacuateFollowersClosure(GenCollectedHeap* gch,
+ FastEvacuateFollowersClosure(SerialHeap* heap,
FastScanClosure* cur,
FastScanClosure* older);
void do_void();
@@ -290,12 +280,8 @@
// Need to declare the full complement of closures, whether we'll
// override them or not, or get message from the compiler:
// oop_since_save_marks_iterate_nv hides virtual function...
-#define DefNew_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \
- void oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl);
-
- ALL_SINCE_SAVE_MARKS_CLOSURES(DefNew_SINCE_SAVE_MARKS_DECL)
-
-#undef DefNew_SINCE_SAVE_MARKS_DECL
+ template <typename OopClosureType>
+ void oop_since_save_marks_iterate(OopClosureType* cl);
// For non-youngest collection, the DefNewGeneration can contribute
// "to-space".
--- a/src/hotspot/share/gc/serial/defNewGeneration.inline.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/serial/defNewGeneration.inline.hpp Mon May 07 16:41:38 2018 +0200
@@ -29,7 +29,7 @@
#include "gc/shared/cardTableRS.hpp"
#include "gc/shared/genCollectedHeap.hpp"
#include "gc/shared/genOopClosures.inline.hpp"
-#include "gc/shared/space.hpp"
+#include "gc/shared/space.inline.hpp"
#include "oops/access.inline.hpp"
// Methods of protected closure types
@@ -88,4 +88,14 @@
}
}
+template <typename OopClosureType>
+void DefNewGeneration::oop_since_save_marks_iterate(OopClosureType* cl) {
+ cl->set_generation(this);
+ eden()->oop_since_save_marks_iterate(cl);
+ to()->oop_since_save_marks_iterate(cl);
+ from()->oop_since_save_marks_iterate(cl);
+ cl->reset_generation();
+ save_marks();
+}
+
#endif // SHARE_VM_GC_SERIAL_DEFNEWGENERATION_INLINE_HPP
--- a/src/hotspot/share/gc/serial/serialHeap.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/serial/serialHeap.cpp Mon May 07 16:41:38 2018 +0200
@@ -23,11 +23,19 @@
*/
#include "precompiled.hpp"
-#include "gc/serial/defNewGeneration.hpp"
+#include "gc/serial/defNewGeneration.inline.hpp"
#include "gc/serial/serialHeap.hpp"
+#include "gc/serial/tenuredGeneration.inline.hpp"
#include "gc/shared/genMemoryPools.hpp"
#include "services/memoryManager.hpp"
+SerialHeap* SerialHeap::heap() {
+ CollectedHeap* heap = Universe::heap();
+ assert(heap != NULL, "Uninitialized access to SerialHeap::heap()");
+ assert(heap->kind() == CollectedHeap::Serial, "Invalid name");
+ return static_cast<SerialHeap*>(heap);
+}
+
SerialHeap::SerialHeap(GenCollectorPolicy* policy) :
GenCollectedHeap(policy,
Generation::DefNew,
@@ -42,7 +50,7 @@
void SerialHeap::initialize_serviceability() {
- DefNewGeneration* young = (DefNewGeneration*) young_gen();
+ DefNewGeneration* young = young_gen();
// Add a memory pool for each space and young gen doesn't
// support low memory detection as it is expected to get filled up.
@@ -54,7 +62,7 @@
"Survivor Space",
young->max_survivor_size(),
false /* support_usage_threshold */);
- Generation* old = old_gen();
+ TenuredGeneration* old = old_gen();
_old_pool = new GenerationPool(old, "Tenured Gen", true);
_young_manager->add_pool(_eden_pool);
@@ -68,13 +76,6 @@
}
-void SerialHeap::check_gen_kinds() {
- assert(young_gen()->kind() == Generation::DefNew,
- "Wrong youngest generation type");
- assert(old_gen()->kind() == Generation::MarkSweepCompact,
- "Wrong generation kind");
-}
-
GrowableArray<GCMemoryManager*> SerialHeap::memory_managers() {
GrowableArray<GCMemoryManager*> memory_managers(2);
memory_managers.append(_young_manager);
--- a/src/hotspot/share/gc/serial/serialHeap.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/serial/serialHeap.hpp Mon May 07 16:41:38 2018 +0200
@@ -25,12 +25,15 @@
#ifndef SHARE_VM_GC_SERIAL_SERIALHEAP_HPP
#define SHARE_VM_GC_SERIAL_SERIALHEAP_HPP
+#include "gc/serial/defNewGeneration.hpp"
+#include "gc/serial/tenuredGeneration.hpp"
#include "gc/shared/genCollectedHeap.hpp"
#include "utilities/growableArray.hpp"
class GenCollectorPolicy;
class GCMemoryManager;
class MemoryPool;
+class TenuredGeneration;
class SerialHeap : public GenCollectedHeap {
private:
@@ -40,10 +43,9 @@
virtual void initialize_serviceability();
-protected:
- virtual void check_gen_kinds();
+public:
+ static SerialHeap* heap();
-public:
SerialHeap(GenCollectorPolicy* policy);
virtual Name kind() const {
@@ -61,6 +63,24 @@
virtual bool is_in_closed_subset(const void* p) const {
return is_in(p);
}
+
+ DefNewGeneration* young_gen() const {
+ assert(_young_gen->kind() == Generation::DefNew, "Wrong generation type");
+ return static_cast<DefNewGeneration*>(_young_gen);
+ }
+
+ TenuredGeneration* old_gen() const {
+ assert(_old_gen->kind() == Generation::MarkSweepCompact, "Wrong generation type");
+ return static_cast<TenuredGeneration*>(_old_gen);
+ }
+
+ // Apply "cur->do_oop" or "older->do_oop" to all the oops in objects
+ // allocated since the last call to save_marks in the young generation.
+ // The "cur" closure is applied to references in the younger generation
+ // at "level", and the "older" closure to older generations.
+ template <typename OopClosureType1, typename OopClosureType2>
+ void oop_since_save_marks_iterate(OopClosureType1* cur,
+ OopClosureType2* older);
};
#endif // SHARE_VM_GC_CMS_CMSHEAP_HPP
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/serial/serialHeap.inline.hpp Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_GC_SERIAL_SERIALHEAP_INLINE_HPP
+#define SHARE_GC_SERIAL_SERIALHEAP_INLINE_HPP
+
+#include "gc/serial/defNewGeneration.inline.hpp"
+#include "gc/serial/serialHeap.hpp"
+#include "gc/serial/tenuredGeneration.inline.hpp"
+
+template <typename OopClosureType1, typename OopClosureType2>
+void SerialHeap::oop_since_save_marks_iterate(OopClosureType1* cur,
+ OopClosureType2* older) {
+ young_gen()->oop_since_save_marks_iterate(cur);
+ old_gen()->oop_since_save_marks_iterate(older);
+}
+
+#endif // SHARE_GC_SERIAL_SERIALHEAP_INLINE_HPP
--- a/src/hotspot/share/gc/serial/serial_specialized_oop_closures.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/serial/serial_specialized_oop_closures.hpp Mon May 07 16:41:38 2018 +0200
@@ -50,8 +50,4 @@
f(MarkAndPushClosure,_nv) \
f(AdjustPointerClosure,_nv)
-#define SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES_YOUNG_S(f) \
- f(ScanClosure,_nv) \
- f(FastScanClosure,_nv)
-
#endif // SHARE_GC_SERIAL_SERIAL_SPECIALIZED_OOP_CLOSURES_HPP
--- a/src/hotspot/share/gc/serial/tenuredGeneration.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/serial/tenuredGeneration.cpp Mon May 07 16:41:38 2018 +0200
@@ -256,20 +256,6 @@
return _the_space->saved_mark_at_top();
}
-#define TenuredGen_SINCE_SAVE_MARKS_ITERATE_DEFN(OopClosureType, nv_suffix) \
- \
-void TenuredGeneration:: \
-oop_since_save_marks_iterate##nv_suffix(OopClosureType* blk) { \
- blk->set_generation(this); \
- _the_space->oop_since_save_marks_iterate##nv_suffix(blk); \
- blk->reset_generation(); \
- save_marks(); \
-}
-
-ALL_SINCE_SAVE_MARKS_CLOSURES(TenuredGen_SINCE_SAVE_MARKS_ITERATE_DEFN)
-
-#undef TenuredGen_SINCE_SAVE_MARKS_ITERATE_DEFN
-
void TenuredGeneration::gc_epilogue(bool full) {
// update the generation and space performance counters
update_counters();
--- a/src/hotspot/share/gc/serial/tenuredGeneration.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/serial/tenuredGeneration.hpp Mon May 07 16:41:38 2018 +0200
@@ -75,10 +75,8 @@
virtual inline HeapWord* allocate(size_t word_size, bool is_tlab);
virtual inline HeapWord* par_allocate(size_t word_size, bool is_tlab);
-#define TenuredGen_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \
- void oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl);
- TenuredGen_SINCE_SAVE_MARKS_DECL(OopsInGenClosure,_v)
- SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(TenuredGen_SINCE_SAVE_MARKS_DECL)
+ template <typename OopClosureType>
+ void oop_since_save_marks_iterate(OopClosureType* cl);
void save_marks();
void reset_saved_marks();
--- a/src/hotspot/share/gc/serial/tenuredGeneration.inline.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/serial/tenuredGeneration.inline.hpp Mon May 07 16:41:38 2018 +0200
@@ -26,7 +26,7 @@
#define SHARE_VM_GC_SERIAL_TENUREDGENERATION_INLINE_HPP
#include "gc/serial/tenuredGeneration.hpp"
-#include "gc/shared/space.hpp"
+#include "gc/shared/space.inline.hpp"
HeapWord* TenuredGeneration::allocate(size_t word_size,
bool is_tlab) {
@@ -53,4 +53,12 @@
return addr < _the_space ->top();
}
+template <typename OopClosureType>
+void TenuredGeneration::oop_since_save_marks_iterate(OopClosureType* blk) {
+ blk->set_generation(this);
+ _the_space->oop_since_save_marks_iterate(blk);
+ blk->reset_generation();
+ save_marks();
+}
+
#endif // SHARE_VM_GC_SERIAL_TENUREDGENERATION_INLINE_HPP
--- a/src/hotspot/share/gc/shared/c1/modRefBarrierSetC1.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/shared/c1/modRefBarrierSetC1.cpp Mon May 07 16:41:38 2018 +0200
@@ -87,6 +87,9 @@
DecoratorSet decorators = access.decorators();
bool needs_patching = (decorators & C1_NEEDS_PATCHING) != 0;
bool is_write = (decorators & C1_WRITE_ACCESS) != 0;
- resolve_in_register |= !needs_patching && is_write && access.is_oop();
+ bool on_array = (decorators & IN_HEAP_ARRAY) != 0;
+ bool on_anonymous = (decorators & ON_UNKNOWN_OOP_REF) != 0;
+ bool precise = on_array || on_anonymous;
+ resolve_in_register |= !needs_patching && is_write && access.is_oop() && precise;
return BarrierSetC1::resolve_address(access, resolve_in_register);
}
--- a/src/hotspot/share/gc/shared/cardTableBarrierSet.inline.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/shared/cardTableBarrierSet.inline.hpp Mon May 07 16:41:38 2018 +0200
@@ -32,9 +32,8 @@
template <DecoratorSet decorators, typename T>
inline void CardTableBarrierSet::write_ref_field_post(T* field, oop newVal) {
volatile jbyte* byte = _card_table->byte_for(field);
- if (UseConcMarkSweepGC) {
- // Perform a releasing store if using CMS so that it may
- // scan and clear the cards concurrently during pre-cleaning.
+ if (_card_table->scanned_concurrently()) {
+ // Perform a releasing store if the card table is scanned concurrently
OrderAccess::release_store(byte, CardTable::dirty_card_val());
} else {
*byte = CardTable::dirty_card_val();
--- a/src/hotspot/share/gc/shared/genCollectedHeap.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/shared/genCollectedHeap.cpp Mon May 07 16:41:38 2018 +0200
@@ -176,7 +176,7 @@
void GenCollectedHeap::post_initialize() {
CollectedHeap::post_initialize();
ref_processing_init();
- check_gen_kinds();
+
DefNewGeneration* def_new_gen = (DefNewGeneration*)_young_gen;
initialize_size_policy(def_new_gen->eden()->capacity(),
@@ -249,7 +249,7 @@
// was a full collection because a partial collection (would
// have) failed and is likely to fail again
bool GenCollectedHeap::should_try_older_generation_allocation(size_t word_size) const {
- size_t young_capacity = young_gen()->capacity_before_gc();
+ size_t young_capacity = _young_gen->capacity_before_gc();
return (word_size > heap_word_size(young_capacity))
|| GCLocker::is_active_and_needs_gc()
|| incremental_collection_failed();
@@ -257,12 +257,12 @@
HeapWord* GenCollectedHeap::expand_heap_and_allocate(size_t size, bool is_tlab) {
HeapWord* result = NULL;
- if (old_gen()->should_allocate(size, is_tlab)) {
- result = old_gen()->expand_and_allocate(size, is_tlab);
+ if (_old_gen->should_allocate(size, is_tlab)) {
+ result = _old_gen->expand_and_allocate(size, is_tlab);
}
if (result == NULL) {
- if (young_gen()->should_allocate(size, is_tlab)) {
- result = young_gen()->expand_and_allocate(size, is_tlab);
+ if (_young_gen->should_allocate(size, is_tlab)) {
+ result = _young_gen->expand_and_allocate(size, is_tlab);
}
}
assert(result == NULL || is_in_reserved(result), "result not in heap");
@@ -287,7 +287,7 @@
HandleMark hm; // Discard any handles allocated in each iteration.
// First allocation attempt is lock-free.
- Generation *young = young_gen();
+ Generation *young = _young_gen;
assert(young->supports_inline_contig_alloc(),
"Otherwise, must do alloc within heap lock");
if (young->should_allocate(size, is_tlab)) {
@@ -913,23 +913,6 @@
_old_gen->ref_processor()->weak_oops_do(root_closure);
}
-#define GCH_SINCE_SAVE_MARKS_ITERATE_DEFN(OopClosureType, nv_suffix) \
-void GenCollectedHeap:: \
-oop_since_save_marks_iterate(GenerationType gen, \
- OopClosureType* cur, \
- OopClosureType* older) { \
- if (gen == YoungGen) { \
- _young_gen->oop_since_save_marks_iterate##nv_suffix(cur); \
- _old_gen->oop_since_save_marks_iterate##nv_suffix(older); \
- } else { \
- _old_gen->oop_since_save_marks_iterate##nv_suffix(cur); \
- } \
-}
-
-ALL_SINCE_SAVE_MARKS_CLOSURES(GCH_SINCE_SAVE_MARKS_ITERATE_DEFN)
-
-#undef GCH_SINCE_SAVE_MARKS_ITERATE_DEFN
-
bool GenCollectedHeap::no_allocs_since_save_marks() {
return _young_gen->no_allocs_since_save_marks() &&
_old_gen->no_allocs_since_save_marks();
--- a/src/hotspot/share/gc/shared/genCollectedHeap.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/shared/genCollectedHeap.hpp Mon May 07 16:41:38 2018 +0200
@@ -63,10 +63,11 @@
OldGen
};
-private:
+protected:
Generation* _young_gen;
Generation* _old_gen;
+private:
GenerationSpec* _young_gen_spec;
GenerationSpec* _old_gen_spec;
@@ -161,8 +162,6 @@
Generation::Name old,
const char* policy_counters_name);
- virtual void check_gen_kinds() = 0;
-
public:
// Returns JNI_OK on success
@@ -436,20 +435,6 @@
// in other generations, it should call this method.
void save_marks();
- // Apply "cur->do_oop" or "older->do_oop" to all the oops in objects
- // allocated since the last call to save_marks in generations at or above
- // "level". The "cur" closure is
- // applied to references in the generation at "level", and the "older"
- // closure to older generations.
-#define GCH_SINCE_SAVE_MARKS_ITERATE_DECL(OopClosureType, nv_suffix) \
- void oop_since_save_marks_iterate(GenerationType start_gen, \
- OopClosureType* cur, \
- OopClosureType* older);
-
- ALL_SINCE_SAVE_MARKS_CLOSURES(GCH_SINCE_SAVE_MARKS_ITERATE_DECL)
-
-#undef GCH_SINCE_SAVE_MARKS_ITERATE_DECL
-
// Returns "true" iff no allocations have occurred since the last
// call to "save_marks".
bool no_allocs_since_save_marks();
--- a/src/hotspot/share/gc/shared/generation.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/shared/generation.hpp Mon May 07 16:41:38 2018 +0200
@@ -442,25 +442,6 @@
// generation since the last call to "save_marks".
virtual bool no_allocs_since_save_marks() = 0;
- // Apply "cl->apply" to (the addresses of) all reference fields in objects
- // allocated in the current generation since the last call to "save_marks".
- // If more objects are allocated in this generation as a result of applying
- // the closure, iterates over reference fields in those objects as well.
- // Calls "save_marks" at the end of the iteration.
- // General signature...
- virtual void oop_since_save_marks_iterate_v(OopsInGenClosure* cl) = 0;
- // ...and specializations for de-virtualization. (The general
- // implementation of the _nv versions call the virtual version.
- // Note that the _nv suffix is not really semantically necessary,
- // but it avoids some not-so-useful warnings on Solaris.)
-#define Generation_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \
- virtual void oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl) { \
- oop_since_save_marks_iterate_v((OopsInGenClosure*)cl); \
- }
- SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(Generation_SINCE_SAVE_MARKS_DECL)
-
-#undef Generation_SINCE_SAVE_MARKS_DECL
-
// The "requestor" generation is performing some garbage collection
// action for which it would be useful to have scratch space. If
// the target is not the requestor, no gc actions will be required
--- a/src/hotspot/share/gc/shared/space.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/shared/space.cpp Mon May 07 16:41:38 2018 +0200
@@ -490,23 +490,6 @@
return true;
}
-#if INCLUDE_CMSGC
-#define ContigSpace_PAR_OOP_ITERATE_DEFN(OopClosureType, nv_suffix) \
- \
- void ContiguousSpace::par_oop_iterate(MemRegion mr, OopClosureType* blk) {\
- HeapWord* obj_addr = mr.start(); \
- HeapWord* t = mr.end(); \
- while (obj_addr < t) { \
- assert(oopDesc::is_oop(oop(obj_addr)), "Should be an oop"); \
- obj_addr += oop(obj_addr)->oop_iterate_size(blk); \
- } \
- }
-
- ALL_PAR_OOP_ITERATE_CLOSURES(ContigSpace_PAR_OOP_ITERATE_DEFN)
-
-#undef ContigSpace_PAR_OOP_ITERATE_DEFN
-#endif // INCLUDE_CMSGC
-
void ContiguousSpace::oop_iterate(ExtendedOopClosure* blk) {
if (is_empty()) return;
HeapWord* obj_addr = bottom();
@@ -550,32 +533,6 @@
return NULL; // all done
}
-#define ContigSpace_OOP_SINCE_SAVE_MARKS_DEFN(OopClosureType, nv_suffix) \
- \
-void ContiguousSpace:: \
-oop_since_save_marks_iterate##nv_suffix(OopClosureType* blk) { \
- HeapWord* t; \
- HeapWord* p = saved_mark_word(); \
- assert(p != NULL, "expected saved mark"); \
- \
- const intx interval = PrefetchScanIntervalInBytes; \
- do { \
- t = top(); \
- while (p < t) { \
- Prefetch::write(p, interval); \
- debug_only(HeapWord* prev = p); \
- oop m = oop(p); \
- p += m->oop_iterate_size(blk); \
- } \
- } while (t < top()); \
- \
- set_saved_mark_word(p); \
-}
-
-ALL_SINCE_SAVE_MARKS_CLOSURES(ContigSpace_OOP_SINCE_SAVE_MARKS_DEFN)
-
-#undef ContigSpace_OOP_SINCE_SAVE_MARKS_DEFN
-
// Very general, slow implementation.
HeapWord* ContiguousSpace::block_start_const(const void* p) const {
assert(MemRegion(bottom(), end()).contains(p),
--- a/src/hotspot/share/gc/shared/space.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/shared/space.hpp Mon May 07 16:41:38 2018 +0200
@@ -608,15 +608,9 @@
_concurrent_iteration_safe_limit = new_limit;
}
-
-#if INCLUDE_CMSGC
// In support of parallel oop_iterate.
- #define ContigSpace_PAR_OOP_ITERATE_DECL(OopClosureType, nv_suffix) \
- void par_oop_iterate(MemRegion mr, OopClosureType* blk);
-
- ALL_PAR_OOP_ITERATE_CLOSURES(ContigSpace_PAR_OOP_ITERATE_DECL)
- #undef ContigSpace_PAR_OOP_ITERATE_DECL
-#endif // INCLUDE_CMSGC
+ template <typename OopClosureType>
+ void par_oop_iterate(MemRegion mr, OopClosureType* blk);
// Compaction support
virtual void reset_after_compaction() {
@@ -639,11 +633,8 @@
// *are* included in the iteration.
// Updates _saved_mark_word to point to just after the last object
// iterated over.
-#define ContigSpace_OOP_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \
- void oop_since_save_marks_iterate##nv_suffix(OopClosureType* blk);
-
- ALL_SINCE_SAVE_MARKS_CLOSURES(ContigSpace_OOP_SINCE_SAVE_MARKS_DECL)
-#undef ContigSpace_OOP_SINCE_SAVE_MARKS_DECL
+ template <typename OopClosureType>
+ void oop_since_save_marks_iterate(OopClosureType* blk);
// Same as object_iterate, but starting from "mark", which is required
// to denote the start of an object. Objects allocated by
--- a/src/hotspot/share/gc/shared/space.inline.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/shared/space.inline.hpp Mon May 07 16:41:38 2018 +0200
@@ -357,4 +357,34 @@
return oop(addr)->size();
}
+template <typename OopClosureType>
+void ContiguousSpace::oop_since_save_marks_iterate(OopClosureType* blk) {
+ HeapWord* t;
+ HeapWord* p = saved_mark_word();
+ assert(p != NULL, "expected saved mark");
+
+ const intx interval = PrefetchScanIntervalInBytes;
+ do {
+ t = top();
+ while (p < t) {
+ Prefetch::write(p, interval);
+ debug_only(HeapWord* prev = p);
+ oop m = oop(p);
+ p += m->oop_iterate_size(blk);
+ }
+ } while (t < top());
+
+ set_saved_mark_word(p);
+}
+
+template <typename OopClosureType>
+void ContiguousSpace::par_oop_iterate(MemRegion mr, OopClosureType* blk) {
+ HeapWord* obj_addr = mr.start();
+ HeapWord* limit = mr.end();
+ while (obj_addr < limit) {
+ assert(oopDesc::is_oop(oop(obj_addr)), "Should be an oop");
+ obj_addr += oop(obj_addr)->oop_iterate_size(blk);
+ }
+}
+
#endif // SHARE_VM_GC_SHARED_SPACE_INLINE_HPP
--- a/src/hotspot/share/gc/shared/specialized_oop_closures.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/gc/shared/specialized_oop_closures.hpp Mon May 07 16:41:38 2018 +0200
@@ -80,36 +80,4 @@
#define ALL_OOP_OOP_ITERATE_CLOSURES_2(f) \
SPECIALIZED_OOP_OOP_ITERATE_CLOSURES_2(f)
-// This macro applies an argument macro to all OopClosures for which we
-// want specialized bodies of a family of methods related to
-// "par_oop_iterate". The arguments to f are the same as above.
-// The "root_class" is the most general class to define; this may be
-// "OopClosure" in some applications and "OopsInGenClosure" in others.
-
-
-#define ALL_PAR_OOP_ITERATE_CLOSURES(f) \
- f(ExtendedOopClosure,_v) \
- CMSGC_ONLY(SPECIALIZED_PAR_OOP_ITERATE_CLOSURES(f))
-
-// This macro applies an argument macro to all OopClosures for which we
-// want specialized bodies of a family of methods related to
-// "oops_since_save_marks_do". The arguments to f are the same as above.
-// The "root_class" is the most general class to define; this may be
-// "OopClosure" in some applications and "OopsInGenClosure" in others.
-
-#define SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES_YOUNG(f) \
- SERIALGC_ONLY(SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES_YOUNG_S(f)) \
- CMSGC_ONLY(SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES_YOUNG_P(f))
-
-#define SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(f) \
- SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES_YOUNG(f)
-
-// We separate these out, because sometime the general one has
-// a different definition from the specialized ones, and sometimes it
-// doesn't.
-
-#define ALL_SINCE_SAVE_MARKS_CLOSURES(f) \
- f(OopsInGenClosure,_v) \
- SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(f)
-
#endif // SHARE_VM_GC_SHARED_SPECIALIZED_OOP_CLOSURES_HPP
--- a/src/hotspot/share/runtime/atomic.hpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/runtime/atomic.hpp Mon May 07 16:41:38 2018 +0200
@@ -37,9 +37,14 @@
#include "utilities/align.hpp"
#include "utilities/macros.hpp"
-enum cmpxchg_memory_order {
- memory_order_relaxed,
- // Use value which doesn't interfere with C++2011. We need to be more conservative.
+enum atomic_memory_order {
+ // The modes that align with C++11 are intended to
+ // follow the same semantics.
+ memory_order_relaxed = 0,
+ memory_order_acquire = 2,
+ memory_order_release = 3,
+ memory_order_acq_rel = 4,
+ // Strong two-way memory barrier.
memory_order_conservative = 8
};
@@ -80,10 +85,12 @@
// <fence> add-value-to-dest <membar StoreLoad|StoreStore>
template<typename I, typename D>
- inline static D add(I add_value, D volatile* dest);
+ inline static D add(I add_value, D volatile* dest,
+ atomic_memory_order order = memory_order_conservative);
template<typename I, typename D>
- inline static D sub(I sub_value, D volatile* dest);
+ inline static D sub(I sub_value, D volatile* dest,
+ atomic_memory_order order = memory_order_conservative);
// Atomically increment location. inc() provide:
// <fence> increment-dest <membar StoreLoad|StoreStore>
@@ -91,7 +98,8 @@
// type. If it is a pointer type, then the increment is
// scaled to the size of the type pointed to by the pointer.
template<typename D>
- inline static void inc(D volatile* dest);
+ inline static void inc(D volatile* dest,
+ atomic_memory_order order = memory_order_conservative);
// Atomically decrement a location. dec() provide:
// <fence> decrement-dest <membar StoreLoad|StoreStore>
@@ -99,7 +107,8 @@
// type. If it is a pointer type, then the decrement is
// scaled to the size of the type pointed to by the pointer.
template<typename D>
- inline static void dec(D volatile* dest);
+ inline static void dec(D volatile* dest,
+ atomic_memory_order order = memory_order_conservative);
// Performs atomic exchange of *dest with exchange_value. Returns old
// prior value of *dest. xchg*() provide:
@@ -108,7 +117,8 @@
// to D, an integral/enum type equal to D, or a type equal to D that
// is primitive convertible using PrimitiveConversions.
template<typename T, typename D>
- inline static D xchg(T exchange_value, volatile D* dest);
+ inline static D xchg(T exchange_value, volatile D* dest,
+ atomic_memory_order order = memory_order_conservative);
// Performs atomic compare of *dest and compare_value, and exchanges
// *dest with exchange_value if the comparison succeeded. Returns prior
@@ -119,7 +129,7 @@
inline static D cmpxchg(T exchange_value,
D volatile* dest,
U compare_value,
- cmpxchg_memory_order order = memory_order_conservative);
+ atomic_memory_order order = memory_order_conservative);
// Performs atomic compare of *dest and NULL, and replaces *dest
// with exchange_value if the comparison succeeded. Returns true if
@@ -128,7 +138,7 @@
// alternative to the Double-Checked Locking Pattern.
template<typename T, typename D>
inline static bool replace_if_null(T* value, D* volatile* dest,
- cmpxchg_memory_order order = memory_order_conservative);
+ atomic_memory_order order = memory_order_conservative);
private:
WINDOWS_ONLY(public:) // VS2017 warns (C2027) use of undefined type if IsPointerConvertible is declared private
@@ -272,7 +282,7 @@
//
// - dest is of type T*.
// - exchange_value and compare_value are of type T.
- // - order is of type cmpxchg_memory_order.
+ // - order is of type atomic_memory_order.
// - platform_cmpxchg is an object of type PlatformCmpxchg<sizeof(T)>.
//
// Then
@@ -280,7 +290,7 @@
// must be a valid expression, returning a result convertible to T.
//
// A default definition is provided, which declares a function template
- // T operator()(T, T volatile*, T, cmpxchg_memory_order) const
+ // T operator()(T, T volatile*, T, atomic_memory_order) const
//
// For each required size, a platform must either provide an
// appropriate definition of that function, or must entirely
@@ -327,7 +337,7 @@
// must be a valid expression, returning a result convertible to T.
//
// A default definition is provided, which declares a function template
- // T operator()(T, T volatile*, T, cmpxchg_memory_order) const
+ // T operator()(T, T volatile*, T, atomic_memory_order) const
//
// For each required size, a platform must either provide an
// appropriate definition of that function, or must entirely
@@ -488,33 +498,33 @@
template<typename Derived>
struct Atomic::FetchAndAdd {
template<typename I, typename D>
- D operator()(I add_value, D volatile* dest) const;
+ D operator()(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<typename Derived>
struct Atomic::AddAndFetch {
template<typename I, typename D>
- D operator()(I add_value, D volatile* dest) const;
+ D operator()(I add_value, D volatile* dest, atomic_memory_order order) const;
};
template<typename D>
-inline void Atomic::inc(D volatile* dest) {
+inline void Atomic::inc(D volatile* dest, atomic_memory_order order) {
STATIC_ASSERT(IsPointer<D>::value || IsIntegral<D>::value);
typedef typename Conditional<IsPointer<D>::value, ptrdiff_t, D>::type I;
- Atomic::add(I(1), dest);
+ Atomic::add(I(1), dest, order);
}
template<typename D>
-inline void Atomic::dec(D volatile* dest) {
+inline void Atomic::dec(D volatile* dest, atomic_memory_order order) {
STATIC_ASSERT(IsPointer<D>::value || IsIntegral<D>::value);
typedef typename Conditional<IsPointer<D>::value, ptrdiff_t, D>::type I;
// Assumes two's complement integer representation.
#pragma warning(suppress: 4146)
- Atomic::add(I(-1), dest);
+ Atomic::add(I(-1), dest, order);
}
template<typename I, typename D>
-inline D Atomic::sub(I sub_value, D volatile* dest) {
+inline D Atomic::sub(I sub_value, D volatile* dest, atomic_memory_order order) {
STATIC_ASSERT(IsPointer<D>::value || IsIntegral<D>::value);
STATIC_ASSERT(IsIntegral<I>::value);
// If D is a pointer type, use [u]intptr_t as the addend type,
@@ -527,7 +537,7 @@
AddendType addend = sub_value;
// Assumes two's complement integer representation.
#pragma warning(suppress: 4146) // In case AddendType is not signed.
- return Atomic::add(-addend, dest);
+ return Atomic::add(-addend, dest, order);
}
// Define the class before including platform file, which may specialize
@@ -541,7 +551,7 @@
T operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const;
+ atomic_memory_order order) const;
};
// Define the class before including platform file, which may use this
@@ -552,7 +562,7 @@
T operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const;
+ atomic_memory_order order) const;
};
// Define the class before including platform file, which may specialize
@@ -564,7 +574,8 @@
struct Atomic::PlatformXchg {
template<typename T>
T operator()(T exchange_value,
- T volatile* dest) const;
+ T volatile* dest,
+ atomic_memory_order order) const;
};
// platform specific in-line definitions - must come before shared definitions
@@ -589,8 +600,9 @@
}
template<typename I, typename D>
-inline D Atomic::add(I add_value, D volatile* dest) {
- return AddImpl<I, D>()(add_value, dest);
+inline D Atomic::add(I add_value, D volatile* dest,
+ atomic_memory_order order) {
+ return AddImpl<I, D>()(add_value, dest, order);
}
template<typename I, typename D>
@@ -601,9 +613,9 @@
(sizeof(I) <= sizeof(D)) &&
(IsSigned<I>::value == IsSigned<D>::value)>::type>
{
- D operator()(I add_value, D volatile* dest) const {
+ D operator()(I add_value, D volatile* dest, atomic_memory_order order) const {
D addend = add_value;
- return PlatformAdd<sizeof(D)>()(addend, dest);
+ return PlatformAdd<sizeof(D)>()(addend, dest, order);
}
};
@@ -612,14 +624,14 @@
I, P*,
typename EnableIf<IsIntegral<I>::value && (sizeof(I) <= sizeof(P*))>::type>
{
- P* operator()(I add_value, P* volatile* dest) const {
+ P* operator()(I add_value, P* volatile* dest, atomic_memory_order order) const {
STATIC_ASSERT(sizeof(intptr_t) == sizeof(P*));
STATIC_ASSERT(sizeof(uintptr_t) == sizeof(P*));
typedef typename Conditional<IsSigned<I>::value,
intptr_t,
uintptr_t>::type CI;
CI addend = add_value;
- return PlatformAdd<sizeof(P*)>()(addend, dest);
+ return PlatformAdd<sizeof(P*)>()(addend, dest, order);
}
};
@@ -634,13 +646,13 @@
// Use the ATOMIC_SHORT_PAIR macro (see macros.hpp) to get the desired alignment.
template<>
struct Atomic::AddImpl<short, short> {
- short operator()(short add_value, short volatile* dest) const {
+ short operator()(short add_value, short volatile* dest, atomic_memory_order order) const {
#ifdef VM_LITTLE_ENDIAN
assert((intx(dest) & 0x03) == 0x02, "wrong alignment");
- int new_value = Atomic::add(add_value << 16, (volatile int*)(dest-1));
+ int new_value = Atomic::add(add_value << 16, (volatile int*)(dest-1), order);
#else
assert((intx(dest) & 0x03) == 0x00, "wrong alignment");
- int new_value = Atomic::add(add_value << 16, (volatile int*)(dest));
+ int new_value = Atomic::add(add_value << 16, (volatile int*)(dest), order);
#endif
return (short)(new_value >> 16); // preserves sign
}
@@ -648,24 +660,26 @@
template<typename Derived>
template<typename I, typename D>
-inline D Atomic::FetchAndAdd<Derived>::operator()(I add_value, D volatile* dest) const {
+inline D Atomic::FetchAndAdd<Derived>::operator()(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
I addend = add_value;
// If D is a pointer type P*, scale by sizeof(P).
if (IsPointer<D>::value) {
addend *= sizeof(typename RemovePointer<D>::type);
}
- D old = static_cast<const Derived*>(this)->fetch_and_add(addend, dest);
+ D old = static_cast<const Derived*>(this)->fetch_and_add(addend, dest, order);
return old + add_value;
}
template<typename Derived>
template<typename I, typename D>
-inline D Atomic::AddAndFetch<Derived>::operator()(I add_value, D volatile* dest) const {
+inline D Atomic::AddAndFetch<Derived>::operator()(I add_value, D volatile* dest,
+ atomic_memory_order order) const {
// If D is a pointer type P*, scale by sizeof(P).
if (IsPointer<D>::value) {
add_value *= sizeof(typename RemovePointer<D>::type);
}
- return static_cast<const Derived*>(this)->add_and_fetch(add_value, dest);
+ return static_cast<const Derived*>(this)->add_and_fetch(add_value, dest, order);
}
template<typename Type, typename Fn, typename I, typename D>
@@ -679,13 +693,13 @@
inline D Atomic::cmpxchg(T exchange_value,
D volatile* dest,
U compare_value,
- cmpxchg_memory_order order) {
+ atomic_memory_order order) {
return CmpxchgImpl<T, D, U>()(exchange_value, dest, compare_value, order);
}
template<typename T, typename D>
inline bool Atomic::replace_if_null(T* value, D* volatile* dest,
- cmpxchg_memory_order order) {
+ atomic_memory_order order) {
// Presently using a trivial implementation in terms of cmpxchg.
// Consider adding platform support, to permit the use of compiler
// intrinsics like gcc's __sync_bool_compare_and_swap.
@@ -702,7 +716,7 @@
typename EnableIf<IsIntegral<T>::value || IsRegisteredEnum<T>::value>::type>
{
T operator()(T exchange_value, T volatile* dest, T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
// Forward to the platform handler for the size of T.
return PlatformCmpxchg<sizeof(T)>()(exchange_value,
dest,
@@ -728,7 +742,7 @@
typename RemoveCV<U>::type>::value>::type>
{
D* operator()(T* exchange_value, D* volatile* dest, U* compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
// Allow derived to base conversion, and adding cv-qualifiers.
D* new_value = exchange_value;
// Don't care what the CV qualifiers for compare_value are,
@@ -751,7 +765,7 @@
typename EnableIf<PrimitiveConversions::Translate<T>::value>::type>
{
T operator()(T exchange_value, T volatile* dest, T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
typedef PrimitiveConversions::Translate<T> Translator;
typedef typename Translator::Decayed Decayed;
STATIC_ASSERT(sizeof(T) == sizeof(Decayed));
@@ -779,7 +793,7 @@
inline T Atomic::CmpxchgByteUsingInt::operator()(T exchange_value,
T volatile* dest,
T compare_value,
- cmpxchg_memory_order order) const {
+ atomic_memory_order order) const {
STATIC_ASSERT(sizeof(T) == sizeof(uint8_t));
uint8_t canon_exchange_value = exchange_value;
uint8_t canon_compare_value = compare_value;
@@ -821,9 +835,9 @@
T, T,
typename EnableIf<IsIntegral<T>::value || IsRegisteredEnum<T>::value>::type>
{
- T operator()(T exchange_value, T volatile* dest) const {
+ T operator()(T exchange_value, T volatile* dest, atomic_memory_order order) const {
// Forward to the platform handler for the size of T.
- return PlatformXchg<sizeof(T)>()(exchange_value, dest);
+ return PlatformXchg<sizeof(T)>()(exchange_value, dest, order);
}
};
@@ -837,10 +851,10 @@
T*, D*,
typename EnableIf<Atomic::IsPointerConvertible<T*, D*>::value>::type>
{
- D* operator()(T* exchange_value, D* volatile* dest) const {
+ D* operator()(T* exchange_value, D* volatile* dest, atomic_memory_order order) const {
// Allow derived to base conversion, and adding cv-qualifiers.
D* new_value = exchange_value;
- return PlatformXchg<sizeof(D*)>()(new_value, dest);
+ return PlatformXchg<sizeof(D*)>()(new_value, dest, order);
}
};
@@ -856,13 +870,14 @@
T, T,
typename EnableIf<PrimitiveConversions::Translate<T>::value>::type>
{
- T operator()(T exchange_value, T volatile* dest) const {
+ T operator()(T exchange_value, T volatile* dest, atomic_memory_order order) const {
typedef PrimitiveConversions::Translate<T> Translator;
typedef typename Translator::Decayed Decayed;
STATIC_ASSERT(sizeof(T) == sizeof(Decayed));
return Translator::recover(
xchg(Translator::decay(exchange_value),
- reinterpret_cast<Decayed volatile*>(dest)));
+ reinterpret_cast<Decayed volatile*>(dest),
+ order));
}
};
@@ -877,8 +892,8 @@
}
template<typename T, typename D>
-inline D Atomic::xchg(T exchange_value, volatile D* dest) {
- return XchgImpl<T, D>()(exchange_value, dest);
+inline D Atomic::xchg(T exchange_value, volatile D* dest, atomic_memory_order order) {
+ return XchgImpl<T, D>()(exchange_value, dest, order);
}
#endif // SHARE_VM_RUNTIME_ATOMIC_HPP
--- a/src/hotspot/share/utilities/globalCounter.cpp Sun May 06 16:19:56 2018 +0200
+++ b/src/hotspot/share/utilities/globalCounter.cpp Mon May 07 16:41:38 2018 +0200
@@ -59,7 +59,8 @@
void GlobalCounter::write_synchronize() {
assert((*Thread::current()->get_rcu_counter() & COUNTER_ACTIVE) == 0x0, "must be outside a critcal section");
// Atomic::add must provide fence since we have storeload dependency.
- volatile uintx gbl_cnt = Atomic::add((uintx)COUNTER_INCREMENT, &_global_counter._counter);
+ volatile uintx gbl_cnt = Atomic::add((uintx)COUNTER_INCREMENT, &_global_counter._counter,
+ memory_order_conservative);
// Do all RCU threads.
CounterThreadCheck ctc(gbl_cnt);
for (JavaThreadIteratorWithHandle jtiwh; JavaThread *thread = jtiwh.next(); ) {
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java Sun May 06 16:19:56 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java Mon May 07 16:41:38 2018 +0200
@@ -1338,6 +1338,16 @@
}
/**
+ * Returns a locale independent upper cased String. That is, it
+ * always uses US locale, this is a clone of the one in StringUtils.
+ * @param s to convert
+ * @return converted String
+ */
+ public static String toUpperCase(String s) {
+ return s.toUpperCase(Locale.US);
+ }
+
+ /**
* Returns a locale independent lower cased String. That is, it
* always uses US locale, this is a clone of the one in StringUtils.
* @param s to convert
@@ -2869,7 +2879,7 @@
case "throws":
case "exception":
case "version":
- kind = DocTree.Kind.valueOf(tagName.toUpperCase());
+ kind = DocTree.Kind.valueOf(toUpperCase(tagName));
return getBlockTags(element, kind);
case "serialData":
kind = SERIAL_DATA;
--- a/test/jdk/java/rmi/Naming/LookupIPv6.java Sun May 06 16:19:56 2018 +0200
+++ b/test/jdk/java/rmi/Naming/LookupIPv6.java Mon May 07 16:41:38 2018 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,16 +30,16 @@
* java.rmi/sun.rmi.server
* java.rmi/sun.rmi.transport
* java.rmi/sun.rmi.transport.tcp
- * @build TestLibrary
+ * @build RegistryVM
* @run main/othervm -Djava.net.preferIPv6Addresses=true LookupIPv6
*/
+import java.io.Serializable;
import java.net.InetAddress;
import java.net.Inet6Address;
import java.net.MalformedURLException;
import java.rmi.Naming;
-import java.rmi.registry.LocateRegistry;
-import java.rmi.registry.Registry;
+import java.rmi.Remote;
public class LookupIPv6 {
public static void main(String[] args) throws Exception {
@@ -67,19 +67,21 @@
* an Inet6Address since this test is run with
* -Djava.net.preferIPv6Addresses=true.
*/
- int port = TestLibrary.getUnusedRandomPort();
InetAddress localAddr = InetAddress.getAllByName(null)[0];
if (localAddr instanceof Inet6Address) {
System.out.println("IPv6 detected");
- Registry reg;
+ RegistryVM rvm = RegistryVM.createRegistryVM();
try {
- reg = LocateRegistry.createRegistry(port);
- } catch (Exception ex) {
- reg = LocateRegistry.getRegistry();
+ rvm.start();
+ String name = String.format("rmi://[%s]:%d/foo",
+ localAddr.getHostAddress(), rvm.getPort());
+ Naming.rebind(name, new R());
+ Naming.lookup(name);
+ } finally {
+ rvm.cleanup();
}
- reg.rebind("foo", reg);
- Naming.lookup(String.format("rmi://[%s]:%d/foo",
- localAddr.getHostAddress(), port));
}
}
+
+ private static class R implements Remote, Serializable { }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/options/release/ReleaseOptionCurrent.java Mon May 07 16:41:38 2018 +0200
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8202387
+ * @summary Verify that javac can handle --release <current>
+ * @modules jdk.compiler/com.sun.tools.javac.code
+ */
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+import com.sun.tools.javac.code.Source;
+
+public class ReleaseOptionCurrent {
+ public static void main(String... args) throws IOException {
+ new ReleaseOptionCurrent().run();
+ }
+
+ void run() throws IOException {
+ String lineSep = System.getProperty("line.separator");
+ JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+ try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> input =
+ fm.getJavaFileObjects(System.getProperty("test.src") + "/ReleaseOption.java");
+ List<String> options = Arrays.asList("--release", Source.DEFAULT.name);
+
+ boolean result = compiler.getTask(null, fm, null, options, null, input).call();
+ if (!result) {
+ throw new AssertionError("Compilation failed unexpectedly.");
+ }
+ }
+ }
+}
--- a/test/langtools/tools/javac/preview/PreviewOptionTest.java Sun May 06 16:19:56 2018 +0200
+++ b/test/langtools/tools/javac/preview/PreviewOptionTest.java Mon May 07 16:41:38 2018 +0200
@@ -54,8 +54,8 @@
.filter(s -> s.compareTo(Source.MIN) >= 0)
.collect(Collectors.toList());
- versionsToTest.stream().forEach(this::testWithSourceFlag);
- versionsToTest.stream().forEach(this::testWithReleaseFlag);
+ versionsToTest.forEach(this::testWithSourceFlag);
+ versionsToTest.forEach(this::testWithReleaseFlag);
if (errors > 0)
throw new Exception(errors + " errors occurred");
@@ -70,9 +70,7 @@
}
void testWithReleaseFlag(Source release) {
- //Todo: the condition below should say "release != Source.DEFAULT", but we can't do that
- //since --release 11 is not supported yet.
- testInternal(null, release, true);
+ testInternal(null, release, release != Source.DEFAULT);
}
void testInternal(Source source, Source release, boolean shouldFail) {