RFR [8u60]: 8081590: The CDS classlist needs to be updated for 8u60
Claes Redestad
claes.redestad at oracle.com
Fri Jun 12 10:43:49 UTC 2015
Hi,
I've been trying to find out why the previous refresh sorted classes in
package order. This seems to
run counter to the intent of the classlist as a source for the
jarreordering optimization and the only
documentation I've been able to find in the JDK sources for classlist
generation suggests concatenating
in the order of class loading is the original intent[1]. Since we see
better behavior in general with the
refreshed classlists, I'd prefer not sorting in package order, but I
still think a more thorough refresh of
the documentation and tools for JDK9 is in order (I've already filed
RFEs to cover some of this).
Anyhow, below I've attached a diff of current vs refreshed classlist for
linux after sorting the suggested
class list in package order.
In summary, most of the added classes seem to be related to j.l.invoke
and other Lambda-related
classes, including asm. This seems reasonable to me due to the uptake of
lambdas, streams etc in the
JDK since 8-b117. Also numerous changes in client-libs, anonymous
classes that have shifted around
(adding in or removing anonymous classes in source will shift things up
or down).
Ioi: output from -Xshare:dump indicate the classes.jsa generated is
about 590Kb larger on both
Windows and Linux.
0a1,6
> com/sun/beans/util/Cache
> com/sun/beans/util/Cache$CacheEntry
> com/sun/beans/util/Cache$Kind
> com/sun/beans/util/Cache$Kind$1
> com/sun/beans/util/Cache$Kind$2
> com/sun/beans/util/Cache$Kind$3
66d71
< java/awt/FontFormatException
77d81
< java/awt/GraphicsEnvironment$1
105a110
> java/awt/Polygon
145a151
> java/awt/datatransfer/SystemFlavorMap$SoftCache
203,204d208
< java/awt/geom/Line2D
< java/awt/geom/Line2D$Float
361a366
> java/lang/Byte$ByteCache
366d370
< java/lang/CharacterData00
373a378
> java/lang/Class$MethodArray
382a388
> java/lang/ClassValue
383a390,392
> java/lang/ClassValue$Entry
> java/lang/ClassValue$Identity
> java/lang/ClassValue$Version
413a423
> java/lang/NoSuchFieldError
440a451
> java/lang/Short$ShortCache
445d455
< java/lang/StrictMath
472,474d481
< java/lang/UNIXProcess$2
< java/lang/UNIXProcess$3
< java/lang/UNIXProcess$4
475a483
> java/lang/UNIXProcess$Platform
478,479d485
< java/lang/UNIXProcess$ProcessReaperThreadFactory
< java/lang/UNIXProcess$ProcessReaperThreadFactory$1
484a491,498
> java/lang/invoke/AbstractValidatingLambdaMetafactory
> java/lang/invoke/BoundMethodHandle
> java/lang/invoke/BoundMethodHandle$Factory
> java/lang/invoke/BoundMethodHandle$SpeciesData
> java/lang/invoke/BoundMethodHandle$Species_L
> java/lang/invoke/BoundMethodHandle$Species_L3
> java/lang/invoke/BoundMethodHandle$Species_L4
> java/lang/invoke/BoundMethodHandle$Species_LL
486a501
> java/lang/invoke/DelegatingMethodHandle
487a503,512
> java/lang/invoke/DirectMethodHandle$Accessor
> java/lang/invoke/DirectMethodHandle$Lazy
> java/lang/invoke/DirectMethodHandle$Special
> java/lang/invoke/InfoFromMemberName
> java/lang/invoke/InnerClassLambdaMetafactory
> java/lang/invoke/InnerClassLambdaMetafactory$1
> java/lang/invoke/InnerClassLambdaMetafactory$ForwardingMethodGenerator
> java/lang/invoke/InvokerBytecodeGenerator
> java/lang/invoke/InvokerBytecodeGenerator$2
> java/lang/invoke/InvokerBytecodeGenerator$CpPatch
489a515,516
> java/lang/invoke/LambdaForm$BasicType
> java/lang/invoke/LambdaForm$Name
490a518,522
> java/lang/invoke/LambdaFormBuffer
> java/lang/invoke/LambdaFormEditor
> java/lang/invoke/LambdaFormEditor$Transform
> java/lang/invoke/LambdaFormEditor$Transform$Kind
> java/lang/invoke/LambdaMetafactory
494a527,535
> java/lang/invoke/MethodHandleImpl$1
> java/lang/invoke/MethodHandleImpl$2
> java/lang/invoke/MethodHandleImpl$3
> java/lang/invoke/MethodHandleImpl$4
> java/lang/invoke/MethodHandleImpl$AsVarargsCollector
> java/lang/invoke/MethodHandleImpl$Intrinsic
> java/lang/invoke/MethodHandleImpl$IntrinsicMethodHandle
> java/lang/invoke/MethodHandleImpl$Lazy
> java/lang/invoke/MethodHandleInfo
497a539,540
> java/lang/invoke/MethodHandles
> java/lang/invoke/MethodHandles$Lookup
502a546,547
> java/lang/invoke/SimpleMethodHandle
> java/lang/invoke/TypeConvertingMethodAdapter
503a549
> java/lang/invoke/WrongMethodTypeException
576a623
> java/net/NetPermission
591a639
> java/net/SocketOption
592a641
> java/net/SocketPermission
658a708
> java/security/AccessController$1
685,686c735,736
< java/security/ProtectionDomain$1
< java/security/ProtectionDomain$3
---
> java/security/ProtectionDomain$2
> java/security/ProtectionDomain$JavaSecurityAccessImpl
697a748
> java/security/SecurityPermission
791a843
> java/util/EnumSet
845a898
> java/util/PropertyPermission
849a903,904
> java/util/RandomAccessSubList
> java/util/RegularEnumSet
866a922,926
> java/util/Spliterator
> java/util/Spliterator$OfDouble
> java/util/Spliterator$OfInt
> java/util/Spliterator$OfLong
> java/util/Spliterator$OfPrimitive
868a929,930
> java/util/SubList
> java/util/SubList$1
877d938
< java/util/Vector$ListItr
938a1000,1008
> java/util/function/BinaryOperator
> java/util/function/DoubleBinaryOperator
> java/util/function/Function
> java/util/function/IntBinaryOperator
> java/util/function/IntFunction
> java/util/function/IntToDoubleFunction
> java/util/function/IntToLongFunction
> java/util/function/IntUnaryOperator
> java/util/function/LongBinaryOperator
966a1037
> java/util/logging/Logger$LoggerBundle
974a1046,1050
> java/util/stream/BaseStream
> java/util/stream/DoubleStream
> java/util/stream/IntStream
> java/util/stream/LongStream
> java/util/stream/Stream
996a1073
> javax/accessibility/AccessibleContext$1
1068d1144
< javax/swing/JComponent$2
1143c1219
< javax/swing/RepaintManager$2
---
> javax/swing/RepaintManager$1
1144a1221
> javax/swing/RepaintManager$4
1155a1233
> javax/swing/SortingFocusTraversalPolicy$1
1324a1403,1405
> javax/swing/plaf/basic/BasicRadioButtonUI$KeyHandler
> javax/swing/plaf/basic/BasicRadioButtonUI$SelectNextBtn
> javax/swing/plaf/basic/BasicRadioButtonUI$SelectPreviousBtn
1431,1432d1511
< javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
< javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
1487d1565
< javax/swing/text/AbstractDocument$InsertStringResult
1548a1627
> javax/swing/text/JTextComponent$4
1614a1694,1706
> jdk/internal/org/objectweb/asm/AnnotationVisitor
> jdk/internal/org/objectweb/asm/AnnotationWriter
> jdk/internal/org/objectweb/asm/ByteVector
> jdk/internal/org/objectweb/asm/ClassVisitor
> jdk/internal/org/objectweb/asm/ClassWriter
> jdk/internal/org/objectweb/asm/FieldVisitor
> jdk/internal/org/objectweb/asm/FieldWriter
> jdk/internal/org/objectweb/asm/Frame
> jdk/internal/org/objectweb/asm/Item
> jdk/internal/org/objectweb/asm/Label
> jdk/internal/org/objectweb/asm/MethodVisitor
> jdk/internal/org/objectweb/asm/MethodWriter
> jdk/internal/org/objectweb/asm/Type
1655a1748
> sun/awt/AWTAccessor$AccessibleContextAccessor
1667a1761
> sun/awt/AWTAccessor$SystemColorAccessor
1699d1792
< sun/awt/LightweightFrame
1724a1818,1828
> sun/awt/X11ComponentPeer
> sun/awt/X11FontManager
> sun/awt/X11GraphicsConfig
> sun/awt/X11GraphicsConfig$X11GCDisposerRecord
> sun/awt/X11GraphicsDevice
> sun/awt/X11GraphicsEnvironment
> sun/awt/X11GraphicsEnvironment$1
> sun/awt/X11InputMethod
> sun/awt/X11InputMethodDescriptor
> sun/awt/XSettings
> sun/awt/XSettings$Update
1770d1873
< sun/awt/X11/XErrorEvent
1775,1776d1877
< sun/awt/X11/XErrorHandler$XErrorHandlerWithFlag
< sun/awt/X11/XErrorHandler$XShmAttachHandler
1813d1913
< sun/awt/X11/XToolkit$2$1
1816c1916
< sun/awt/X11/XToolkit$5
---
> sun/awt/X11/XTranslateCoordinates
1833,1843d1932
< sun/awt/X11ComponentPeer
< sun/awt/X11FontManager
< sun/awt/X11GraphicsConfig
< sun/awt/X11GraphicsConfig$X11GCDisposerRecord
< sun/awt/X11GraphicsDevice
< sun/awt/X11GraphicsEnvironment
< sun/awt/X11GraphicsEnvironment$1
< sun/awt/X11InputMethod
< sun/awt/X11InputMethodDescriptor
< sun/awt/XSettings
< sun/awt/XSettings$Update
1849d1937
< sun/awt/geom/PathConsumer2D
1879a1968,1969
> sun/awt/image/MultiResolutionImage
> sun/awt/image/MultiResolutionToolkitImage
1904a1995
> sun/awt/image/SurfaceManager$FlushableCacheData
1914,1918d2004
< sun/dc/path/PathConsumer
< sun/dc/pr/PathDasher
< sun/dc/pr/PathDasher$1
< sun/dc/pr/PathStroker
< sun/dc/pr/PathStroker$1
1969c2055
< sun/font/SunFontManager$11
---
> sun/font/SunFontManager$10
1984a2071,2077
> sun/invoke/empty/Empty
> sun/invoke/util/BytecodeDescriptor
> sun/invoke/util/ValueConversions
> sun/invoke/util/VerifyAccess
> sun/invoke/util/VerifyType
> sun/invoke/util/Wrapper
> sun/invoke/util/Wrapper$Format
1990d2082
< sun/java2d/Disposer$2
1999a2092
> sun/java2d/StateTrackableDelegate$1
2000a2094,2096
> sun/java2d/StateTracker
> sun/java2d/StateTracker$1
> sun/java2d/StateTracker$2
2007a2104,2105
> sun/java2d/SurfaceDataProxy
> sun/java2d/SurfaceDataProxy$1
2075d2172
< sun/java2d/pipe/ShapeSpanIterator
2078d2174
< sun/java2d/pipe/SpanIterator
2085a2182,2184
> sun/java2d/x11/X11PMBlitBgLoops
> sun/java2d/x11/X11PMBlitLoops
> sun/java2d/x11/X11PMBlitLoops$DelegateBlitLoop
2088a2188
> sun/java2d/x11/X11SurfaceData$X11PixmapSurfaceData
2089a2190,2192
> sun/java2d/x11/X11SurfaceDataProxy
> sun/java2d/x11/X11SurfaceDataProxy$Bitmask
> sun/java2d/x11/X11SurfaceDataProxy$Opaque
2143a2247
> sun/misc/ThreadGroupUtils
2286d2389
< sun/security/action/GetIntegerAction
2319a2423
> sun/security/util/ByteArrayTagOrder
2328a2433
> sun/security/util/SecurityConstants
2334d2438
< sun/swing/JLightweightFrame
2336,2337d2439
< sun/swing/MenuItemLayoutHelper$ColumnAlignment
< sun/swing/MenuItemLayoutHelper$LayoutResult
2342a2445
> sun/swing/SwingAccessor$RepaintManagerAccessor
2376a2480,2484
> sun/usagetracker/UsageTrackerClient
> sun/usagetracker/UsageTrackerClient$1
> sun/usagetracker/UsageTrackerClient$3
> sun/usagetracker/UsageTrackerClient$4
> sun/usagetracker/UsageTrackerClient$UsageTrackerRunnable
2454d2561
< # e4fe875988768cf5
/Claes
[1]
http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/c1947d42537b/make/non-build-utils/sharing/README.txt
http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/c1947d42537b/make/non-build-utils/src/build/tools/makeclasslist/MakeClasslist.java
On 2015-06-12 03:58, David Holmes wrote:
> Hi Claes,
>
> On 12/06/2015 12:08 AM, Claes Redestad wrote:
>> Hi,
>>
>> classlists have been slowly deteriorating since the last refresh
>> (https://bugs.openjdk.java.net/browse/JDK-8023041),
>> contributing to a small but significant degradation in startup and
>> footprint characteristics.
>>
>> While there are also classlist files for Solaris, Mac and AIX, we cannot
>> run the same set of applications we run on
>> 32-bit platforms on non-32-bit platforms (due to an application with a
>> bundled 32-bit dependency).
>>
>> Rather than generating new classlists using a different set of
>> applications without ability to verify that it helps, I'd
>> rather limit this 8u60 refresh to Linux and Windows where we can verify
>> the benefit and do a more thorough
>> investigation into modernizing the representative set of applications
>> for JDK9 and onwards.
>>
>> Webrev: http://cr.openjdk.java.net/~redestad/8081590/webrev.00/
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8081590
>
> As you have sorted the lists differently it's not evident what has
> been added or removed. Please clarify what the changes actually are.
>
>> I'll need a sponsor to push this to 8u60.
>
> I can sponsor it once completed. Make sure all the CDS tests still
> pass. (There may be something that looks for a specific class.)
>
> Thanks,
> David
>
>>
>> /Claes
More information about the hotspot-runtime-dev
mailing list