From james.laskey at oracle.com Mon Jun 3 12:39:00 2019 From: james.laskey at oracle.com (james.laskey at oracle.com) Date: Mon, 03 Jun 2019 12:39:00 +0000 Subject: hg: amber/amber: Update to date Message-ID: <201906031239.x53Cd1Gi000089@aojmv0008.oracle.com> Changeset: 61353bf4e96d Author: jlaskey Date: 2019-06-03 09:19 -0300 URL: http://hg.openjdk.java.net/amber/amber/rev/61353bf4e96d Update to date ! src/java.base/share/classes/java/lang/String.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties + test/jdk/java/lang/String/Formatted.java ! test/jdk/java/lang/String/StripIndent.java ! test/jdk/java/lang/String/TranslateEscapes.java + test/langtools/tools/javac/diags/examples/TextBlockCloseDelimiter.java + test/langtools/tools/javac/diags/examples/TextBlockOpenDelimiter.java + test/langtools/tools/javac/diags/examples/TextBlockWhitespace.java ! test/langtools/tools/javap/WhitespaceTest.java From vicente.romero at oracle.com Mon Jun 3 16:03:30 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 03 Jun 2019 16:03:30 +0000 Subject: hg: amber/amber: this branch is not active anymore Message-ID: <201906031603.x53G3VFj003529@aojmv0008.oracle.com> Changeset: 8bf40c8fade0 Author: vromero Date: 2019-06-03 12:02 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/8bf40c8fade0 this branch is not active anymore From jan.lahoda at oracle.com Wed Jun 5 13:54:05 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Wed, 05 Jun 2019 13:54:05 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201906051354.x55Ds669011007@aojmv0008.oracle.com> Changeset: 62a5cf2eb7bb Author: jlahoda Date: 2019-06-05 14:22 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/62a5cf2eb7bb Merging patterns-stage-1 branch into the patterns branch. - make/data/cldr/common/main/ff_CM.xml - make/data/cldr/common/main/ff_GN.xml - make/data/cldr/common/main/ff_MR.xml - make/data/cldr/common/main/ff_SN.xml - make/data/cldr/common/main/yue_HK.xml - make/data/cldr/common/supplemental/telephoneCodeData.xml - src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetC1_aarch64.cpp - src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetC1_x86.cpp - src/hotspot/os_cpu/linux_x86/gc/z/zAddress_linux_x86.inline.hpp - src/hotspot/share/Xusage.txt - src/hotspot/share/c1/c1_globals.cpp - src/hotspot/share/gc/cms/cmsCollectorPolicy.cpp - src/hotspot/share/gc/cms/cmsCollectorPolicy.hpp - src/hotspot/share/gc/epsilon/epsilonCollectorPolicy.hpp - src/hotspot/share/gc/g1/g1CollectorPolicy.cpp - src/hotspot/share/gc/g1/g1CollectorPolicy.hpp - src/hotspot/share/gc/g1/g1HeterogeneousCollectorPolicy.cpp - src/hotspot/share/gc/g1/g1HeterogeneousCollectorPolicy.hpp - src/hotspot/share/gc/g1/g1InCSetState.hpp - src/hotspot/share/gc/parallel/generationSizer.cpp - src/hotspot/share/gc/parallel/generationSizer.hpp - src/hotspot/share/gc/parallel/heterogeneousGenerationSizer.cpp - src/hotspot/share/gc/parallel/heterogeneousGenerationSizer.hpp - src/hotspot/share/gc/shared/collectorPolicy.cpp - src/hotspot/share/gc/shared/collectorPolicy.hpp - src/hotspot/share/gc/shared/gcArguments.inline.hpp - src/hotspot/share/gc/shenandoah/shenandoahBrooksPointer.hpp - src/hotspot/share/gc/shenandoah/shenandoahBrooksPointer.inline.hpp - src/hotspot/share/gc/shenandoah/shenandoahHeapLock.hpp - src/hotspot/share/gc/z/zCollectorPolicy.cpp - src/hotspot/share/gc/z/zCollectorPolicy.hpp - src/hotspot/share/gc/z/zPreMappedMemory.cpp - src/hotspot/share/gc/z/zPreMappedMemory.hpp - src/hotspot/share/gc/z/zPreMappedMemory.inline.hpp - src/hotspot/share/jvmci/systemDictionary_jvmci.hpp - src/hotspot/share/opto/c2_globals.cpp - src/java.base/share/classes/sun/text/resources/nfc.icu - src/java.base/share/classes/sun/text/resources/nfkc.icu - src/java.base/share/classes/sun/text/resources/nfkc_cf.icu - src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpic.h - src/java.desktop/share/native/libfreetype/src/autofit/afpic.c - src/java.desktop/share/native/libfreetype/src/autofit/afpic.h - src/java.desktop/share/native/libfreetype/src/base/basepic.c - src/java.desktop/share/native/libfreetype/src/base/basepic.h - src/java.desktop/share/native/libfreetype/src/base/ftapi.c - src/java.desktop/share/native/libfreetype/src/base/ftpic.c - src/java.desktop/share/native/libfreetype/src/base/md5.c - src/java.desktop/share/native/libfreetype/src/base/md5.h - src/java.desktop/share/native/libfreetype/src/cff/cffpic.c - src/java.desktop/share/native/libfreetype/src/cff/cffpic.h - src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.c - src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.h - src/java.desktop/share/native/libfreetype/src/psnames/pspic.c - src/java.desktop/share/native/libfreetype/src/psnames/pspic.h - src/java.desktop/share/native/libfreetype/src/raster/rastpic.c - src/java.desktop/share/native/libfreetype/src/raster/rastpic.h - src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.c - src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.h - src/java.desktop/share/native/libfreetype/src/smooth/ftspic.c - src/java.desktop/share/native/libfreetype/src/smooth/ftspic.h - src/java.desktop/share/native/libfreetype/src/truetype/ttpic.c - src/java.desktop/share/native/libfreetype/src/truetype/ttpic.h ! src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPhysicalMemoryManager.java - src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIMetaAccessContext.java - src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/MetaspaceWrapperObject.java - src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.services/.checkstyle_checks.xml - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64IntegerSubstitutions.java - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.aarch64/src/org/graalvm/compiler/replacements/aarch64/AArch64LongSubstitutions.java - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/arraycopy/ArrayCopyWithSlowPathNode.java - src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/script-dir/jquery-3.3.1.js - src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/script-dir/jquery-migrate-3.0.1.js - src/jdk.javadoc/share/legal/jquery-migrate.md - test/fmw/gtest/CHANGES - test/fmw/gtest/LICENSE - test/fmw/gtest/README - test/fmw/gtest/include/gtest/gtest-death-test.h - test/fmw/gtest/include/gtest/gtest-message.h - test/fmw/gtest/include/gtest/gtest-param-test.h - test/fmw/gtest/include/gtest/gtest-param-test.h.pump - test/fmw/gtest/include/gtest/gtest-printers.h - test/fmw/gtest/include/gtest/gtest-spi.h - test/fmw/gtest/include/gtest/gtest-test-part.h - test/fmw/gtest/include/gtest/gtest-typed-test.h - test/fmw/gtest/include/gtest/gtest.h - test/fmw/gtest/include/gtest/gtest_pred_impl.h - test/fmw/gtest/include/gtest/gtest_prod.h - test/fmw/gtest/include/gtest/internal/gtest-death-test-internal.h - test/fmw/gtest/include/gtest/internal/gtest-filepath.h - test/fmw/gtest/include/gtest/internal/gtest-internal.h - test/fmw/gtest/include/gtest/internal/gtest-linked_ptr.h - test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h - test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h.pump - test/fmw/gtest/include/gtest/internal/gtest-param-util.h - test/fmw/gtest/include/gtest/internal/gtest-port.h - test/fmw/gtest/include/gtest/internal/gtest-string.h - test/fmw/gtest/include/gtest/internal/gtest-tuple.h - test/fmw/gtest/include/gtest/internal/gtest-tuple.h.pump - test/fmw/gtest/include/gtest/internal/gtest-type-util.h - test/fmw/gtest/include/gtest/internal/gtest-type-util.h.pump - test/fmw/gtest/src/gtest-all.cc - test/fmw/gtest/src/gtest-death-test.cc - test/fmw/gtest/src/gtest-filepath.cc - test/fmw/gtest/src/gtest-internal-inl.h - test/fmw/gtest/src/gtest-port.cc - test/fmw/gtest/src/gtest-printers.cc - test/fmw/gtest/src/gtest-test-part.cc - test/fmw/gtest/src/gtest-typed-test.cc - test/fmw/gtest/src/gtest.cc - test/fmw/gtest/src/gtest_main.cc - test/jdk/com/sun/jdi/BasicJDWPConnectionTest.java - test/jdk/java/lang/Character/PropList.txt - test/jdk/java/lang/Character/PropertyValueAliases.txt - test/jdk/java/lang/Character/Scripts.txt - test/jdk/java/lang/Character/SpecialCasing.txt - test/jdk/java/lang/Character/UnicodeBlock/Blocks.txt - test/jdk/java/lang/Character/UnicodeData.txt - test/jdk/java/lang/Character/charprop00.bin - test/jdk/java/lang/Character/charprop01.bin - test/jdk/java/lang/Character/charprop02.bin - test/jdk/java/lang/Character/charprop03.bin - test/jdk/java/lang/Character/charprop0E.bin - test/jdk/java/lang/Character/charprop0F.bin - test/jdk/java/lang/Character/charprop10.bin - test/jdk/java/lang/String/concat/StringConcatFactoryEmptyMethods.java - test/jdk/java/net/Socket/OldImpl.java - test/jdk/java/net/Socket/OldSocketImpl.java - test/jdk/java/net/Socket/OldSocketImplTestDriver.java - test/jdk/java/nio/channels/SocketChannel/Stream.java - test/jdk/java/util/regex/GraphemeBreakProperty.txt - test/jdk/java/util/regex/GraphemeBreakTest.txt - test/jdk/jdk/nio/zipfs/MultiReleaseJarTest.java - test/jdk/jdk/nio/zipfs/jarfs/root/dir1/leaf1.txt - test/jdk/jdk/nio/zipfs/jarfs/root/dir1/leaf2.txt - test/jdk/jdk/nio/zipfs/jarfs/root/dir2/leaf3.txt - test/jdk/jdk/nio/zipfs/jarfs/root/dir2/leaf4.txt - test/jdk/jdk/nio/zipfs/jarfs/v9/root/dir1/leaf1.txt - test/jdk/jdk/nio/zipfs/jarfs/v9/root/dir1/leaf2.txt - test/jdk/jdk/nio/zipfs/jarfs/v9/root/dir2/leaf3.txt - test/jdk/jdk/nio/zipfs/jarfs/v9/root/dir2/leaf4.txt - test/jdk/sun/management/windows/revokeall.c - test/jdk/sun/management/windows/revokeall.exe - test/jdk/sun/security/pkcs11/tls/tls12/TestTLS12.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitch-old.out ! test/langtools/tools/javac/switchexpr/ExpressionSwitch.java Changeset: abcd2d612814 Author: jlahoda Date: 2019-06-05 15:25 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/abcd2d612814 Merging patters-stage-1 branch into amber-demo-II ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From james.laskey at oracle.com Wed Jun 5 16:13:08 2019 From: james.laskey at oracle.com (james.laskey at oracle.com) Date: Wed, 05 Jun 2019 16:13:08 +0000 Subject: hg: amber/amber: Bring up to date Message-ID: <201906051613.x55GD9ul012134@aojmv0008.oracle.com> Changeset: f90b1c5baa1d Author: jlaskey Date: 2019-06-05 13:10 -0300 URL: http://hg.openjdk.java.net/amber/amber/rev/f90b1c5baa1d Bring up to date ! src/java.base/share/classes/java/lang/String.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/jdk/java/lang/String/Formatted.java ! test/jdk/java/lang/String/StripIndent.java ! test/jdk/java/lang/String/TranslateEscapes.java ! test/langtools/tools/javac/TextBlockAPI.java ! test/langtools/tools/javac/TextBlockLang.java ! test/langtools/tools/javac/diags/examples/TextBlockWhitespace.java From vicente.romero at oracle.com Thu Jun 6 15:43:04 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 06 Jun 2019 15:43:04 +0000 Subject: hg: amber/amber: this branch was moved to a public repo Message-ID: <201906061543.x56Fh59I028514@aojmv0008.oracle.com> Changeset: e1821e1074eb Author: vromero Date: 2019-06-06 11:42 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/e1821e1074eb this branch was moved to a public repo From maurizio.cimadamore at oracle.com Thu Jun 6 20:04:02 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 06 Jun 2019 20:04:02 +0000 Subject: hg: amber/amber: 156 new changesets Message-ID: <201906062004.x56K4CWq021262@aojmv0008.oracle.com> Changeset: a41029c383bf Author: jjg Date: 2019-05-30 11:00 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/a41029c383bf 8225066: Add missing file Reviewed-by: mchung + make/jdk/src/classes/build/tools/fixuppandoc/Main.java Changeset: 6515a96809a1 Author: fyang Date: 2019-05-30 10:29 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/6515a96809a1 8224828: aarch64: rflags is not correct after safepoint poll Reviewed-by: aph, adinn Contributed-by: Xiang Yuan ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp Changeset: a0d4e61acb6b Author: skuksenko Date: 2019-05-30 12:45 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/a0d4e61acb6b 8223504: Improve performance of forall loops by better inlining of "iterator()" methods Reviewed-by: vlivanov, shade ! src/hotspot/share/classfile/systemDictionary.hpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/opto/bytecodeInfo.cpp Changeset: 5212c250f9a8 Author: jjg Date: 2019-05-30 13:45 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/5212c250f9a8 8225077: fix references to broken link in java.compiler module Reviewed-by: darcy, lancea ! src/java.compiler/share/classes/javax/annotation/processing/Filer.java Changeset: b6418e5aad70 Author: sspitsyn Date: 2019-05-30 15:55 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/b6418e5aad70 8223718: Checks in check_slot_type_no_lvt() should be always executed Summary: Call check_slot_type_no_lvt() even if the LVT is present Reviewed-by: kvn, gadams, amenkov ! src/hotspot/share/prims/jvmtiImpl.cpp ! test/hotspot/jtreg/vmTestbase/nsk/jvmti/unit/GetLocalVariable/getlocal003/getlocal003.cpp Changeset: 9ea55cb79d77 Author: darcy Date: 2019-05-30 16:21 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/9ea55cb79d77 8224687: Add clarifying overrides of Element.asType to more specific subinterfaces Reviewed-by: jjg ! src/java.compiler/share/classes/javax/lang/model/element/Element.java ! src/java.compiler/share/classes/javax/lang/model/element/ExecutableElement.java ! src/java.compiler/share/classes/javax/lang/model/element/ModuleElement.java ! src/java.compiler/share/classes/javax/lang/model/element/PackageElement.java ! src/java.compiler/share/classes/javax/lang/model/element/TypeElement.java ! src/java.compiler/share/classes/javax/lang/model/element/TypeParameterElement.java ! src/java.compiler/share/classes/javax/lang/model/element/VariableElement.java + test/langtools/tools/javac/processing/model/element/TestElementAsType.java Changeset: 04ff1e00635a Author: zgu Date: 2019-05-29 11:55 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/04ff1e00635a 8224978: Shenandoah: Allows root verifier to verify some roots outside safepoints with proper locks Reviewed-by: shade ! src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp ! src/hotspot/share/gc/shenandoah/shenandoahAsserts.hpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootVerifier.cpp ! src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp Changeset: b0513c833960 Author: jjg Date: 2019-05-30 17:28 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/b0513c833960 8220251: fix headings in java.management Reviewed-by: lancea ! src/java.management.rmi/share/classes/javax/management/remote/rmi/package.html ! src/java.management/share/classes/java/lang/management/LockInfo.java ! src/java.management/share/classes/java/lang/management/ManagementFactory.java ! src/java.management/share/classes/java/lang/management/MemoryMXBean.java ! src/java.management/share/classes/java/lang/management/MemoryPoolMXBean.java ! src/java.management/share/classes/java/lang/management/MemoryUsage.java ! src/java.management/share/classes/java/lang/management/MonitorInfo.java ! src/java.management/share/classes/java/lang/management/ThreadInfo.java ! src/java.management/share/classes/java/lang/management/ThreadMXBean.java ! src/java.management/share/classes/java/lang/management/package.html ! src/java.management/share/classes/javax/management/MXBean.java ! src/java.management/share/classes/javax/management/NotificationBroadcaster.java ! src/java.management/share/classes/javax/management/NotificationEmitter.java ! src/java.management/share/classes/javax/management/remote/package.html ! src/jdk.management.jfr/share/classes/jdk/management/jfr/FlightRecorderMXBean.java ! src/jdk.management/share/classes/com/sun/management/GcInfo.java Changeset: f19a728d576d Author: zgu Date: 2019-05-30 21:12 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/f19a728d576d 8225014: Separate ShenandoahRootScanner method for object_iterate Reviewed-by: shade ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp + test/hotspot/jtreg/gc/shenandoah/TestObjItrWithHeapDump.java Changeset: d4475420fb9a Author: sundar Date: 2019-05-31 08:27 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/d4475420fb9a 8216535: tools/jimage/JImageExtractTest.java timed out Reviewed-by: jlaskey ! test/jdk/tools/jimage/JImageExtractTest.java Changeset: 7b70f269fe0d Author: neliasso Date: 2019-05-31 10:13 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/7b70f269fe0d 8224538: LoadBarrierNode::common_barrier must check address Reviewed-by: thartmann, kvn ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Changeset: f91999057a5a Author: redestad Date: 2019-05-31 12:20 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/f91999057a5a 8224986: (str) optimize StringBuilder.append(CharSequence, int, int) for String arguments Reviewed-by: jlaskey, rriggs ! src/java.base/share/classes/java/lang/AbstractStringBuilder.java ! src/java.base/share/classes/java/lang/String.java ! test/micro/org/openjdk/bench/java/lang/StringBuilders.java Changeset: 89ac8ad48ac6 Author: phedlin Date: 2019-05-16 17:09 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/89ac8ad48ac6 8225110: IGV build definition uses non-secure transport Reviewed-by: neliasso ! src/utils/IdealGraphVisualizer/nbproject/platform.properties Changeset: d2bc284803bc Author: chegar Date: 2019-05-31 15:02 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/d2bc284803bc 8224973: URLStreamHandler.openConnection(URL,Proxy) - spec and implementation mismatch Reviewed-by: alanb, dfuchs ! src/java.base/share/classes/java/net/URLStreamHandler.java + test/jdk/java/net/URLStreamHandler/TestDefaultBehavior.java Changeset: f0ef081cb15d Author: azeller Date: 2019-05-28 20:12 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/f0ef081cb15d 8194231: java/net/DatagramSocket/ReuseAddressTest.java failed with java.net.BindException: Address already in use: Cannot bind Summary: Changed test to no longer use hardcoded ports. Reviewed-by: chegar, clanger ! test/jdk/java/net/DatagramSocket/ReuseAddressTest.java Changeset: 35192d9c2b76 Author: pchilanomate Date: 2019-05-31 11:17 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/35192d9c2b76 8225016: Dead code due to VMOperationQueue::add() always returning true Summary: Removed dead code in vmThread.cpp Reviewed-by: coleenp, hseigel, dholmes ! src/hotspot/share/runtime/vmThread.cpp ! src/hotspot/share/runtime/vmThread.hpp Changeset: baad58d0cbfe Author: jjg Date: 2019-05-31 09:26 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/baad58d0cbfe 8225094: Fix minor HTML issues in jdk.zipfs Reviewed-by: clanger, mchung, lancea ! src/jdk.zipfs/share/classes/module-info.java Changeset: e6e4de80e058 Author: hseigel Date: 2019-05-31 13:09 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/e6e4de80e058 8222936: mlvm/anonloader/stress/randomBytecodes/Test.java fails due to "ERROR: There were 1 hangups during parsing." Summary: Prevent false failures by blocking the test until either it times out or the loading thread finishes Reviewed-by: dholmes, coleenp ! test/hotspot/jtreg/vmTestbase/vm/mlvm/anonloader/share/StressClassLoadingTest.java Changeset: 9889f5e3ba00 Author: jjg Date: 2019-05-31 10:59 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/9889f5e3ba00 8225129: Fix minor HTML issues in java.naming Reviewed-by: mchung, lancea ! src/java.naming/share/classes/javax/naming/directory/package.html ! src/java.naming/share/classes/javax/naming/event/package.html ! src/java.naming/share/classes/javax/naming/ldap/InitialLdapContext.java ! src/java.naming/share/classes/javax/naming/ldap/package.html ! src/java.naming/share/classes/javax/naming/package.html ! src/java.naming/share/classes/javax/naming/spi/package.html Changeset: 4c1b0b71c629 Author: bpb Date: 2019-05-31 11:13 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/4c1b0b71c629 8225117: java/math/BigInteger/SymmetricRangeTests.java fails with ParseException Reviewed-by: darcy ! test/jdk/java/math/BigInteger/StringConstructorOverflow.java ! test/jdk/java/math/BigInteger/SymmetricRangeTests.java Changeset: 3f2f89737be5 Author: kbarrett Date: 2019-05-31 14:42 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/3f2f89737be5 8219149: ProcessTools.ProcessBuilder should print timing info for subprocesses Summary: Add some timestamped logging messages to OutputBuffer. Reviewed-by: rriggs, dcubed, lmesnik, dholmes ! test/lib/jdk/test/lib/process/OutputBuffer.java Changeset: 72474808e305 Author: iklam Date: 2019-05-31 12:51 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/72474808e305 8224692: runtime/appcds tests crash in "HotSpotJVMCI::compute_offset" when running in Graal as JIT mode Reviewed-by: ccheung ! src/hotspot/share/classfile/symbolTable.cpp ! src/hotspot/share/memory/dynamicArchive.cpp ! test/hotspot/jtreg/runtime/appcds/dynamicArchive/NoClassToArchive.java Changeset: 8b1f7d88746a Author: erikj Date: 2019-05-31 13:37 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/8b1f7d88746a 8219788: Configure recommends JDK 8 Reviewed-by: tbell ! make/autoconf/help.m4 Changeset: a3596ce8de19 Author: naoto Date: 2019-05-31 13:49 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/a3596ce8de19 8223773: DateTimeFormatter Fails to throw an Exception on Invalid CLOCK_HOUR_OF_AMPM and HOUR_OF_AMPM Reviewed-by: lancea, scolebourne, rriggs ! src/java.base/share/classes/java/time/format/Parsed.java ! test/jdk/java/time/test/java/time/format/TestDateTimeParsing.java Changeset: c40c3e5d7c7a Author: cushon Date: 2019-05-22 15:30 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/c40c3e5d7c7a 8224629: Unnecessary cast in LambdaToMethod Reviewed-by: vromero Contributed-by: Alan Malloy ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Changeset: b564f266dda0 Author: vromero Date: 2019-05-31 18:35 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/b564f266dda0 8224083: javadoc Reporter generates warning for Kind.NOTE 8224082: NPE in javadoc Reporter Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Messager.java + test/langtools/jdk/javadoc/tool/reporter_generates_warnings/ReporterGeneratesWarningsInsteadOfNotes.java + test/langtools/jdk/javadoc/tool/reporter_generates_warnings/pkg/MyDoclet.java Changeset: 3ea18959a349 Author: ccheung Date: 2019-05-31 15:49 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/3ea18959a349 8223336: Assert in VirtualMemoryTracker::remove_released_region when running the SharedArchiveConsistency.java test with -XX:NativeMemoryTracking=detail Summary: added the missing call MemTracker::record_virtual_memory_reserve_and_commit() Reviewed-by: jiangli, zgu ! src/hotspot/os/windows/os_windows.cpp ! test/hotspot/jtreg/ProblemList.txt Changeset: d4890c3721be Author: jjg Date: 2019-05-31 17:27 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/d4890c3721be 8225134: Update man-page files Reviewed-by: erikj, mchung ! src/java.base/share/man/java.1 ! src/java.base/share/man/keytool.1 ! src/java.rmi/share/man/rmid.1 ! src/java.rmi/share/man/rmiregistry.1 ! src/java.scripting/share/man/jrunscript.1 ! src/jdk.compiler/share/man/javac.1 ! src/jdk.compiler/share/man/serialver.1 + src/jdk.hotspot.agent/share/man/jhsdb.1 ! src/jdk.jartool/share/man/jar.1 ! src/jdk.jartool/share/man/jarsigner.1 ! src/jdk.javadoc/share/man/javadoc.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jcmd/share/man/jinfo.1 ! src/jdk.jcmd/share/man/jmap.1 ! src/jdk.jcmd/share/man/jps.1 ! src/jdk.jcmd/share/man/jstack.1 ! src/jdk.jcmd/share/man/jstat.1 ! src/jdk.jconsole/share/man/jconsole.1 ! src/jdk.jdeps/share/man/javap.1 + src/jdk.jdeps/share/man/jdeprscan.1 ! src/jdk.jdeps/share/man/jdeps.1 ! src/jdk.jdi/share/man/jdb.1 + src/jdk.jlink/share/man/jlink.1 + src/jdk.jlink/share/man/jmod.1 + src/jdk.jshell/share/man/jshell.1 ! src/jdk.jstatd/share/man/jstatd.1 ! src/jdk.pack/share/man/pack200.1 ! src/jdk.pack/share/man/unpack200.1 ! src/jdk.rmic/share/man/rmic.1 ! src/jdk.scripting.nashorn.shell/share/man/jjs.1 Changeset: db105c4c5776 Author: redestad Date: 2019-06-01 03:18 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/db105c4c5776 8225061: Performance regression in Regex Reviewed-by: naoto, alanb Contributed-by: claes.redestad at oracle.com, naoto.sato at oracle.com ! make/jdk/src/classes/build/tools/generateemojidata/GenerateEmojiData.java ! src/java.base/share/classes/java/util/regex/EmojiData.java.template ! src/java.base/share/classes/java/util/regex/Grapheme.java ! src/java.base/share/classes/java/util/regex/Pattern.java + test/micro/org/openjdk/bench/java/util/regex/PatternBench.java Changeset: e2dbcc6ed36d Author: rfield Date: 2019-06-01 13:41 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/e2dbcc6ed36d 8080353: JShell: Better error message on attempting to add default method Summary: Special handling for errors with "default" modifier Reviewed-by: jlahoda ! src/jdk.jshell/share/classes/jdk/jshell/Eval.java ! test/langtools/ProblemList.txt ! test/langtools/jdk/jshell/ExceptionsTest.java ! test/langtools/jdk/jshell/MethodsTest.java Changeset: 905b2a416250 Author: rfield Date: 2019-06-01 14:09 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/905b2a416250 8223688: JShell: crash on the instantiation of raw anonymous class Reviewed-by: jlahoda ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java ! test/langtools/jdk/jshell/ToolBasicTest.java Changeset: 65896ed82849 Author: shade Date: 2019-06-02 10:08 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/65896ed82849 8225104: 32-bit build failures after JDK-8222252 Reviewed-by: bobv, rkennke, dholmes ! src/hotspot/share/runtime/arguments.cpp Changeset: 249b2b4fcb7d Author: shade Date: 2019-06-02 10:08 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/249b2b4fcb7d 8225111: Make Shenandoah tests work with 32-bit VMs Reviewed-by: rkennke ! test/hotspot/jtreg/gc/TestHumongousReferenceObject.java ! test/hotspot/jtreg/gc/shenandoah/TestHeapUncommit.java ! test/hotspot/jtreg/gc/shenandoah/TestHumongousThreshold.java ! test/hotspot/jtreg/gc/shenandoah/TestLargeObjectAlignment.java ! test/hotspot/jtreg/gc/shenandoah/compiler/TestNullCheck.java ! test/hotspot/jtreg/gc/shenandoah/compiler/TestReferenceCAS.java ! test/hotspot/jtreg/gc/shenandoah/jvmti/TestHeapDump.java ! test/hotspot/jtreg/gc/shenandoah/options/TestObjectAlignment.java Changeset: aa5eeb1a9871 Author: shade Date: 2019-06-02 10:08 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/aa5eeb1a9871 8225048: Shenandoah x86_32 support Reviewed-by: erikj, rkennke ! make/autoconf/hotspot.m4 ! src/hotspot/cpu/x86/gc/shenandoah/c1/shenandoahBarrierSetC1_x86.cpp ! src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp + src/hotspot/cpu/x86/gc/shenandoah/shenandoah_x86_32.ad ! src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp ! src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp Changeset: d22206f24d59 Author: lancea Date: 2019-06-02 17:13 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/d22206f24d59 8212807: tools/jar/multiRelease/Basic.java times out Reviewed-by: bchristi ! test/jdk/tools/jar/multiRelease/Basic.java ! test/jdk/tools/jar/multiRelease/MRTestBase.java ! test/lib/jdk/test/lib/process/OutputAnalyzer.java Changeset: 0dab93cb3b0c Author: tschatzl Date: 2019-06-03 10:50 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/0dab93cb3b0c 8223162: Improve ergonomics for Sparse PRT entry sizing Summary: Scale Sparse PRT table sizes exponentially according to region size. Reviewed-by: kbarrett, sangheki ! src/hotspot/share/gc/g1/heapRegionRemSet.cpp ! src/hotspot/share/gc/g1/heapRegionRemSet.hpp ! src/hotspot/share/gc/g1/sparsePRT.hpp Changeset: 00f7fce88e25 Author: tschatzl Date: 2019-06-03 10:51 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/00f7fce88e25 8223693: Memory wastage in size of per-region type buffers in GC Reviewed-by: kbarrett, sangheki ! src/hotspot/share/gc/g1/g1HeapRegionAttr.hpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Changeset: ba171f871932 Author: phedlin Date: 2019-05-28 14:56 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/ba171f871932 8223363: Bad node estimate assertion failure 8223502: Node estimate for loop unswitching is not correct: assert(delta <= 2 * required) failed: Bad node estimate 8224648: assert(!exceeding_node_budget()) failed: Too many NODES required! failure with ctw Summary: Tighten the node estimates. New est_loop_clone_sz() implementation that will compute a "fan-out" complexity estimate as part of the size estimate (to better estimate complex loop body size after cloning). New est_loop_unroll_sz() function, used to estimate the size of a loop body att full/maximal unrolling. Correction to node budget final tests and asserts. Reviewed-by: neliasso, kvn ! src/hotspot/share/opto/loopTransform.cpp ! src/hotspot/share/opto/loopUnswitch.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp + test/hotspot/jtreg/compiler/loopopts/LoopUnswitchingBadNodeBudget.java Changeset: 9691a169f1dd Author: roland Date: 2019-05-21 15:46 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/9691a169f1dd 8173196: [REDO] C2 does not optimize redundant memory operations with G1 Reviewed-by: thartmann, kvn ! src/hotspot/share/gc/g1/c2/g1BarrierSetC2.cpp ! src/hotspot/share/gc/shared/c2/cardTableBarrierSetC2.cpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/graphKit.hpp Changeset: 6c205bbdafd2 Author: shade Date: 2019-06-03 14:50 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/6c205bbdafd2 8225046: Shenandoah metrics logs refactoring Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMetrics.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMetrics.hpp Changeset: 47d928ba8733 Author: eosterlund Date: 2019-06-03 13:35 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/47d928ba8733 8224814: Remove dead JNIHandleBlock freelist code Reviewed-by: stefank, tschatzl, kbarrett ! src/hotspot/share/runtime/jniHandles.cpp ! src/hotspot/share/runtime/jniHandles.hpp Changeset: fdddd05767ce Author: eosterlund Date: 2019-06-03 13:35 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/fdddd05767ce 8224816: Provide os::processor_id() implementation for Mac OS Reviewed-by: rehn, pliden, kbarrett, gziemski ! src/hotspot/os/bsd/os_bsd.cpp Changeset: 4ffd6a955e92 Author: rfield Date: 2019-06-03 07:46 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/4ffd6a955e92 8225151: JShell API: Fix position of @jls tag Reviewed-by: jjg ! src/jdk.jshell/share/classes/jdk/jshell/Snippet.java Changeset: 1c291d1c272c Author: rfield Date: 2019-06-03 08:21 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1c291d1c272c 8199623: JShell: corralling not restored on drop Reviewed-by: jlahoda ! src/jdk.jshell/share/classes/jdk/jshell/Eval.java ! test/langtools/jdk/jshell/DropTest.java ! test/langtools/jdk/jshell/ToolSimpleTest.java Changeset: 1cccaaf46c7b Author: erikj Date: 2019-06-03 10:52 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1cccaaf46c7b 8225140: Build fails if directory contains 'unix' Reviewed-by: tbell ! make/common/JdkNativeCompilation.gmk ! make/lib/Awt2dLibraries.gmk Changeset: d3e404cc3972 Author: rkennke Date: 2019-06-03 21:28 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/d3e404cc3972 8225171: Remove leftovers in shenandoahBarrierSetC1.cpp Reviewed-by: shade ! src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.cpp Changeset: a38132298eda Author: iveresov Date: 2019-06-03 13:21 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/a38132298eda 8223320: [AOT] jck test api/javax_script/ScriptEngine/PutGet.html fails when test classes are AOTed Summary: Materialization of primitive boxes should use caches Reviewed-by: kvn, never ! src/hotspot/share/aot/aotLoader.cpp ! src/hotspot/share/aot/aotLoader.hpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/code/debugInfo.cpp ! src/hotspot/share/code/debugInfo.hpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciJavaClasses.hpp ! src/hotspot/share/runtime/deoptimization.cpp ! src/hotspot/share/runtime/deoptimization.hpp ! src/hotspot/share/runtime/thread.cpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/VirtualObject.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/gen/DebugInfoBuilder.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/BoxDeoptimizationTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.serviceprovider/src/org/graalvm/compiler/serviceprovider/GraalServices.java Changeset: a8ee59471f55 Author: iveresov Date: 2019-06-03 14:15 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/a8ee59471f55 8225202: Add missing include after JDK-8223320 Reviewed-by: kvn ! src/hotspot/share/aot/aotLoader.cpp Changeset: 1a7f82c98eee Author: kkharbas Date: 2019-06-03 11:04 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1a7f82c98eee 8224247: AllocateOldGenAt fires assertion failure Summary: Split the heap_reserved_size_bytes() into two methods - one for use during heap initialization and other for at later stages. Reviewed-by: sangheki, tschatzl ! src/hotspot/share/gc/g1/g1Arguments.cpp ! src/hotspot/share/gc/g1/g1Arguments.hpp ! src/hotspot/share/gc/g1/heapRegionManager.cpp ! src/hotspot/share/gc/parallel/adjoiningGenerationsForHeteroHeap.cpp ! src/hotspot/share/gc/parallel/parallelArguments.cpp ! src/hotspot/share/gc/parallel/parallelArguments.hpp ! src/hotspot/share/prims/whitebox.cpp Changeset: 030c32236ba3 Author: jjg Date: 2019-06-03 16:16 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/030c32236ba3 8225207: redundant

in Instrumentation.java Reviewed-by: lancea ! src/java.instrument/share/classes/java/lang/instrument/Instrumentation.java Changeset: a03a2455fe3b Author: rfield Date: 2019-06-03 16:24 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/a03a2455fe3b 8225208: Re-Problem list jdk/jshell/ExceptionsTest.java fails on windows Reviewed-by: jjg ! test/langtools/ProblemList.txt Changeset: 06d4100ebd32 Author: coleenp Date: 2019-06-03 19:42 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/06d4100ebd32 8225212: ProblemList gc/stress/TestReclaimStringsLeaksMemory.java Reviewed-by: dholmes ! test/hotspot/jtreg/ProblemList.txt Changeset: a82a367b2d8c Author: epavlova Date: 2019-06-03 17:14 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/a82a367b2d8c 8225199: [Graal] compiler/jvmci/compilerToVM/IsMatureVsReprofileTest.java fails with -XX:CompileThresholdScaling=0.1 Reviewed-by: kvn ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsMatureVsReprofileTest.java Changeset: 2ae056696b15 Author: rwestberg Date: 2019-06-03 10:28 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/2ae056696b15 8223678: Add Visual Studio Code workspace generation support (for native code) Reviewed-by: erikj + doc/ide.html + doc/ide.md ! make/Main.gmk ! make/UpdateBuildDocs.gmk ! make/common/MakeBase.gmk ! make/common/Utils.gmk + make/vscode/CreateVSCodeProject.gmk + make/vscode/indexers/ccls-extensions.txt + make/vscode/indexers/ccls-notes.txt + make/vscode/indexers/ccls-settings.txt + make/vscode/indexers/clangd-extensions.txt + make/vscode/indexers/clangd-notes.txt + make/vscode/indexers/clangd-settings.txt + make/vscode/indexers/cpptools-extensions.txt + make/vscode/indexers/cpptools-settings.txt + make/vscode/indexers/rtags-extensions.txt + make/vscode/indexers/rtags-settings.txt + make/vscode/template-launch.jsonc + make/vscode/template-tasks.jsonc + make/vscode/template-workspace-folder.txt + make/vscode/template-workspace.jsonc ! test/make/TestMakeBase.gmk Changeset: b003077e495c Author: stuefe Date: 2019-06-04 07:49 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/b003077e495c 8225178: [Solaris] os::signal() should call sigaction() with SA_SIGINFO Reviewed-by: dcubed, dholmes ! src/hotspot/os/solaris/os_solaris.cpp Changeset: cb2628a4f33f Author: psadhukhan Date: 2019-05-15 15:17 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/cb2628a4f33f 8223937: PIT: java/awt/Window/ShapedAndTranslucentWindows/StaticallyShaped.java listed twice in ProblemList Reviewed-by: jdv, pbansal ! test/jdk/ProblemList.txt Changeset: 256a5cbb4439 Author: prr Date: 2019-05-17 13:05 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/256a5cbb4439 8223804: [macos] remove obsoleted reference to security framework in launcher code Reviewed-by: rriggs, erikj ! make/lib/CoreLibraries.gmk ! src/java.base/macosx/native/libjava/java_props_macosx.c Changeset: d23707ad2b00 Author: serb Date: 2019-05-17 22:37 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/d23707ad2b00 8224152: [macOS] ProblemList tests that leave rubbish on the screen Reviewed-by: prr ! test/jdk/ProblemList.txt Changeset: 9ee0b8733ee4 Author: serb Date: 2019-05-17 22:48 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/9ee0b8733ee4 8223766: Remains of ancient code in AWT initialization Reviewed-by: jdv ! src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.c - src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h ! src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.c - src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h ! src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.c - src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h ! src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c ! src/java.desktop/windows/native/libawt/windows/awt_Color.cpp - src/java.desktop/windows/native/libawt/windows/awt_Color.h ! src/java.desktop/windows/native/libawt/windows/awt_MenuItem.cpp ! src/java.desktop/windows/native/libawt/windows/awt_MenuItem.h ! src/java.desktop/windows/native/libawt/windows/awt_Rectangle.cpp - src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h Changeset: 1a80806e7d15 Author: serb Date: 2019-05-18 23:35 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1a80806e7d15 6933331: (d3d/ogl) java.lang.IllegalStateException: Buffers have not been created Reviewed-by: prr ! src/java.desktop/share/classes/java/awt/Component.java + test/jdk/java/awt/image/BufferStrategy/ExceptionAfterComponentDispose.java Changeset: f36cee599800 Author: psadhukhan Date: 2019-05-20 11:03 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/f36cee599800 8224096: Add relevant bugid to java/awt/Window/ShapedAndTranslucentWindows/StaticallyShaped.java in ProblemList Reviewed-by: jdv, serb ! test/jdk/ProblemList.txt Changeset: c53905e7dc57 Author: dmarkov Date: 2019-05-20 15:42 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/c53905e7dc57 8214579: JFrame does not paint content in XVFB / X11vnc environment Reviewed-by: prr ! src/java.desktop/unix/classes/sun/java2d/xr/XRSurfaceData.java Changeset: e2a90479dfe5 Author: serb Date: 2019-05-20 12:17 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/e2a90479dfe5 8213516: jck test api/javax_accessibility/AccessibleState/fields.html fails intermittent Reviewed-by: prr ! src/java.desktop/share/classes/javax/accessibility/AccessibleBundle.java - test/jdk/javax/accessibility/8197785/AccessibilityBundleMemoryLeakTest.java + test/jdk/javax/accessibility/AccessibleBundle/Basic.java Changeset: 3e0a90050182 Author: serb Date: 2019-04-26 23:32 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/3e0a90050182 8222917: GraphicsEnvironment for Unix still have an unused dependency on Solaris Reviewed-by: prr ! src/java.desktop/share/classes/sun/java2d/SunGraphicsEnvironment.java Changeset: eba6a83dc23b Author: psadhukhan Date: 2019-05-21 14:41 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/eba6a83dc23b 8214702: Wrong text position for whitespaced string in printing Swing text Reviewed-by: prr, serb ! src/java.desktop/share/classes/sun/swing/SwingUtilities2.java + test/jdk/javax/swing/SwingUtilities/TestTextPosInPrint.java Changeset: e448d58051ab Author: psadhukhan Date: 2019-05-23 10:50 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/e448d58051ab 8211703: JInternalFrame : java.lang.AssertionError: cannot find the internal frame Reviewed-by: prr, serb ! src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java ! test/jdk/sanity/client/SwingSet/src/InternalFrameDemoTest.java Changeset: d85b366bd8f4 Author: prr Date: 2019-05-23 15:02 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/d85b366bd8f4 8223804: [macos] remove obsoleted reference to security framework in launcher code Reviewed-by: rriggs, erikj ! test/jdk/java/awt/dnd/RemoveDropTargetCrashTest/RemoveDropTargetCrashTest.java Changeset: f13dba72a5ea Author: prr Date: 2019-05-24 09:10 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/f13dba72a5ea 8224705: Tests that need to be problem-listed or have printer resources Reviewed-by: serb, psadhukhan ! test/jdk/ProblemList.txt ! test/jdk/java/awt/PrintJob/PrinterException.java ! test/jdk/java/awt/print/PrinterJob/Margins.java Changeset: 0b1f4dafd492 Author: prr Date: 2019-05-24 13:50 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/0b1f4dafd492 8224771: backout RemoveDropTargetCrashTest.java fix to re-push with correct bugid Reviewed-by: serb ! test/jdk/java/awt/dnd/RemoveDropTargetCrashTest/RemoveDropTargetCrashTest.java Changeset: 779a8d44523b Author: prr Date: 2019-05-24 13:52 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/779a8d44523b 8224632: testbug: java/awt/dnd/RemoveDropTargetCrashTest/RemoveDropTargetCrashTest.java fails on MacOS Reviewed-by: serb, psadhukhan ! test/jdk/java/awt/dnd/RemoveDropTargetCrashTest/RemoveDropTargetCrashTest.java Changeset: 4929c53ff29d Author: prr Date: 2019-05-27 12:24 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/4929c53ff29d 8224778: test/jdk/demo/jfc/J2Ddemo/J2DdemoTest.java cannot find J2Ddemo.jar Reviewed-by: erikj, psadhukhan ! make/RunTests.gmk ! test/jdk/demo/jfc/J2Ddemo/J2DdemoTest.java Changeset: 8cddb14bb234 Author: psadhukhan Date: 2019-05-28 16:35 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/8cddb14bb234 8224830: test/jdk/java/awt/Focus/ModalExcludedWindowClickTest/ModalExcludedWindowClickTest.java fails on linux-x64 Reviewed-by: jdv ! test/jdk/java/awt/Focus/ModalExcludedWindowClickTest/ModalExcludedWindowClickTest.java Changeset: f11d2e10a6e4 Author: psadhukhan Date: 2019-05-28 16:38 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/f11d2e10a6e4 8224821: java/awt/Focus/NoAutotransferToDisabledCompTest/NoAutotransferToDisabledCompTest.java fails linux-x64 Reviewed-by: jdv ! test/jdk/java/awt/Focus/NoAutotransferToDisabledCompTest/NoAutotransferToDisabledCompTest.java Changeset: fb7954fde06e Author: psadhukhan Date: 2019-05-30 10:45 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/fb7954fde06e 8224824: ProblemList java/awt/Color/AlphaColorTest failure in linux_x64 Reviewed-by: serb ! test/jdk/ProblemList.txt Changeset: 4c730a3b5dd9 Author: prr Date: 2019-05-30 09:16 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/4c730a3b5dd9 8225020: Problem list some sanity test failures Reviewed-by: psadhukhan, akolarkunnu ! test/jdk/ProblemList.txt Changeset: e29c0c8ebd90 Author: prr Date: 2019-05-30 09:23 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/e29c0c8ebd90 8225007: java/awt/print/PrinterJob/LandscapeStackOverflow.java may hang Reviewed-by: serb, jdv ! test/jdk/java/awt/print/PrinterJob/LandscapeStackOverflow.java ! test/jdk/java/awt/print/PrinterJob/PrintToDir.java Changeset: fdaf7287ea3a Author: prr Date: 2019-05-30 11:52 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/fdaf7287ea3a 8223271: SplashScreen is still shown if defaulting to headless on MacOS Reviewed-by: bpb, serb, kcr ! make/lib/Awt2dLibraries.gmk ! src/java.base/share/native/libjli/java.c ! src/java.base/share/native/libjli/splashscreen.h ! src/java.base/share/native/libjli/splashscreen_stubs.c ! src/java.desktop/macosx/native/libsplashscreen/splashscreen_sys.m ! src/java.desktop/share/native/libsplashscreen/splashscreen_impl.c ! src/java.desktop/share/native/libsplashscreen/splashscreen_impl.h ! src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c ! src/java.desktop/windows/native/libsplashscreen/splashscreen_sys.c Changeset: 55dc1385d1b7 Author: serb Date: 2019-05-30 17:14 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/55dc1385d1b7 8225032: Fix some C++ conformance issues in AWT Windows code Reviewed-by: prr, serb Contributed-by: andrewluotechnologies at outlook.com ! src/java.desktop/windows/native/libawt/windows/awt.h ! src/java.desktop/windows/native/libawt/windows/awt_Component.h ! src/java.desktop/windows/native/libawt/windows/awt_PrintControl.cpp Changeset: feb860d41612 Author: prr Date: 2019-06-02 12:38 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/feb860d41612 8224056: Fix some assignments of string literals to LPSTR (instead of LPCSTR) Reviewed-by: prr Contributed-by: andrewluotechnologies at outlook.com ! src/java.desktop/windows/native/libjsound/PLATFORM_API_WinOS_DirectSound.cpp Changeset: 26dd6fdc4165 Author: tnakamura Date: 2019-06-02 16:59 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/26dd6fdc4165 8219901: Noto fonts for East Asian countries cannot belong to CompositeFont Reviewed-by: prr, jdv ! src/java.desktop/unix/classes/sun/awt/FcFontManager.java ! src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java + test/jdk/java/awt/font/FontNames/FCCompositeTest.java Changeset: 5f9ef936707c Author: psadhukhan Date: 2019-06-03 11:06 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/5f9ef936707c Merge ! make/RunTests.gmk ! make/lib/Awt2dLibraries.gmk - src/hotspot/share/Xusage.txt - src/hotspot/share/c1/c1_globals.cpp - src/hotspot/share/gc/shenandoah/shenandoahHeapLock.hpp - src/hotspot/share/opto/c2_globals.cpp - src/java.base/share/classes/sun/text/resources/nfc.icu - src/java.base/share/classes/sun/text/resources/nfkc.icu - src/java.base/share/classes/sun/text/resources/nfkc_cf.icu ! src/java.base/share/native/libjli/java.c - src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/script-dir/jquery-3.3.1.js - src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/script-dir/jquery-migrate-3.0.1.js - src/jdk.javadoc/share/legal/jquery-migrate.md - test/fmw/gtest/CHANGES - test/fmw/gtest/LICENSE - test/fmw/gtest/README - test/fmw/gtest/include/gtest/gtest-death-test.h - test/fmw/gtest/include/gtest/gtest-message.h - test/fmw/gtest/include/gtest/gtest-param-test.h - test/fmw/gtest/include/gtest/gtest-param-test.h.pump - test/fmw/gtest/include/gtest/gtest-printers.h - test/fmw/gtest/include/gtest/gtest-spi.h - test/fmw/gtest/include/gtest/gtest-test-part.h - test/fmw/gtest/include/gtest/gtest-typed-test.h - test/fmw/gtest/include/gtest/gtest.h - test/fmw/gtest/include/gtest/gtest_pred_impl.h - test/fmw/gtest/include/gtest/gtest_prod.h - test/fmw/gtest/include/gtest/internal/gtest-death-test-internal.h - test/fmw/gtest/include/gtest/internal/gtest-filepath.h - test/fmw/gtest/include/gtest/internal/gtest-internal.h - test/fmw/gtest/include/gtest/internal/gtest-linked_ptr.h - test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h - test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h.pump - test/fmw/gtest/include/gtest/internal/gtest-param-util.h - test/fmw/gtest/include/gtest/internal/gtest-port.h - test/fmw/gtest/include/gtest/internal/gtest-string.h - test/fmw/gtest/include/gtest/internal/gtest-tuple.h - test/fmw/gtest/include/gtest/internal/gtest-tuple.h.pump - test/fmw/gtest/include/gtest/internal/gtest-type-util.h - test/fmw/gtest/include/gtest/internal/gtest-type-util.h.pump - test/fmw/gtest/src/gtest-all.cc - test/fmw/gtest/src/gtest-death-test.cc - test/fmw/gtest/src/gtest-filepath.cc - test/fmw/gtest/src/gtest-internal-inl.h - test/fmw/gtest/src/gtest-port.cc - test/fmw/gtest/src/gtest-printers.cc - test/fmw/gtest/src/gtest-test-part.cc - test/fmw/gtest/src/gtest-typed-test.cc - test/fmw/gtest/src/gtest.cc - test/fmw/gtest/src/gtest_main.cc ! test/jdk/ProblemList.txt - test/jdk/com/sun/jdi/BasicJDWPConnectionTest.java - test/jdk/java/lang/Character/PropList.txt - test/jdk/java/lang/Character/PropertyValueAliases.txt - test/jdk/java/lang/Character/Scripts.txt - test/jdk/java/lang/Character/SpecialCasing.txt - test/jdk/java/lang/Character/UnicodeBlock/Blocks.txt - test/jdk/java/lang/Character/UnicodeData.txt - test/jdk/java/lang/Character/charprop00.bin - test/jdk/java/lang/Character/charprop01.bin - test/jdk/java/lang/Character/charprop02.bin - test/jdk/java/lang/Character/charprop03.bin - test/jdk/java/lang/Character/charprop0E.bin - test/jdk/java/lang/Character/charprop0F.bin - test/jdk/java/lang/Character/charprop10.bin - test/jdk/java/util/regex/GraphemeBreakProperty.txt - test/jdk/java/util/regex/GraphemeBreakTest.txt - test/jdk/sun/management/windows/revokeall.c - test/jdk/sun/management/windows/revokeall.exe Changeset: 4cfbcfac47aa Author: jdv Date: 2019-06-03 11:56 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/4cfbcfac47aa 8225105: java/awt/Focus/ShowFrameCheckForegroundTest/ShowFrameCheckForegroundTest.java fails in Windows 10 Reviewed-by: prr, serb ! test/jdk/java/awt/Focus/ShowFrameCheckForegroundTest/ShowFrameCheckForegroundTest.java Changeset: 8b8d83cf9097 Author: psadhukhan Date: 2019-06-04 13:34 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/8b8d83cf9097 Merge ! make/lib/Awt2dLibraries.gmk Changeset: 7586561128e3 Author: hannesw Date: 2019-06-04 16:20 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/7586561128e3 8222091: Javadoc does not handle package annotations correctly on package-info.java Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java + test/langtools/jdk/javadoc/doclet/testPackageAnnotation/TestPackageAnnotation.java + test/langtools/jdk/javadoc/doclet/testPackageAnnotation/pkg1/A.java + test/langtools/jdk/javadoc/doclet/testPackageAnnotation/pkg1/package-info.java + test/langtools/jdk/javadoc/doclet/testPackageAnnotation/pkg2/A.java + test/langtools/jdk/javadoc/doclet/testPackageAnnotation/pkg2/package.html + test/langtools/jdk/javadoc/doclet/testPackageAnnotation/pkg3/A.java + test/langtools/jdk/javadoc/doclet/testPackageAnnotation/pkg3/package-info.java + test/langtools/jdk/javadoc/doclet/testPackageAnnotation/pkg3/package.html Changeset: 0ca8e495bbba Author: hannesw Date: 2019-06-04 16:33 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/0ca8e495bbba 8214126: Method signatures not formatted correctly in browser Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/LinkFactoryImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/RawHtml.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkInfo.java ! test/langtools/jdk/javadoc/doclet/testAnnotationTypes/TestAnnotationTypes.java ! test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/TestDeprecatedDocs.java ! test/langtools/jdk/javadoc/doclet/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java ! test/langtools/jdk/javadoc/doclet/testIndentation/TestIndentation.java ! test/langtools/jdk/javadoc/doclet/testInterface/TestInterface.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java ! test/langtools/jdk/javadoc/doclet/testLambdaFeature/TestLambdaFeature.java ! test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java ! test/langtools/jdk/javadoc/doclet/testLiteralCodeInPre/TestLiteralCodeInPre.java ! test/langtools/jdk/javadoc/doclet/testMemberInheritance/TestMemberInheritance.java ! test/langtools/jdk/javadoc/doclet/testMemberSummary/TestMemberSummary.java + test/langtools/jdk/javadoc/doclet/testMethodSignature/TestMethodSignature.java + test/langtools/jdk/javadoc/doclet/testMethodSignature/pkg/C.java ! test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java ! test/langtools/jdk/javadoc/doclet/testOptions/TestOptions.java ! test/langtools/jdk/javadoc/doclet/testOrdering/TestOrdering.java ! test/langtools/jdk/javadoc/doclet/testOverriddenMethods/TestBadOverride.java ! test/langtools/jdk/javadoc/doclet/testOverriddenMethods/TestOverriddenDeprecatedMethods.java ! test/langtools/jdk/javadoc/doclet/testPrivateClasses/TestPrivateClasses.java ! test/langtools/jdk/javadoc/doclet/testProperty/TestProperty.java ! test/langtools/jdk/javadoc/doclet/testSerializedFormWithClassFile/TestSerializedFormWithClassFile.java ! test/langtools/jdk/javadoc/doclet/testStylesheet/TestStylesheet.java ! test/langtools/jdk/javadoc/doclet/testSummaryTag/TestSummaryTag.java ! test/langtools/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java ! test/langtools/jdk/javadoc/doclet/testTypeParams/TestTypeParameters.java ! test/langtools/jdk/javadoc/doclet/testVisibleMembers/TestVisibleMembers.java Changeset: 30fe07cac527 Author: chegar Date: 2019-06-04 15:52 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/30fe07cac527 6394787: Typos in javadoc of OIS.readObjectOverride and OOS.writeObjectOverride Reviewed-by: alanb, chegar Contributed-by: Andrey Turbanov ! src/java.base/share/classes/java/io/ObjectInputStream.java ! src/java.base/share/classes/java/io/ObjectOutputStream.java ! test/jdk/java/io/Serializable/subclass/AbstractObjectOutputStream.java Changeset: 3a09397c147e Author: mseledtsov Date: 2019-06-04 07:53 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/3a09397c147e 8223396: [TESTBUG] several jfr tests do not clean up files created in /tmp Summary: Using test utils to create temp files and directories Reviewed-by: dholmes, erikj, hseigel, lmesnik ! test/jdk/jdk/jfr/event/io/EvilInstrument.java ! test/jdk/jdk/jfr/event/io/TestDisabledEvents.java ! test/jdk/jdk/jfr/event/io/TestFileChannelEvents.java ! test/jdk/jdk/jfr/event/io/TestFileReadOnly.java ! test/jdk/jdk/jfr/event/io/TestFileStreamEvents.java ! test/jdk/jdk/jfr/event/io/TestRandomAccessFileEvents.java ! test/jdk/jdk/jfr/event/io/TestRandomAccessFileThread.java ! test/jdk/jdk/jfr/jcmd/TestJcmdConfigure.java ! test/jdk/jdk/jfr/jmx/JmxHelper.java ! test/jdk/jdk/jfr/jvm/TestJavaEvent.java ! test/lib/jdk/test/lib/Utils.java Changeset: 9c36f33b0b01 Author: mseledtsov Date: 2019-06-04 07:54 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/9c36f33b0b01 Merge Changeset: 7453d5007e24 Author: coleenp Date: 2019-06-04 10:29 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/7453d5007e24 8222468: [TESTBUG] vmTestbase/metaspace/flags/maxMetaspaceSize/TestDescription.java fails with java.lang.NoClassDefFoundError Summary: Preload StackTraceElement$HashedModules in test. Reviewed-by: lmesnik, dholmes ! test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java Changeset: 7c49133fc1bc Author: hannesw Date: 2019-06-04 17:51 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/7c49133fc1bc 8178982: Javadoc search specification Reviewed-by: jjg, erikj ! src/jdk.compiler/share/classes/com/sun/source/doctree/package-info.java ! src/jdk.javadoc/share/classes/jdk/javadoc/doclet/StandardDoclet.java ! src/jdk.javadoc/share/classes/module-info.java Changeset: 8e31e083fe3c Author: kbarrett Date: 2019-06-04 13:26 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/8e31e083fe3c 8212630: jtreg/gc/logging/TestMetaSpaceLog.java failed with Agent timed out Summary: Use driver with framework test options passed through to subtask. Reviewed-by: tschatzl, lmesnik ! test/hotspot/jtreg/gc/logging/TestMetaSpaceLog.java Changeset: 0289438c1286 Author: jjg Date: 2019-06-04 11:29 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/0289438c1286 8223805: DocCommentParser should allow for

and
Reviewed-by: hannesw ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/DocCommentParser.java ! test/langtools/tools/javac/doctree/dcapi/DocCommentTreeApiTester.java + test/langtools/tools/javac/doctree/dcapi/overview8.html + test/langtools/tools/javac/doctree/dcapi/overview8.html.out + test/langtools/tools/javac/doctree/dcapi/overview9.html + test/langtools/tools/javac/doctree/dcapi/overview9.html.out Changeset: ef23ea332077 Author: smarks Date: 2019-06-04 11:55 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/ef23ea332077 8217412: deprecate rmic for removal Reviewed-by: rriggs, sundar ! src/jdk.rmic/share/classes/sun/rmi/rmic/resources/rmic.properties ! src/jdk.rmic/share/man/rmic.1 Changeset: 2fe2063fe567 Author: kvn Date: 2019-06-04 12:44 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/2fe2063fe567 8225019: Update JVMCI Reviewed-by: never, dlong ! src/hotspot/share/ci/ciMethod.cpp ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/compiler/compileTask.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp ! src/hotspot/share/oops/methodData.hpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/deoptimization.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/runtime/tieredThresholdPolicy.cpp ! src/hotspot/share/runtime/vmOperations.hpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCICompilerConfig.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/SharedLibraryJVMCIReflection.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/TranslatedException.java ! test/hotspot/jtreg/ProblemList-graal.txt ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/AsResolvedJavaMethodTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/DoNotInlineOrCompileTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/FindUniqueConcreteMethodTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetBytecodeTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetClassInitializerTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetConstantPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetExceptionTableTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetImplementorTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLineNumberTableTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLocalVariableTableTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetResolvedJavaMethodTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetResolvedJavaTypeTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetStackTraceElementTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetSymbolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetVtableIndexForInterfaceTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasFinalizableSubclassTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasNeverInlineDirectiveTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsCompilableTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupKlassInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupKlassRefIndexInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupMethodInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupNameAndTypeRefIndexInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupNameInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupSignatureInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/LookupTypeTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/MethodIsIgnoredBySecurityStackWalkTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ReadConfigurationTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ResolveConstantInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ResolveFieldInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ResolveMethodTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ResolvePossiblyCachedConstantInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ResolveTypeInPoolTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ShouldInlineMethodTest.java ! test/hotspot/jtreg/compiler/jvmci/errors/TestInvalidCompilationResult.java ! test/hotspot/jtreg/compiler/jvmci/errors/TestInvalidDebugInfo.java ! test/hotspot/jtreg/compiler/jvmci/errors/TestInvalidOopMap.java ! test/hotspot/jtreg/compiler/jvmci/events/JvmciNotifyInstallEventTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/DataPatchTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/InterpreterFrameSizeTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/MaxOopMapStackOffsetTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/SimpleCodeInstallationTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/SimpleDebugInfoTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/VirtualObjectDebugInfoTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/HotSpotConstantReflectionProviderTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/MemoryAccessProviderTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/MethodHandleAccessProviderTest.java + test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.hotspot.test/src/jdk/vm/ci/hotspot/test/TestTranslatedException.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ConstantTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ResolvedJavaTypeResolveConcreteMethodTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ResolvedJavaTypeResolveMethodTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestConstantReflectionProvider.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaField.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaMethod.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestJavaType.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestMetaAccessProvider.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaField.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaMethod.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaType.java ! test/hotspot/jtreg/compiler/jvmci/meta/StableFieldTest.java + test/hotspot/jtreg/compiler/whitebox/OSRFailureLevel4Test.java ! test/jdk/ProblemList-graal.txt Changeset: 1791eaa73e81 Author: mchung Date: 2019-06-04 12:50 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1791eaa73e81 8222448: java/lang/reflect/PublicMethods/PublicMethodsTest.java times out Summary: Set empty class path for compilation to avoid unnecessary opening/scanning of JAR files Reviewed-by: alanb, dholmes ! test/jdk/java/lang/reflect/PublicMethods/PublicMethodsTest.java Changeset: 4158e6a864d4 Author: jjg Date: 2019-06-04 13:47 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/4158e6a864d4 8225306: bad headings in java.sql.rowset SyncProvider.java Reviewed-by: lancea ! src/java.sql.rowset/share/classes/javax/sql/rowset/spi/SyncProvider.java Changeset: 64fe51ee940e Author: jjg Date: 2019-06-04 14:47 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/64fe51ee940e 8225309: HTML issues in jdk.jdi module Reviewed-by: lancea ! src/jdk.jdi/share/classes/com/sun/jdi/doc-files/signature.html ! src/jdk.jdi/share/classes/module-info.java Changeset: e079a4cfad75 Author: jjg Date: 2019-06-04 15:42 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/e079a4cfad75 8225314: broken links in java.base Reviewed-by: darcy ! src/java.base/share/classes/java/lang/Enum.java ! src/java.base/share/classes/java/lang/invoke/VarHandle.java Changeset: f4df9d4201cc Author: jjg Date: 2019-06-04 16:50 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/f4df9d4201cc 8225324: Bad HTML in jdk.jfr module-info.java Reviewed-by: lancea ! src/jdk.jfr/share/classes/module-info.java Changeset: da9dac56aafc Author: mikael Date: 2019-06-04 18:12 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/da9dac56aafc 8225307: ProblemList compiler/codegen/TestCharVect2.java and compiler/c2/cr6340864/TestLongVect.java Reviewed-by: kvn ! test/hotspot/jtreg/ProblemList.txt Changeset: b78597cfcced Author: dholmes Date: 2019-06-04 21:25 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/b78597cfcced 8225217: Backout: JDK-8224814: Remove dead JNIHandleBlock freelist code Reviewed-by: kvn, kbarrett ! src/hotspot/share/runtime/jniHandles.cpp ! src/hotspot/share/runtime/jniHandles.hpp Changeset: 7a026580fed5 Author: igerasim Date: 2019-06-04 18:55 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/7a026580fed5 8225198: Optimize regex tree for greedy quantifiers of type {N,} Reviewed-by: redestad, bchristi ! src/java.base/share/classes/java/util/regex/Pattern.java ! src/java.base/share/classes/java/util/regex/PrintPattern.java Changeset: 29ab1f3bd353 Author: weijun Date: 2019-06-05 09:58 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/29ab1f3bd353 8193255: Root Certificates should be stored in text format and assembled at build time Reviewed-by: clanger, erikj, mullan ! make/ToolsJdk.gmk ! make/copy/Copy-java.base.gmk + make/data/cacerts/README + make/data/cacerts/actalisauthenticationrootca + make/data/cacerts/addtrustclass1ca + make/data/cacerts/addtrustexternalca + make/data/cacerts/addtrustqualifiedca + make/data/cacerts/affirmtrustcommercialca + make/data/cacerts/affirmtrustnetworkingca + make/data/cacerts/affirmtrustpremiumca + make/data/cacerts/affirmtrustpremiumeccca + make/data/cacerts/baltimorecybertrustca + make/data/cacerts/buypassclass2ca + make/data/cacerts/buypassclass3ca + make/data/cacerts/camerfirmachambersca + make/data/cacerts/camerfirmachamberscommerceca + make/data/cacerts/camerfirmachambersignca + make/data/cacerts/certumca + make/data/cacerts/certumtrustednetworkca + make/data/cacerts/chunghwaepkirootca + make/data/cacerts/comodoaaaca + make/data/cacerts/comodoeccca + make/data/cacerts/comodorsaca + make/data/cacerts/digicertassuredidg2 + make/data/cacerts/digicertassuredidg3 + make/data/cacerts/digicertassuredidrootca + make/data/cacerts/digicertglobalrootca + make/data/cacerts/digicertglobalrootg2 + make/data/cacerts/digicertglobalrootg3 + make/data/cacerts/digicerthighassuranceevrootca + make/data/cacerts/digicerttrustedrootg4 + make/data/cacerts/dtrustclass3ca2 + make/data/cacerts/dtrustclass3ca2ev + make/data/cacerts/entrust2048ca + make/data/cacerts/entrustevca + make/data/cacerts/entrustrootcaec1 + make/data/cacerts/entrustrootcag2 + make/data/cacerts/geotrustglobalca + make/data/cacerts/geotrustprimaryca + make/data/cacerts/geotrustprimarycag2 + make/data/cacerts/geotrustprimarycag3 + make/data/cacerts/geotrustuniversalca + make/data/cacerts/globalsignca + make/data/cacerts/globalsigneccrootcar4 + make/data/cacerts/globalsigneccrootcar5 + make/data/cacerts/globalsignr2ca + make/data/cacerts/globalsignr3ca + make/data/cacerts/globalsignrootcar6 + make/data/cacerts/godaddyclass2ca + make/data/cacerts/godaddyrootg2ca + make/data/cacerts/identrustcommercial + make/data/cacerts/identrustdstx3 + make/data/cacerts/identrustpublicca + make/data/cacerts/keynectisrootca + make/data/cacerts/letsencryptisrgx1 + make/data/cacerts/luxtrustglobalrootca + make/data/cacerts/quovadisrootca + make/data/cacerts/quovadisrootca1g3 + make/data/cacerts/quovadisrootca2 + make/data/cacerts/quovadisrootca2g3 + make/data/cacerts/quovadisrootca3 + make/data/cacerts/quovadisrootca3g3 + make/data/cacerts/secomscrootca1 + make/data/cacerts/secomscrootca2 + make/data/cacerts/securetrustca + make/data/cacerts/soneraclass2ca + make/data/cacerts/starfieldclass2ca + make/data/cacerts/starfieldrootg2ca + make/data/cacerts/starfieldservicesrootg2ca + make/data/cacerts/swisssigngoldg2ca + make/data/cacerts/swisssignplatinumg2ca + make/data/cacerts/swisssignsilverg2ca + make/data/cacerts/teliasonerarootcav1 + make/data/cacerts/thawtepremiumserverca + make/data/cacerts/thawteprimaryrootca + make/data/cacerts/thawteprimaryrootcag2 + make/data/cacerts/thawteprimaryrootcag3 + make/data/cacerts/ttelesecglobalrootclass2ca + make/data/cacerts/ttelesecglobalrootclass3ca + make/data/cacerts/usertrusteccca + make/data/cacerts/usertrustrsaca + make/data/cacerts/utnuserfirstobjectca + make/data/cacerts/verisignclass2g2ca + make/data/cacerts/verisignclass3ca + make/data/cacerts/verisignclass3g2ca + make/data/cacerts/verisignclass3g3ca + make/data/cacerts/verisignclass3g4ca + make/data/cacerts/verisignclass3g5ca + make/data/cacerts/verisigntsaca + make/data/cacerts/verisignuniversalrootca + make/data/cacerts/xrampglobalca ! make/gendata/Gendata-java.base.gmk ! make/gendata/GendataBlacklistedCerts.gmk ! make/gendata/GendataBreakIterator.gmk ! make/gendata/GendataPublicSuffixList.gmk + make/jdk/src/classes/build/tools/generatecacerts/GenerateCacerts.java - src/java.base/share/lib/security/cacerts Changeset: 3eb7187b20f0 Author: smarks Date: 2019-06-04 18:59 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/3eb7187b20f0 8225315: test java/util/ArrayDeque/WhiteBox.java isn't part of the jdk_collections test group Reviewed-by: martin, darcy ! test/jdk/TEST.groups Changeset: bb3359bcf534 Author: stuefe Date: 2019-06-05 07:25 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/bb3359bcf534 8224600: Provide VM.events command Reviewed-by: minqi, dholmes, mbaesken, clanger ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/services/diagnosticCommand.cpp ! src/hotspot/share/services/diagnosticCommand.hpp ! src/hotspot/share/utilities/events.cpp ! src/hotspot/share/utilities/events.hpp + test/hotspot/jtreg/serviceability/dcmd/vm/EventsTest.java Changeset: 412ce076c0dc Author: stuefe Date: 2019-06-05 08:59 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/412ce076c0dc 8224181: On child process spawn, child may write to random file descriptor instead of the fail pipe Reviewed-by: rriggs, martin ! src/java.base/unix/native/libjava/childproc.c Changeset: cfd1e298ca33 Author: shade Date: 2019-06-05 09:23 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/cfd1e298ca33 8225229: Shenandoah: trim down default number of GC threads Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp + test/hotspot/jtreg/gc/shenandoah/options/TestThreadCounts.java Changeset: 28c93b5fb056 Author: redestad Date: 2019-06-05 10:07 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/28c93b5fb056 8225179: (regex) Minor Pattern cleanup Reviewed-by: igerasim ! src/java.base/share/classes/java/util/regex/Pattern.java ! test/micro/org/openjdk/bench/java/util/regex/PatternBench.java Changeset: 27d3b8e5c58b Author: redestad Date: 2019-06-05 10:23 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/27d3b8e5c58b 8224240: Properties.load fails to throw IAE on malformed unicode in certain circumstances Reviewed-by: smarks, rriggs, dfuchs ! src/java.base/share/classes/java/util/Properties.java ! test/jdk/java/util/Properties/PropertiesTest.java Changeset: a5967fd63d9d Author: pliden Date: 2019-06-05 10:43 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/a5967fd63d9d 8224962: ZGC: Strengthen ZHeap::is_oop() Reviewed-by: eosterlund ! src/hotspot/share/gc/z/zHeap.inline.hpp Changeset: 3f8a81f5d1b2 Author: pliden Date: 2019-06-05 10:43 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/3f8a81f5d1b2 8224965: ZGC: Strengthen ZHeap::is_in() Reviewed-by: eosterlund ! src/hotspot/share/gc/z/zAddress.hpp ! src/hotspot/share/gc/z/zAddress.inline.hpp ! src/hotspot/share/gc/z/zCollectedHeap.cpp ! src/hotspot/share/gc/z/zHeap.cpp Changeset: 1de459182903 Author: pliden Date: 2019-06-05 10:43 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/1de459182903 8225084: gc/z/TestHighUsage.java fails with unexpected allocation stall Reviewed-by: eosterlund ! test/hotspot/jtreg/gc/z/TestHighUsage.java Changeset: ae3ef834deed Author: mdoerr Date: 2019-05-31 14:52 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/ae3ef834deed 8222103: [testbug] compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest may exceed VM limit Reviewed-by: iignatyev, mdoerr Contributed-by: peter.januschke at sap.com ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest.java Changeset: ce8bab2c4185 Author: chegar Date: 2019-06-05 12:02 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/ce8bab2c4185 8225214: Socket.getOption(SocketOption) not returning the expected type for the StandardSocketOptions.SO_LINGER Reviewed-by: alanb ! src/java.base/share/classes/java/net/AbstractPlainSocketImpl.java ! test/jdk/java/net/SocketOption/OptionsTest.java Changeset: 63a62cc10a0a Author: roland Date: 2019-05-21 09:08 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/63a62cc10a0a 8224580: Matcher can cause oop field/array element to be reloaded Reviewed-by: neliasso, rkennke, dlong ! src/hotspot/share/opto/matcher.cpp Changeset: ec621f7f95f2 Author: chegar Date: 2019-06-05 13:59 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/ec621f7f95f2 8225037: java.net.JarURLConnection::getJarEntry() throws NullPointerException Reviewed-by: coffeys, vtewari ! src/java.base/share/classes/java/net/JarURLConnection.java + test/jdk/java/net/JarURLConnection/TestDefaultBehavior.java Changeset: 27080d54c644 Author: zgu Date: 2019-06-05 09:15 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/27080d54c644 8225341: Shenandoah: CM::update_thread_roots() needs to handle derived pointers Reviewed-by: shade ! src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp Changeset: 9775d05d69c8 Author: shade Date: 2019-06-05 15:19 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/9775d05d69c8 8225342: Shenandoah: use COMPILER2_OR_JVMCI macro consistently Reviewed-by: zgu ! src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp Changeset: 02db50f278f9 Author: rriggs Date: 2019-06-05 10:21 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/02db50f278f9 8220238: Enhancing j.l.Runtime/System::gc specification with an explicit 'no guarantee' statement Reviewed-by: shade, dholmes, mchung, plevart ! src/java.base/share/classes/java/lang/Runtime.java ! src/java.base/share/classes/java/lang/System.java Changeset: 9b392b044f64 Author: hannesw Date: 2019-06-05 16:26 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/9b392b044f64 8221709: replace use of style blockListLast Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlSerialFieldWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlSerialMethodWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeFieldWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeRequiredMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstructorWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/EnumConstantWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/FieldWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/MethodWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PropertyWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeFieldBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeRequiredMemberBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ConstructorBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/EnumConstantBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/FieldBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MethodBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PropertyBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css ! test/langtools/jdk/javadoc/doclet/testAnnotationTypes/TestAnnotationTypes.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java ! test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java Changeset: 6c2d69a41ff9 Author: mchung Date: 2019-06-05 07:49 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/6c2d69a41ff9 8221368: Error message when module main class cannot be loaded is missing exception details Reviewed-by: alanb, sundar ! src/java.base/share/classes/sun/launcher/LauncherHelper.java ! src/java.base/share/classes/sun/launcher/resources/launcher.properties + test/jdk/tools/launcher/modules/basic/LauncherErrors.java + test/jdk/tools/launcher/modules/basic/src/test2/jdk/test2/Main.java + test/jdk/tools/launcher/modules/basic/src/test2/module-info.java Changeset: 481999e74cea Author: jjg Date: 2019-06-05 08:24 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/481999e74cea 8225346: Convert file to HTML5 Reviewed-by: lancea ! make/data/docs-resources/index.html Changeset: cad7e13ca587 Author: mikael Date: 2019-06-05 08:43 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/cad7e13ca587 8225305: ProblemList java/lang/invoke/VarHandles tests Reviewed-by: kvn, iignatyev, mchung, alanb + test/jdk/ProblemList-aot.txt Changeset: c87e52dbdca0 Author: stuefe Date: 2019-06-05 19:34 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/c87e52dbdca0 8225225: stringStream internal buffer should always be zero terminated Reviewed-by: coleenp, dholmes ! src/hotspot/share/utilities/ostream.cpp ! src/hotspot/share/utilities/ostream.hpp ! test/hotspot/gtest/utilities/test_ostream.cpp Changeset: 36334808644d Author: darcy Date: 2019-06-05 10:49 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/36334808644d 8225353: Add @jls links to java.lang.Enum Reviewed-by: lancea, jjg ! src/java.base/share/classes/java/lang/Enum.java Changeset: 3bd979f09721 Author: dcubed Date: 2019-06-05 14:01 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/3bd979f09721 8224793: os::die() does not honor CreateCoredumpOnCrash option Reviewed-by: kbarrett, dholmes, stuefe ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/solaris/os_solaris.cpp ! src/hotspot/share/runtime/os.hpp Changeset: 74832e7b5cad Author: dcubed Date: 2019-06-05 14:07 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/74832e7b5cad 8188872: runtime/ErrorHandling/TimeoutInErrorHandlingTest.java fails intermittently Reviewed-by: dholmes, stuefe ! src/hotspot/share/utilities/vmError.cpp ! src/hotspot/share/utilities/vmError.hpp ! test/hotspot/jtreg/runtime/ErrorHandling/TimeoutInErrorHandlingTest.java Changeset: 57b93b113ec0 Author: stuefe Date: 2019-06-05 09:12 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/57b93b113ec0 8223777: In posix_spawn mode, failing to exec() jspawnhelper does not result in an error Reviewed-by: rriggs, martin, fweimer ! src/java.base/unix/native/libjava/ProcessImpl_md.c ! src/java.base/unix/native/libjava/childproc.c ! src/java.base/unix/native/libjava/childproc.h Changeset: 7e2238451585 Author: stuefe Date: 2019-06-05 21:14 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/7e2238451585 8225348: serviceability/dcmd/vm/EventsTest.java failed Reviewed-by: jcbeyler, cjplummer ! test/hotspot/jtreg/serviceability/dcmd/vm/EventsTest.java Changeset: 77b54b2822cc Author: vromero Date: 2019-06-05 16:01 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/77b54b2822cc 8216261: Javap ignores default modifier on interfaces Reviewed-by: jjg, darcy ! src/jdk.jdeps/share/classes/com/sun/tools/javap/ClassWriter.java + test/langtools/tools/javap/default_methods/JavapNotPrintingDefaultModifierTest.java Changeset: 647593fdea53 Author: erikj Date: 2019-06-05 13:46 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/647593fdea53 8209381: Default CDS classlist generation should run with an explicit locale setting Reviewed-by: iklam, tbell ! make/GenerateLinkOptData.gmk Changeset: 0d326e0f474c Author: vromero Date: 2019-06-05 17:01 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/0d326e0f474c 8223942: Missing methods in ClientCodeWrapper$WrappedJavaFileManager Reviewed-by: jjg ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/ClientCodeWrapper.java + test/langtools/tools/javac/T8223942/ClientCodeWrappersShouldOverrideAllMethodsTest.java Changeset: e2987b9baa93 Author: naoto Date: 2019-06-05 16:10 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/e2987b9baa93 8225182: JNI exception pending in DestroyXIMCallback of awt_InputMethod.c:1327 Reviewed-by: serb ! src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c Changeset: 184b05daf50f Author: vromero Date: 2019-06-05 21:50 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/184b05daf50f 8225386: test for JDK-8216261 fails in Windows Reviewed-by: jjg ! test/langtools/tools/javap/default_methods/JavapNotPrintingDefaultModifierTest.java Changeset: 261cd181eb50 Author: jwilhelm Date: 2019-06-06 04:04 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/261cd181eb50 Added tag jdk-13+24 for changeset 7e2238451585 ! .hgtags Changeset: 10a2778ecbbf Author: jjiang Date: 2019-06-06 10:11 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/10a2778ecbbf 8225390: ProblemList sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java due to JDK-8161536 Reviewed-by: xuelei ! test/jdk/ProblemList.txt Changeset: 1402a03f214e Author: sspitsyn Date: 2019-06-05 21:02 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1402a03f214e 8205126: JVMTI spec incorrectly states that PopFrame can not be called on the current thread Summary: Align the PopFrame spec with the implementation Reviewed-by: amenkov, jcbeyler, cjplummer, dcubed ! src/hotspot/share/prims/jvmti.xml Changeset: f74f0d3033a9 Author: lfoltan Date: 2019-06-05 22:19 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/f74f0d3033a9 8225325: Add tests for redefining a class' private method during resolution of the bootstrap specifier Summary: Add new tests Reviewed-by: dholmes, sspitsyn + test/jdk/java/lang/instrument/RedefineInterfaceMethods/RedefineInterfaceMethods.java + test/jdk/java/lang/instrument/RedefineInterfaceMethods/redef/Xost.java + test/jdk/java/lang/instrument/RedefineMathTesterMethods/RedefineMathTesterMethods.java + test/jdk/java/lang/instrument/RedefineMathTesterMethods/redef/Xost.java Changeset: 92eec0732eed Author: ngasson Date: 2019-06-04 17:56 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/92eec0732eed 8224853: CDS address sanitizer errors Reviewed-by: iklam, dholmes ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/memory/metaspaceShared.cpp ! src/hotspot/share/memory/metaspaceShared.hpp Changeset: 6502d6a92fe2 Author: jiefu Date: 2019-06-06 13:45 +0300 URL: http://hg.openjdk.java.net/amber/amber/rev/6502d6a92fe2 8224162: assert(profile.count() == 0) failed: sanity in InlineTree::is_not_reached Reviewed-by: vlivanov, kvn ! src/hotspot/share/ci/ciMethod.cpp ! src/hotspot/share/ci/ciMethod.hpp ! src/hotspot/share/oops/methodData.hpp ! src/hotspot/share/utilities/globalDefinitions.hpp + test/hotspot/jtreg/compiler/profiling/TestProfileCounterOverflow.java Changeset: 3c905e67e380 Author: vlivanov Date: 2019-06-06 13:46 +0300 URL: http://hg.openjdk.java.net/amber/amber/rev/3c905e67e380 8225106: C2: Parse::clinit_deopt asserts when holder klass is in error state Reviewed-by: mdoerr ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/share/ci/ciEnv.cpp ! src/hotspot/share/ci/ciInstanceKlass.hpp ! src/hotspot/share/opto/parse1.cpp ! test/hotspot/jtreg/runtime/clinit/ClassInitBarrier.java Changeset: 36cb654a690f Author: vlivanov Date: 2019-06-06 13:46 +0300 URL: http://hg.openjdk.java.net/amber/amber/rev/36cb654a690f 8225141: Better handling of classes in error state in fast class initialization checks Reviewed-by: dlong, dholmes ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp Changeset: d49b72808414 Author: weijun Date: 2019-06-06 21:19 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/d49b72808414 8225304: Tiny HTML error (bad heading) in org.ietf.jgss package-info.java Reviewed-by: xuelei ! src/java.security.jgss/share/classes/org/ietf/jgss/package-info.java Changeset: 3b22c7e00573 Author: egahlin Date: 2019-06-06 15:22 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/3b22c7e00573 8224217: RecordingInfo should use textual representation of path Reviewed-by: mgronlun ! src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecorder.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecording.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/WriteableUserPath.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/management/ManagementSupport.java ! src/jdk.management.jfr/share/classes/jdk/management/jfr/RecordingInfo.java Changeset: 442b86eb633c Author: rriggs Date: 2019-06-06 10:03 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/442b86eb633c 8224905: java/lang/ProcessBuilder/Basic.java#id1 failed with stream closed Reviewed-by: lancea, bpb, naoto ! test/jdk/java/lang/ProcessBuilder/Basic.java Changeset: d65d3c37232c Author: mbalao Date: 2019-06-05 01:42 -0300 URL: http://hg.openjdk.java.net/amber/amber/rev/d65d3c37232c 8215032: Support Kerberos cross-realm referrals (RFC 6806) Reviewed-by: weijun ! src/java.base/share/conf/security/java.security ! src/java.security.jgss/share/classes/javax/security/auth/kerberos/KerberosPrincipal.java ! src/java.security.jgss/share/classes/sun/security/krb5/Checksum.java ! src/java.security.jgss/share/classes/sun/security/krb5/Config.java ! src/java.security.jgss/share/classes/sun/security/krb5/KrbAsRep.java ! src/java.security.jgss/share/classes/sun/security/krb5/KrbAsReq.java ! src/java.security.jgss/share/classes/sun/security/krb5/KrbAsReqBuilder.java ! src/java.security.jgss/share/classes/sun/security/krb5/KrbKdcRep.java ! src/java.security.jgss/share/classes/sun/security/krb5/KrbTgsRep.java ! src/java.security.jgss/share/classes/sun/security/krb5/KrbTgsReq.java ! src/java.security.jgss/share/classes/sun/security/krb5/PrincipalName.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/CredentialsUtil.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/EncASRepPart.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/EncKDCRepPart.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/EncTGSRepPart.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCOptions.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/KDCReq.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/KRBError.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/Krb5.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/PAData.java + src/java.security.jgss/share/classes/sun/security/krb5/internal/ReferralsCache.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/TicketFlags.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/crypto/KeyUsage.java ! test/jdk/sun/security/krb5/auto/KDC.java + test/jdk/sun/security/krb5/auto/ReferralsTest.java Changeset: 61fff1345ee6 Author: bpb Date: 2019-06-06 08:11 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/61fff1345ee6 8219992: Correct the documentation of PrintWriter to refer System.lineSeparator Reviewed-by: darcy, lancea, rriggs ! src/java.base/share/classes/java/io/PrintWriter.java Changeset: cc0f117f4405 Author: jlaskey Date: 2019-06-06 12:24 -0300 URL: http://hg.openjdk.java.net/amber/amber/rev/cc0f117f4405 8223775: String::stripIndent (Preview) Reviewed-by: abuckley, vromero, jlahoda, bchristi, rriggs, smarks ! src/java.base/share/classes/java/lang/String.java ! src/java.base/share/classes/java/lang/StringLatin1.java ! src/java.base/share/classes/java/lang/StringUTF16.java + test/jdk/java/lang/String/StripIndent.java Changeset: dff30b1557ee Author: jlaskey Date: 2019-06-06 12:24 -0300 URL: http://hg.openjdk.java.net/amber/amber/rev/dff30b1557ee 8223780: String::translateEscapes (Preview) Reviewed-by: abuckley, vromero, jlahoda, bchristi, igerasim, smarks ! src/java.base/share/classes/java/lang/String.java + test/jdk/java/lang/String/TranslateEscapes.java Changeset: 7d83cf1cfa74 Author: jlaskey Date: 2019-06-06 12:24 -0300 URL: http://hg.openjdk.java.net/amber/amber/rev/7d83cf1cfa74 8203444: String::formatted (Preview) Reviewed-by: smarks, rriggs, sherman ! src/java.base/share/classes/java/lang/String.java + test/jdk/java/lang/String/Formatted.java Changeset: 830ca7b43b95 Author: jlaskey Date: 2019-06-06 12:24 -0300 URL: http://hg.openjdk.java.net/amber/amber/rev/830ca7b43b95 8223967: Implement Text Blocks (Preview) in the Java compiler Reviewed-by: vromero, jlahoda, abuckley ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Lint.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/ScannerFactory.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties + test/langtools/tools/javac/TextBlockAPI.java + test/langtools/tools/javac/TextBlockLang.java + test/langtools/tools/javac/diags/examples/TextBlockCloseDelimiter.java + test/langtools/tools/javac/diags/examples/TextBlockOpenDelimiter.java + test/langtools/tools/javac/diags/examples/TextBlockWhitespace.java ! test/langtools/tools/javap/WhitespaceTest.java Changeset: b7ad292e686c Author: aeubanks Date: 2019-05-23 10:06 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/b7ad292e686c 8224645: Only test multicast interfaces if they exist Reviewed-by: alanb, dfuchs, chegar Contributed-by: aeubanks at google.com ! test/jdk/java/nio/channels/DatagramChannel/BasicMulticastTests.java Changeset: d80becbcd3c1 Author: mr Date: 2019-06-06 10:01 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/d80becbcd3c1 8197927: Allow the system property `java.vendor.version` to be undefined Reviewed-by: lancea, mchung, clanger ! src/java.base/share/classes/java/lang/System.java Changeset: fb250e9cfe67 Author: jjg Date: 2019-06-06 10:36 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/fb250e9cfe67 8225321: Repeated use of {@systemProperty} in a file causes duplicate ids Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java ! test/langtools/jdk/javadoc/doclet/testIndexTaglet/TestIndexTaglet.java ! test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/TestSystemPropertyTaglet.java Changeset: eabe64456156 Author: egahlin Date: 2019-06-06 20:19 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/eabe64456156 8216283: Allow shorter method sampling interval than 10 ms Reviewed-by: mgronlun ! src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp ! src/jdk.jfr/share/conf/jfr/default.jfc ! src/jdk.jfr/share/conf/jfr/profile.jfc Changeset: c5fe45d1281d Author: coleenp Date: 2019-06-06 15:09 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/c5fe45d1281d 8224151: Test vmTestbase/nsk/sysdict/vm/stress/chain/chain007/chain007.java might hang with release binaries Summary: Fix deadlock on ClassLoaderDataGraph_lock and g1 clear_claimed_marks. Reviewed-by: tschatzl, lfoltan, eosterlund ! src/hotspot/share/classfile/classLoaderData.hpp ! src/hotspot/share/classfile/classLoaderDataGraph.cpp ! src/hotspot/share/classfile/classLoaderDataGraph.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp ! src/hotspot/share/runtime/vmStructs.cpp From maurizio.cimadamore at oracle.com Thu Jun 6 20:06:02 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 06 Jun 2019 20:06:02 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906062006.x56K62KA022027@aojmv0008.oracle.com> Changeset: a0b92af12baa Author: mcimadamore Date: 2019-06-06 22:05 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/a0b92af12baa Automatic merge with default - src/java.base/share/lib/security/cacerts - src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h - src/java.desktop/windows/native/libawt/windows/awt_Color.h - src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - test/jdk/javax/accessibility/8197785/AccessibilityBundleMemoryLeakTest.java From maurizio.cimadamore at oracle.com Thu Jun 6 20:06:27 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 06 Jun 2019 20:06:27 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906062006.x56K6ROr022504@aojmv0008.oracle.com> Changeset: 93dac461abf5 Author: mcimadamore Date: 2019-06-06 22:06 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/93dac461abf5 Automatic merge with default - src/java.base/share/lib/security/cacerts - src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h - src/java.desktop/windows/native/libawt/windows/awt_Color.h - src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - test/jdk/javax/accessibility/8197785/AccessibilityBundleMemoryLeakTest.java From maurizio.cimadamore at oracle.com Thu Jun 6 20:06:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 06 Jun 2019 20:06:53 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906062006.x56K6sno022916@aojmv0008.oracle.com> Changeset: afb08a216cdb Author: mcimadamore Date: 2019-06-06 22:06 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/afb08a216cdb Automatic merge with default - src/java.base/share/lib/security/cacerts - src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h - src/java.desktop/windows/native/libawt/windows/awt_Color.h - src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h - test/jdk/javax/accessibility/8197785/AccessibilityBundleMemoryLeakTest.java From maurizio.cimadamore at oracle.com Thu Jun 6 20:07:15 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 06 Jun 2019 20:07:15 +0000 Subject: hg: amber/amber: Automatic merge with patterns-stage-1 Message-ID: <201906062007.x56K7FFs023829@aojmv0008.oracle.com> Changeset: 82bbb11f68cf Author: mcimadamore Date: 2019-06-06 22:07 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/82bbb11f68cf Automatic merge with patterns-stage-1 - src/java.base/share/lib/security/cacerts - src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h - src/java.desktop/windows/native/libawt/windows/awt_Color.h - src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - test/jdk/javax/accessibility/8197785/AccessibilityBundleMemoryLeakTest.java From vicente.romero at oracle.com Fri Jun 7 15:02:53 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 07 Jun 2019 15:02:53 +0000 Subject: hg: amber/amber: manual merge with default Message-ID: <201906071502.x57F2rtY002099@aojmv0008.oracle.com> Changeset: d273dc2ae04b Author: vromero Date: 2019-06-07 11:02 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/d273dc2ae04b manual merge with default ! src/hotspot/share/classfile/systemDictionary.hpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp - src/java.base/share/lib/security/cacerts ! src/java.compiler/share/classes/javax/lang/model/element/Element.java ! src/java.compiler/share/classes/javax/lang/model/element/TypeElement.java ! src/java.compiler/share/classes/javax/lang/model/element/VariableElement.java - src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h - src/java.desktop/windows/native/libawt/windows/awt_Color.h - src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/DocCommentParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java - test/jdk/javax/accessibility/8197785/AccessibilityBundleMemoryLeakTest.java From maurizio.cimadamore at oracle.com Fri Jun 7 15:07:28 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 07 Jun 2019 15:07:28 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906071507.x57F7Tf7005340@aojmv0008.oracle.com> Changeset: 4f6341ecbed5 Author: mcimadamore Date: 2019-06-07 17:07 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/4f6341ecbed5 Automatic merge with records-and-sealed - src/java.base/share/lib/security/cacerts - src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h - src/java.desktop/windows/native/libawt/windows/awt_Color.h - src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - test/jdk/javax/accessibility/8197785/AccessibilityBundleMemoryLeakTest.java From maurizio.cimadamore at oracle.com Fri Jun 7 15:07:49 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 07 Jun 2019 15:07:49 +0000 Subject: hg: amber/amber: Automatic merge with patterns-stage-1 Message-ID: <201906071507.x57F7oU8005838@aojmv0008.oracle.com> Changeset: 625ce37ae598 Author: mcimadamore Date: 2019-06-07 17:07 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/625ce37ae598 Automatic merge with patterns-stage-1 ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From vicente.romero at oracle.com Fri Jun 7 15:43:48 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 07 Jun 2019 15:43:48 +0000 Subject: hg: amber/amber: manual merge with default Message-ID: <201906071543.x57Fhn9U000602@aojmv0008.oracle.com> Changeset: 93b5578ec871 Author: vromero Date: 2019-06-07 11:43 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/93b5578ec871 manual merge with default - src/java.base/share/lib/security/cacerts - src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h - src/java.desktop/windows/native/libawt/windows/awt_Color.h - src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - test/jdk/javax/accessibility/8197785/AccessibilityBundleMemoryLeakTest.java From vicente.romero at oracle.com Fri Jun 7 20:33:34 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 07 Jun 2019 20:33:34 +0000 Subject: hg: amber/amber: manual merge with default Message-ID: <201906072033.x57KXY8p020198@aojmv0008.oracle.com> Changeset: 54bb08cb4a20 Author: vromero Date: 2019-06-07 16:32 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/54bb08cb4a20 manual merge with default - src/java.base/share/lib/security/cacerts - src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h - src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h - src/java.desktop/windows/native/libawt/windows/awt_Color.h - src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - test/jdk/javax/accessibility/8197785/AccessibilityBundleMemoryLeakTest.java From scolebourne at joda.org Tue Jun 11 13:16:12 2019 From: scolebourne at joda.org (Stephen Colebourne) Date: Tue, 11 Jun 2019 14:16:12 +0100 Subject: Sealed/Nestmates in java.time.* Message-ID: Not sure if this should go to core-libs now. Anyway, I realised today that three classes in java.time.* probably form a nest and would be a reaonable test for any new nest/sealed syntax: * ZoneId * ZoneOffet * ZoneRegion The context was this issue: https://bugs.openjdk.java.net/browse/JDK-8225566 I see these as a nest because the intention is that they form a closed set with no additional subclasses. (Given that ZoneRegion is package-private, the exhaustivenss check of sealed types won't be useful, but it still seems worth documenting in code the closed set) Stephen From brian.goetz at oracle.com Tue Jun 11 14:13:27 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Tue, 11 Jun 2019 10:13:27 -0400 Subject: Sealed/Nestmates in java.time.* In-Reply-To: References: Message-ID: <59a3e4fe-c902-5a01-b909-93948a9e775d@oracle.com> A good question, not only because of the specific issues in java.time, but because this issue will likely come up in other corelibs situations too. First, some clarification on the terminology.? _Nests_ are a new (JVM) term for describing a concept the language has had all along -- that a certain set of classes were co-declared with the intent of sharing an access control context.? Nested/inner classes in the Java language have always had this characteristic, but the compiler had to do some contortions to fit it into the each-class-is-its-own-world access control model of the JVM. Nests allow language compilers to declare that multiple classes share an access control context, and Java uses this for nested/inner classes (but other languages could it use it differently.)? But, nests are not really a user-accessible feature.? (There is some allowance for nestmates to be _dynamically_ added through class loading; VM anonymous (VMAC) classes are morally the same sort of thing, and we use them (for example) in lambdas to "inject" classes into the access control context of a running class.? Again, more a tool for compilers than for users.) _Sealed classes_, on the other hand, are a language feature, and fair game for use in libraries.? Historically, there were some "tricks" for obtaining the effect of sealing (e.g., package-private constructor or abstract method) which would prevent subclassing outside of the current package, but this only works for classes, not interfaces.? (Similarly, a class or interface in a non-exported package is effectively sealed, but in an accidental way.) For a class that has used one of the tricks to obtain the effect of sealing, making it effectively impossible for third-party code to extend the class, promoting to a sealed type is a fine move (and makes it more clear what is going on.)? For a class that has _not_ employed such tricks, making a class sealed will have compatibility consequences, and so must be considered more carefully.? (The classes in java.lang.constant anticipate sealing, and their spec says "don't extend me, you won't like it"; this is also a valid way to manage the compatibility issues.)? Similarly, a class that is final can be made sealed (either explicitly, or implicitly by sealing a supertype) without compatibility issue. For these specific classes, since they are not part of the same compilation unit, you'd want to declare it with the full syntax: ??? public sealed abstract class ZoneId ??????? permits ZoneOffset, ZoneRegion { ... } This is a compatible change and captures the design intent, so it seems a reasonable move. On 6/11/2019 9:16 AM, Stephen Colebourne wrote: > Not sure if this should go to core-libs now. Anyway, I realised today > that three classes in java.time.* probably form a nest and would be a > reaonable test for any new nest/sealed syntax: > > * ZoneId > * ZoneOffet > * ZoneRegion > > The context was this issue: https://bugs.openjdk.java.net/browse/JDK-8225566 > > I see these as a nest because the intention is that they form a closed > set with no additional subclasses. (Given that ZoneRegion is > package-private, the exhaustivenss check of sealed types won't be > useful, but it still seems worth documenting in code the closed set) > > Stephen From brian.goetz at oracle.com Tue Jun 11 19:21:19 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Tue, 11 Jun 2019 15:21:19 -0400 Subject: Towards better serialization Message-ID: I've posted a document at: http://cr.openjdk.java.net/~briangoetz/amber/serialization.html on an exploration we've been doing to address some of the shortcomings of Java serialization, building on other tools that have been (or will be) added to the platform. Rather than attempt to add band-aids on existing serialization, it addresses the risks of serialization at their root.? It is somewhat of a shift -- it cannot represent all object graphs, and it makes some additional work for the author -- but it brings object serialization into the light, where it needs to be in order to be safer.? This is an early draft; questions, and constructive feedback on the approach, are welcome. From forax at univ-mlv.fr Tue Jun 11 21:08:00 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Tue, 11 Jun 2019 23:08:00 +0200 (CEST) Subject: Towards better serialization In-Reply-To: References: Message-ID: <1441489070.554776.1560287280181.JavaMail.zimbra@u-pem.fr> Hi Brian, I agree with the motivation and the requirements. About the details, - using factories, constructor and matchers: yes - using annotations @Serializer/@Deserializer + version, this part is still too magic, no?, an annotation is not better than an empty interface, it's still not integrated with the language, @Serializer/@Deserializer should be keywords, and version can be a parameter, so you can disambiguate versions in code (framework may use annotation on top of that mechanism to provide a more declarative API). - the keyword "open", i think it's not needed, in fact i hope it's not needed, we already have enough visibility keywords in Java. Frameworks can access a JDK API that will provide access to the method marked with the keywords "serializer" and "deserializer" (also your use of the keyword open is close to the initially proposed use of the keyword module in the JSR 294 which was withdrawn). And nitpicking, can we agree that in a pattern the parameters act more as return values than as parameters, so instead of writing public pattern serializeMe(String serverName) { serverName = conn.getName(); } I prefer public pattern (String serverName) serializeMe { return (conn.getName()); } R?mi PS: "This mistake is understandable in historical context, since at the time the industry believed that distributed objects were going to save us from complexity." This is still true today, the industry believed that distributed systems aka microservices will save us all. ----- Mail original ----- > De: "Brian Goetz" > ?: "amber-dev" > Envoy?: Mardi 11 Juin 2019 21:21:19 > Objet: Towards better serialization > I've posted a document at: > > http://cr.openjdk.java.net/~briangoetz/amber/serialization.html > > > on an exploration we've been doing to address some of the shortcomings > of Java serialization, building on other tools that have been (or will > be) added to the platform. Rather than attempt to add band-aids on > existing serialization, it addresses the risks of serialization at their > root.? It is somewhat of a shift -- it cannot represent all object > graphs, and it makes some additional work for the author -- but it > brings object serialization into the light, where it needs to be in > order to be safer.? This is an early draft; questions, and constructive > feedback on the approach, are welcome. From brian.goetz at oracle.com Tue Jun 11 21:58:20 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Tue, 11 Jun 2019 17:58:20 -0400 Subject: Towards better serialization In-Reply-To: <1441489070.554776.1560287280181.JavaMail.zimbra@u-pem.fr> References: <1441489070.554776.1560287280181.JavaMail.zimbra@u-pem.fr> Message-ID: <9e95aac7-df67-a4cb-ab1b-f99890387e99@oracle.com> > And nitpicking, can we agree that in a pattern the parameters act more as return values than as parameters, so instead of writing UnsolicitedBikeshedException, at line ... From forax at univ-mlv.fr Wed Jun 12 07:53:56 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Wed, 12 Jun 2019 09:53:56 +0200 (CEST) Subject: Towards better serialization In-Reply-To: References: Message-ID: <800985031.638017.1560326036970.JavaMail.zimbra@u-pem.fr> Re-reading the proposal, there is something i think is dangerous, the keyword "open" offers a false promise, it offers the possibility to consider the reified form of the data encoded in the serialization stream as something which is not "really" public. Once an instance is serialized (by whatever serializers), it becomes public knowledge because you can always forge it. Trying to hide that is IMO an error. R?mi ----- Mail original ----- > De: "Brian Goetz" > ?: "amber-dev" > Envoy?: Mardi 11 Juin 2019 21:21:19 > Objet: Towards better serialization > I've posted a document at: > > http://cr.openjdk.java.net/~briangoetz/amber/serialization.html > > > on an exploration we've been doing to address some of the shortcomings > of Java serialization, building on other tools that have been (or will > be) added to the platform. Rather than attempt to add band-aids on > existing serialization, it addresses the risks of serialization at their > root.? It is somewhat of a shift -- it cannot represent all object > graphs, and it makes some additional work for the author -- but it > brings object serialization into the light, where it needs to be in > order to be safer.? This is an early draft; questions, and constructive > feedback on the approach, are welcome. From michal at kleczek.org Wed Jun 12 12:23:30 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Wed, 12 Jun 2019 12:23:30 +0000 Subject: Towards better serialization Message-ID: To be honest I fail to see anything that would make it a better serialization. This proposal is simply enforcement of implementing writeReplace()/readResolve() pair (aka classic memento pattern) with some syntactic sugar on top. And while it might make serialization more secure (which I doubt - see below) it is not better for sure as it forces developers to do more work. The whole premise of Java serialization was that it is supposed to be transparent and cheap to implement. It is rooted in Smalltalk/Self and the idea of a program image and transparent state migration. Why are we giving this up? A better serialization should be simply a better implementation of this idea - what we have here is retraction instead. What's more - it does not really address security concerns! Even the example of non-serializable ServerConnection being recreated based on serverName upon deserialization illustrates it - serverName is not sanitized/validated and as such is a security hole (as may lead to information leak) - the only real defense is SecurityManager and proper security policy in place. The issue here is that we try to fix security problems in the wrong place. Almost all security issues with serialization are not really caused by serialization itself but by: - huge classpath with all libraries accessible to each other (ie. deserialization gadgets availability in classpath) - running applications with no SecurityManager (starting a JVM with no SecurityManager by default was the single biggest mistake Java designers made in the past IMHO) There are issues with current serialization but IMHO they can be fixed with small adjustments to the spec/API: - Add an @Unshared annotation on a member field - that would signal requirement for the deserialization framework to make sure the instance is unshared - Use ObjectInput/ObjectOutput interface everywhere instead of ObjectInputStream/ObjectOutputStream classes (which would allow different easier provision of different serialization formats) - Provide easy way to register invariants validation (right now registering ObjectInputValidation is a PITA) - it can be done by introducing @InvariantCheck annotation on a method. - Provide an easy way to designate a constructor or a static method as a deserialization facility (either similar to the one in the proposal or taking ObjectInput as an argument) - Make use of ObjectInputStream.GetField/ObjectOutputStream.PutField interfaces easier/more obvious My point here is - current serialization offers a lot and getting rid of it instead of making it better is a huge step back. What's more - getting rid of it is in reality only moving the problem around as the need for transparent serialization is there and is witnessed by existence of all Json/XML transparent serialization solutions. They will not go away - quite the contrary - there will be more of them as there will be no default in the standard library. And they will be worse than the default one. From forax at univ-mlv.fr Wed Jun 12 12:51:16 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Wed, 12 Jun 2019 14:51:16 +0200 (CEST) Subject: Towards better serialization In-Reply-To: References: Message-ID: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> Hi Mickael, wrong list btw, amber-dev is for the problem with the implementation, not with a spec proposal. ----- Mail original ----- > De: "K?eczek, Micha?" > ?: "amber-dev" > Envoy?: Mercredi 12 Juin 2019 14:23:30 > Objet: Towards better serialization > To be honest I fail to see anything that would make it a better > serialization. This proposal is simply enforcement of implementing > writeReplace()/readResolve() pair (aka classic memento pattern) with > some syntactic sugar on top. nope, the idea is to decouple the data you need to write/read from the way you want to serialize those data. > > And while it might make serialization more secure (which I doubt - see > below) it is not better for sure as it forces developers to do more > work. The whole premise of Java serialization was that it is supposed to > be transparent and cheap to implement. It is rooted in Smalltalk/Self > and the idea of a program image and transparent state migration. Why are > we giving this up? A better serialization should be simply a better > implementation of this idea - what we have here is retraction instead. It's more "secure" because the class writer is in control of the data exported and because it relies on constructor/factory, so the same checks are done if you construct an instance classically or by reflection. > > What's more - it does not really address security concerns! Even the > example of non-serializable ServerConnection being recreated based on > serverName upon deserialization illustrates it - serverName is not > sanitized/validated and as such is a security hole (as may lead to > information leak) - the only real defense is SecurityManager and proper > security policy in place. If you serialize something by definition you are leaking it. That's said i agree that the example is not the best one because it doesn't show the validation that should be done. > > The issue here is that we try to fix security problems in the wrong > place. Almost all security issues with serialization are not really > caused by serialization itself but by: > - huge classpath with all libraries accessible to each other (ie. > deserialization gadgets availability in classpath) > - running applications with no SecurityManager (starting a JVM with no > SecurityManager by default was the single biggest mistake Java designers > made in the past IMHO) huge classpath is a real issue, we have modules exactly for that, it's just that given the giant size of the ecosystem, things move slowly. > > There are issues with current serialization but IMHO they can be fixed > with small adjustments to the spec/API: > - Add an @Unshared annotation on a member field - that would signal > requirement for the deserialization framework to make sure the instance > is unshared > - Use ObjectInput/ObjectOutput interface everywhere instead of > ObjectInputStream/ObjectOutputStream classes (which would allow > different easier provision of different serialization formats) > - Provide easy way to register invariants validation (right now > registering ObjectInputValidation is a PITA) - it can be done by > introducing @InvariantCheck annotation on a method. > - Provide an easy way to designate a constructor or a static method as a > deserialization facility (either similar to the one in the proposal or > taking ObjectInput as an argument) > - Make use of ObjectInputStream.GetField/ObjectOutputStream.PutField > interfaces easier/more obvious nope, more coupling and peppering the current implementation with more annotations are not a solution, they are the root of problems of the future as the diverse fixes to the serialization has shown. > > My point here is - current serialization offers a lot and getting rid of > it instead of making it better is a huge step back. What's more - > getting rid of it is in reality only moving the problem around as the > need for transparent serialization is there and is witnessed by > existence of all Json/XML transparent serialization solutions. They will > not go away - quite the contrary - there will be more of them as there > will be no default in the standard library. And they will be worse than > the default one. serialization of records is transparent. regards, R?mi From brian.goetz at oracle.com Wed Jun 12 13:57:09 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Wed, 12 Jun 2019 09:57:09 -0400 Subject: Towards better serialization In-Reply-To: <800985031.638017.1560326036970.JavaMail.zimbra@u-pem.fr> References: <800985031.638017.1560326036970.JavaMail.zimbra@u-pem.fr> Message-ID: <0459a4d6-6107-a1a2-c032-35e754a88d4d@oracle.com> > there is something i think is dangerous, the keyword "open" offers a false promise The `open` mechanism has nothing whatsoever to do with serialization; it has to do with access control, and who can invoke it.? Any concern you have about open methods, you also have about public methods. > Once an instance is serialized (by whatever serializers), it becomes public knowledge because you can always forge it. Trying to hide that is IMO an error. Once a class is serializable (whether you've ever serialized an instance or not), you've given the world an effectively-public mechanism to instantiate new instances.? In the old world, that mechanism bypasses user-written constructors (bad!), but with the new mechanism, we can defend that public API the same way we can defend any other API -- through validation, normalization, copying, etc. From vicente.romero at oracle.com Wed Jun 12 14:02:43 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 12 Jun 2019 14:02:43 +0000 Subject: hg: amber/amber: bug on record class reading Message-ID: <201906121402.x5CE2itj016834@aojmv0008.oracle.com> Changeset: a2e239a39bb0 Author: vromero Date: 2019-06-12 10:01 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/a2e239a39bb0 bug on record class reading Reviewed-by: vromero Contributed-by: jan.lahoda at oracle.com ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java + test/langtools/tools/javac/datum/writeread/Record.java + test/langtools/tools/javac/datum/writeread/WriteReadTest.java From maurizio.cimadamore at oracle.com Wed Jun 12 14:07:21 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 12 Jun 2019 14:07:21 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906121407.x5CE7M5k021146@aojmv0008.oracle.com> Changeset: 5c16b711138f Author: mcimadamore Date: 2019-06-12 16:07 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/5c16b711138f Automatic merge with records-and-sealed From nlisker at gmail.com Wed Jun 12 19:03:20 2019 From: nlisker at gmail.com (Nir Lisker) Date: Wed, 12 Jun 2019 22:03:20 +0300 Subject: Serialization of object identity Message-ID: Hi Brian, Thanks for the Towards Better Serialization document, I'm glad to see movement in this area. I take issue with your view on JSON and cycles representation. Jackson, for example, has an @JsonIdentityInfo annotation [1] that allows to add an ad-hoc property to the serialized objects to mark their identity within the context of the serialized object graph. The annotation takes an ID generator to specify the ID assignments. One such generator is JSOG [2]; you can see in the link what the JSON looks like for a cyclic graph. I understand that you probably mean that the format can't "natively" represent cycles, but the Java libraries that de/serialize JSON can and do solve this limitation. And because of that, the argument of "JSON can't do that and it's popular so it's OK if Java doesn't do that" doesn't work anymore. In fact, the cyclic graph issue is a result of an inability to represent object identity in serialization, which is a much larger problem. Two additional issues that the lack of identity info causes are: 1. Serializing and deserializing an object graph will result in a different state. Reference equality will fail where is once succeeded. This is more relevant for mutable objects, but still very relevant. 2. Deserializing heavy objects is very costly. If I have an expensive-to-construct object which is referenced from many objects in a list, and I serialize the list and then deserialize it, I will create many heavy objects. As a real world example, a library has many books, and each book has a label that identifies the library that owns it. Serializing the (cyclic) library is not a lot to ask for as it is a standard data representation, and JSON solutions do it well. Moreover, deserializing the library should not create 5001 difference library objects when a library has 5000 books, and if I want to change the name of the library, I don't want to do it for 5001 different objects because it's actually the same one. Hopefully I didn't spew nonsense, Nir [1] https://static.javadoc.io/com.fasterxml.jackson.core/jackson-annotations/2.9.9/com/fasterxml/jackson/annotation/JsonIdentityInfo.html [2] https://github.com/jsog/jsog#jsog---javascript-object-graph From brian.goetz at oracle.com Wed Jun 12 19:26:34 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Wed, 12 Jun 2019 15:26:34 -0400 Subject: Serialization of object identity In-Reply-To: References: Message-ID: > In fact, the cyclic graph issue is a result of an inability to represent > object identity in serialization, which is a much larger problem. Actually, they're two entirely different problems. The challenge with cyclic graphs is not that we have to respect identity -- that can be done (it is up to a particular serialization to decide if it is going to do so.)? The challenge with cyclic graphs is that logically cyclic graphs cannot, in general, be reproduced through a series of constructor calls -- some mutation is required as well.? Which conflicts with our main security goal, that deserialization proceed through constructors. (It is possible, at the cost of significant complexity for both the framework and class authors, to have a more complex model that can reflect post-construction mutation -- but the incremental complexity and risk is significant.) From forax at univ-mlv.fr Wed Jun 12 19:55:19 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Wed, 12 Jun 2019 21:55:19 +0200 (CEST) Subject: Serialization of object identity In-Reply-To: References: Message-ID: <333742916.936512.1560369319062.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "Brian Goetz" > ?: "Nir Lisker" , "amber-dev" > Envoy?: Mercredi 12 Juin 2019 21:26:34 > Objet: Re: Serialization of object identity >> In fact, the cyclic graph issue is a result of an inability to represent >> object identity in serialization, which is a much larger problem. > > Actually, they're two entirely different problems. > > The challenge with cyclic graphs is not that we have to respect identity > -- that can be done (it is up to a particular serialization to decide if > it is going to do so.)? The challenge with cyclic graphs is that > logically cyclic graphs cannot, in general, be reproduced through a > series of constructor calls -- some mutation is required as well.? Which > conflicts with our main security goal, that deserialization proceed > through constructors. > > (It is possible, at the cost of significant complexity for both the > framework and class authors, to have a more complex model that can > reflect post-construction mutation -- but the incremental complexity and > risk is significant.) it's not fully true because you can leak "this" and then mutate a field inside the constructor. class A { final B b; A(Function fun) { b = fun.apply(this); } } class B { final A a; B(A a) { this.a = a; } } new A(B::new); R?mi From michal at kleczek.org Wed Jun 12 21:26:31 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Wed, 12 Jun 2019 21:26:31 +0000 Subject: Towards better serialization In-Reply-To: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> References: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> Message-ID: Hi Remi, Seems like this is the only amber mailing list I can post to :) Comments inline. ------ Original Message ------ >Hi Mickael, >wrong list btw, amber-dev is for the problem with the implementation, not with a spec proposal. > >----- Mail original ----- >> De: "K?eczek, Micha?" >> ?: "amber-dev" >> Envoy?: Mercredi 12 Juin 2019 14:23:30 >> Objet: Towards better serialization > >> To be honest I fail to see anything that would make it a better >> serialization. This proposal is simply enforcement of implementing >> writeReplace()/readResolve() pair (aka classic memento pattern) with >> some syntactic sugar on top. > >nope, the idea is to decouple the data you need to write/read from the way you want to serialize those data. > >> >> And while it might make serialization more secure (which I doubt - see >> below) it is not better for sure as it forces developers to do more >> work. The whole premise of Java serialization was that it is supposed to >> be transparent and cheap to implement. It is rooted in Smalltalk/Self >> and the idea of a program image and transparent state migration. Why are >> we giving this up? A better serialization should be simply a better >> implementation of this idea - what we have here is retraction instead. > >It's more "secure" because the class writer is in control of the data exported and because it relies on constructor/factory, so the same checks are done if you construct an instance classically or by reflection. > > >> >> What's more - it does not really address security concerns! Even the >> example of non-serializable ServerConnection being recreated based on >> serverName upon deserialization illustrates it - serverName is not >> sanitized/validated and as such is a security hole (as may lead to >> information leak) - the only real defense is SecurityManager and proper >> security policy in place. > >If you serialize something by definition you are leaking it. >That's said i agree that the example is not the best one because it doesn't show the validation that should be done. > >> >> The issue here is that we try to fix security problems in the wrong >> place. Almost all security issues with serialization are not really >> caused by serialization itself but by: >> - huge classpath with all libraries accessible to each other (ie. >> deserialization gadgets availability in classpath) >> - running applications with no SecurityManager (starting a JVM with no >> SecurityManager by default was the single biggest mistake Java designers >> made in the past IMHO) > >huge classpath is a real issue, we have modules exactly for that, it's just that given the giant size of the ecosystem, things move slowly. > >> >> There are issues with current serialization but IMHO they can be fixed >> with small adjustments to the spec/API: >> - Add an @Unshared annotation on a member field - that would signal >> requirement for the deserialization framework to make sure the instance >> is unshared >> - Use ObjectInput/ObjectOutput interface everywhere instead of >> ObjectInputStream/ObjectOutputStream classes (which would allow >> different easier provision of different serialization formats) >> - Provide easy way to register invariants validation (right now >> registering ObjectInputValidation is a PITA) - it can be done by >> introducing @InvariantCheck annotation on a method. >> - Provide an easy way to designate a constructor or a static method as a >> deserialization facility (either similar to the one in the proposal or >> taking ObjectInput as an argument) >> - Make use of ObjectInputStream.GetField/ObjectOutputStream.PutField >> interfaces easier/more obvious > >nope, more coupling and peppering the current implementation with more annotations are not a solution, they are the root of problems of the future as the diverse fixes to the serialization has shown. > >> >> My point here is - current serialization offers a lot and getting rid of >> it instead of making it better is a huge step back. What's more - >> getting rid of it is in reality only moving the problem around as the >> need for transparent serialization is there and is witnessed by >> existence of all Json/XML transparent serialization solutions. They will >> not go away - quite the contrary - there will be more of them as there >> will be no default in the standard library. And they will be worse than >> the default one. > >serialization of records is transparent. > >regards, >R?mi > > From michal at kleczek.org Wed Jun 12 21:31:41 2019 From: michal at kleczek.org (=?UTF-8?B?TWljaGHFgiBLxYJlY3plaw==?=) Date: Wed, 12 Jun 2019 23:31:41 +0200 Subject: Fwd: Re[2]: Towards better serialization In-Reply-To: References: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> Message-ID: ---------- Forwarded message --------- From: K?eczek, Micha? Date: Wed, Jun 12, 2019 at 11:03 PM Subject: Re[2]: Towards better serialization To: Hi Remi, Seems like this is the only amber mailing list I can post to. Sorry for double posting - got lost in all other mailing lists rejection messages. Comments inline. ------ Original Message ------ From: "Remi Forax" To: "K?eczek, Micha?" Cc: "amber-dev" Sent: 12/06/2019 14:51:16 Subject: Re: Towards better serialization >Hi Mickael, >wrong list btw, amber-dev is for the problem with the implementation, not with a spec proposal. > >----- Mail original ----- >> De: "K?eczek, Micha?" >> ?: "amber-dev" >> Envoy?: Mercredi 12 Juin 2019 14:23:30 >> Objet: Towards better serialization > >> To be honest I fail to see anything that would make it a better >> serialization. This proposal is simply enforcement of implementing >> writeReplace()/readResolve() pair (aka classic memento pattern) with >> some syntactic sugar on top. > >nope, the idea is to decouple the data you need to write/read from the way you want to serialize those data. You cannot be more decoupled than current serialization as it is purely declarative. And there is the whole lot of opt-in possibilities to control what should be serialized. What exactly is current proposal bringing to the table comparing to what is already there? > > >> >> And while it might make serialization more secure (which I doubt - see >> below) it is not better for sure as it forces developers to do more >> work. The whole premise of Java serialization was that it is supposed to >> be transparent and cheap to implement. It is rooted in Smalltalk/Self >> and the idea of a program image and transparent state migration. Why are >> we giving this up? A better serialization should be simply a better >> implementation of this idea - what we have here is retraction instead. > >It's more "secure" because the class writer is in control of the data exported and because it relies on constructor/factory, so the same checks are done if you construct an instance classically or by reflection. The point is that it gives you only a false sense of security - which in turn makes it _less_ secure (see below). > > > >> >> What's more - it does not really address security concerns! Even the >> example of non-serializable ServerConnection being recreated based on >> serverName upon deserialization illustrates it - serverName is not >> sanitized/validated and as such is a security hole (as may lead to >> information leak) - the only real defense is SecurityManager and proper >> security policy in place. > >If you serialize something by definition you are leaking it. I haven't been clear with my comment: If an attacker provides a hostile serverName in the serialization stream (ie. tries to trick the program to connect to the wrong server) - who's responsibility it is to make sure it does not happen? This example illustrates the fact that forcing reconstruction of the object graph via constructor calls gives you only a false sense of security - you *must* have some other security policy enforcement in place anyway. To make the point stronger: Most deserialization gadgets invoke methods using reflection based on the data from serialization stream in readObject() - which obviously is a security hole. But there is *nothing* preventing such invocation in the deserialization constructor. The proposal simply does not really address security concerns - reason being it can't as security problems cannot be solved at the level of serialization/deserialization - this is simply the wrong place! > >That's said i agree that the example is not the best one because it doesn't show the validation that should be done. See above - input validation is not enough if we are talking about security! > > >> >> The issue here is that we try to fix security problems in the wrong >> place. Almost all security issues with serialization are not really >> caused by serialization itself but by: >> - huge classpath with all libraries accessible to each other (ie. >> deserialization gadgets availability in classpath) >> - running applications with no SecurityManager (starting a JVM with no >> SecurityManager by default was the single biggest mistake Java designers >> made in the past IMHO) > >huge classpath is a real issue, we have modules exactly for that, it's just that given the giant size of the ecosystem, things move slowly. > >> >> There are issues with current serialization but IMHO they can be fixed >> with small adjustments to the spec/API: >> - Add an @Unshared annotation on a member field - that would signal >> requirement for the deserialization framework to make sure the instance >> is unshared >> - Use ObjectInput/ObjectOutput interface everywhere instead of >> ObjectInputStream/ObjectOutputStream classes (which would allow >> different easier provision of different serialization formats) >> - Provide easy way to register invariants validation (right now >> registering ObjectInputValidation is a PITA) - it can be done by >> introducing @InvariantCheck annotation on a method. >> - Provide an easy way to designate a constructor or a static method as a >> deserialization facility (either similar to the one in the proposal or >> taking ObjectInput as an argument) >> - Make use of ObjectInputStream.GetField/ObjectOutputStream.PutField >> interfaces easier/more obvious > >nope, more coupling and peppering the current implementation with more annotations are not a solution, they are the root of problems of the future as the diverse fixes to the serialization has shown. And yet the proposal introduces some more annotations while not addressing any of the problems :) > > >> >> My point here is - current serialization offers a lot and getting rid of >> it instead of making it better is a huge step back. What's more - >> getting rid of it is in reality only moving the problem around as the >> need for transparent serialization is there and is witnessed by >> existence of all Json/XML transparent serialization solutions. They will >> not go away - quite the contrary - there will be more of them as there >> will be no default in the standard library. And they will be worse than >> the default one. > >serialization of records is transparent. Why only records? > > >regards, >R?mi > > -- Michal From brian.goetz at oracle.com Wed Jun 12 22:27:53 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Wed, 12 Jun 2019 18:27:53 -0400 Subject: Fwd: Re[2]: Towards better serialization In-Reply-To: References: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> Message-ID: <4d7169dc-4b9d-a4f2-8527-e8eefba59e8a@oracle.com> > you want to serialize those data. > You cannot be more decoupled than current serialization as it is purely > declarative. Really? The mechanisms serialization gives you to control serialization are readObject, writeObject, readResolve, writeReplace, etc.? Which are all purely imperative -- and couple state extraction / reconstruction with stream reading and writing. As a bonus, if you implement readObject (and any class with invariants must, or else it is broken), you have to validate the arguments explicitly in readObject, and as a bonus, you get to do it in a completely different way than you do in the constructor. Have you never actually used these methods?? If you had, you'd never describe serialization as "purely declarative." > >> serialization of records is transparent. > Why only records? > Because with records, all the relevant protocols -- such as construction, deconstruction, equality, hashing -- are derived from the record's declared state description.? Serialization is one of those protocols that can be derived from the state description. From michal at kleczek.org Thu Jun 13 05:01:27 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Thu, 13 Jun 2019 05:01:27 +0000 Subject: Fw: Re[2]: Fwd: Re[2]: Towards better serialization Message-ID: Hi Brian, ------ Original Message ------ > >>you want to serialize those data. >>You cannot be more decoupled than current serialization as it is purely >>declarative. > >Really? > >The mechanisms serialization gives you to control serialization are readObject, writeObject, readResolve, writeReplace, etc. Which are all purely imperative -- and couple state extraction / reconstruction with stream reading and writing. > >As a bonus, if you implement readObject (and any class with invariants must, or else it is broken), Not really: 1. It depends on the use case - in some of the use cases a class author can simply assume the state is valid after deserialization (similar to what happens when you hibernate/resume your laptop or take a virtual machine snapshot and recreate it on another machine) - paradoxically this strategy seems to be more secure than implementing custom readObject() as witnessed by many deserialization gadgets with broken readObject() implementation. 2. You can implement writeReplace()/readResolve() pair (which is exactly what is in the proposal + some syntactic sugar). 3. You can provide an invariant check method which would be called by the deserialization framework after the object is reconstructed (which I have done several times by overriding ObjectInputStream.resolveObject()) >you have to validate the arguments explicitly in readObject, and as a bonus, you get to do it in a completely different way than you do in the constructor. But - as I said in my first e-mail - *forcing* developers to implement writeReplace()/readResolve() pair (adding some syntactic sugar on top) is throwing the baby out with the bathwater. Why don't we simply make it easier to implement post-deserialization invariant checks? There is ObjectInputValidation interface - but its usage is so obscure that I have never seen it used. It can be as easy as adding a default method to Serializable: public Serializable { public default void readObjectValidate() throws InvalidObjectException {} } Simple, effective and backwards compatible. -- Michal From michal at kleczek.org Thu Jun 13 06:22:33 2019 From: michal at kleczek.org (=?UTF-8?B?TWljaGHFgiBLxYJlY3plaw==?=) Date: Thu, 13 Jun 2019 08:22:33 +0200 Subject: Fwd: Re[2]: Towards better serialization In-Reply-To: <4d7169dc-4b9d-a4f2-8527-e8eefba59e8a@oracle.com> References: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> <4d7169dc-4b9d-a4f2-8527-e8eefba59e8a@oracle.com> Message-ID: Hi Brian, Sorry for multiple posts - my mail client got confused with headers and subject lines - changed it now, hope it helps. ------ Original Message ------ > >>you want to serialize those data. >>You cannot be more decoupled than current serialization as it is purely >>declarative. > >Really? > >The mechanisms serialization gives you to control serialization are readObject, writeObject, readResolve, writeReplace, etc. Which are all purely imperative -- and couple state extraction / reconstruction with stream reading and writing. > >As a bonus, if you implement readObject (and any class with invariants must, or else it is broken), Not really: 1. It depends on the use case - in some of the use cases a class author can simply assume the state is valid after deserialization (similar to what happens when you hibernate/resume your laptop or take a virtual machine snapshot and recreate it on another machine) - paradoxically this strategy seems to be more secure than implementing custom readObject() as witnessed by many deserialization gadgets with broken readObject() implementation. 2. You can implement writeReplace()/readResolve() pair (which is exactly what is in the proposal + some syntactic sugar). 3. You can provide an invariant check method which would be called by the deserialization framework after the object is reconstructed (which I have done several times by overriding ObjectInputStream.resolveObject()) >you have to validate the arguments explicitly in readObject, and as a bonus, you get to do it in a completely different way than you do in the constructor. But - as I said in my first e-mail - *forcing* developers to implement writeReplace()/readResolve() pair (adding some syntactic sugar on top) is throwing the baby out with the bathwater. Why don't we simply make it easier to implement post-deserialization invariant checks? There is ObjectInputValidation interface - but its usage is so obscure that I have never seen it used. It can be as easy as adding a default method to Serializable: public Serializable { public default void readObjectValidate() throws InvalidObjectException {} } Simple, effective and backwards compatible. -- Michal From brian.goetz at oracle.com Thu Jun 13 13:37:34 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Thu, 13 Jun 2019 09:37:34 -0400 Subject: Towards better serialization In-Reply-To: References: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> <4d7169dc-4b9d-a4f2-8527-e8eefba59e8a@oracle.com> Message-ID: Having read through all of what you?ve written in this thread, let me summarize it more succinctly: ?There are users of serialization who have never used serialization in more than the most trivial manner, who have never been on the wrong side of a serialization vulnerability, and who really like the illusion of magic serialization dust that it provides. Please don?t take that away from us.? And, I get it; this is the siren song that led us to the serialization framework we have, with all its complexity and security pain. But I think we should learn from history. You?re arguing ?serialization is good enough?, or that small add-ons would solve the problem. Having been on the wrong side of too many serialization security issues, I disagree. As a public service announcement, let me point out how a rhetorical trick might be tripping you up: you use the word ?simply? everywhere, as in: > Why don't we simply make it easier (and others.) But there?s nothing simple about it; adding ?simply? serves only to make it sound simpler than it is ? and therein lies the danger. From michal at kleczek.org Thu Jun 13 16:24:52 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Thu, 13 Jun 2019 16:24:52 +0000 Subject: Towards better serialization In-Reply-To: References: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> <4d7169dc-4b9d-a4f2-8527-e8eefba59e8a@oracle.com> Message-ID: On 13/06/2019 15:37:34, "Brian Goetz" wrote: >Having read through all of what you?ve written in this thread, let me summarize it more succinctly: > >?There are users of serialization who have never used serialization in more than the most trivial manner, who have never been on the wrong side of a serialization vulnerability, and who really like the illusion of magic serialization dust that it provides. Please don?t take that away from us.? > >And, I get it; this is the siren song that led us to the serialization framework we have, with all its complexity and security pain. But I think we should learn from history. You?re arguing ?serialization is good enough?, or that small add-ons would solve the problem. Having been on the wrong side of too many serialization security issues, I disagree. > >As a public service announcement, let me point out how a rhetorical trick might be tripping you up: you use the word ?simply? everywhere, as in: > >> Why don't we simply make it easier > >(and others.) But there?s nothing simple about it; adding ?simply? serves only to make it sound simpler than it is ? and therein lies the danger. > The whole premise of the proposal we are discussing is that convenience is the root of all evil. But this convenience is actually the root of such a wide use of existing serialization. And yes - we mere mortals need this convenience. Taking it away will only cause popping up ad-hoc solutions that will be even worse. XStream anyone? Heck - I have even seen passing Spring XML via the network and recreating application context based on that! As you are surely aware of: _most_ serialization security vulnerabilities equally well apply to other serialization frameworks. The reason is that it is not serialization as such that is a security problem - and I was trying to point out that even the example from the discussed paper illustrates it. This deserialization gadget: class Gadget { final Delegate delegate; @Deserializer Gadget(String cl, String method, Object[] arguments) throws Throwable { this.delegate = (Delegate) Class.forName(cl).getMethod(method, getArgTypes(arguments)).invoke(null, arguments); } } is no less evil than the one that uses reflection in readObject() - even more so as it gives false sense of security by meeting some invariants. Summing it up: A "better" serialization framework needs to be: - at least as convenient - at least as flexible - more secure What we've got is: - less convenient - less flexible - no more secure PS: I am far from rhetorical tricks - English is not my native language and what might sound like a trick is just poor language usage from my side :) -- Michal From maurizio.cimadamore at oracle.com Thu Jun 13 20:02:37 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 13 Jun 2019 20:02:37 +0000 Subject: hg: amber/amber: 119 new changesets Message-ID: <201906132002.x5DK2hT3026564@aojmv0008.oracle.com> Changeset: 098fa5ddb308 Author: egahlin Date: 2019-06-06 22:31 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/098fa5ddb308 8219205: JFR file without license header Reviewed-by: mgronlun ! src/jdk.jfr/share/classes/jdk/jfr/internal/MirrorEvent.java Changeset: 759acbfb9fde Author: iignatyev Date: 2019-06-06 13:42 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/759acbfb9fde 8225450: use @file in CtwRunner Reviewed-by: kvn ! test/hotspot/jtreg/testlibrary/ctw/src/sun/hotspot/tools/ctw/CtwRunner.java Changeset: 5c7c3662c386 Author: bpb Date: 2019-06-06 14:13 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/5c7c3662c386 8224617: (fs) java/nio/file/FileStore/Basic.java found filesystem twice Reviewed-by: alanb ! test/jdk/java/nio/file/FileStore/Basic.java ! test/lib/jdk/test/lib/util/FileUtils.java Changeset: 1b17d09e3e05 Author: kvn Date: 2019-06-06 15:12 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1b17d09e3e05 8208379: compiler/jvmci/events/JvmciNotifyInstallEventTest.java failed with "Got unexpected event count after 2nd install attempt: expected 9 to equal 2" Reviewed-by: iignatyev ! test/hotspot/jtreg/compiler/jvmci/events/JvmciNotifyBootstrapFinishedEventTest.java ! test/hotspot/jtreg/compiler/jvmci/events/JvmciNotifyInstallEventTest.java Changeset: 64b76867851b Author: kvn Date: 2019-06-06 16:06 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/64b76867851b 8222371: Use UL for TraceNMethodInstalls code Reviewed-by: dholmes ! src/hotspot/share/ci/ciEnv.cpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/runtime/arguments.cpp Changeset: 8cd2d6dee328 Author: igerasim Date: 2019-06-06 17:20 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/8cd2d6dee328 8225397: Integer value miscalculation in toString() method of BitSet Reviewed-by: aph ! src/java.base/share/classes/java/util/BitSet.java + test/jdk/java/util/BitSet/HugeToString.java Changeset: 0a7af38ef32a Author: darcy Date: 2019-06-06 17:48 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/0a7af38ef32a 8225465: Add @jls tags to receiver type methods Reviewed-by: lancea, jjg ! src/java.base/share/classes/java/lang/reflect/Executable.java ! src/java.compiler/share/classes/javax/lang/model/element/ExecutableElement.java ! src/java.compiler/share/classes/javax/lang/model/type/ExecutableType.java Changeset: 5a5f83da57eb Author: dtitov Date: 2019-06-06 18:57 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/5a5f83da57eb 8206074: nsk/jdi/EventRequestManager/createStepRequest/crstepreq001/TestDescription.java is timing out Reviewed-by: cjplummer, gadams ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq001.java Changeset: 0d44bf1ead37 Author: egahlin Date: 2019-06-07 04:57 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/0d44bf1ead37 8224139: Deprecate -XX:FlightRecorder option Reviewed-by: mgronlun, mseledtsov ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp Changeset: 9772d90df0d0 Author: iignatyev Date: 2019-06-06 23:06 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/9772d90df0d0 8225469: clean up problem lists Reviewed-by: kvn ! test/hotspot/jtreg/ProblemList-graal.txt ! test/jdk/ProblemList-graal.txt Changeset: d59aec2ead21 Author: mbaesken Date: 2019-06-06 09:30 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/d59aec2ead21 8225402: events logging in deoptimization.cpp should go to deopt-log Reviewed-by: mdoerr, stuefe, coleenp ! src/hotspot/share/runtime/deoptimization.cpp Changeset: d868727d8f0b Author: jlahoda Date: 2019-06-07 10:09 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/d868727d8f0b 8223782: jshell parser should handle Text Blocks Summary: Completion analysis should detect text blocks properly. Reviewed-by: jlaskey, rfield ! src/jdk.jshell/share/classes/jdk/jshell/MaskCommentsAndModifiers.java ! test/langtools/jdk/jshell/CompletenessTest.java ! test/langtools/jdk/jshell/CompletionSuggestionTest.java Changeset: eaa1e236f305 Author: mdoerr Date: 2019-06-07 10:13 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/eaa1e236f305 8225347: [s390] Unexpected exit from stack overflow test Reviewed-by: simonis ! src/hotspot/cpu/s390/globals_s390.hpp Changeset: 07ff89762205 Author: pliden Date: 2019-06-07 11:19 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/07ff89762205 8225340: ZGC: Add logging of High Usage rule Reviewed-by: stefank, eosterlund ! src/hotspot/share/gc/z/zDirector.cpp Changeset: 4556dd808daa Author: pliden Date: 2019-06-07 11:19 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/4556dd808daa 8222145: Add -XX:SoftMaxHeapSize flag Reviewed-by: eosterlund, tschatzl ! src/hotspot/share/gc/shared/gcArguments.cpp ! src/hotspot/share/gc/shared/gc_globals.hpp ! src/hotspot/share/gc/shared/jvmFlagConstraintsGC.cpp ! src/hotspot/share/gc/shared/jvmFlagConstraintsGC.hpp + test/hotspot/jtreg/gc/arguments/TestSoftMaxHeapSizeFlag.java ! test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/TestOptionsWithRangesDynamic.java ! test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/common/optionsvalidation/JVMOption.java Changeset: 38006f020b94 Author: pliden Date: 2019-06-07 11:19 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/38006f020b94 8222182: ZGC: Use SoftMaxHeapSize to guide GC heuristics Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/z/zDirector.cpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeap.hpp ! src/hotspot/share/gc/z/zPageAllocator.cpp ! src/hotspot/share/gc/z/zPageAllocator.hpp Changeset: 9a120214e732 Author: pliden Date: 2019-06-07 11:19 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/9a120214e732 8222467: ZGC: Log min/max/softmax capacity Reviewed-by: stefank ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zStat.cpp ! src/hotspot/share/gc/z/zStat.hpp Changeset: 55319b27b346 Author: shade Date: 2019-06-07 11:47 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/55319b27b346 8225357: Rewire ShenandoahHeap::maybe_update_with_forwarded for contending fixups Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp Changeset: 09b09388f197 Author: shade Date: 2019-06-07 11:48 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/09b09388f197 8225441: Cleanup ShenandoahHeap::atomic_compare_exchange_oop Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp Changeset: ae41e1037bde Author: chegar Date: 2019-06-07 11:47 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/ae41e1037bde 8225424: Add jdk.net.usePlainSocketImpl runs to a couple of tests Reviewed-by: alanb ! test/jdk/java/net/SocketOption/AfterClose.java ! test/jdk/java/net/SocketOption/NullsAndBadValues.java Changeset: fe87ca416753 Author: chegar Date: 2019-06-07 11:51 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/fe87ca416753 8216988: ServerSocket.implAccept should include warnings about Socket type/state Reviewed-by: alanb ! src/java.base/share/classes/java/net/ServerSocket.java Changeset: ceabad800468 Author: jlaskey Date: 2019-06-07 08:47 -0300 URL: http://hg.openjdk.java.net/amber/amber/rev/ceabad800468 8225448: String::translateEscapes javadoc has accessibility issues Reviewed-by: jjg ! src/java.base/share/classes/java/lang/String.java Changeset: 47ee6c00d27c Author: mbaesken Date: 2019-06-05 16:53 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/47ee6c00d27c 8224958: add os::dll_load calls to event log Reviewed-by: dholmes, mdoerr, stuefe ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/solaris/os_solaris.cpp ! src/hotspot/os/windows/os_windows.cpp Changeset: f4b2d5b83ebf Author: erikj Date: 2019-06-07 09:16 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/f4b2d5b83ebf 8217739: Cannot reuse java.base UnixConstants.java from target in BuildJDK when cross compiling Reviewed-by: tbell, aoqi - make/CreateBuildJdkCopy.gmk ! make/ExplodedImageOptimize.gmk ! make/Main.gmk ! make/autoconf/buildjdk-spec.gmk.in ! make/common/MakeBase.gmk ! make/common/NativeCompilation.gmk ! make/gensrc/GensrcMisc.gmk Changeset: d19dc5b10fbb Author: never Date: 2019-06-07 10:26 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/d19dc5b10fbb 8209626: [JVMCI] Use implicit exception table for dispatch and printing Reviewed-by: kvn ! src/hotspot/share/aot/aotCompiledMethod.hpp ! src/hotspot/share/code/compiledMethod.cpp ! src/hotspot/share/code/compiledMethod.hpp ! src/hotspot/share/code/exceptionHandlerTable.cpp ! src/hotspot/share/code/exceptionHandlerTable.hpp ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/code/nmethod.hpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.cpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciJavaClasses.hpp ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/hotspot/share/jvmci/jvmciRuntime.hpp ! src/hotspot/share/runtime/sharedRuntime.cpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/MetadataBuilder.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaData.java Changeset: 3493c1bc59fd Author: lmesnik Date: 2019-06-07 12:26 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/3493c1bc59fd 8225388: Running jcmd Compiler.CodeHeap_Analytics all 0 cause crash. Reviewed-by: thartmann, sspitsyn ! src/hotspot/share/code/codeCache.cpp ! src/hotspot/share/code/codeCache.hpp ! src/hotspot/share/code/codeHeapState.cpp ! src/hotspot/share/code/codeHeapState.hpp ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/compiler/compileBroker.hpp ! src/hotspot/share/runtime/java.cpp ! src/hotspot/share/services/diagnosticCommand.cpp ! src/hotspot/share/services/diagnosticCommand.hpp + test/hotspot/jtreg/serviceability/dcmd/compiler/CodeHeapAnalyticsParams.java Changeset: 14283f280695 Author: kvn Date: 2019-06-07 13:57 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/14283f280695 8225350: compiler/jvmci/compilerToVM/IsCompilableTest.java timed out Reviewed-by: iignatyev ! test/hotspot/jtreg/compiler/jvmci/TestJVMCIPrintProperties.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsCompilableTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/MaterializeVirtualObjectTest.java ! test/hotspot/jtreg/compiler/jvmci/events/JvmciNotifyBootstrapFinishedEventTest.java ! test/hotspot/jtreg/compiler/jvmci/events/JvmciNotifyInstallEventTest.java ! test/hotspot/jtreg/runtime/appcds/GraalWithLimitedMetaspace.java Changeset: 357c9dcb6eb9 Author: ccheung Date: 2019-06-07 14:03 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/357c9dcb6eb9 8224497: Remove FIXME in metaspaceClosure.cpp Summary: Also cleaned up some comment and code related to the od (optional data) region. Reviewed-by: iklam, jiangli ! src/hotspot/share/memory/filemap.cpp ! src/hotspot/share/memory/metaspaceClosure.cpp ! src/hotspot/share/memory/metaspaceShared.cpp ! src/hotspot/share/memory/metaspaceShared.hpp Changeset: fd61ef6c4091 Author: jjg Date: 2019-06-07 14:32 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/fd61ef6c4091 8224257: fix issues in files generated by pandoc Reviewed-by: mchung ! make/jdk/src/classes/build/tools/fixuppandoc/Main.java Changeset: 1fe17d2be502 Author: dlong Date: 2019-06-07 18:11 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/1fe17d2be502 8223050: JVMCI: findUniqueConcreteMethod() should not use Dependencies::find_unique_concrete_method() for non-virtual methods Reviewed-by: kvn, dnsimon ! src/hotspot/share/code/dependencies.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/FindUniqueConcreteMethodTest.java Changeset: 40320fb1920a Author: sviswanathan Date: 2019-06-07 15:35 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/40320fb1920a 8224234: compiler/codegen/TestCharVect2.java fails in test_mulc Reviewed-by: vlivanov, thartmann ! src/hotspot/cpu/x86/x86.ad Changeset: 1e0b948cc122 Author: jjg Date: 2019-06-07 16:38 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1e0b948cc122 8224257: fix issues in files generated by pandoc Reviewed-by: mchung ! make/jdk/src/classes/build/tools/fixuppandoc/Main.java Changeset: a9188ba494a3 Author: iignatyev Date: 2019-06-07 21:35 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/a9188ba494a3 8149040: Cleanup compiler/jsr292/NonInlinedCall tests after JDK-8148994 Reviewed-by: kvn, thartmann - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java ! test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/InvokeTest.java ! test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/RedefineTest.java ! test/hotspot/jtreg/compiler/jsr292/patches/java.base/java/lang/invoke/MethodHandleHelper.java Changeset: 686dedba1d9a Author: egahlin Date: 2019-06-09 11:28 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/686dedba1d9a 8216064: -XX:StartFlightRecording:settings= doesn't work properly Reviewed-by: mgronlun ! src/hotspot/share/jfr/dcmd/jfrDcmds.cpp ! src/hotspot/share/jfr/jni/jfrJavaCall.cpp ! src/hotspot/share/jfr/jni/jfrJavaSupport.cpp ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStart.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/jfc/JFC.java + test/jdk/jdk/jfr/startupargs/TestStartNoSettings.java Changeset: fcc702f17582 Author: lancea Date: 2019-06-09 05:56 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/fcc702f17582 8225322: Broken links in java.sql Reviewed-by: darcy, jjg ! src/java.sql/share/classes/java/sql/package-info.java ! src/java.sql/share/classes/javax/sql/package-info.java Changeset: 84b9996abbee Author: darcy Date: 2019-06-09 15:21 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/84b9996abbee 8181869: getAnnotatedParameterTypes%G?%@() specification should be clarified Reviewed-by: lancea ! src/java.base/share/classes/java/lang/reflect/Executable.java Changeset: 6e432194ee97 Author: darcy Date: 2019-06-09 15:48 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/6e432194ee97 8042748: Clarify exception thrown by ParameterizedTypeImpl.validateConstructorArguments() Reviewed-by: lancea ! src/java.base/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java Changeset: ea43db53de91 Author: jlahoda Date: 2019-06-10 05:09 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/ea43db53de91 8223305: Compiler support for Switch Expressions Reviewed-by: mcimadamore, vromero ! src/java.compiler/share/classes/javax/lang/model/SourceVersion.java ! src/jdk.compiler/share/classes/com/sun/source/tree/BreakTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java + src/jdk.compiler/share/classes/com/sun/source/tree/YieldTree.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Kinds.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ArgumentAttr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/AttrContext.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TreeDiffer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Log.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! test/langtools/tools/javac/diags/examples/BracketsNotAllowedImplicitLambda.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java ! test/langtools/tools/javac/diags/examples/FutureVarNotAllowed.java + test/langtools/tools/javac/diags/examples/IllegalRefToRestrictedType.java ! test/langtools/tools/javac/diags/examples/IllegalRefToVarType.java + test/langtools/tools/javac/diags/examples/InvalidYield.java + test/langtools/tools/javac/diags/examples/InvalidYieldWarning.java + test/langtools/tools/javac/diags/examples/NoSwitchExpression.java + test/langtools/tools/javac/diags/examples/NoSwitchExpressionQualify.java + test/langtools/tools/javac/diags/examples/RestrictedTypeNotAllowedPreview.java ! test/langtools/tools/javac/diags/examples/SwitchExpressions.java ! test/langtools/tools/javac/diags/examples/VarNotAllowed.java ! test/langtools/tools/javac/diags/examples/VarNotAllowedArray.java ! test/langtools/tools/javac/diags/examples/VarNotAllowedCompound.java ! test/langtools/tools/javac/diags/examples/VarNotAllowedHere.java ! test/langtools/tools/javac/expswitch/ExpSwitchNestingTest.java ! test/langtools/tools/javac/lambda/deduplication/Deduplication.java ! test/langtools/tools/javac/lambda/deduplication/DeduplicationTest.java ! test/langtools/tools/javac/lib/DPrinter.java ! test/langtools/tools/javac/lvti/ParserTest.out ! test/langtools/tools/javac/lvti/ParserTest9.out ! test/langtools/tools/javac/lvti/badTypeReference/BadTypeReference.out ! test/langtools/tools/javac/parser/JavacParserTest.java ! test/langtools/tools/javac/switchexpr/BreakTest.java ! test/langtools/tools/javac/switchexpr/DefiniteAssignment1.java ! test/langtools/tools/javac/switchexpr/DefiniteAssignment2.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitch.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchBreaks1.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchBreaks2.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchBreaks2.out ! test/langtools/tools/javac/switchexpr/ExpressionSwitchBugs.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchDA.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchEmbedding.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchFallThrough.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchFallThrough1.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchFlow.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchInExpressionSwitch.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchInfer.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchNotExhaustive.java + test/langtools/tools/javac/switchexpr/ExpressionSwitchToString.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitchUnreachable.java ! test/langtools/tools/javac/switchexpr/ParseIncomplete.java ! test/langtools/tools/javac/switchexpr/SwitchExpressionIsNotAConstant.java ! test/langtools/tools/javac/switchexpr/SwitchExpressionScopesIsolated.java ! test/langtools/tools/javac/switchexpr/SwitchExpressionSimpleVisitorTest.java ! test/langtools/tools/javac/switchexpr/TryCatch.java + test/langtools/tools/javac/switchexpr/WarnWrongYieldTest.java + test/langtools/tools/javac/switchexpr/WarnWrongYieldTest.out + test/langtools/tools/javac/switchexpr/WrongBreakTest.java + test/langtools/tools/javac/switchexpr/WrongBreakTest.out + test/langtools/tools/javac/switchexpr/WrongYieldTest.java + test/langtools/tools/javac/switchexpr/WrongYieldTest.out + test/langtools/tools/javac/switchextra/DefiniteAssignment1.java + test/langtools/tools/javac/switchextra/DefiniteAssignment2.java + test/langtools/tools/javac/switchextra/DefiniteAssignment2.out ! test/langtools/tools/javac/switchextra/MultipleLabelsExpression.java ! test/langtools/tools/javac/var_implicit_lambda/VarInImplicitLambdaNegTest01.out ! test/langtools/tools/javac/var_implicit_lambda/VarInImplicitLambdaNegTest01_source10.out Changeset: ed12027517c0 Author: neliasso Date: 2019-02-14 14:54 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/ed12027517c0 8224675: Late GC barrier insertion for ZGC Reviewed-by: roland, eosterlund, pliden ! src/hotspot/cpu/x86/gc/z/z_x86_64.ad ! src/hotspot/share/adlc/formssel.cpp ! src/hotspot/share/compiler/compilerDirectives.hpp ! src/hotspot/share/gc/shared/c2/barrierSetC2.hpp ! src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp ! src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp ! src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/z_globals.hpp ! src/hotspot/share/opto/classes.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/idealGraphPrinter.cpp ! src/hotspot/share/opto/idealGraphPrinter.hpp ! src/hotspot/share/opto/lcm.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/memnode.cpp ! src/hotspot/share/opto/memnode.hpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/node.hpp ! src/hotspot/share/opto/phaseX.cpp ! src/hotspot/share/opto/phasetype.hpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/runtime/stackValue.cpp ! src/hotspot/share/utilities/growableArray.hpp Changeset: 871bc449ce06 Author: stefank Date: 2019-06-07 13:50 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/871bc449ce06 8223837: Add -XX:MinHeapSize flag to set the minimum heap size Reviewed-by: pliden, tschatzl ! src/hotspot/share/gc/shared/gcArguments.cpp ! src/hotspot/share/gc/shared/gcArguments.hpp ! src/hotspot/share/gc/shared/gc_globals.hpp ! src/hotspot/share/gc/shared/genArguments.cpp ! src/hotspot/share/gc/shared/jvmFlagConstraintsGC.cpp ! src/hotspot/share/gc/shared/jvmFlagConstraintsGC.hpp ! src/hotspot/share/runtime/arguments.cpp ! test/hotspot/jtreg/gc/arguments/TestMaxHeapSizeTools.java Changeset: 8081b181bba8 Author: dfuchs Date: 2019-06-10 11:17 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/8081b181bba8 8224865: Replace wildcard address with loopback or local host in tests - part 13 Summary: Fixes intermittent failures observed in some network tests Reviewed-by: chegar ! test/jdk/com/sun/net/httpserver/Test1.java ! test/jdk/com/sun/net/httpserver/bugs/B6373555.java ! test/jdk/com/sun/net/httpserver/bugs/B6401598.java ! test/jdk/com/sun/net/httpserver/bugs/B6431193.java ! test/jdk/com/sun/net/httpserver/bugs/B6433018.java ! test/jdk/com/sun/net/httpserver/bugs/B8211420.java ! test/jdk/java/net/ResponseCache/Test2.java ! test/jdk/java/net/URL/GetContent.java ! test/jdk/sun/net/www/http/HttpClient/StreamingRetry.java ! test/jdk/sun/net/www/protocol/http/DigestTest.java ! test/jdk/sun/net/www/protocol/http/RelativeRedirect.java Changeset: 966a51af2986 Author: pliden Date: 2019-06-10 12:52 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/966a51af2986 8224966: ZGC: Don't skip oop verification in OopMapSet::all_do() Reviewed-by: stefank, eosterlund ! src/hotspot/share/compiler/oopMap.cpp Changeset: d60b24a09900 Author: pliden Date: 2019-06-10 12:52 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/d60b24a09900 8225227: ZGC: Be exact in what load barrier to use in ZHeapIterator Reviewed-by: stefank ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeapIterator.cpp ! src/hotspot/share/gc/z/zHeapIterator.hpp Changeset: d8942f5d6c75 Author: weijun Date: 2019-06-10 20:38 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/d8942f5d6c75 8221719: Jarsigner fails to verify signed by alias if alias given in wrong case Reviewed-by: weijun Contributed-by: Philipp Kunz ! src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Main.java + test/jdk/sun/security/tools/jarsigner/JavaKeyStoreAliasCaseInsensitive.java Changeset: f72f801b00bd Author: hseigel Date: 2019-06-10 09:52 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/f72f801b00bd 8224952: RI deviates from JVMS - non-zero minor_version for class files throws UnsupportedClassVersionError. Summary: Change the JVM to follow the JVM Spec and accept non-zero minor_version for appropriate older class file versions. Reviewed-by: acorn, dholmes, iignatyev ! src/hotspot/share/classfile/classFileParser.cpp ! test/hotspot/jtreg/runtime/ClassFile/PreviewVersion.java Changeset: 811df7c64724 Author: dpochepk Date: 2019-06-10 17:02 +0300 URL: http://hg.openjdk.java.net/amber/amber/rev/811df7c64724 8222412: AARCH64: multiple instructions encoding issues Reviewed-by: aph + src/hotspot/cpu/aarch64/aarch64-asmtest.py ! src/hotspot/cpu/aarch64/assembler_aarch64.cpp ! src/hotspot/cpu/aarch64/assembler_aarch64.hpp ! src/hotspot/cpu/aarch64/register_aarch64.hpp Changeset: 4cf21c5c956a Author: dtitov Date: 2019-06-10 09:41 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/4cf21c5c956a 8222828: vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x004/TestDescription.java failed Reviewed-by: cjplummer, gadams, jcbeyler ! test/hotspot/jtreg/vmTestbase/nsk/jdi/BScenarios/multithrd/tc02x004.java Changeset: 218f5a414379 Author: zgu Date: 2019-06-10 13:42 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/218f5a414379 8225514: Shenandoah: ShenandoahCodeRoots should inherit from AllStatic Reviewed-by: shade ! src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.hpp Changeset: b76aee290002 Author: dnsimon Date: 2019-06-10 15:55 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/b76aee290002 8225492: Update JVMCI Reviewed-by: iveresov, kvn ! src/hotspot/share/jvmci/jvmciRuntime.cpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.runtime/src/jdk/vm/ci/runtime/JVMCI.java Changeset: 040e1c6dab96 Author: darcy Date: 2019-06-10 15:53 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/040e1c6dab96 8225532: Update source enums to describe 12 and 13 language features Reviewed-by: jjg ! src/java.compiler/share/classes/javax/lang/model/SourceVersion.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java Changeset: c6498066a0a5 Author: smarks Date: 2019-06-10 17:33 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/c6498066a0a5 8205131: remove Runtime trace methods Reviewed-by: lancea, rriggs, iklam ! src/java.base/share/classes/java/lang/Runtime.java ! test/jaxp/javax/xml/jaxp/unittest/transform/ProcessXSLT.java ! test/jdk/java/rmi/activation/CommandEnvironment/SetChildEnv.java ! test/jdk/sun/rmi/log/ReliableLog/Recovery.java Changeset: 670b4794f51e Author: iignatyev Date: 2019-06-10 17:11 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/670b4794f51e 8209917: fix TODO in GatherDiagnosticInfoObserver Reviewed-by: jjg, dholmes ! test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherDiagnosticInfoObserver.java Changeset: ddda023e6f66 Author: neliasso Date: 2019-06-11 09:27 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/ddda023e6f66 8225509: clean_catch_blocks must add preds first Reviewed-by: kvn ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Changeset: bc5baf205475 Author: mdoerr Date: 2019-06-11 09:51 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/bc5baf205475 8224826: Implement fast class initialization checks on PPC64 Reviewed-by: vlivanov, gromero ! src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp ! src/hotspot/cpu/ppc/interp_masm_ppc.hpp ! src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.hpp ! src/hotspot/cpu/ppc/ppc.ad ! src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp ! src/hotspot/cpu/ppc/templateTable_ppc_64.cpp ! src/hotspot/cpu/ppc/vm_version_ppc.hpp Changeset: fc4042870cc4 Author: chegar Date: 2019-06-11 09:21 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/fc4042870cc4 8225426: Replace plain with system-default in Socket and ServerSocket Reviewed-by: alanb, dfuchs ! src/java.base/share/classes/java/net/ServerSocket.java ! src/java.base/share/classes/java/net/Socket.java Changeset: b42cadf7eb4a Author: rraghavan Date: 2019-06-11 14:33 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/b42cadf7eb4a 8225567: Wrong file headers with 8202414 fix changeset Summary: Corrected source file headers Reviewed-by: thartmann ! src/hotspot/share/opto/memnode.cpp ! test/hotspot/jtreg/compiler/c2/Test8202414.java Changeset: 24c59b1579d7 Author: eosterlund Date: 2019-06-11 10:55 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/24c59b1579d7 8224871: os::attempt_reserve_memory_at() tries too hard Reviewed-by: pliden, coleenp, stuefe ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/solaris/os_solaris.cpp Changeset: 50270ff05a65 Author: neliasso Date: 2019-06-11 12:39 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/50270ff05a65 8225564: Remove wrong assert in clean_catch_blocks Reviewed-by: thartmann ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Changeset: 27e810f1f8a3 Author: dholmes Date: 2019-06-11 08:03 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/27e810f1f8a3 8225568: ProblemList compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest.java Reviewed-by: thartmann ! test/hotspot/jtreg/ProblemList.txt Changeset: d9a157f6fd71 Author: coleenp Date: 2019-06-11 07:31 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/d9a157f6fd71 8224847: gc/stress/TestReclaimStringsLeaksMemory.java fails with reserved greater than expected Summary: Rehash threshold was too low for StringTable, and rehashed size table was too large. Reviewed-by: rehn, gziemski ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/symbolTable.cpp ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/gc/stress/TestReclaimStringsLeaksMemory.java Changeset: 03af124751f5 Author: aph Date: 2019-06-10 10:11 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/03af124751f5 8225429: Regression in disassembly quality Reviewed-by: never ! src/hotspot/share/asm/codeBuffer.hpp ! src/hotspot/share/compiler/abstractDisassembler.cpp ! src/hotspot/share/compiler/disassembler.cpp Changeset: 1fef7d9309a9 Author: dfuchs Date: 2019-06-11 15:46 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/1fef7d9309a9 8225512: Replace wildcard address with loopback or local host in tests - part 15 Summary: Updates httpserver tests to use the loopback instead of the wildcard wherever possible. Reviewed-by: michaelm ! test/jdk/com/sun/net/httpserver/MissingTrailingSpace.java ! test/jdk/com/sun/net/httpserver/Test10.java ! test/jdk/com/sun/net/httpserver/Test11.java ! test/jdk/com/sun/net/httpserver/Test12.java ! test/jdk/com/sun/net/httpserver/Test13.java ! test/jdk/com/sun/net/httpserver/Test14.java ! test/jdk/com/sun/net/httpserver/Test2.java ! test/jdk/com/sun/net/httpserver/Test3.java ! test/jdk/com/sun/net/httpserver/Test4.java ! test/jdk/com/sun/net/httpserver/Test5.java ! test/jdk/com/sun/net/httpserver/Test6.java ! test/jdk/com/sun/net/httpserver/Test7.java ! test/jdk/com/sun/net/httpserver/Test7a.java ! test/jdk/com/sun/net/httpserver/Test8.java ! test/jdk/com/sun/net/httpserver/Test8a.java ! test/jdk/com/sun/net/httpserver/Test9.java ! test/jdk/com/sun/net/httpserver/Test9a.java ! test/jdk/com/sun/net/httpserver/TestLogging.java ! test/jdk/com/sun/net/httpserver/bugs/B6339483.java ! test/jdk/com/sun/net/httpserver/bugs/B6341616.java ! test/jdk/com/sun/net/httpserver/bugs/B6393710.java ! test/jdk/com/sun/net/httpserver/bugs/B6526158.java ! test/jdk/com/sun/net/httpserver/bugs/B6526913.java ! test/jdk/com/sun/net/httpserver/bugs/B6529200.java ! test/jdk/com/sun/net/httpserver/bugs/B6744329.java ! test/jdk/com/sun/net/httpserver/bugs/B6886436.java ! test/jdk/com/sun/net/httpserver/bugs/FixedLengthInputStream.java ! test/jdk/com/sun/net/httpserver/bugs/HeadTest.java ! test/jdk/com/sun/net/httpserver/bugs/TruncatedRequestBody.java Changeset: dbf5cda9843d Author: lancea Date: 2019-06-11 13:04 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/dbf5cda9843d 8225189: Multiple JNI calls within critical region in ZIP Library Reviewed-by: alanb ! src/java.base/share/native/libzip/Deflater.c ! src/java.base/share/native/libzip/Inflater.c Changeset: f492567244ab Author: valeriep Date: 2019-06-11 21:30 +0000 URL: http://hg.openjdk.java.net/amber/amber/rev/f492567244ab 8080462: Update SunPKCS11 provider with PKCS11 v2.40 support Summary: Added support for GCM, PSS, and other mechanisms Reviewed-by: jnimeh + src/java.base/share/classes/sun/security/util/GCMParameters.java + src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11AEADCipher.java + src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11PSSSignature.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11RSACipher.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java + src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/CK_CCM_PARAMS.java + src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/CK_GCM_PARAMS.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/CK_MECHANISM.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/CK_RSA_PKCS_PSS_PARAMS.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/Functions.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/PKCS11.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/PKCS11Constants.java ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/wrapper/PKCS11Exception.java ! src/jdk.crypto.cryptoki/share/legal/pkcs11cryptotoken.md ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_crypt.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_digest.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_general.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_keymgmt.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_mutex.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sign.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11.h ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11f.h ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11t.h ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h + test/jdk/sun/security/pkcs11/Cipher/Test4512704.java + test/jdk/sun/security/pkcs11/Cipher/TestCICOWithGCM.java + test/jdk/sun/security/pkcs11/Cipher/TestCICOWithGCMAndAAD.java + test/jdk/sun/security/pkcs11/Cipher/TestGCMKeyAndIvCheck.java + test/jdk/sun/security/pkcs11/Cipher/TestKATForGCM.java ! test/jdk/sun/security/pkcs11/MessageDigest/ByteBuffers.java + test/jdk/sun/security/pkcs11/Signature/InitAgainPSS.java + test/jdk/sun/security/pkcs11/Signature/KeyAndParamCheckForPSS.java + test/jdk/sun/security/pkcs11/Signature/SigInteropPSS.java + test/jdk/sun/security/pkcs11/Signature/SignatureTestPSS.java + test/jdk/sun/security/pkcs11/Signature/TestDSA2.java Changeset: 75f47593d244 Author: jjg Date: 2019-06-11 14:56 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/75f47593d244 8214399: Javap -help should provide information about --multi-release option Reviewed-by: jlahoda ! src/jdk.jdeps/share/classes/com/sun/tools/javap/JavapTask.java ! src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap.properties Changeset: ff74a3c584e5 Author: iignatyev Date: 2019-06-11 14:59 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/ff74a3c584e5 8066173: compiler/types/correctness/OffTest.java failed with assert Reviewed-by: kvn ! test/hotspot/jtreg/ProblemList.txt Changeset: f7cc25dda38a Author: zgu Date: 2019-06-11 19:15 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/f7cc25dda38a 8225572: Shenandoah: Move JNIHandles root out of serial roots Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahRootVerifier.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootVerifier.hpp Changeset: c2398053ee90 Author: ascarpino Date: 2019-06-11 16:31 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/c2398053ee90 8211018: Session Resumption without Server-Side State Reviewed-by: xuelei, jnimeh, jjiang ! src/java.base/share/classes/sun/security/ssl/ClientHello.java ! src/java.base/share/classes/sun/security/ssl/Finished.java ! src/java.base/share/classes/sun/security/ssl/HandshakeContext.java ! src/java.base/share/classes/sun/security/ssl/NewSessionTicket.java ! src/java.base/share/classes/sun/security/ssl/PreSharedKeyExtension.java ! src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java ! src/java.base/share/classes/sun/security/ssl/SSLExtension.java ! src/java.base/share/classes/sun/security/ssl/SSLHandshake.java ! src/java.base/share/classes/sun/security/ssl/SSLSessionContextImpl.java ! src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java ! src/java.base/share/classes/sun/security/ssl/ServerHello.java ! src/java.base/share/classes/sun/security/ssl/SessionId.java + src/java.base/share/classes/sun/security/ssl/SessionTicketExtension.java ! src/java.base/share/classes/sun/security/ssl/TransportContext.java ! test/jdk/javax/net/ssl/DTLS/PacketLossRetransmission.java ! test/jdk/javax/net/ssl/SSLSession/SSLCtxAccessToSessCtx.java ! test/jdk/sun/security/ssl/DHKeyExchange/DHEKeySizing.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksClient.java + test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksClientStateless.java ! test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksServer.java + test/jdk/sun/security/ssl/SSLSessionImpl/ResumeChecksServerStateless.java Changeset: ae3dbc712839 Author: darcy Date: 2019-06-11 17:20 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/ae3dbc712839 7086604: (reflect) Clarifications to javadoc for getGeneric*Type methods in j.l.r Reviewed-by: lancea, abuckley ! src/java.base/share/classes/java/lang/Class.java ! src/java.base/share/classes/java/lang/reflect/Executable.java ! src/java.base/share/classes/java/lang/reflect/Field.java ! src/java.base/share/classes/java/lang/reflect/Method.java ! src/java.base/share/classes/java/lang/reflect/TypeVariable.java Changeset: 755e82641224 Author: sangheki Date: 2019-06-12 10:34 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/755e82641224 8225478: Make G1CMRootRegions independent of HeapRegions Summary: Remove dependency of HeapRegion from G1CMRootRegions class Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/memory/memRegion.hpp Changeset: 0530705ca300 Author: hannesw Date: 2019-06-12 13:21 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/0530705ca300 8223364: Bad placement of anchor relative to header Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css ! test/langtools/jdk/javadoc/doclet/testAnnotationTypes/TestAnnotationTypes.java ! test/langtools/jdk/javadoc/doclet/testHref/TestHref.java ! test/langtools/jdk/javadoc/doclet/testHtmlVersion/TestHtmlVersion.java ! test/langtools/jdk/javadoc/doclet/testInterface/TestInterface.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java ! test/langtools/jdk/javadoc/doclet/testMemberSummary/TestMemberSummary.java ! test/langtools/jdk/javadoc/doclet/testOptions/TestOptions.java ! test/langtools/jdk/javadoc/doclet/testOrdering/TestOrdering.java ! test/langtools/jdk/javadoc/doclet/testOverriddenMethods/TestBadOverride.java ! test/langtools/jdk/javadoc/doclet/testSummaryTag/TestSummaryTag.java ! test/langtools/jdk/javadoc/doclet/testTypeParams/TestTypeParameters.java Changeset: ef577fa0dd10 Author: jlahoda Date: 2019-06-12 13:49 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/ef577fa0dd10 8220018: javac crash when compiling try-catch-finally inside switch expression Summary: Correcting handling of finally that yields from a switch expression. Reviewed-by: mcimadamore, jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java + test/langtools/tools/javac/switchexpr/TryCatchFinally.java Changeset: c63b9b87c28a Author: thartmann Date: 2019-06-12 14:06 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/c63b9b87c28a 8224658: Unsafe access C2 compile fails with assert(flat != TypePtr::BOTTOM) failed: cannot alias-analyze an untyped ptr: adr_type = NULL Summary: Handle unsafe off-heap access with constant zero address. Reviewed-by: vlivanov, roland ! src/hotspot/share/opto/graphKit.hpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/memnode.cpp ! src/hotspot/share/opto/output.cpp + test/hotspot/jtreg/compiler/unsafe/TestUnsafeLoadWithZeroAddress.java Changeset: 596ae6c3ef6f Author: mdoerr Date: 2019-06-12 14:21 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/596ae6c3ef6f 8223249: [s390] Cleanup TemplateInterpreterGenerator::generate_fixed_frame Reviewed-by: coleenp, gromero ! src/hotspot/cpu/s390/interp_masm_s390.cpp ! src/hotspot/cpu/s390/macroAssembler_s390.cpp ! src/hotspot/cpu/s390/macroAssembler_s390.hpp ! src/hotspot/cpu/s390/templateInterpreterGenerator_s390.cpp Changeset: 03d417fd7d9a Author: mdoerr Date: 2019-06-12 14:22 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/03d417fd7d9a 8224827: Implement fast class initialization checks on s390 Reviewed-by: vlivanov, gromero ! src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp ! src/hotspot/cpu/s390/interp_masm_s390.cpp ! src/hotspot/cpu/s390/interp_masm_s390.hpp ! src/hotspot/cpu/s390/macroAssembler_s390.cpp ! src/hotspot/cpu/s390/macroAssembler_s390.hpp ! src/hotspot/cpu/s390/s390.ad ! src/hotspot/cpu/s390/sharedRuntime_s390.cpp ! src/hotspot/cpu/s390/templateTable_s390.cpp ! src/hotspot/cpu/s390/vm_version_s390.hpp Changeset: 0c20dbc3d547 Author: mdoerr Date: 2019-06-12 14:24 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/0c20dbc3d547 8224090: [PPC64] Fix SLP patterns for filling an array with double float literals Reviewed-by: mdoerr, simonis Contributed-by: Kazunori Ogata ! src/hotspot/cpu/ppc/ppc.ad Changeset: 492b644bb9c2 Author: dcubed Date: 2019-06-12 10:52 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/492b644bb9c2 8225453: is_busy diagnostics and other baseline cleanups from Async Monitor Deflation project Reviewed-by: dholmes, rehn, coleenp ! src/hotspot/share/runtime/objectMonitor.cpp ! src/hotspot/share/runtime/objectMonitor.hpp ! src/hotspot/share/runtime/objectMonitor.inline.hpp ! src/hotspot/share/runtime/synchronizer.cpp Changeset: 730ed3fc6605 Author: chegar Date: 2019-06-12 16:10 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/730ed3fc6605 8225651: Missed the `@` in a couple of code tags of SocketImpl Reviewed-by: alanb, dfuchs ! src/java.base/share/classes/java/net/SocketImpl.java Changeset: 466d6e2d2ddf Author: kvn Date: 2019-06-12 10:37 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/466d6e2d2ddf 8223796: JVMCIEnv::get_jvmci_type does not keep klasses alive Reviewed-by: iveresov, eosterlund ! src/hotspot/share/jvmci/jvmciEnv.cpp Changeset: d109188f6480 Author: ccheung Date: 2019-06-12 10:45 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/d109188f6480 8224710: [TESTBUG] dynamicArchive/ExcludedClasses.java test failed in tier6 testing on Windows Summary: Account for the failure in loading of the base archive in CDSTestUtils::isUnableToMap(). Reviewed-by: jiangli, iklam ! src/hotspot/share/memory/metaspace.cpp ! test/lib/jdk/test/lib/cds/CDSTestUtils.java Changeset: 139f21bad9fd Author: iignatyev Date: 2019-06-12 11:48 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/139f21bad9fd 8158048: Fix failure message from jtreg gtest wrapper Reviewed-by: kvn, mseledtsov + test/hotspot/jtreg/gtest/GTestResultParser.java ! test/hotspot/jtreg/gtest/GTestWrapper.java Changeset: 1224b16c8ff4 Author: epavlova Date: 2019-06-12 12:31 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1224b16c8ff4 8225622: [AOT] runtime/SharedArchiveFile/TestInterpreterMethodEntries.java crashed with AOTed java.base Reviewed-by: kvn ! test/hotspot/jtreg/runtime/SharedArchiveFile/TestInterpreterMethodEntries.java Changeset: 8038250f9939 Author: darcy Date: 2019-06-12 14:14 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/8038250f9939 8225675: Outdated citation of JLS in java.lang.ref.Reference Reviewed-by: lancea, jjg, mchung ! src/java.base/share/classes/java/lang/ref/Reference.java Changeset: 1357c4996b2e Author: hannesw Date: 2019-06-12 23:21 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/1357c4996b2e 8225671: Support HTML 5 character references in javadoc Reviewed-by: jjg ! src/jdk.compiler/share/classes/com/sun/tools/doclint/Entity.java ! src/jdk.compiler/share/classes/jdk/internal/shellsupport/doc/JavadocFormatter.java ! test/langtools/tools/doclint/CoverageExtras.java ! test/langtools/tools/doclint/html/EntitiesTest.java ! test/langtools/tools/doclint/html/EntitiesTest.out Changeset: 946f7f2d321c Author: wetmore Date: 2019-06-12 18:58 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/946f7f2d321c 8171279: Support X25519 and X448 in TLS Reviewed-by: xuelei, mullan ! src/java.base/share/classes/sun/security/ssl/CipherSuite.java ! src/java.base/share/classes/sun/security/ssl/DHClientKeyExchange.java ! src/java.base/share/classes/sun/security/ssl/DHKeyExchange.java ! src/java.base/share/classes/sun/security/ssl/DHServerKeyExchange.java ! src/java.base/share/classes/sun/security/ssl/ECDHClientKeyExchange.java ! src/java.base/share/classes/sun/security/ssl/ECDHKeyExchange.java ! src/java.base/share/classes/sun/security/ssl/ECDHServerKeyExchange.java ! src/java.base/share/classes/sun/security/ssl/ECPointFormatsExtension.java ! src/java.base/share/classes/sun/security/ssl/HandshakeContext.java + src/java.base/share/classes/sun/security/ssl/KAKeyDerivation.java ! src/java.base/share/classes/sun/security/ssl/KeyShareExtension.java + src/java.base/share/classes/sun/security/ssl/NamedGroup.java + src/java.base/share/classes/sun/security/ssl/NamedGroupCredentials.java + src/java.base/share/classes/sun/security/ssl/NamedGroupPossession.java ! src/java.base/share/classes/sun/security/ssl/SSLExtension.java ! src/java.base/share/classes/sun/security/ssl/SSLKeyExchange.java ! src/java.base/share/classes/sun/security/ssl/SSLSocketInputRecord.java ! src/java.base/share/classes/sun/security/ssl/SignatureScheme.java ! src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtension.java ! src/java.base/share/classes/sun/security/ssl/TransportContext.java ! src/java.base/share/classes/sun/security/ssl/Utilities.java ! src/java.base/share/classes/sun/security/ssl/X509Authentication.java + src/java.base/share/classes/sun/security/ssl/XDHKeyExchange.java ! src/jdk.crypto.ec/share/classes/sun/security/ec/XDHKeyAgreement.java ! src/jdk.crypto.ec/share/classes/sun/security/ec/XECParameters.java ! test/jdk/javax/net/ssl/templates/SSLSocketTemplate.java + test/jdk/sun/security/ssl/CipherSuite/SupportedGroups.java Changeset: 74f0622db875 Author: weijun Date: 2019-06-13 10:06 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/74f0622db875 6722928: Support SSPI as a native GSS-API provider Reviewed-by: erikj, nwilliams, valeriep ! make/lib/Lib-java.security.jgss.gmk ! src/java.security.jgss/share/classes/sun/security/jgss/spnego/NegTokenTarg.java ! src/java.security.jgss/share/classes/sun/security/jgss/wrapper/SunNativeProvider.java ! src/java.security.jgss/share/native/libj2gss/GSSLibStub.c ! src/java.security.jgss/share/native/libj2gss/NativeFunc.h ! src/java.security.jgss/share/native/libj2gss/NativeUtil.h ! src/java.security.jgss/share/native/libj2gss/gssapi.h + src/java.security.jgss/windows/native/libsspi_bridge/sspi.cpp Changeset: bd2f0954cbb9 Author: iignatyev Date: 2019-06-12 21:17 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/bd2f0954cbb9 8208236: [TESTBUG] vmTestbase/nsk/stress/stack tests fail by timeout Reviewed-by: dholmes ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack001.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack002.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack003.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack004.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack005.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack006.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack007.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack008.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack009.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack010.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack011.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack012.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack013.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack014.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack015.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack016.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack017.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack018.java ! test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack019.java Changeset: 03c98877f3bd Author: iignatyev Date: 2019-06-12 17:22 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/03c98877f3bd 8225676: cleanup hotspot ProblemList Reviewed-by: dholmes ! test/hotspot/jtreg/ProblemList-graal.txt ! test/hotspot/jtreg/ProblemList.txt Changeset: 6c8d5d0e1be4 Author: tnakamura Date: 2019-06-13 08:42 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/6c8d5d0e1be4 8224184: jshell got IOException at exiting with AIX Reviewed-by: rfield, jlahoda ! src/jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/ExecPty.java + test/langtools/jdk/jshell/ExecPtyGetFlagsToSetTest.java Changeset: 28f4594b19c2 Author: ronsh Date: 2019-06-13 08:42 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/28f4594b19c2 8224161: Check.checkOverrideClashes n^2 algorithm Summary: Caching type's members in Check.checkOverrideClashes to improve performance. Reviewed-by: mcimadamore, jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Changeset: ef91ba2e6cff Author: ssadetsky Date: 2019-06-03 08:13 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/ef91ba2e6cff 8196096: javax/swing/JPopupMenu/6580930/bug6580930.java fails Reviewed-by: serb ! test/jdk/ProblemList.txt ! test/jdk/javax/swing/JPopupMenu/6580930/bug6580930.java Changeset: 72bdfcf4cfb5 Author: psadhukhan Date: 2019-06-04 14:23 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/72bdfcf4cfb5 Merge Changeset: ed5c7d68ed5a Author: psadhukhan Date: 2019-06-04 14:43 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/ed5c7d68ed5a 8224876: javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java fails on linux-x64 Reviewed-by: serb, jdv ! test/jdk/javax/swing/JWindow/ShapedAndTranslucentWindows/Common.java Changeset: 37819ad0ac6f Author: ant Date: 2019-06-06 15:46 +0300 URL: http://hg.openjdk.java.net/amber/amber/rev/37819ad0ac6f 8225118: Robot.createScreenCapture() returns black image on HiDPI linux with gtk3 Reviewed-by: serb ! src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c ! src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.h ! test/jdk/java/awt/Robot/HiDPIScreenCapture/HiDPIRobotScreenCaptureTest.java Changeset: f680bedc0dcb Author: prr Date: 2019-06-07 09:38 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/f680bedc0dcb Merge - make/CreateBuildJdkCopy.gmk - src/java.base/share/lib/security/cacerts ! test/jdk/ProblemList.txt Changeset: 13ec0d88815b Author: serb Date: 2019-06-09 14:12 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/13ec0d88815b 8222083: Support of "64-bit IEEE floating point" encoding for the AU file format Reviewed-by: prr ! src/java.desktop/share/classes/com/sun/media/sound/AuFileFormat.java ! src/java.desktop/share/classes/com/sun/media/sound/AuFileReader.java + test/jdk/javax/sound/sampled/spi/AudioFileReader/RecognizeAuFloat.java Changeset: fe6404b8394a Author: serb Date: 2019-06-09 17:46 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/fe6404b8394a 8223045: GraphicsEnvironment does not detect resolution changes in multiscreen systems Reviewed-by: prr ! src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c Changeset: de1d2a535c08 Author: psadhukhan Date: 2019-06-10 10:52 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/de1d2a535c08 8225368: broken links in java.desktop files Reviewed-by: serb ! src/java.desktop/share/classes/java/awt/Font.java ! src/java.desktop/share/classes/java/awt/FontMetrics.java ! src/java.desktop/share/classes/java/awt/doc-files/DesktopProperties.html ! src/java.desktop/share/classes/javax/imageio/metadata/doc-files/tiff_metadata.html ! src/java.desktop/share/classes/javax/print/DocFlavor.java ! src/java.desktop/share/classes/javax/print/attribute/package-info.java Changeset: f85fa2fc78c2 Author: psadhukhan Date: 2019-06-11 11:01 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/f85fa2fc78c2 8225511: javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java fails in linux-x64 Reviewed-by: serb, prr ! test/jdk/javax/swing/JWindow/ShapedAndTranslucentWindows/Common.java Changeset: 3467ea483f09 Author: serb Date: 2019-06-11 10:15 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/3467ea483f09 8225144: [macos] In Aqua L&F backspace key does not delete when Shift is pressed Reviewed-by: psadhukhan ! src/java.desktop/macosx/classes/com/apple/laf/AquaKeyBindings.java + test/jdk/javax/swing/text/JTextComponent/6361367/bug6361367.java Changeset: 18629738b64b Author: prr Date: 2019-06-11 10:34 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/18629738b64b 8217731: Font rendering and glyph spacing changed from jdk-8 to jdk-11 Reviewed-by: serb, neugens ! src/java.desktop/share/native/libfontmanager/freetypeScaler.c Changeset: ad93c5329cac Author: serb Date: 2019-06-11 16:23 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/ad93c5329cac 8221246: NullPointerException within Win32ShellFolder2 Reviewed-by: prr ! src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java Changeset: 9cb499911646 Author: prr Date: 2019-06-11 17:15 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/9cb499911646 8225487: giflib legal file is missing attribution for openbsd-reallocarray.c Reviewed-by: serb, kcr ! src/java.desktop/share/legal/giflib.md Changeset: 5d5fccc4fd3f Author: psadhukhan Date: 2019-06-12 10:02 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/5d5fccc4fd3f Merge - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java Changeset: 59642852dee0 Author: psadhukhan Date: 2019-06-13 11:31 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/59642852dee0 Merge Changeset: 5c4f1b7c753b Author: psadhukhan Date: 2019-06-13 12:22 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/5c4f1b7c753b Merge Changeset: 96c7427456f9 Author: michaelm Date: 2019-06-13 09:10 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/96c7427456f9 8216417: cleanup of IPv6 scope-id handling Reviewed-by: alanb, chegar, dfuchs ! src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java ! src/java.base/share/classes/java/net/AbstractPlainSocketImpl.java ! src/java.base/share/classes/java/net/Inet6Address.java ! src/java.base/share/classes/sun/net/util/IPAddressUtil.java ! src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/Net.java ! src/java.base/share/native/libnet/Inet6Address.c ! src/java.base/share/native/libnet/net_util.h ! src/java.base/unix/classes/java/net/PlainDatagramSocketImpl.java ! src/java.base/unix/native/libnet/Inet6AddressImpl.c ! src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c ! src/java.base/unix/native/libnet/PlainSocketImpl.c ! src/java.base/unix/native/libnet/net_util_md.c ! src/java.base/unix/native/libnet/net_util_md.h ! src/java.base/windows/classes/java/net/DualStackPlainDatagramSocketImpl.java ! src/java.base/windows/classes/java/net/TwoStacksPlainDatagramSocketImpl.java ! src/java.base/windows/native/libnet/TwoStacksPlainDatagramSocketImpl.c ! src/java.base/windows/native/libnet/net_util_md.c ! test/jdk/ProblemList.txt + test/jdk/java/net/Inet6Address/Scoping.java + test/jdk/java/net/MulticastSocket/PromiscuousIPv6.java ! test/jdk/java/net/ipv6tests/B6521014.java + test/jdk/java/nio/channels/DatagramChannel/PromiscuousIPv6.java Changeset: 0f38ab93a53c Author: mdoerr Date: 2019-06-13 11:12 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/0f38ab93a53c 8225663: [testbug] Missing JNIEXPORT in XAbortProvoker native function Reviewed-by: mbaesken, gromero, kvn ! test/hotspot/jtreg/compiler/testlibrary/rtm/libXAbortProvoker.c Changeset: f48d3bec75ba Author: tschatzl Date: 2019-06-13 11:54 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/f48d3bec75ba 8225418: G1: region attribute remembered set state disagrees with actual remembered set state Summary: Keep remembered set update information when updating region attributes when abandoning the remaining collection set after mixed gc. Reviewed-by: kbarrett, mdoerr ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/g1CollectionSet.cpp Changeset: bd613b97c7c8 Author: egahlin Date: 2019-06-13 12:27 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/bd613b97c7c8 8220657: JFR.dump does not work when filename is set Reviewed-by: ysuenaga ! src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecording.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdDump.java + test/jdk/jdk/jfr/jcmd/TestJcmdDumpWithFileName.java Changeset: 865775b86780 Author: smonteith Date: 2019-06-13 15:24 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/865775b86780 8214527: ZGC for Aarch64 Summary: Implement ZGC for AArch64 Reviewed-by: aph, pliden, eosterlund, rkennke, shade, njian, adinn ! make/autoconf/hotspot.m4 ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp + src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp + src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp + src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp + src/hotspot/os_cpu/linux_aarch64/gc/z/zArguments_linux_aarch64.cpp + src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.cpp + src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.hpp + src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.cpp + src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.hpp + src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.cpp + src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.hpp + src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.cpp + src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.hpp Changeset: 22b3b7983ada Author: weijun Date: 2019-06-13 23:53 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/22b3b7983ada 8225180: SignedObject with invalid Key not throwing the InvalidKeyException in Windows Reviewed-by: mullan ! src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi/CSignature.java + test/jdk/sun/security/mscapi/NullKey.java Changeset: 7c9151c7dc40 Author: jwilhelm Date: 2019-06-13 18:02 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/7c9151c7dc40 Added tag jdk-14+0 for changeset 22b3b7983ada ! .hgtags Changeset: 30b1b7b4dd86 Author: darcy Date: 2019-06-11 16:45 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/30b1b7b4dd86 8214546: Start of release updates for JDK 14 8214547: Add SourceVersion.RELEASE_14 8214548: Add source 14 and target 14 to javac 8214549: Bump maximum recognized class file version to 58 for JDK 14 Reviewed-by: jjg, mikael, erikj, jlahoda, dholmes ! make/autoconf/version-numbers + make/data/symbols/java.base-D.sym.txt + make/data/symbols/java.compiler-D.sym.txt + make/data/symbols/java.desktop-D.sym.txt + make/data/symbols/java.management-D.sym.txt + make/data/symbols/java.management.rmi-D.sym.txt + make/data/symbols/java.net.http-D.sym.txt + make/data/symbols/java.xml-D.sym.txt + make/data/symbols/java.xml.crypto-D.sym.txt + make/data/symbols/jdk.compiler-D.sym.txt + make/data/symbols/jdk.httpserver-D.sym.txt + make/data/symbols/jdk.javadoc-D.sym.txt + make/data/symbols/jdk.jlink-D.sym.txt + make/data/symbols/jdk.jshell-D.sym.txt ! make/data/symbols/symbols ! src/hotspot/share/classfile/classFileParser.cpp ! src/java.base/share/classes/com/sun/java/util/jar/pack/Constants.java ! src/java.base/share/classes/jdk/internal/module/ModuleInfo.java ! src/java.base/share/classes/jdk/internal/org/objectweb/asm/ClassReader.java ! src/java.base/share/classes/jdk/internal/org/objectweb/asm/Opcodes.java ! src/java.compiler/share/classes/javax/lang/model/SourceVersion.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementScanner9.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor9.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Profile.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/classfile/Classfile.java ! src/jdk.rmic/share/classes/sun/tools/java/RuntimeConstants.java ! test/hotspot/jtreg/runtime/CommandLine/VMDeprecatedOptions.java ! test/jdk/java/lang/module/ClassFileVersionsTest.java ! test/langtools/tools/javac/api/T6395981.java ! test/langtools/tools/javac/classfiles/ClassVersionChecker.java ! test/langtools/tools/javac/diags/examples/InvalidYield.java ! test/langtools/tools/javac/diags/examples/InvalidYieldWarning.java ! test/langtools/tools/javac/diags/examples/NoSwitchExpression.java ! test/langtools/tools/javac/diags/examples/NoSwitchExpressionQualify.java ! test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java ! test/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out ! test/langtools/tools/javac/preview/classReaderTest/Client.preview.out ! test/langtools/tools/javac/profiles/ProfileOptionTest.java ! test/langtools/tools/javac/switchexpr/WarnWrongYieldTest.java ! test/langtools/tools/javac/versions/Versions.java Changeset: b2df72a5445f Author: mullan Date: 2019-06-13 13:03 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/b2df72a5445f 8225730: Add sun/security/pkcs11/tls/tls12/FipsModeTLS12.java to ProblemList for linux Reviewed-by: xuelei ! test/jdk/ProblemList.txt Changeset: 31d026474e77 Author: mullan Date: 2019-06-13 13:04 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/31d026474e77 Merge Changeset: 2c47220ce9bb Author: shade Date: 2019-06-13 19:37 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/2c47220ce9bb 8224881: Shenandoah: trashing "Collection Set, Pinned" region during Degenerated GC Reviewed-by: rkennke, zgu ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Changeset: 2f4e214781a1 Author: dtitov Date: 2019-06-13 11:21 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/2f4e214781a1 8225543: Jcmd fails to attach to the Java process on Linux using the main class name if whitespace options were used to launch the process Reviewed-by: sspitsyn, dholmes ! src/jdk.jcmd/linux/classes/sun/tools/ProcessHelper.java ! test/jdk/sun/tools/jcmd/TestProcessHelper.java Changeset: 761b86d5563d Author: darcy Date: 2019-06-13 11:50 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/761b86d5563d 8164819: Make javac's toString() on annotation objects consistent with core reflection Reviewed-by: jjg, coleenp ! src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Attribute.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/model/AnnotationProxyMaker.java ! test/hotspot/jtreg/runtime/8007320/ConstMethodTest.java ! test/jdk/java/lang/annotation/AnnotationToStringTest.java ! test/jdk/java/lang/annotation/ParameterAnnotations.java ! test/jdk/java/lang/annotation/TestConstructorParameterAnnotations.java ! test/jdk/java/lang/annotation/typeAnnotations/TestConstructorParameterTypeAnnotations.java ! test/jdk/java/lang/annotation/typeAnnotations/TestObjectMethods.java ! test/langtools/tools/javac/annotations/repeatingAnnotations/combo/ReflectionTest.java ! test/langtools/tools/javac/annotations/typeAnnotations/classfile/AnonymousExtendsTest.java ! test/langtools/tools/javac/modules/AnnotationsOnModules.java ! test/langtools/tools/javac/processing/messager/6388543/T6388543.out + test/langtools/tools/javac/processing/model/element/AnnotationToStringTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerBasicTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedA1Test.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedA2Test.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedB1Test.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedB2Test.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixSingularAndUnofficialContainerBasicTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixSingularAndUnofficialContainerInheritedA1Test.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixSingularAndUnofficialContainerInheritedA2Test.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixSingularAndUnofficialContainerInheritedB1Test.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/MixSingularAndUnofficialContainerInheritedB2Test.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/OfficialContainerBasicTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/OfficialContainerInheritedTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/RepeatableBasicTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/RepeatableInheritedTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/RepeatableOfficialContainerBasicTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/RepeatableOfficialContainerInheritedTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/RepeatableOverrideATest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/RepeatableOverrideBTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/SingularBasicTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/SingularInheritedATest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/SingularInheritedBTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/UnofficialContainerBasicTest.java ! test/langtools/tools/javac/processing/model/element/repeatingAnnotations/UnofficialContainerInheritedTest.java ! test/langtools/tools/javac/sym/ElementStructureTest.java From maurizio.cimadamore at oracle.com Thu Jun 13 20:05:58 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 13 Jun 2019 20:05:58 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906132005.x5DK5x2b027509@aojmv0008.oracle.com> Changeset: 9148208dc413 Author: mcimadamore Date: 2019-06-13 22:05 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/9148208dc413 Automatic merge with default - make/CreateBuildJdkCopy.gmk ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java From vicente.romero at oracle.com Thu Jun 13 23:00:20 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 13 Jun 2019 23:00:20 +0000 Subject: hg: amber/amber: manual merge with default Message-ID: <201906132300.x5DN0Li3008602@aojmv0008.oracle.com> Changeset: 0bc0f9ac8a60 Author: vromero Date: 2019-06-13 18:59 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/0bc0f9ac8a60 manual merge with default - make/CreateBuildJdkCopy.gmk ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java From vicente.romero at oracle.com Thu Jun 13 23:22:10 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 13 Jun 2019 23:22:10 +0000 Subject: hg: amber/amber: manual merge with default Message-ID: <201906132322.x5DNMBsq020247@aojmv0008.oracle.com> Changeset: 962ea6072f11 Author: vromero Date: 2019-06-13 19:21 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/962ea6072f11 manual merge with default - make/CreateBuildJdkCopy.gmk ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java From jan.lahoda at oracle.com Fri Jun 14 09:02:04 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Fri, 14 Jun 2019 09:02:04 +0000 Subject: hg: amber/amber: 4 new changesets Message-ID: <201906140902.x5E925tr000661@aojmv0008.oracle.com> Changeset: 0be40ac7a783 Author: jlahoda Date: 2019-06-14 07:41 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/0be40ac7a783 Merging recent default branch changes to the patterns-stage-1 branch. - make/CreateBuildJdkCopy.gmk ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TreeDiffer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java ! test/langtools/jdk/jshell/CompletenessTest.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java Changeset: ca4977a37264 Author: jlahoda Date: 2019-06-14 07:42 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/ca4977a37264 Merging recent patterns-stage-1 changes into the patterns branch. - make/CreateBuildJdkCopy.gmk ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java ! test/langtools/jdk/jshell/CompletenessTest.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java ! test/langtools/tools/javac/switchexpr/ExpressionSwitch.java Changeset: 7cb39e5d5420 Author: jlahoda Date: 2019-06-14 08:37 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/7cb39e5d5420 Post-merge fixes. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransSwitches.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Changeset: b5765fdbce5c Author: jlahoda Date: 2019-06-14 08:42 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/b5765fdbce5c Merging recent default branch changes into the records-and-sealed branch. - make/CreateBuildJdkCopy.gmk ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/logging/logTag.hpp ! src/java.base/share/classes/java/lang/Class.java ! src/java.compiler/share/classes/javax/lang/model/SourceVersion.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/AttrContext.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java ! test/langtools/jdk/jshell/CompletenessTest.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java ! test/langtools/tools/javac/lib/DPrinter.java ! test/langtools/tools/javac/parser/JavacParserTest.java From maurizio.cimadamore at oracle.com Fri Jun 14 09:05:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 14 Jun 2019 09:05:55 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906140905.x5E95tf8002376@aojmv0008.oracle.com> Changeset: 3a1363fb35f1 Author: mcimadamore Date: 2019-06-14 11:05 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/3a1363fb35f1 Automatic merge with records-and-sealed - make/CreateBuildJdkCopy.gmk ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TreeDiffer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java ! test/langtools/jdk/jshell/CompletenessTest.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java From maurizio.cimadamore at oracle.com Fri Jun 14 09:06:14 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 14 Jun 2019 09:06:14 +0000 Subject: hg: amber/amber: Automatic merge with patterns-stage-1 Message-ID: <201906140906.x5E96FFZ002782@aojmv0008.oracle.com> Changeset: cb2cc157c779 Author: mcimadamore Date: 2019-06-14 11:06 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/cb2cc157c779 Automatic merge with patterns-stage-1 ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! test/langtools/jdk/jshell/CompletenessTest.java From jan.lahoda at oracle.com Fri Jun 14 13:20:43 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Fri, 14 Jun 2019 13:20:43 +0000 Subject: hg: amber/amber: 5 new changesets Message-ID: <201906141320.x5EDKiv6005162@aojmv0008.oracle.com> Changeset: 892a23eb13ce Author: jlahoda Date: 2019-06-14 11:12 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/892a23eb13ce Merging patterns and records-and-sealed branches into a new branch patterns-deconstruction. ! src/java.base/share/classes/module-info.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/Tokens.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.jshell/share/classes/jdk/jshell/CompletenessAnalyzer.java ! test/langtools/jdk/jshell/CompletenessTest.java Changeset: 185f25e1aac8 Author: jlahoda Date: 2019-06-14 13:23 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/185f25e1aac8 Setting correct dependencies for the patterns-deconstruction branch. ! deps.txt Changeset: 580d718c8ddb Author: jlahoda Date: 2019-06-14 13:24 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/580d718c8ddb A prototype of deconstruction patterns. + src/jdk.compiler/share/classes/com/sun/source/tree/DeconstructionPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MatchBindingsComputer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! test/langtools/tools/javac/patterns/BindingsTest1.java ! test/langtools/tools/javac/patterns/PatternMatchTest1.java ! test/langtools/tools/javac/patterns/PatternTypeTest1.java + test/langtools/tools/javac/patterns/SimpleDeconstructionPattern.java ! test/langtools/tools/javac/patterns/SwitchExpressionWithPatterns.java ! test/langtools/tools/javac/patterns/scope/ScopeTest.java Changeset: a9a1999af6da Author: jlahoda Date: 2019-06-14 13:26 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/a9a1999af6da Adding var/any patterns inside deconstruction patterns. + src/jdk.compiler/share/classes/com/sun/source/tree/AnyPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! test/langtools/tools/javac/patterns/SimpleDeconstructionPattern.java Changeset: 424c4d694771 Author: jlahoda Date: 2019-06-14 13:35 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/424c4d694771 Support for deconstruction patterns in switches. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! test/langtools/tools/javac/patterns/SwitchExpressionWithPatterns.java + test/langtools/tools/javac/switchexpr/ExhaustiveSealedSwitch.java + test/langtools/tools/javac/switchexpr/ExhaustiveSealedSwitchExtra.java From vicente.romero at oracle.com Fri Jun 14 14:50:06 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 14 Jun 2019 14:50:06 +0000 Subject: hg: amber/amber: manual merge with default Message-ID: <201906141450.x5EEo8Gg028211@aojmv0008.oracle.com> Changeset: 9fe01be3c32b Author: vromero Date: 2019-06-14 10:49 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/9fe01be3c32b manual merge with default - make/CreateBuildJdkCopy.gmk ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/AttrContext.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeMaker.java - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h - test/hotspot/jtreg/compiler/jsr292/NonInlinedCall/GCTest.java - test/langtools/tools/javac/diags/examples/BreakAmbiguousTarget.java - test/langtools/tools/javac/diags/examples/BreakComplexValueNoSwitchExpression.java - test/langtools/tools/javac/diags/examples/BreakExprNotImmediate.java - test/langtools/tools/javac/diags/examples/BreakMissingValue.java From nlisker at gmail.com Fri Jun 14 14:50:20 2019 From: nlisker at gmail.com (Nir Lisker) Date: Fri, 14 Jun 2019 17:50:20 +0300 Subject: Serialization of object identity In-Reply-To: <333742916.936512.1560369319062.JavaMail.zimbra@u-pem.fr> References: <333742916.936512.1560369319062.JavaMail.zimbra@u-pem.fr> Message-ID: Thanks for the reply. > Actually, they're two entirely different problems. I don't think they are entirely different since identity info is a requirement for cyclic graphs, but I don't intend to discuss semantics. The challenge with cyclic graphs is not that we have to respect identity > -- that can be done (it is up to a particular serialization to decide if > it is going to do so.) I'm happy so see that respecting identity can be done. If you could add this to the document on the next update it would be beneficial, even if it's just "can be done", because it's not clear at all (to me) that this is the case. All of the constructor and deconstructor patterns presented are about the data stored in fields, and the treatment of identity info comes from somewhere else. The challenge with cyclic graphs is that > logically cyclic graphs cannot, in general, be reproduced through a > series of constructor calls -- some mutation is required as well. Which > conflicts with our main security goal, that deserialization proceed > through constructors. I understand, but maybe giving up from the start (from the public's POV) is premature. Leaking "this", for example as R?mi suggested, is not necessarily a flaw if done cautiously. Also, mutation is not necessarily a security issue, though it is another place where one could arise. Many mutators do the same checks on the input as the constructor does. If my class has fields for weight and height, it's very reasonable that both the constructor and the setters will do a check for >0. In this case, I can deserialize using the empty constructor and then mutate, and what do I lose? I believe that this is what Jackson does in its simplest case. I'm the author of my classes and I'm responsible for checking my input in mutators just as much as in constructors, and whatever deserialization requires me to do for the constructor I can do for the mutator. Any kind of delayed assignment ("construct and then") could be a major part of a solution. R?mi's trick with Function is on the same page. Sure, it's easy for me to pop in and say "put annotations on setters and invoke them after construction" as if it's a simple solution for this problem, and it's really not. What it is is a reason to reconsider throwing cyclic graphs out, especially when JSON can support it practically. On Wed, Jun 12, 2019 at 10:55 PM Remi Forax wrote: > > > ----- Mail original ----- > > De: "Brian Goetz" > > ?: "Nir Lisker" , "amber-dev" < > amber-dev at openjdk.java.net> > > Envoy?: Mercredi 12 Juin 2019 21:26:34 > > Objet: Re: Serialization of object identity > > >> In fact, the cyclic graph issue is a result of an inability to represent > >> object identity in serialization, which is a much larger problem. > > > > Actually, they're two entirely different problems. > > > > The challenge with cyclic graphs is not that we have to respect identity > > -- that can be done (it is up to a particular serialization to decide if > > it is going to do so.) The challenge with cyclic graphs is that > > logically cyclic graphs cannot, in general, be reproduced through a > > series of constructor calls -- some mutation is required as well. Which > > conflicts with our main security goal, that deserialization proceed > > through constructors. > > > > (It is possible, at the cost of significant complexity for both the > > framework and class authors, to have a more complex model that can > > reflect post-construction mutation -- but the incremental complexity and > > risk is significant.) > > it's not fully true because you can leak "this" and then mutate a field > inside the constructor. > > class A { > final B b; > A(Function fun) { > b = fun.apply(this); > } > } > class B { > final A a; > B(A a) { > this.a = a; > } > } > > new A(B::new); > > R?mi > From brian.goetz at oracle.com Fri Jun 14 18:42:07 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Fri, 14 Jun 2019 14:42:07 -0400 Subject: Serialization of object identity In-Reply-To: References: <333742916.936512.1560369319062.JavaMail.zimbra@u-pem.fr> Message-ID: <80f47ddc-afdf-3e54-8d68-e20a22df8c2c@oracle.com> One can surely construct a protocol that "rescues" cyclicity in plenty of ways (e.g., segregate final state from mutable, set the former in a constructor, the latter in a post-construct mutation, and have the serialization framework topologically sort on identity.)?? "Is it possible" is not the question; the question is, whether the incremental benefit is worth the incremental cost, in all its varying dimensions (including additional cognitive load on the application developer, and increased attack surface.) I wouldn't characterize where we are as "giving up", as much as choosing an initial target that embodies a set of cost, complexity, and security tradeoffs.? If it turns out that set of tradeoffs is not workable, or a better set makes itself evident, we can adjust as we go forward.? But I don't think we want to load ourselves up with every possible requirement out of the gate; it has taken long enough for a credible alternate story to emerge already!? And don't forget -- much of the disaster of existing serialization comes from the complexity that came with the various knobs nailed on the side.? So we should be very careful about what requirements we assume.? I'd rather look at it as "is it practical to live without cycle support", rather than "is cycle support possible." On 6/14/2019 10:50 AM, Nir Lisker wrote: > Thanks for the reply. > > Actually, they're two entirely different problems. > > > I don't think they are?entirely different since identity info is a > requirement for cyclic graphs, but I don't intend to discuss semantics. > > The challenge with cyclic graphs is not that we have to respect > identity > -- that can be done (it is up to a particular serialization to > decide if > it is going to do so.) > > > ?I'm happy so see that respecting identity can be done. If you could > add this to the document on the next update it would be > beneficial,?even if it's just "can be done", because it's not clear at > all (to me) that this is the case. All of the constructor and > deconstructor patterns presented are about the data stored in fields, > and the treatment of identity info comes from somewhere else. > > The challenge with cyclic graphs is that > logically cyclic graphs cannot, in general, be reproduced through a > series of constructor calls -- some mutation is required as well.? > Which > conflicts with our main security goal, that deserialization proceed > through constructors. > > > I understand, but maybe giving up from the start (from the public's > POV) is premature. Leaking "this", for example as R?mi suggested, is > not necessarily a flaw if done cautiously. > Also, mutation is not necessarily a security issue, though it is > another place where one could arise. Many mutators do the same checks > on the input as the constructor does. If my class has fields for > weight and height, it's very reasonable that both the constructor and > the setters will do a check for >0. In this case, I can deserialize > using the empty constructor and then mutate, and what do I lose? I > believe that this is what Jackson does in its simplest case. > I'm the author of my classes and I'm responsible for checking my input > in mutators just as much as in constructors, and whatever > deserialization requires me to do for the constructor I can do for the > mutator. Any kind of delayed assignment ("construct and then") could > be a major part of a solution. R?mi's trick with Function is on the > same page. > > Sure, it's easy for me to pop in and say "put annotations on setters > and invoke them after construction" as if it's a simple solution for > this problem, and it's really not. What it is is a reason to > reconsider throwing cyclic graphs out, especially when JSON can > support it practically. > > > > > > On Wed, Jun 12, 2019 at 10:55 PM Remi Forax > wrote: > > > > ----- Mail original ----- > > De: "Brian Goetz" > > > ?: "Nir Lisker" >, > "amber-dev" > > > Envoy?: Mercredi 12 Juin 2019 21:26:34 > > Objet: Re: Serialization of object identity > > >> In fact, the cyclic graph issue is a result of an inability to > represent > >> object identity in serialization, which is a much larger problem. > > > > Actually, they're two entirely different problems. > > > > The challenge with cyclic graphs is not that we have to respect > identity > > -- that can be done (it is up to a particular serialization to > decide if > > it is going to do so.)? The challenge with cyclic graphs is that > > logically cyclic graphs cannot, in general, be reproduced through a > > series of constructor calls -- some mutation is required as > well.? Which > > conflicts with our main security goal, that deserialization proceed > > through constructors. > > > > (It is possible, at the cost of significant complexity for both the > > framework and class authors, to have a more complex model that can > > reflect post-construction mutation -- but the incremental > complexity and > > risk is significant.) > > it's not fully true because you can leak "this" and then mutate a > field inside the constructor. > > class A { > ? final B b; > ? A(Function fun) { > ? ? b = fun.apply(this); > ? } > } > class B { > ? final A a; > ? B(A a) { > ? ?this.a = a; > ? } > } > > new A(B::new); > > R?mi > From michal at kleczek.org Fri Jun 14 18:54:50 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Fri, 14 Jun 2019 18:54:50 +0000 Subject: Serialization of object identity In-Reply-To: <80f47ddc-afdf-3e54-8d68-e20a22df8c2c@oracle.com> References: <333742916.936512.1560369319062.JavaMail.zimbra@u-pem.fr> <80f47ddc-afdf-3e54-8d68-e20a22df8c2c@oracle.com> Message-ID: On 14/06/2019 20:42:07, "Brian Goetz" wrote: >One can surely construct a protocol that "rescues" cyclicity in plenty of ways (e.g., segregate final state from mutable, set the former in a constructor, the latter in a post-construct mutation, and have the serialization framework topologically sort on identity.) "Is it possible" is not the question; the question is, whether the incremental benefit is worth the incremental cost, in all its varying dimensions (including additional cognitive load on the application developer, and increased attack surface.) > >I wouldn't characterize where we are as "giving up", as much as choosing an initial target that embodies a set of cost, complexity, and security tradeoffs. If it turns out that set of tradeoffs is not workable, or a better set makes itself evident, we can adjust as we go forward. But I don't think we want to load ourselves up with every possible requirement out of the gate; it has taken long enough for a credible alternate story to emerge already! And don't forget -- much of the disaster of existing serialization comes from the complexity that came with the various knobs nailed on the side. So we should be very careful about what requirements we assume. I'd rather look at it as "is it practical to live without cycle support", rather than "is cycle support possible." > Cycles are one thing but object identity is also needed to maintain the shape of object graph in case it is a lattice (not a tree). Is the proposal assuming that there are references to shared instances and it should be preserved during serialization/deserialization? -- Michal From forax at univ-mlv.fr Fri Jun 14 18:56:08 2019 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Fri, 14 Jun 2019 20:56:08 +0200 (CEST) Subject: Serialization of object identity In-Reply-To: <80f47ddc-afdf-3e54-8d68-e20a22df8c2c@oracle.com> References: <333742916.936512.1560369319062.JavaMail.zimbra@u-pem.fr> <80f47ddc-afdf-3e54-8d68-e20a22df8c2c@oracle.com> Message-ID: <766369685.1624351.1560538568135.JavaMail.zimbra@u-pem.fr> > De: "Brian Goetz" > ?: "Nir Lisker" > Cc: "amber-dev" , "Remi Forax" > Envoy?: Vendredi 14 Juin 2019 20:42:07 > Objet: Re: Serialization of object identity > One can surely construct a protocol that "rescues" cyclicity in plenty of ways > (e.g., segregate final state from mutable, set the former in a constructor, the > latter in a post-construct mutation, and have the serialization framework > topologically sort on identity.) "Is it possible" is not the question; the > question is, whether the incremental benefit is worth the incremental cost, in > all its varying dimensions (including additional cognitive load on the > application developer, and increased attack surface.) > I wouldn't characterize where we are as "giving up", as much as choosing an > initial target that embodies a set of cost, complexity, and security tradeoffs. > If it turns out that set of tradeoffs is not workable, or a better set makes > itself evident, we can adjust as we go forward. But I don't think we want to > load ourselves up with every possible requirement out of the gate; it has taken > long enough for a credible alternate story to emerge already! And don't forget > -- much of the disaster of existing serialization comes from the complexity > that came with the various knobs nailed on the side. So we should be very > careful about what requirements we assume. I'd rather look at it as "is it > practical to live without cycle support", rather than "is cycle support > possible." yes, i agree with Brian, Also leaking "this" fell flat with inline classes (we don't want to introduce a mechanism that will make our future miserable, right ?) and a specific serializer can also use proxies (i believe the injector of weld does something like this) so trying to resolve cycles seems more something that should be done by a specific serializer implementation and not something that the JDK should offer. R?mi > On 6/14/2019 10:50 AM, Nir Lisker wrote: >> Thanks for the reply. >>> Actually, they're two entirely different problems. >> I don't think they are entirely different since identity info is a requirement >> for cyclic graphs, but I don't intend to discuss semantics. >>> The challenge with cyclic graphs is not that we have to respect identity >>> -- that can be done (it is up to a particular serialization to decide if >>> it is going to do so.) >> I'm happy so see that respecting identity can be done. If you could add this to >> the document on the next update it would be beneficial, even if it's just "can >> be done", because it's not clear at all (to me) that this is the case. All of >> the constructor and deconstructor patterns presented are about the data stored >> in fields, and the treatment of identity info comes from somewhere else. >>> The challenge with cyclic graphs is that >>> logically cyclic graphs cannot, in general, be reproduced through a >>> series of constructor calls -- some mutation is required as well. Which >>> conflicts with our main security goal, that deserialization proceed >>> through constructors. >> I understand, but maybe giving up from the start (from the public's POV) is >> premature. Leaking "this", for example as R?mi suggested, is not necessarily a >> flaw if done cautiously. >> Also, mutation is not necessarily a security issue, though it is another place >> where one could arise. Many mutators do the same checks on the input as the >> constructor does. If my class has fields for weight and height, it's very >> reasonable that both the constructor and the setters will do a check for >0. In >> this case, I can deserialize using the empty constructor and then mutate, and >> what do I lose? I believe that this is what Jackson does in its simplest case. >> I'm the author of my classes and I'm responsible for checking my input in >> mutators just as much as in constructors, and whatever deserialization requires >> me to do for the constructor I can do for the mutator. Any kind of delayed >> assignment ("construct and then") could be a major part of a solution. R?mi's >> trick with Function is on the same page. >> Sure, it's easy for me to pop in and say "put annotations on setters and invoke >> them after construction" as if it's a simple solution for this problem, and >> it's really not. What it is is a reason to reconsider throwing cyclic graphs >> out, especially when JSON can support it practically. >> On Wed, Jun 12, 2019 at 10:55 PM Remi Forax < [ mailto:forax at univ-mlv.fr | >> forax at univ-mlv.fr ] > wrote: >>> ----- Mail original ----- >>> > De: "Brian Goetz" < [ mailto:brian.goetz at oracle.com | brian.goetz at oracle.com ] > >>>> ?: "Nir Lisker" < [ mailto:nlisker at gmail.com | nlisker at gmail.com ] >, >>>> "amber-dev" < [ mailto:amber-dev at openjdk.java.net | amber-dev at openjdk.java.net >>> > ] > >>> > Envoy?: Mercredi 12 Juin 2019 21:26:34 >>> > Objet: Re: Serialization of object identity >>> >> In fact, the cyclic graph issue is a result of an inability to represent >>> >> object identity in serialization, which is a much larger problem. >>> > Actually, they're two entirely different problems. >>> > The challenge with cyclic graphs is not that we have to respect identity >>> > -- that can be done (it is up to a particular serialization to decide if >>> > it is going to do so.) The challenge with cyclic graphs is that >>> > logically cyclic graphs cannot, in general, be reproduced through a >>> > series of constructor calls -- some mutation is required as well. Which >>> > conflicts with our main security goal, that deserialization proceed >>> > through constructors. >>> > (It is possible, at the cost of significant complexity for both the >>> > framework and class authors, to have a more complex model that can >>> > reflect post-construction mutation -- but the incremental complexity and >>> > risk is significant.) >>> it's not fully true because you can leak "this" and then mutate a field inside >>> the constructor. >>> class A { >>> final B b; >>> A(Function fun) { >>> b = fun.apply(this); >>> } >>> } >>> class B { >>> final A a; >>> B(A a) { >>> this.a = a; >>> } >>> } >>> new A(B::new); >>> R?mi From brian.goetz at oracle.com Fri Jun 14 19:05:26 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Fri, 14 Jun 2019 15:05:26 -0400 Subject: Serialization of object identity In-Reply-To: References: <333742916.936512.1560369319062.JavaMail.zimbra@u-pem.fr> <80f47ddc-afdf-3e54-8d68-e20a22df8c2c@oracle.com> Message-ID: <38db9131-5428-b4ee-0b43-cc1d8593f02e@oracle.com> > Cycles are one thing but object identity is also needed to maintain > the shape of object graph in case it is a lattice (not a tree). > Is the proposal assuming that there are references to shared instances > and it should be preserved during serialization/deserialization? That's up to the serialization framework.? I could imagine some would choose to use identity to preserve topology, and others could choose not to (at the risk of duplication.)? And different frameworks can make different choices.? Java serialization already makes a pretty reasonable attempt to preserve topology, so presumably it would continue to do so. Another aspect that is left to the serialization framework is _how_ to find a serializer for a given type.? For example, suppose you have a subtype of List, but which doesn't have any serialization members.? Should we fail because we can't find a serializer/deserializer that will give perfect fidelity, or could we fall back to a generic serializer/deserializer pair (perhaps found in List) that would reconstruct an ArrayList or a List.of(...) list?? We don't have to make one choice for all serialization frameworks. The emergent property here, that may not be obvious, is that once we move responsibility for state extraction/reconstruction to the class itself, core serialization becomes _less relevant_, because there is a "level playing field" that allows any serialization framework to participate, without privilege, in the state extraction/reconstruction part.? Then the job of a serialization framework becomes much simpler: finding serializers for classes, encoding, and decoding. From michal at kleczek.org Fri Jun 14 19:14:02 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Fri, 14 Jun 2019 19:14:02 +0000 Subject: Serialization of object identity In-Reply-To: <38db9131-5428-b4ee-0b43-cc1d8593f02e@oracle.com> References: <333742916.936512.1560369319062.JavaMail.zimbra@u-pem.fr> <80f47ddc-afdf-3e54-8d68-e20a22df8c2c@oracle.com> <38db9131-5428-b4ee-0b43-cc1d8593f02e@oracle.com> Message-ID: I think it should not be left unspecified as it might lead to nasty surprises. On 14/06/2019 21:05:26, "Brian Goetz" wrote: > >>Cycles are one thing but object identity is also needed to maintain the shape of object graph in case it is a lattice (not a tree). >>Is the proposal assuming that there are references to shared instances and it should be preserved during serialization/deserialization? > >That's up to the serialization framework. I could imagine some would choose to use identity to preserve topology, and others could choose not to (at the risk of duplication.) And different frameworks can make different choices. Java serialization already makes a pretty reasonable attempt to preserve topology, so presumably it would continue to do so. > >Another aspect that is left to the serialization framework is _how_ to find a serializer for a given type. For example, suppose you have a subtype of List, but which doesn't have any serialization members. Should we fail because we can't find a serializer/deserializer that will give perfect fidelity, or could we fall back to a generic serializer/deserializer pair (perhaps found in List) that would reconstruct an ArrayList or a List.of(...) list? We don't have to make one choice for all serialization frameworks. > >The emergent property here, that may not be obvious, is that once we move responsibility for state extraction/reconstruction to the class itself, core serialization becomes _less relevant_, because there is a "level playing field" that allows any serialization framework to participate, without privilege, in the state extraction/reconstruction part. Then the job of a serialization framework becomes much simpler: finding serializers for classes, encoding, and decoding. > > From stuart.marks at oracle.com Sat Jun 15 16:52:11 2019 From: stuart.marks at oracle.com (Stuart Marks) Date: Sat, 15 Jun 2019 09:52:11 -0700 Subject: Towards better serialization In-Reply-To: References: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> <4d7169dc-4b9d-a4f2-8527-e8eefba59e8a@oracle.com> Message-ID: On 6/13/19 9:24 AM, K?eczek, Micha? wrote: > The whole premise of the proposal we are discussing is that convenience is the > root of all evil. Hi Micha?, This is an inaccurate characterization of the proposal. Also, your earlier statements, > What's more - it does not really address security concerns! ... > The issue here is that we try to fix security problems in the wrong place. Almost all security issues with serialization are not really caused by serialization itself but by: > - huge classpath with all libraries accessible to each other (ie. deserialization gadgets availability in classpath) > - running applications with no SecurityManager (starting a JVM with no SecurityManager by default was the single biggest mistake Java designers made in the past IMHO) Those are indeed security concerns, but you've overlooked an important and fundamental class of security issues that are directly attributable to the way serialization was designed and implemented in Java. The line of reasoning about convenience in the proposal is not that convenience itself is evil, but that in pursuit of convenience, the original design adopted extralinguistic mechanisms to achieve it. This weakens some of the fundamentals of the Java platform, and it has led directly to several bugs and security holes, several of which I've fixed personally. Let me illustrate this with a couple examples. First, consider the bug JDK-6896297 [1] which I fixed several years ago. Briefly, the problem is that a test failed intermittently, throwing ConcurrentModificationException. The class in question is thread-safe, and locking is applied within all method calls. How could the CME occur? The exception occurred when another thread took a snapshot of this object periodically; the snapshot was performed using serialization. This object didn't provide a readObject() method, so the serialization mechanism "magically" provided one that serialized the object using direct field access. This direct access bypassed the locking protocol established by the rest of the class, causing a race condition. The code was in place for ten years before I fixed it. During that time applications, were potentially exposed to corrupted snapshots. In a sense, we were lucky that a CME was thrown. If it weren't thrown, we might never have noticed the problem. The second issue concerns a whole class of security vulnerabilities that arise because serialization bypasses some fundamental mechanisms of the language. I won't describe the vulnerabilities in detail, but I'll show this by describing to an old and well-known Java security bug. As you know, String is immutable, and its methods have well-defined behavior. Therefore, it's possible to write secure code that relies on these characteristics, e.g. a String reference can be stored in a data structure without making a defensive copy, because Strings are immutable. It turns out that in early versions of Java [2] it was possible to load a "spoof" version of java.lang.String and hand instances of the spoofed String to sensitive code. It's likely that this code is relying on well-known, safe characteristics of the "real" java.lang.String. However, the spoofed String class could supply different behavior for its methods or mutate itself. This is impossible to see by inspecting the secure code. The security bug existed because the fundamental assumptions the secure code was making about the type-safety of the platform were violated by the spoof class. What does this have to do with serialization? Brian's proposal states that serialization bypasses the constructors of serializable classes. Big deal, just use readObject(), right? No. If you look carefully at the Java specifications, you'll see that constructors have a bunch of special characateristics. The sequence of steps that occurs when an object is created are precise and well-defined. [3] There are other characteristics of constructors as well (which one can find by digging through the JLS) such as: an object isn't finalizable until after the Object() constructor returns; writes to final fields in constructors happen-before reads that occur outside the constructor; the compiler ensures that all final fields of an object are definitely assigned through all paths through constructors and initializers; field and instance initializers are executed in a well-defined order; and so forth. Deserializing an object bypasses the constructors, thus none of this applies to objects created via deserialization. What are the consequences of this? Briefly, it means that it's possible to create objects that appear impossible to create. At least, they appear impossible, if you're trying to assess the security of the code by inspecting it. Such objects might have unknown and unexpected behaviors. Since the system's security and correctness depends on well-defined behaviors, it means that all bets are off. No matter how carefully you inspect code to try to ensure that it's secure, if it's handling objects that can violate Java's fundamentals, you can't guarantee anything. ** THIS is the point of the proposal. Bringing serialization into the realm of well-defined language constructs, instead of using extralinguistic "magic" mechanisms, is a huge step forward in improving quality and security of Java programs. s'marks [1] https://bugs.openjdk.java.net/browse/JDK-6896297 [2] Vijay Saraswat. Java is not type-safe. 1997. Copy available at https://www.cis.upenn.edu/~bcpierce/courses/629/papers/Saraswat-javabug.html [3] https://docs.oracle.com/javase/specs/jls/se12/html/jls-12.html#jls-12.5 From michal at kleczek.org Sun Jun 16 09:33:44 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Sun, 16 Jun 2019 09:33:44 +0000 Subject: Towards better serialization In-Reply-To: References: <2101365799.764884.1560343876716.JavaMail.zimbra@u-pem.fr> <4d7169dc-4b9d-a4f2-8527-e8eefba59e8a@oracle.com> Message-ID: Hi Stuart, Thank you very much for such a throughout response. Please, find my comments inline. On 15/06/2019 18:52:11, "Stuart Marks" wrote: >On 6/13/19 9:24 AM, K?eczek, Micha? wrote: >>The whole premise of the proposal we are discussing is that convenience is the root of all evil. > >Hi Micha?, > >This is an inaccurate characterization of the proposal. > >Also, your earlier statements, > >>What's more - it does not really address security concerns! ... >>The issue here is that we try to fix security problems in the wrong place. Almost all security issues with serialization are not really caused by serialization itself but by: >>- huge classpath with all libraries accessible to each other (ie. deserialization gadgets availability in classpath) >>- running applications with no SecurityManager (starting a JVM with no SecurityManager by default was the single biggest mistake Java designers made in the past IMHO) > >Those are indeed security concerns, but you've overlooked an important and fundamental class of security issues that are directly attributable to the way serialization was designed and implemented in Java. > >The line of reasoning about convenience in the proposal is not that convenience itself is evil, but that in pursuit of convenience, the original design adopted extralinguistic mechanisms to achieve it. This weakens some of the fundamentals of the Java platform, and it has led directly to several bugs and security holes, several of which I've fixed personally. Let me illustrate this with a couple examples. Here I would like to share some more general remarks describing maybe the difference in sentiment between the Java implementor (you) and a user from the field (me). Java from the very beginning has been built on a _pragmatic_ approach to language and runtime design - providing quite a lot of "magic" (ie. extralinguistic mechanisms), garbage collector being the most prominent example (and this is not supposed to be demagogy - see below why). As a user I don't care if a certain feature is a library feature or requires language/VM runtime support. I care about the utility and ease of use of the feature. I understand some features might be difficult to implement. On the other hand I don't think the right solution is to (silently? - sorry for demagogy :) ) push the responsibility of implementing it to the users. The point is that transparent/declarative serialization is _very_ useful - not unlike the GC. (Maybe the definition of what actually constitutes "serialization" - ie. the requirements - is indeed something that has to be stated clearly). It is actually _this_ sentiment that has driven me to comment on the proposal. > > >First, consider the bug JDK-6896297 [1] which I fixed several years ago. Briefly, the problem is that a test failed intermittently, throwing ConcurrentModificationException. The class in question is thread-safe, and locking is applied within all method calls. How could the CME occur? > >The exception occurred when another thread took a snapshot of this object periodically; the snapshot was performed using serialization. This object didn't provide a readObject() method, so the serialization mechanism "magically" provided one that serialized the object using direct field access. This direct access bypassed the locking protocol established by the rest of the class, causing a race condition. > >The code was in place for ten years before I fixed it. During that time applications, were potentially exposed to corrupted snapshots. In a sense, we were lucky that a CME was thrown. If it weren't thrown, we might never have noticed the problem. And this example - similar to the example with ServerConnection from the paper - actually illustrates my points really well: 1. The bug is clearly caused by *abusing* serialization to create snapshots of object state in the situation when the target object did not provide facilities to do it. But serialization does not provide any guarantees of providing atomic snapshots of object state. The number of bugs similar to https://bugs.openjdk.java.net/browse/JDK-4261109 is the evidence. This is just yet another concurrency bug related to mutable state - it would be the same if the snapshot was taken using Object.clone() or @Deserializer marked method because... 2. What's more important - the proposal does not address it at all. The reason being: it can't! Taking atomic snapshot of the state of object graph is not possible without global coordination - and to make it transparent (which I personally would find *very* useful) even more "magic" extralinguistic mechanisms would be needed - I guess something similar to what any concurrent GC is doing (this is why GC example above is not demagogical). > > >The second issue concerns a whole class of security vulnerabilities that arise because serialization bypasses some fundamental mechanisms of the language. I won't describe the vulnerabilities in detail, but I'll show this by describing to an old and well-known Java security bug. I think without discussing security vulnerabilities case by case, finding the root cause of each and synthesizing the knowledge - we are destined to base the solution on some general but not-necessary-true assumptions. > > >As you know, String is immutable, and its methods have well-defined behavior. Therefore, it's possible to write secure code that relies on these characteristics, e.g. a String reference can be stored in a data structure without making a defensive copy, because Strings are immutable. > >It turns out that in early versions of Java [2] it was possible to load a "spoof" version of java.lang.String and hand instances of the spoofed String to sensitive code. It's likely that this code is relying on well-known, safe characteristics of the "real" java.lang.String. However, the spoofed String class could supply different behavior for its methods or mutate itself. > >This is impossible to see by inspecting the secure code. The security bug existed because the fundamental assumptions the secure code was making about the type-safety of the platform were violated by the spoof class. I am not sure how this relates to serialization and bypassing constructors and - what's worse - I am afraid without SecurityManager and proper security policy it is still possible to spoof any part of the runtime by simply overwriting files in the filesystem. > > >What does this have to do with serialization? Brian's proposal states that serialization bypasses the constructors of serializable classes. Big deal, just use readObject(), right? > >No. If you look carefully at the Java specifications, you'll see that constructors have a bunch of special characateristics. The sequence of steps that occurs when an object is created are precise and well-defined. [3] There are other characteristics of constructors as well (which one can find by digging through the JLS) such as: an object isn't finalizable until after the Object() constructor returns; writes to final fields in constructors happen-before reads that occur outside the constructor; the compiler ensures that all final fields of an object are definitely assigned through all paths through constructors and initializers; field and instance initializers are executed in a well-defined order; and so forth. > >Deserializing an object bypasses the constructors, thus none of this applies to objects created via deserialization. > >What are the consequences of this? Briefly, it means that it's possible to create objects that appear impossible to create. At least, they appear impossible, if you're trying to assess the security of the code by inspecting it. Such objects might have unknown and unexpected behaviors. Since the system's security and correctness depends on well-defined behaviors, it means that all bets are off. No matter how carefully you inspect code to try to ensure that it's secure, if it's handling objects that can violate Java's fundamentals, you can't guarantee anything. There are two aspects of this: 1. There is a question of why deserialization needs its own rules of object instantiation and bypassing constructors. The answer is actually quite obvious I guess: it is the *requirement* to support deserializing cycles in object graphs. So the proposal "solves" the problem of bypassing constructors by dropping one of the basic requirements for serialization. To be honest it looks a little like the tail waging the dog. 2. Maybe I have missed it but I haven't seen any real discussion about the available solution space and any proof that dropping this requirement is necessary. I can imagine (forgive me my naiveness :) ) something along the lines of: // Deserializer is actually very similar to current ObjectInputStream // the difference is that it is _magic_ - can initialize final members // and javac is aware of this class java.lang.Deserializer { void deserialize(Object instance) throws IOException; } class Other implements Serializable { final MySerializable serializableFinalMember; Other(Deserializer deserializer) throws IOException { // the compiler does not complain about // uninitialized final members here deserializer.deserialize(this); } } class MySerializable implements Serializable { final Other serializableFinalMember; // the below constructor is synthesized by compiler/runtime // the deserializer is free to create an instance of Other and // initialize its members with this object reference MySerializable(Deserializer deserializer) throws IOException { super(deserializer); //or in case non-serializable superclass super(); //here magic happens deserializer.deserialize(this); } } > > >** > >THIS is the point of the proposal. Bringing serialization into the realm of well-defined language constructs, instead of using extralinguistic "magic" mechanisms, is a huge step forward in improving quality and security of Java programs. The reason why I have started this discussion is that I see it the other way around: the proposal instead of providing _solutions_ pushes the problems onto users (ie. developers). If there is one thing I can be sure based on my experience it is: the ad-hoc solutions that field developers will come up with are going to be much worse than what you guys can implement :) > >s'marks -- Michal From anthonyv.be at outlook.com Sun Jun 16 18:54:22 2019 From: anthonyv.be at outlook.com (Anthony Vanelverdinghe) Date: Sun, 16 Jun 2019 18:54:22 +0000 Subject: Towards better serialization In-Reply-To: References: <1441489070.554776.1560287280181.JavaMail.zimbra@u-pem.fr> <998633524.561933.1560293256055.JavaMail.zimbra@u-pem.fr>, <1a720fcd-617d-c82d-0f15-f19479a67eb1@oracle.com>, Message-ID: [my apologies for any double e-mails, sending to amber-dev now as suggested] Hi I?d like to chime in on the discussion w.r.t. encapsulation relaxation, as brought up by R?mi. While I agree that the proposed usage of `open` would be a natural extension of the existing concept, I was always under the impression that `open` was intended as a ?temporary" migration aid. That frameworks were supposed to move away from reflection and adopt solutions based on `MethodHandles.Lookup` instead. So I'm surprised to see the use of reflection promoted now. An advantage of open packages, is that they are able to specify whom they're exporting to. So I can say: `opens foo.ser to some.ser.framework` and `opens foo.cdi to some.cdi.framework`. And the CDI framework would be unable to reflect on the foo.ser package, and vice versa. In contrast, an `open` member would always be an unqualified open, and it would not communicate to the reader *why* it was opened. Now if the member is annotated with `@Deserializer`, I could assume it was opened for serialization purposes, but I cannot be sure that this was really the reason. And for open members without a well-known annotation, it would be totally unclear what the purpose of their open-ness is. Another advantage of open packages, is that glancing over the module descriptor is sufficient to know what's accessible, module-wide, both at compile- and run-time. By allowing `open` on individual members, this would no longer be possible (or at least: you'd need a tool to inspect the module & list all open members for you). If a finer-grained mechanism is deemed necessary, I'd propose instead to allow annotations in the `opens` clauses of a module descriptor: `opens @Serializer, at Deserializer to foo.ser`. This would then allow the `foo.ser` module reflective access to all members that are annotated with either of the given annotations. This would retain the advantages of being able to open reflective access to a single module, as well as keeping the module descriptor self-contained in terms of what's accessible and what not. Kind regards, Anthony ________________________________ From: amber-spec-observers on behalf of Brian Goetz Sent: Wednesday, June 12, 2019 1:01:38 AM To: forax at univ-mlv.fr Cc: amber-spec-experts Subject: Re: Towards better serialization >> There are surely a range of options here, but the one you propose takes >> two orthogonal considerations and couples them -- which is reinventing >> one of the sins of original serialization. (And, other frameworks >> (e.g., dependency injection, mocking, etc) have similar need for dynamic >> access to members that are not intended as part of the "front door" API >> anyway.) > you want to special mechanism for the serialization, no ? No, I want an _unspecial_ mechanism for the serialization. I want the user to code with ordinary constructors and pattern extractors, and have serialization just call them, informed by metadata (which is how we pass information to frameworks.) > Otherwise, we already have java.lang.invoke.Lookup.privateLookupIn() and the open keyword on the module/package. Yes, Lookup is a possible implementation mechanism for such an relaxed encapsulation mechanism. But aligning with what modules do, just at a finer-grained level, is extending an existing concept in a natural way, which seems preferable to adding a new concept to the programming model. > It already encodes the semantics "we believe in encapsulation but sometimes we don't". > Having a finer grain version of "open" goes against what was decided by the JPMS EG in my humble opinion. > We could surely ditch it, and say "If you want to have serializable classes in your module, open the whole module." And some users might be OK with that, even though it is squashing a bug with a tank. But, in reality this _is_ a new category of accessibility modifier -- that a method is dynamically accessible regardless of its static accessibility. And having this appear clearly in the source file makes it much more obvious what is going on. The high-order bit here is "banish the magic". From brian.goetz at oracle.com Sun Jun 16 23:14:14 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 16 Jun 2019 19:14:14 -0400 Subject: Towards better serialization In-Reply-To: References: <1441489070.554776.1560287280181.JavaMail.zimbra@u-pem.fr> <998633524.561933.1560293256055.JavaMail.zimbra@u-pem.fr> <1a720fcd-617d-c82d-0f15-f19479a67eb1@oracle.com> Message-ID: <428ce223-668b-0098-712a-cd8cbe0aebf8@oracle.com> > While I agree that the proposed usage of `open` would be a natural extension of the existing concept, I was always under the impression that `open` was intended as a ?temporary" migration aid. That frameworks were supposed to move away from reflection and adopt solutions based on `MethodHandles.Lookup` instead. So I'm surprised to see the use of reflection promoted now. Two reactions: ?- First, don't take the paper as something written in stone; it is a first draft.? (A first draft that reflects hundreds of hours of analysis (if not more) by multiple people over multiple years, but a first draft nonetheless.? This is just the first version that reached a level of "doesn't suck" sufficient that it was good enough to share publicly, but I have no illusions that this is in any sense "done" -- it's more that we have finally arrived at the starting line.)? Accordingly, the specifics of how fine-grained the relaxation mechanism, are a stake in the ground -- the high order bit here is "there should be some way to identify individual methods as having different dynamic accessibility as static accessibility, allowing private methods in private classes in non-exported packages to still somehow be callable dynamically -- based on an explicit indication in the source."? The exact details are to be determined. Similarly, whether exposed via classic reflection vs Lookup is a detail to be determined. ?- I think you may have over-rotated towards the "reflection is dead" meme.? Yes, Lookup is "better" because it is explicit, and allows the access checks to be done at lookup time rather than on each invocation.? But, reflection does things that Lookup does not (or at least, not yet); you can't iterate over the methods of a class via a Lookup, let alone interrogate them for their annotations, or query their Signature attributes, or any number of other things frameworks like to do.? So it is likely that frameworks will be using reflection for quite a while, and that's OK. > An advantage of open packages, is that they are able to specify whom they're exporting to. So I can say: `opens foo.ser to some.ser.framework` and `opens foo.cdi to some.cdi.framework`. There's a pretty broad spectrum of granularity possible here.? On the one extreme, you could just say "we don't need open methods, we have open packages -- if you want to serialize, open the package." On the other extreme, you could say that open methods are way too coarse grained; they tar serialization frameworks and dependency injection frameworks and mocking frameworks with the same brush. And there's a lot in the middle. There's also a danger that the search for more accurate permission granularity becomes a rathole; for example, the security manager permissions model is quite fine-grained, but in reality people rarely use that mechanism to tailor just the right security policy -- it's too hard, too fussy, too much work, too hard to keep it in sync with what the code actually needs.? So while we might over time attempt to put more structure on "back door APIs", this is probably a good starting position. Further, putting "opens X to Y" in the source code may actually require us to name Y before we actually know it; when you're writing a library class, do you really know which serialization frameworks the application into which your library is incorporated will be using?? This seems more an issue for application assembly time -- Y is often only known when the entire application is put together -- than of component development time.? But if the `opens` clause is in the source file, we only know what is known at component development time. So, yes, there are likely to be more mechanisms to model accessibility on the backdoor API (including, probably, the ability to say things like "I know there are methods in module X that are open, but I still want them encapsulated in MY application") -- but I think its premature at this stage to try to design them now. Cheers, -Brian From jan.lahoda at oracle.com Mon Jun 17 15:35:37 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Mon, 17 Jun 2019 15:35:37 +0000 Subject: hg: amber/amber: 3 new changesets Message-ID: <201906171535.x5HFZciN007803@aojmv0008.oracle.com> Changeset: e6e27550e2d5 Author: jlahoda Date: 2019-06-17 17:14 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/e6e27550e2d5 Using subtyping to find patterns. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! test/langtools/tools/javac/patterns/SimpleDeconstructionPattern.java Changeset: 91e02ad382d2 Author: jlahoda Date: 2019-06-17 17:18 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/91e02ad382d2 Correcting handling of yield in matching switch expressions. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransSwitches.java ! test/langtools/tools/javac/patterns/SwitchExpressionWithPatterns.java Changeset: 321d2ca49a87 Author: jlahoda Date: 2019-06-17 17:21 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/321d2ca49a87 Merging recent changes from the patterns branch into the patterns-deconstruction branch. ! test/langtools/tools/javac/patterns/SwitchExpressionWithPatterns.java From kasperni at gmail.com Mon Jun 17 19:35:25 2019 From: kasperni at gmail.com (Kasper Nielsen) Date: Mon, 17 Jun 2019 20:35:25 +0100 Subject: Towards better serialization In-Reply-To: <428ce223-668b-0098-712a-cd8cbe0aebf8@oracle.com> References: <1441489070.554776.1560287280181.JavaMail.zimbra@u-pem.fr> <998633524.561933.1560293256055.JavaMail.zimbra@u-pem.fr> <1a720fcd-617d-c82d-0f15-f19479a67eb1@oracle.com> <428ce223-668b-0098-712a-cd8cbe0aebf8@oracle.com> Message-ID: > - I think you may have over-rotated towards the "reflection is dead" > meme. Yes, Lookup is "better" because it is explicit, and allows the > access checks to be done at lookup time rather than on each invocation. > But, reflection does things that Lookup does not (or at least, not yet); > you can't iterate over the methods of a class via a Lookup, let alone > interrogate them for their annotations, or query their Signature > attributes, or any number of other things frameworks like to do. So it > is likely that frameworks will be using reflection for quite a while, > and that's OK. To add to this, Lookup objects works really well, when you are have a _single_ module that has a dependency on a _known_ library. And _you_ are in full control of initializing the library. For non-trivial applications it quickly gets a bit muddy. Let's say you have an application that consists of multiple domain modules. For example, you might have a "customer-module", an "order-module" and a "fulfillment-module". You are also using DI framework, a JPA framework, a JaxRS framework, and some kind of serialization framework. Now you are in a situation where everyone one of your domain modules needs to provide a Lookup object to each of the frameworks in order to use them. That is #domainmodules*#frameworks number of lookup objects that needs to be exchanged. - So the problem here is the handoff of the Lookup object from one module to another. One way to solve it is to create a base module for your application, and use a ServiceLoader for each of your domain modules to handoff a Lookup object to the base module that then initializes each framework with the set of gathered Lookup objects. But now each framework needs to keep track of a bunch of Lookup objects. And do a lot of matching for every class it needs to operate on. This gets further complicated if you are adding/removing module layers at runtime. - Split-module classes can also turn out to be an issue. A split-module class is basically a concrete class that extends an abstract class from another module. Each of them having an annotated member that you need to access. This is quite common, for example, when you work with ORMs where you have some kind of base entity that every one of you entities across modules extend. You are now in a situation where you need one Lookup object to access members on the abstract class and another Lookup object to access the members on the concrete class. This is mainly a burden on those that implement frameworks. But if you have APIs with the need to pass Lookup objects ad-hoc you end up contemplating APIs such as "public inject(Class type, MethodHandles.Lookup... lookups)". - Finally, the problem about not knowing which serialization framework until application assembly time, and in many cases deployment time (think a generic WAR), is a general problem. And not only applicable to serialization frameworks And why I think the module system (as is) is going to be a hard sell to someone like jakarta.ee. You can't say open this module to "jakarta.ee.cdi" because that's an API and not an implementation. So your only choice is to open the whole module. Or be specific about using "jakartaee-vendor.cdi" in every one of your modules. > There's also a danger that the search for more accurate permission > granularity becomes a rathole; for example, the security manager > permissions model is quite fine-grained, but in reality people rarely > use that mechanism to tailor just the right security policy -- it's too > hard, too fussy, too much work, too hard to keep it in sync with what > the code actually needs. Yes, I think OSGI is good example. Here you have to specify your requirements on the package level. I really think that is too much work. And I much prefer choosing to specify them at the module level as is done now. I would even say we could relax opening up a module a bit more. And allowing for opening a whole module to another module. At the moment you can only open the module to everyone, or you have to specify each package you want to open to a specific module. This is a bit cumbersome, for example, if you have a project that consists of 10 packages that all use the same DI framework. All in all, I really like working with the module system. But it is heavily skewed (as designed) towards static system where you have all information upfront. /Kasper From vicente.romero at oracle.com Mon Jun 17 23:32:53 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 17 Jun 2019 23:32:53 +0000 Subject: hg: amber/amber: bug fixes plus updates to existing and addition of new regression tests Message-ID: <201906172332.x5HNWsE5025406@aojmv0008.oracle.com> Changeset: 80710dd15ca0 Author: vromero Date: 2019-06-17 19:31 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/80710dd15ca0 bug fixes plus updates to existing and addition of new regression tests ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java - test/langtools/tools/javac/datum/AllowBodyLessInterfacesTest.java - test/langtools/tools/javac/datum/AllowStaticFieldsInRecordsTest.java - test/langtools/tools/javac/datum/DataClassAsSuper.java - test/langtools/tools/javac/datum/DataClassAsSuper.out - test/langtools/tools/javac/datum/PrimaryConstructorMustBePublic.java - test/langtools/tools/javac/datum/PrimaryConstructorMustBePublic.out - test/langtools/tools/javac/datum/RecordsCantBeAbstractTest.java - test/langtools/tools/javac/datum/RecordsCantBeAbstractTest.out - test/langtools/tools/javac/datum/RecordsMustBeStaticTest.java + test/langtools/tools/javac/datum/allow_static_fields/AllowStaticFieldsInRecordsTest.java + test/langtools/tools/javac/datum/bodyless_interfaces/AllowBodyLessInterfacesTest.java + test/langtools/tools/javac/datum/canonical_constructor/BadCanonicalConstructorTest.java + test/langtools/tools/javac/datum/canonical_constructor/BadCanonicalConstructorTest.out + test/langtools/tools/javac/datum/canonical_constructor/CanonicalConstructorTest.java + test/langtools/tools/javac/datum/fields/RecordFieldsTest.java + test/langtools/tools/javac/datum/nested_records_must_be_static_and_final/NestedRecordsMustBeStaticAndFinalTest.java + test/langtools/tools/javac/datum/records_cant_be_abstract/RecordsCantBeAbstractTest.java + test/langtools/tools/javac/datum/records_cant_be_abstract/RecordsCantBeAbstractTest.out + test/langtools/tools/javac/datum/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.java + test/langtools/tools/javac/datum/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.out From maurizio.cimadamore at oracle.com Tue Jun 18 02:37:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 18 Jun 2019 02:37:55 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906180237.x5I2btlx008109@aojmv0008.oracle.com> Changeset: ac070cb22818 Author: mcimadamore Date: 2019-06-18 04:37 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/ac070cb22818 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java - test/langtools/tools/javac/datum/AllowBodyLessInterfacesTest.java - test/langtools/tools/javac/datum/AllowStaticFieldsInRecordsTest.java - test/langtools/tools/javac/datum/DataClassAsSuper.java - test/langtools/tools/javac/datum/DataClassAsSuper.out - test/langtools/tools/javac/datum/PrimaryConstructorMustBePublic.java - test/langtools/tools/javac/datum/PrimaryConstructorMustBePublic.out - test/langtools/tools/javac/datum/RecordsCantBeAbstractTest.java - test/langtools/tools/javac/datum/RecordsCantBeAbstractTest.out - test/langtools/tools/javac/datum/RecordsMustBeStaticTest.java From maurizio.cimadamore at oracle.com Tue Jun 18 02:38:21 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 18 Jun 2019 02:38:21 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906180238.x5I2cL5f009108@aojmv0008.oracle.com> Changeset: 9221f7d08dd6 Author: mcimadamore Date: 2019-06-18 04:38 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/9221f7d08dd6 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java - test/langtools/tools/javac/datum/AllowBodyLessInterfacesTest.java - test/langtools/tools/javac/datum/AllowStaticFieldsInRecordsTest.java - test/langtools/tools/javac/datum/DataClassAsSuper.java - test/langtools/tools/javac/datum/DataClassAsSuper.out - test/langtools/tools/javac/datum/PrimaryConstructorMustBePublic.java - test/langtools/tools/javac/datum/PrimaryConstructorMustBePublic.out - test/langtools/tools/javac/datum/RecordsCantBeAbstractTest.java - test/langtools/tools/javac/datum/RecordsCantBeAbstractTest.out - test/langtools/tools/javac/datum/RecordsMustBeStaticTest.java From vicente.romero at oracle.com Tue Jun 18 19:27:51 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 18 Jun 2019 19:27:51 +0000 Subject: hg: amber/amber: updating and reorganizing regression tests Message-ID: <201906181927.x5IJRq7K024630@aojmv0008.oracle.com> Changeset: a7ed37b357b7 Author: vromero Date: 2019-06-18 15:27 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/a7ed37b357b7 updating and reorganizing regression tests - test/langtools/tools/javac/datum/BadRecord.java - test/langtools/tools/javac/datum/BadRecord.out - test/langtools/tools/javac/datum/BadUseOfRecordTest.java - test/langtools/tools/javac/datum/BadUseOfRecordTest.out - test/langtools/tools/javac/datum/CheckDatumMembersAccess.java - test/langtools/tools/javac/datum/CheckReadResolveMethodTest.java - test/langtools/tools/javac/datum/DataClassTest.java - test/langtools/tools/javac/datum/DatumCanNotDeclaredFieldsWithSameName.java - test/langtools/tools/javac/datum/DatumCanNotDeclaredFieldsWithSameName.out - test/langtools/tools/javac/datum/Neg01.java - test/langtools/tools/javac/datum/Neg01.out - test/langtools/tools/javac/datum/NoAddFieldsCanBeDeclaredInDatumTest.java - test/langtools/tools/javac/datum/NoAddFieldsCanBeDeclaredInDatumTest.out - test/langtools/tools/javac/datum/ParameterLessConstructorsTest.java - test/langtools/tools/javac/datum/Pos01.java - test/langtools/tools/javac/datum/RecordsCanReDeclareMembersTest.java - test/langtools/tools/javac/datum/RecordsCantDeclareFieldModifiersTest.java - test/langtools/tools/javac/datum/RecordsCantDeclareFieldModifiersTest.out - test/langtools/tools/javac/datum/UserDefinedAccessorsMustBePublic.java - test/langtools/tools/javac/datum/UserDefinedAccessorsMustBePublic.out - test/langtools/tools/javac/datum/UserDefinedMethodsTest.java - test/langtools/tools/javac/datum/writeread/Record.java - test/langtools/tools/javac/datum/writeread/WriteReadTest.java + test/langtools/tools/javac/records/BadRecord.java + test/langtools/tools/javac/records/BadRecord.out + test/langtools/tools/javac/records/BadUseOfRecordKeywordTest.java + test/langtools/tools/javac/records/BadUseOfRecordKeywordTest.out + test/langtools/tools/javac/records/UserDefinedMethodsTest.java = test/langtools/tools/javac/records/allow_static_fields/AllowStaticFieldsInRecordsTest.java < test/langtools/tools/javac/datum/allow_static_fields/AllowStaticFieldsInRecordsTest.java = test/langtools/tools/javac/records/bodyless_interfaces/AllowBodyLessInterfacesTest.java < test/langtools/tools/javac/datum/bodyless_interfaces/AllowBodyLessInterfacesTest.java + test/langtools/tools/javac/records/fields/CheckDatumMembersAccess.java + test/langtools/tools/javac/records/fields/DatumCanNotDeclaredFieldsWithSameName.java + test/langtools/tools/javac/records/fields/DatumCanNotDeclaredFieldsWithSameName.out + test/langtools/tools/javac/records/fields/NoAddInstanceFieldsCanBeDeclaredInDatumTest.java + test/langtools/tools/javac/records/fields/NoAddInstanceFieldsCanBeDeclaredInDatumTest.out = test/langtools/tools/javac/records/fields/RecordFieldsTest.java < test/langtools/tools/javac/datum/fields/RecordFieldsTest.java + test/langtools/tools/javac/records/fields/RecordsCantDeclareFieldModifiersTest.java + test/langtools/tools/javac/records/fields/RecordsCantDeclareFieldModifiersTest.out + test/langtools/tools/javac/records/mandated_members/CheckRecordMembers.java + test/langtools/tools/javac/records/mandated_members/RecordsCanReDeclareMembersTest.java + test/langtools/tools/javac/records/mandated_members/UserDefinedAccessorsMustBePublic.java + test/langtools/tools/javac/records/mandated_members/UserDefinedAccessorsMustBePublic.out = test/langtools/tools/javac/records/mandated_members/canonical_constructor/BadCanonicalConstructorTest.java < test/langtools/tools/javac/datum/canonical_constructor/BadCanonicalConstructorTest.java = test/langtools/tools/javac/records/mandated_members/canonical_constructor/BadCanonicalConstructorTest.out < test/langtools/tools/javac/datum/canonical_constructor/BadCanonicalConstructorTest.out = test/langtools/tools/javac/records/mandated_members/canonical_constructor/CanonicalConstructorTest.java < test/langtools/tools/javac/datum/canonical_constructor/CanonicalConstructorTest.java + test/langtools/tools/javac/records/mandated_members/canonical_constructor/ParameterLessConstructorsTest.java + test/langtools/tools/javac/records/mandated_members/read_resolve_method/CheckReadResolveMethodTest.java = test/langtools/tools/javac/records/nested_records_must_be_static_and_final/NestedRecordsMustBeStaticAndFinalTest.java < test/langtools/tools/javac/datum/nested_records_must_be_static_and_final/NestedRecordsMustBeStaticAndFinalTest.java = test/langtools/tools/javac/records/records_cant_be_abstract/RecordsCantBeAbstractTest.java < test/langtools/tools/javac/datum/records_cant_be_abstract/RecordsCantBeAbstractTest.java = test/langtools/tools/javac/records/records_cant_be_abstract/RecordsCantBeAbstractTest.out < test/langtools/tools/javac/datum/records_cant_be_abstract/RecordsCantBeAbstractTest.out = test/langtools/tools/javac/records/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.java < test/langtools/tools/javac/datum/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.java = test/langtools/tools/javac/records/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.out < test/langtools/tools/javac/datum/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.out + test/langtools/tools/javac/records/writeread/Record.java + test/langtools/tools/javac/records/writeread/WriteReadTest.java From maurizio.cimadamore at oracle.com Tue Jun 18 19:30:36 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 18 Jun 2019 19:30:36 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906181930.x5IJUaoJ026369@aojmv0008.oracle.com> Changeset: 613a80e8256f Author: mcimadamore Date: 2019-06-18 21:30 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/613a80e8256f Automatic merge with records-and-sealed - test/langtools/tools/javac/datum/BadRecord.java - test/langtools/tools/javac/datum/BadRecord.out - test/langtools/tools/javac/datum/BadUseOfRecordTest.java - test/langtools/tools/javac/datum/BadUseOfRecordTest.out - test/langtools/tools/javac/datum/CheckDatumMembersAccess.java - test/langtools/tools/javac/datum/CheckReadResolveMethodTest.java - test/langtools/tools/javac/datum/DataClassTest.java - test/langtools/tools/javac/datum/DatumCanNotDeclaredFieldsWithSameName.java - test/langtools/tools/javac/datum/DatumCanNotDeclaredFieldsWithSameName.out - test/langtools/tools/javac/datum/Neg01.java - test/langtools/tools/javac/datum/Neg01.out - test/langtools/tools/javac/datum/NoAddFieldsCanBeDeclaredInDatumTest.java - test/langtools/tools/javac/datum/NoAddFieldsCanBeDeclaredInDatumTest.out - test/langtools/tools/javac/datum/ParameterLessConstructorsTest.java - test/langtools/tools/javac/datum/Pos01.java - test/langtools/tools/javac/datum/RecordsCanReDeclareMembersTest.java - test/langtools/tools/javac/datum/RecordsCantDeclareFieldModifiersTest.java - test/langtools/tools/javac/datum/RecordsCantDeclareFieldModifiersTest.out - test/langtools/tools/javac/datum/UserDefinedAccessorsMustBePublic.java - test/langtools/tools/javac/datum/UserDefinedAccessorsMustBePublic.out - test/langtools/tools/javac/datum/UserDefinedMethodsTest.java - test/langtools/tools/javac/datum/allow_static_fields/AllowStaticFieldsInRecordsTest.java - test/langtools/tools/javac/datum/bodyless_interfaces/AllowBodyLessInterfacesTest.java - test/langtools/tools/javac/datum/canonical_constructor/BadCanonicalConstructorTest.java - test/langtools/tools/javac/datum/canonical_constructor/BadCanonicalConstructorTest.out - test/langtools/tools/javac/datum/canonical_constructor/CanonicalConstructorTest.java - test/langtools/tools/javac/datum/fields/RecordFieldsTest.java - test/langtools/tools/javac/datum/nested_records_must_be_static_and_final/NestedRecordsMustBeStaticAndFinalTest.java - test/langtools/tools/javac/datum/records_cant_be_abstract/RecordsCantBeAbstractTest.java - test/langtools/tools/javac/datum/records_cant_be_abstract/RecordsCantBeAbstractTest.out - test/langtools/tools/javac/datum/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.java - test/langtools/tools/javac/datum/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.out - test/langtools/tools/javac/datum/writeread/Record.java - test/langtools/tools/javac/datum/writeread/WriteReadTest.java From maurizio.cimadamore at oracle.com Tue Jun 18 19:31:01 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 18 Jun 2019 19:31:01 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906181931.x5IJV2R9026851@aojmv0008.oracle.com> Changeset: c365fc1be242 Author: mcimadamore Date: 2019-06-18 21:30 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/c365fc1be242 Automatic merge with records-and-sealed - test/langtools/tools/javac/datum/BadRecord.java - test/langtools/tools/javac/datum/BadRecord.out - test/langtools/tools/javac/datum/BadUseOfRecordTest.java - test/langtools/tools/javac/datum/BadUseOfRecordTest.out - test/langtools/tools/javac/datum/CheckDatumMembersAccess.java - test/langtools/tools/javac/datum/CheckReadResolveMethodTest.java - test/langtools/tools/javac/datum/DataClassTest.java - test/langtools/tools/javac/datum/DatumCanNotDeclaredFieldsWithSameName.java - test/langtools/tools/javac/datum/DatumCanNotDeclaredFieldsWithSameName.out - test/langtools/tools/javac/datum/Neg01.java - test/langtools/tools/javac/datum/Neg01.out - test/langtools/tools/javac/datum/NoAddFieldsCanBeDeclaredInDatumTest.java - test/langtools/tools/javac/datum/NoAddFieldsCanBeDeclaredInDatumTest.out - test/langtools/tools/javac/datum/ParameterLessConstructorsTest.java - test/langtools/tools/javac/datum/Pos01.java - test/langtools/tools/javac/datum/RecordsCanReDeclareMembersTest.java - test/langtools/tools/javac/datum/RecordsCantDeclareFieldModifiersTest.java - test/langtools/tools/javac/datum/RecordsCantDeclareFieldModifiersTest.out - test/langtools/tools/javac/datum/UserDefinedAccessorsMustBePublic.java - test/langtools/tools/javac/datum/UserDefinedAccessorsMustBePublic.out - test/langtools/tools/javac/datum/UserDefinedMethodsTest.java - test/langtools/tools/javac/datum/allow_static_fields/AllowStaticFieldsInRecordsTest.java - test/langtools/tools/javac/datum/bodyless_interfaces/AllowBodyLessInterfacesTest.java - test/langtools/tools/javac/datum/canonical_constructor/BadCanonicalConstructorTest.java - test/langtools/tools/javac/datum/canonical_constructor/BadCanonicalConstructorTest.out - test/langtools/tools/javac/datum/canonical_constructor/CanonicalConstructorTest.java - test/langtools/tools/javac/datum/fields/RecordFieldsTest.java - test/langtools/tools/javac/datum/nested_records_must_be_static_and_final/NestedRecordsMustBeStaticAndFinalTest.java - test/langtools/tools/javac/datum/records_cant_be_abstract/RecordsCantBeAbstractTest.java - test/langtools/tools/javac/datum/records_cant_be_abstract/RecordsCantBeAbstractTest.out - test/langtools/tools/javac/datum/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.java - test/langtools/tools/javac/datum/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.out - test/langtools/tools/javac/datum/writeread/Record.java - test/langtools/tools/javac/datum/writeread/WriteReadTest.java From vicente.romero at oracle.com Thu Jun 20 15:06:38 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 20 Jun 2019 15:06:38 +0000 Subject: hg: amber/amber: improving generation and error detection on canonical constructors Message-ID: <201906201506.x5KF6cjS027818@aojmv0008.oracle.com> Changeset: ed1f7c1d4ff3 Author: vromero Date: 2019-06-20 11:05 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/ed1f7c1d4ff3 improving generation and error detection on canonical constructors ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/records/mandated_members/canonical_constructor/BadCanonicalConstructorTest.java + test/langtools/tools/javac/records/mandated_members/canonical_constructor/MismatchTest.java + test/langtools/tools/javac/records/mandated_members/canonical_constructor/MismatchTest.out From maurizio.cimadamore at oracle.com Thu Jun 20 15:11:58 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 15:11:58 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906201511.x5KFBxgW004558@aojmv0008.oracle.com> Changeset: fa374e622161 Author: mcimadamore Date: 2019-06-20 17:11 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/fa374e622161 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From vicente.romero at oracle.com Thu Jun 20 16:08:49 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 20 Jun 2019 16:08:49 +0000 Subject: hg: amber/amber: manual merge with records branch Message-ID: <201906201608.x5KG8o9c014448@aojmv0008.oracle.com> Changeset: 7fa5bdf1b954 Author: vromero Date: 2019-06-20 12:08 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/7fa5bdf1b954 manual merge with records branch ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties From maurizio.cimadamore at oracle.com Thu Jun 20 20:02:41 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:02:41 +0000 Subject: hg: amber/amber: 59 new changesets Message-ID: <201906202002.x5KK2kcn015942@aojmv0008.oracle.com> Changeset: d57d61aafef9 Author: bpb Date: 2019-06-13 13:43 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/d57d61aafef9 8223813: (aio) Iocp.getErrorMessage should drop trailing \r\n Reviewed-by: alanb, igerasim, rriggs ! src/java.base/windows/native/libnet/Inet4AddressImpl.c ! src/java.base/windows/native/libnio/ch/Iocp.c ! src/java.base/windows/native/libnio/fs/WindowsNativeDispatcher.c Changeset: 5c52d053cb14 Author: jwilhelm Date: 2019-06-14 01:09 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/5c52d053cb14 Added tag jdk-14+1 for changeset 2f4e214781a1 ! .hgtags Changeset: 4a3c13548b9e Author: darcy Date: 2019-06-13 16:39 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/4a3c13548b9e 8222369: ExecutableElement.getReceiverType returns null instead of NOTYPE Reviewed-by: jjg ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java + test/langtools/tools/javac/processing/model/element/TestExecutableReceiverType.java ! test/langtools/tools/javac/sym/ElementStructureTest.java Changeset: 1afe0cb93482 Author: tvaleev Date: 2019-06-14 05:02 +0000 URL: http://hg.openjdk.java.net/amber/amber/rev/1afe0cb93482 8225339: Optimize HashMap.keySet()/HashMap.values()/HashSet toArray() methods Reviewed-by: rriggs, redestad, smarks ! src/java.base/share/classes/java/util/HashMap.java ! src/java.base/share/classes/java/util/HashSet.java ! src/java.base/share/classes/java/util/LinkedHashMap.java + test/jdk/java/util/HashMap/ToArray.java + test/micro/org/openjdk/bench/java/util/HashMapToArray.java Changeset: 444b2d3471e9 Author: jpai Date: 2019-06-14 10:19 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/444b2d3471e9 8217705: HttpClient - wrong exception type when bad status line is received Summary: Throw a ProtocolException if the status code in the HTTP response's status line isn't a 3-digit integer Reviewed-by: dfuchs ! src/java.net.http/share/classes/jdk/internal/net/http/Http1HeaderParser.java ! test/jdk/java/net/httpclient/whitebox/java.net.http/jdk/internal/net/http/Http1HeaderParserTest.java Changeset: 5dcab10ebfbe Author: thartmann Date: 2019-06-14 13:26 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/5dcab10ebfbe 8225783: Incorrect use of binary operators on booleans in type.cpp Summary: Use logical operators instead. Reviewed-by: roland ! src/hotspot/share/opto/type.cpp Changeset: b444bbe5c45c Author: shade Date: 2019-06-14 16:47 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/b444bbe5c45c 8225743: Remove ShenandoahBarrierSetC2::escape_is_barrier_node and related GC interface Reviewed-by: roland, eosterlund ! src/hotspot/share/gc/shared/c2/barrierSetC2.hpp ! src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp ! src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp ! src/hotspot/share/opto/escape.cpp Changeset: 9c6d907cefac Author: zgu Date: 2019-06-14 11:58 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/9c6d907cefac 8225550: Shenandoah: Prevent SH::object_iterate() call's side-effects Reviewed-by: shade ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp Changeset: 49ed5e31fe1e Author: zgu Date: 2019-06-14 12:08 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/49ed5e31fe1e 8225801: Shenandoah: Adjust SA to reflect recent forwarding pointer changes Reviewed-by: shade ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shenandoah/ShenandoahHeap.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shenandoah/ShenandoahHeapRegion.java Changeset: 5eeee2cc94f5 Author: rfield Date: 2019-06-14 20:30 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/5eeee2cc94f5 8200701: jdk/jshell/ExceptionsTest.java fails on Windows, after JDK-8198801 8159740: JShell: corralled declarations do not have correct source to wrapper mapping 8212167: JShell : Stack trace of exception has wrong line number Summary: Build corralled (recoverable undeclared definitions) declarations from position translating wraps.... Reviewed-by: jlahoda ! src/jdk.jshell/share/classes/jdk/jshell/Corraller.java ! src/jdk.jshell/share/classes/jdk/jshell/Eval.java ! src/jdk.jshell/share/classes/jdk/jshell/GeneralWrap.java ! src/jdk.jshell/share/classes/jdk/jshell/SourceCodeAnalysisImpl.java ! src/jdk.jshell/share/classes/jdk/jshell/Wrap.java ! test/langtools/ProblemList.txt ! test/langtools/jdk/jshell/ClassesTest.java ! test/langtools/jdk/jshell/ExceptionsTest.java ! test/langtools/jdk/jshell/KullaTesting.java ! test/langtools/jdk/jshell/WrapperTest.java Changeset: e53ec3b362f4 Author: ngasson Date: 2019-06-17 15:31 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/e53ec3b362f4 8224851: AArch64: fix warnings and errors with Clang and GCC 8.3 Reviewed-by: aph, kbarrett ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/assembler_aarch64.hpp ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_LIRGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/frame_aarch64.cpp ! src/hotspot/cpu/aarch64/interp_masm_aarch64.hpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64_log.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64_trig.cpp ! src/hotspot/cpu/aarch64/vm_version_aarch64.cpp ! src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.hpp ! src/hotspot/os_cpu/linux_aarch64/copy_linux_aarch64.s ! src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp Changeset: 46049b8a5658 Author: dfuchs Date: 2019-06-17 20:03 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/46049b8a5658 8225578: Replace wildcard address with loopback or local host in tests - part 16 Summary: Fixes java/net/Authenticator and java/net/CookieHandler to stop depending on the wildcard address, wherever possible. Reviewed-by: chegar ! test/jdk/java/net/Authenticator/AuthNPETest.java ! test/jdk/java/net/Authenticator/B4678055.java ! test/jdk/java/net/Authenticator/B4759514.java ! test/jdk/java/net/Authenticator/B4769350.java ! test/jdk/java/net/Authenticator/B4921848.java ! test/jdk/java/net/Authenticator/B4933582.java ! test/jdk/java/net/Authenticator/B4962064.java ! test/jdk/java/net/Authenticator/B6870935.java ! test/jdk/java/net/Authenticator/B8034170.java ! test/jdk/java/net/Authenticator/BasicTest.java ! test/jdk/java/net/Authenticator/BasicTest3.java ! test/jdk/java/net/Authenticator/BasicTest4.java ! test/jdk/java/net/Authenticator/Deadlock.java ! test/jdk/java/net/CookieHandler/CookieHandlerTest.java ! test/jdk/java/net/CookieHandler/CookieManagerTest.java ! test/jdk/java/net/CookieHandler/EmptyCookieHeader.java ! test/jdk/java/net/CookieHandler/LocalHostCookie.java Changeset: da554fdb51d0 Author: ysuenaga Date: 2019-06-18 10:54 +0900 URL: http://hg.openjdk.java.net/amber/amber/rev/da554fdb51d0 8225636: SA can't handle prelinked libraries Reviewed-by: sspitsyn, cjplummer ! src/jdk.hotspot.agent/linux/native/libsaproc/ps_core.c Changeset: 32cce302a1fd Author: rehn Date: 2019-06-18 11:06 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/32cce302a1fd 8226227: Missing include of thread.inline.hpp Reviewed-by: coleenp ! src/hotspot/share/gc/shared/gcLocker.inline.hpp ! src/hotspot/share/runtime/vframe.inline.hpp Changeset: b78af6d8a252 Author: chegar Date: 2019-06-18 14:52 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/b78af6d8a252 8225583: Examine the HttpResponse.BodySubscribers for null handling Reviewed-by: dfuchs, prappo ! src/java.net.http/share/classes/java/net/http/HttpResponse.java ! src/java.net.http/share/classes/jdk/internal/net/http/LineSubscriberAdapter.java ! src/java.net.http/share/classes/jdk/internal/net/http/ResponseSubscribers.java Changeset: 8d50ff464ae5 Author: rriggs Date: 2019-06-18 10:37 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/8d50ff464ae5 8226242: Diagnostic output for posix_spawn failure Reviewed-by: bpb, stuefe, dholmes, martin ! src/java.base/unix/native/libjava/ProcessImpl_md.c Changeset: 8259c22be42c Author: zgu Date: 2019-06-18 13:11 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/8259c22be42c 8225804: SA: Remove unused CollectedHeap.oopOffset() method Reviewed-by: rkennke ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/CollectedHeap.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java Changeset: 17f24c0e2f01 Author: chegar Date: 2019-06-18 18:38 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/17f24c0e2f01 8226319: Add forgotten test/jdk/java/net/httpclient/BodySubscribersTest.java Reviewed-by: dfuchs, prappo + test/jdk/java/net/httpclient/BodySubscribersTest.java Changeset: d69faba543ec Author: iignatyev Date: 2019-06-13 13:42 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/d69faba543ec 8225746: hotspot problem lists list unexciting tests Reviewed-by: kvn ! test/hotspot/jtreg/ProblemList-graal.txt ! test/hotspot/jtreg/ProblemList.txt ! test/jdk/ProblemList-graal.txt Changeset: bba34c350225 Author: mullan Date: 2019-06-13 17:49 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/bba34c350225 8225730: Add sun/security/pkcs11/tls/tls12/FipsModeTLS12.java to ProblemList for linux Reviewed-by: xuelei ! test/jdk/ProblemList.txt Changeset: 24872d367cb6 Author: kvn Date: 2019-06-13 17:18 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/24872d367cb6 8209590: compiler/compilercontrol/DontInlineCommandTest.java test fails with "Inline message differs" error Summary: increase InlineSmallCode to 4000 for tests which check inlining decisions. Reviewed-by: iignatyev ! test/hotspot/jtreg/compiler/compilercontrol/share/scenario/Command.java Changeset: c53db49c7a2f Author: jwilhelm Date: 2019-06-14 03:50 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/c53db49c7a2f Added tag jdk-13+25 for changeset 22b3b7983ada ! .hgtags Changeset: c3b354fdbaa4 Author: shade Date: 2019-06-14 10:02 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/c3b354fdbaa4 8225695: 32-bit build failures after JDK-8080462 (Update SunPKCS11 provider with PKCS11 v2.40 support) Reviewed-by: alanb ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_general.c ! src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sign.c Changeset: 328d4a455e4b Author: xuelei Date: 2019-06-14 12:19 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/328d4a455e4b 8224829: AsyncSSLSocketClose.java has timing issue Reviewed-by: jnimeh, dfuchs ! src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java ! test/jdk/javax/net/ssl/SSLSocket/Tls13PacketSize.java + test/jdk/sun/security/ssl/SSLSocketImpl/BlockedAsyncClose.java Changeset: 55a79ffab804 Author: weijun Date: 2019-06-15 14:39 +0800 URL: http://hg.openjdk.java.net/amber/amber/rev/55a79ffab804 8225392: Comparison builds are failing due to cacerts file Reviewed-by: erikj, martin, mullan ! make/jdk/src/classes/build/tools/generatecacerts/GenerateCacerts.java ! src/java.base/share/classes/sun/security/tools/keytool/Main.java ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java + test/jdk/sun/security/tools/keytool/ListOrder.java Changeset: 22ce9e266a4b Author: zgu Date: 2019-06-14 12:08 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/22ce9e266a4b 8225801: Shenandoah: Adjust SA to reflect recent forwarding pointer changes Reviewed-by: shade ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shenandoah/ShenandoahHeap.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shenandoah/ShenandoahHeapRegion.java Changeset: 666f51a72171 Author: kvn Date: 2019-06-17 09:11 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/666f51a72171 8181837: [Graal] compiler/jvmci/SecurityRestrictionsTest.java fails with AccessControlException Summary: Remove test from Problem list because it does not fail anymore. Reviewed-by: iignatyev ! test/hotspot/jtreg/ProblemList-graal.txt Changeset: 2d62c1192d41 Author: dtitov Date: 2019-06-13 11:21 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/2d62c1192d41 8225543: Jcmd fails to attach to the Java process on Linux using the main class name if whitespace options were used to launch the process Reviewed-by: sspitsyn, dholmes ! src/jdk.jcmd/linux/classes/sun/tools/ProcessHelper.java ! test/jdk/sun/tools/jcmd/TestProcessHelper.java Changeset: 09ee0bd26bda Author: dtitov Date: 2019-06-17 14:31 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/09ee0bd26bda 8217348: assert(thread->is_Java_thread()) failed: just checking Reviewed-by: sspitsyn, dholmes, amenkov, jcbeyler ! src/hotspot/share/prims/jvmtiEnvBase.cpp Changeset: 6c2d53701e34 Author: rfield Date: 2019-06-17 17:14 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/6c2d53701e34 8200701: jdk/jshell/ExceptionsTest.java fails on Windows, after JDK-8198801 8159740: JShell: corralled declarations do not have correct source to wrapper mapping 8212167: JShell : Stack trace of exception has wrong line number Summary: Build corralled (recoverable undeclared definitions) declarations from position translating wraps.... Reviewed-by: jlahoda ! src/jdk.jshell/share/classes/jdk/jshell/Corraller.java ! src/jdk.jshell/share/classes/jdk/jshell/Eval.java ! src/jdk.jshell/share/classes/jdk/jshell/GeneralWrap.java ! src/jdk.jshell/share/classes/jdk/jshell/SourceCodeAnalysisImpl.java ! src/jdk.jshell/share/classes/jdk/jshell/Wrap.java ! test/langtools/ProblemList.txt ! test/langtools/jdk/jshell/ClassesTest.java ! test/langtools/jdk/jshell/ExceptionsTest.java ! test/langtools/jdk/jshell/KullaTesting.java ! test/langtools/jdk/jshell/WrapperTest.java Changeset: 922a4a554807 Author: rraghavan Date: 2019-06-18 10:00 +0530 URL: http://hg.openjdk.java.net/amber/amber/rev/922a4a554807 8226198: use of & instead of && in LibraryCallKit::arraycopy_restore_alloc_state Summary: Used logical operator correctly Reviewed-by: kvn, thartmann ! src/hotspot/share/opto/library_call.cpp Changeset: 3e08fa647eea Author: gziemski Date: 2019-06-18 12:39 -0500 URL: http://hg.openjdk.java.net/amber/amber/rev/3e08fa647eea 8225310: JFR crashed in JfrPeriodicEventSet::requestProtectionDomainCacheTableStatistics() Summary: Added lock around table usage Reviewed-by: coleenp, hseigel ! src/hotspot/share/classfile/systemDictionary.cpp Changeset: bc5a0508253c Author: jjg Date: 2019-06-18 11:52 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/bc5a0508253c 8225748: Use SHA-256 for javap classfile checksum Reviewed-by: mchung ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/Main.java ! src/jdk.jdeps/share/classes/com/sun/tools/javap/JavapTask.java ! src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap.properties ! test/langtools/tools/javac/T6942649.java ! test/langtools/tools/javap/T4884240.java Changeset: 688a2a361e14 Author: jwilhelm Date: 2019-06-18 22:48 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/688a2a361e14 Merge ! .hgtags Changeset: c439c469e803 Author: lancea Date: 2019-06-18 17:50 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/c439c469e803 8225680: Address links in java.sql.rowset Reviewed-by: jjg, bpb ! src/java.sql.rowset/share/classes/com/sun/rowset/providers/RIXMLProvider.java ! src/java.sql.rowset/share/classes/javax/sql/rowset/WebRowSet.java ! src/java.sql.rowset/share/classes/javax/sql/rowset/package-info.java Changeset: 970adfac768d Author: zgu Date: 2019-06-18 17:58 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/970adfac768d 8225573: Shenandoah: Enhance ShenandoahVerifier to ensure roots to-space invariant Reviewed-by: shade ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp ! src/hotspot/share/gc/shenandoah/shenandoahVerifier.hpp Changeset: aa800530fb49 Author: pli Date: 2019-06-17 09:40 +0000 URL: http://hg.openjdk.java.net/amber/amber/rev/aa800530fb49 8226222: [JVMCI] Export AArch64 field VM_Version::_psr_info.dczid_el0 Reviewed-by: kvn ! src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp Changeset: 7cf925f385fe Author: pliden Date: 2019-06-19 08:43 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/7cf925f385fe 8225779: Remove unused CollectedHeap::cell_header_size() Reviewed-by: eosterlund, rkennke, shade ! src/hotspot/share/asm/assembler.cpp ! src/hotspot/share/gc/shared/collectedHeap.hpp Changeset: 4efe251009b4 Author: prappo Date: 2019-06-18 14:12 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/4efe251009b4 8226303: Examine the HttpRequest.BodyPublishers for exception handling Reviewed-by: chegar ! src/java.net.http/share/classes/jdk/internal/net/http/PullPublisher.java ! src/java.net.http/share/classes/jdk/internal/net/http/RequestPublishers.java + test/jdk/java/net/httpclient/RelayingPublishers.java Changeset: e0be41293b41 Author: prappo Date: 2019-06-19 12:17 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/e0be41293b41 Merge - src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h Changeset: e9da3a44a7ed Author: zgu Date: 2019-06-19 08:52 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/e9da3a44a7ed 8225582: Shenandoah: Enable concurrent evacuation of JNIHandles Reviewed-by: rkennke, shade + src/hotspot/share/gc/shenandoah/shenandoahConcurrentRoots.cpp + src/hotspot/share/gc/shenandoah/shenandoahConcurrentRoots.hpp ! src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp ! src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahWorkerPolicy.cpp ! src/hotspot/share/gc/shenandoah/shenandoahWorkerPolicy.hpp Changeset: d7da94e6c169 Author: aph Date: 2019-06-18 16:15 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/d7da94e6c169 8225716: G1 GC: Undefined behaviour in G1BlockOffsetTablePart::block_at_or_preceding Reviewed-by: kbarrett, tschatzl ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.hpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.inline.hpp Changeset: 82deab2dd59e Author: hseigel Date: 2019-06-19 13:34 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/82deab2dd59e 8226304: Obsolete the -XX:+FailOverToOldVerifier option Summary: Change the option from deprecated to obsolete Reviewed-by: lfoltan, coleenp ! src/hotspot/share/classfile/verifier.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp Changeset: 43627549a488 Author: shurailine Date: 2019-06-19 05:04 -0800 URL: http://hg.openjdk.java.net/amber/amber/rev/43627549a488 8226359: Switch to JCov build which supports byte code version 58 Reviewed-by: erikj ! make/conf/jib-profiles.js Changeset: afc6c25c2f4a Author: iignatyev Date: 2019-06-18 09:19 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/afc6c25c2f4a 8226313: problem list compiler/types/correctness tests Reviewed-by: thartmann ! test/hotspot/jtreg/ProblemList.txt Changeset: be453f7ee72c Author: amenkov Date: 2019-06-18 16:08 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/be453f7ee72c 8225682: Reference to JNI spec on java.sun.com Reviewed-by: gadams, cjplummer, sspitsyn ! make/data/jdwp/jdwp.spec Changeset: af38014cb097 Author: iignatyev Date: 2019-06-19 03:21 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/af38014cb097 8226360: merge entries in hotspot problem lists Reviewed-by: epavlova, kvn ! test/hotspot/jtreg/ProblemList-graal.txt ! test/jdk/ProblemList-graal.txt Changeset: 3dcfa209f769 Author: thartmann Date: 2019-06-19 12:24 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/3dcfa209f769 8226381: ProblemList java/lang/reflect/PublicMethods/PublicMethodsTest.java Summary: Put test on AOT ProblemList. Reviewed-by: iignatyev ! test/jdk/ProblemList-aot.txt Changeset: 80594c78a608 Author: thartmann Date: 2019-06-19 12:25 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/80594c78a608 8226382: ProblemList java/lang/constant/MethodTypeDescTest.java Summary: Put test on AOT ProblemList. Reviewed-by: iignatyev ! test/jdk/ProblemList-aot.txt Changeset: 360f8769d3dc Author: hseigel Date: 2019-06-19 08:42 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/360f8769d3dc 8225789: Empty method parameter type should generate ClassFormatError Summary: Check for an empty name when verifying unqualified names Reviewed-by: lfoltan, coleenp ! src/hotspot/share/classfile/classFileParser.cpp + test/hotspot/jtreg/runtime/classFileParserBug/EmptyUnqName.jasm + test/hotspot/jtreg/runtime/classFileParserBug/TestEmptyUnqName.java ! test/hotspot/jtreg/runtime/verifier/TestSigParse.java Changeset: 0692b67f5462 Author: aph Date: 2019-06-18 16:15 +0100 URL: http://hg.openjdk.java.net/amber/amber/rev/0692b67f5462 8225716: G1 GC: Undefined behaviour in G1BlockOffsetTablePart::block_at_or_preceding Reviewed-by: kbarrett, tschatzl ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.hpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.inline.hpp Changeset: 726cb89a9997 Author: jwilhelm Date: 2019-06-20 02:10 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/726cb89a9997 Merge ! src/hotspot/share/classfile/classFileParser.cpp Changeset: 48a14297c030 Author: jwilhelm Date: 2019-06-20 04:15 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/48a14297c030 Added tag jdk-14+2 for changeset 43627549a488 ! .hgtags Changeset: eaf0a8de3450 Author: tvaleev Date: 2019-06-20 03:32 +0000 URL: http://hg.openjdk.java.net/amber/amber/rev/eaf0a8de3450 8226286: Remove unused method java.lang.Integer::formatUnsignedInt and cleanup Integer/Long classes Reviewed-by: bpb, redestad ! src/java.base/share/classes/java/lang/Integer.java ! src/java.base/share/classes/java/lang/Long.java Changeset: 12e8433e2581 Author: coffeys Date: 2019-06-20 08:02 +0000 URL: http://hg.openjdk.java.net/amber/amber/rev/12e8433e2581 8213561: ZipFile/MultiThreadedReadTest.java timed out in tier1 Reviewed-by: lancea ! test/jdk/java/util/zip/ZipFile/MultiThreadedReadTest.java Changeset: 99b604ec1af6 Author: gadams Date: 2019-06-20 07:13 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/99b604ec1af6 8224642: Test sun/tools/jcmd/TestJcmdSanity.java fails: Bad file descriptor Reviewed-by: cjplummer, rschmelter, clanger ! src/jdk.attach/linux/classes/sun/tools/attach/VirtualMachineImpl.java Changeset: 6a7d6b6bbd78 Author: zgu Date: 2019-06-20 10:12 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/6a7d6b6bbd78 8226413: Shenandoah: Separate root scanner for SH::object_iterate() Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp Changeset: a7b9d6d4940e Author: erikj Date: 2019-06-20 09:35 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/a7b9d6d4940e 8226521: Detect WSL2 as WSL in configure Reviewed-by: erikj Contributed-by: andrewluotechnologies at outlook.com ! make/autoconf/build-aux/config.guess Changeset: 1aae575eb1ef Author: naoto Date: 2019-06-20 11:21 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/1aae575eb1ef 8220229: Timezone pattern "OOOO" does not result in the full "GMT+00:00" substring Reviewed-by: lancea, rriggs ! src/java.base/share/classes/java/time/format/DateTimeFormatter.java From maurizio.cimadamore at oracle.com Thu Jun 20 20:04:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:04:55 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906202004.x5KK4ux8016955@aojmv0008.oracle.com> Changeset: af2b0c9d2769 Author: mcimadamore Date: 2019-06-20 22:04 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/af2b0c9d2769 Automatic merge with default From maurizio.cimadamore at oracle.com Thu Jun 20 20:05:17 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:05:17 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906202005.x5KK5H2b017263@aojmv0008.oracle.com> Changeset: aafd62d33c39 Author: mcimadamore Date: 2019-06-20 22:05 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/aafd62d33c39 Automatic merge with default ! src/hotspot/share/classfile/classFileParser.cpp ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java From maurizio.cimadamore at oracle.com Thu Jun 20 20:05:37 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:05:37 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906202005.x5KK5bgL017578@aojmv0008.oracle.com> Changeset: d521c8687ea8 Author: mcimadamore Date: 2019-06-20 22:05 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/d521c8687ea8 Automatic merge with default ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java From maurizio.cimadamore at oracle.com Thu Jun 20 20:05:59 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:05:59 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906202005.x5KK5x8h017978@aojmv0008.oracle.com> Changeset: ac1dd08aa96e Author: mcimadamore Date: 2019-06-20 22:05 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/ac1dd08aa96e Automatic merge with default From maurizio.cimadamore at oracle.com Thu Jun 20 20:06:19 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:06:19 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906202006.x5KK6K1H018412@aojmv0008.oracle.com> Changeset: 198fee0d6251 Author: mcimadamore Date: 2019-06-20 22:06 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/198fee0d6251 Automatic merge with default From maurizio.cimadamore at oracle.com Thu Jun 20 20:06:40 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:06:40 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906202006.x5KK6fYI019240@aojmv0008.oracle.com> Changeset: e16b2019df86 Author: mcimadamore Date: 2019-06-20 22:06 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/e16b2019df86 Automatic merge with default ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java From maurizio.cimadamore at oracle.com Thu Jun 20 20:07:00 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:07:00 +0000 Subject: hg: amber/amber: Automatic merge with patterns-stage-1 Message-ID: <201906202007.x5KK707L019673@aojmv0008.oracle.com> Changeset: a1b8e9c3de61 Author: mcimadamore Date: 2019-06-20 22:06 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/a1b8e9c3de61 Automatic merge with patterns-stage-1 From maurizio.cimadamore at oracle.com Thu Jun 20 20:07:21 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:07:21 +0000 Subject: hg: amber/amber: Automatic merge with patterns-stage-1 Message-ID: <201906202007.x5KK7MVb020618@aojmv0008.oracle.com> Changeset: 5c04808d70ee Author: mcimadamore Date: 2019-06-20 22:07 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/5c04808d70ee Automatic merge with patterns-stage-1 ! src/hotspot/share/classfile/classFileParser.cpp ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java From maurizio.cimadamore at oracle.com Thu Jun 20 20:07:40 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:07:40 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906202007.x5KK7fRV021034@aojmv0008.oracle.com> Changeset: 3f9ace056c4a Author: mcimadamore Date: 2019-06-20 22:07 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/3f9ace056c4a Automatic merge with records-and-sealed From maurizio.cimadamore at oracle.com Thu Jun 20 20:08:01 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:08:01 +0000 Subject: hg: amber/amber: Automatic merge with patterns Message-ID: <201906202008.x5KK81iH022134@aojmv0008.oracle.com> Changeset: 5137dd14728a Author: mcimadamore Date: 2019-06-20 22:07 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/5137dd14728a Automatic merge with patterns ! src/hotspot/share/classfile/classFileParser.cpp ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java From maurizio.cimadamore at oracle.com Thu Jun 20 20:08:20 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:08:20 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906202008.x5KK8K0J022492@aojmv0008.oracle.com> Changeset: 77ba5f39a8b9 Author: mcimadamore Date: 2019-06-20 22:08 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/77ba5f39a8b9 Automatic merge with records-and-sealed From brian.goetz at oracle.com Thu Jun 20 20:31:39 2019 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Thu, 20 Jun 2019 20:31:39 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201906202031.x5KKVewo007611@aojmv0008.oracle.com> Changeset: 41a7c27cbbef Author: briangoetz Date: 2019-06-14 15:59 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/41a7c27cbbef Branching for pattern-runtime Changeset: 755f726a61a7 Author: briangoetz Date: 2019-06-20 16:05 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/755f726a61a7 Initial implementation of PatternHandle and friends + src/java.base/share/classes/java/lang/runtime/PatternCarriers.java + src/java.base/share/classes/java/lang/runtime/PatternHandle.java + src/java.base/share/classes/java/lang/runtime/PatternHandles.java + src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java ! src/java.base/share/classes/module-info.java + test/jdk/java/lang/lang-runtime/PatternHandleTest.java + test/jdk/java/lang/lang-runtime/SwitchBootstrapsTest.java + test/jdk/java/lang/lang-runtime/boottest/TEST.properties + test/jdk/java/lang/lang-runtime/boottest/java.base/java/lang/runtime/CarrierTest.java From maurizio.cimadamore at oracle.com Thu Jun 20 20:35:28 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 20:35:28 +0000 Subject: hg: amber/amber: Automatic merge with default Message-ID: <201906202035.x5KKZTMn009593@aojmv0008.oracle.com> Changeset: d85aaf1ffd89 Author: mcimadamore Date: 2019-06-20 22:35 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/d85aaf1ffd89 Automatic merge with default From vicente.romero at oracle.com Thu Jun 20 21:41:47 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 20 Jun 2019 21:41:47 +0000 Subject: hg: amber/amber: adding a dependency on branch pattern-runtime Message-ID: <201906202141.x5KLfmLN022891@aojmv0008.oracle.com> Changeset: ece422182570 Author: vromero Date: 2019-06-20 17:40 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/ece422182570 adding a dependency on branch pattern-runtime + deps.txt From vicente.romero at oracle.com Thu Jun 20 22:08:29 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 20 Jun 2019 22:08:29 +0000 Subject: hg: amber/amber: temporary remove dependencies Message-ID: <201906202208.x5KM8UBP007585@aojmv0008.oracle.com> Changeset: ee179600f857 Author: vromero Date: 2019-06-20 18:07 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/ee179600f857 temporary remove dependencies - deps.txt From maurizio.cimadamore at oracle.com Thu Jun 20 23:43:17 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 23:43:17 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906202343.x5KNhHWr006150@aojmv0008.oracle.com> Changeset: 8a18152ffe49 Author: mcimadamore Date: 2019-06-21 01:43 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/8a18152ffe49 Automatic merge with records-and-sealed From maurizio.cimadamore at oracle.com Thu Jun 20 23:43:43 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 20 Jun 2019 23:43:43 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906202343.x5KNhhmJ006736@aojmv0008.oracle.com> Changeset: c087b524c233 Author: mcimadamore Date: 2019-06-21 01:43 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/c087b524c233 Automatic merge with records-and-sealed From vicente.romero at oracle.com Fri Jun 21 03:50:36 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 21 Jun 2019 03:50:36 +0000 Subject: hg: amber/amber: reorganizing extractor code Message-ID: <201906210350.x5L3obJn027631@aojmv0008.oracle.com> Changeset: 2b7ed5528c8f Author: vromero Date: 2019-06-20 23:41 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/2b7ed5528c8f reorganizing extractor code - src/java.base/share/classes/java/lang/runtime/Extractor.java - src/java.base/share/classes/java/lang/runtime/ExtractorCarriers.java - src/java.base/share/classes/java/lang/runtime/ExtractorImpl.java - src/java.base/share/classes/java/lang/runtime/PatternSim.java - src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java - src/java.base/share/classes/java/lang/runtime/_pattern.java - test/jdk/java/lang/extractor/ExtractorTest.java - test/jdk/java/lang/extractor/RecordTest.java - test/jdk/java/lang/extractor/SwitchBootstrapsTest.java - test/jdk/java/lang/extractor/boottest/TEST.properties - test/jdk/java/lang/extractor/boottest/java.base/java/lang/runtime/CarrierTest.java + test/jdk/java/lang/lang-runtime/RecordTest.java From vicente.romero at oracle.com Fri Jun 21 03:53:02 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 21 Jun 2019 03:53:02 +0000 Subject: hg: amber/amber: adding dependency on pattern-runtime Message-ID: <201906210353.x5L3r3tZ000339@aojmv0008.oracle.com> Changeset: 61eccddfc94a Author: vromero Date: 2019-06-20 23:52 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/61eccddfc94a adding dependency on pattern-runtime + deps.txt From vicente.romero at oracle.com Fri Jun 21 03:54:07 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 21 Jun 2019 03:54:07 +0000 Subject: hg: amber/amber: manual merge with pattern-runtime Message-ID: <201906210354.x5L3s86O001186@aojmv0008.oracle.com> Changeset: ad0cbfdfa496 Author: vromero Date: 2019-06-20 23:53 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/ad0cbfdfa496 manual merge with pattern-runtime ! src/java.base/share/classes/module-info.java From brian.goetz at oracle.com Fri Jun 21 14:35:06 2019 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Fri, 21 Jun 2019 14:35:06 +0000 Subject: hg: amber/amber: Updates to pattern match tests Message-ID: <201906211435.x5LEZ63J002059@aojmv0008.oracle.com> Changeset: f83e03003147 Author: briangoetz Date: 2019-06-21 10:34 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/f83e03003147 Updates to pattern match tests ! test/jdk/java/lang/lang-runtime/PatternHandleTest.java ! test/jdk/java/lang/lang-runtime/boottest/java.base/java/lang/runtime/CarrierTest.java From maurizio.cimadamore at oracle.com Fri Jun 21 14:41:29 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 21 Jun 2019 14:41:29 +0000 Subject: hg: amber/amber: Automatic merge with pattern-runtime Message-ID: <201906211441.x5LEfTNj009082@aojmv0008.oracle.com> Changeset: d47c05ad75fe Author: mcimadamore Date: 2019-06-21 16:41 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/d47c05ad75fe Automatic merge with pattern-runtime From vicente.romero at oracle.com Fri Jun 21 15:38:12 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 21 Jun 2019 15:38:12 +0000 Subject: hg: amber/amber: adapting to new extractor bootstrap Message-ID: <201906211538.x5LFcD0o014302@aojmv0008.oracle.com> Changeset: 2140069460ec Author: vromero Date: 2019-06-21 11:37 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/2140069460ec adapting to new extractor bootstrap ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java From brian.goetz at oracle.com Fri Jun 21 17:27:09 2019 From: brian.goetz at oracle.com (brian.goetz at oracle.com) Date: Fri, 21 Jun 2019 17:27:09 +0000 Subject: hg: amber/amber: Temporary testing support for RecordTest Message-ID: <201906211727.x5LHR9xu028920@aojmv0008.oracle.com> Changeset: 96ad823df459 Author: briangoetz Date: 2019-06-21 13:26 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/96ad823df459 Temporary testing support for RecordTest ! test/jdk/java/lang/lang-runtime/PatternHandleTest.java From maurizio.cimadamore at oracle.com Fri Jun 21 17:30:29 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 21 Jun 2019 17:30:29 +0000 Subject: hg: amber/amber: Automatic merge with pattern-runtime Message-ID: <201906211730.x5LHUUPb000870@aojmv0008.oracle.com> Changeset: 512622f4dd81 Author: mcimadamore Date: 2019-06-21 19:30 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/512622f4dd81 Automatic merge with pattern-runtime From vicente.romero at oracle.com Fri Jun 21 17:54:10 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 21 Jun 2019 17:54:10 +0000 Subject: hg: amber/amber: updating RecordTest Message-ID: <201906211754.x5LHsBnN017254@aojmv0008.oracle.com> Changeset: 7d943bf13bf3 Author: vromero Date: 2019-06-21 13:52 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/7d943bf13bf3 updating RecordTest ! test/jdk/java/lang/lang-runtime/RecordTest.java From vicente.romero at oracle.com Fri Jun 21 20:27:28 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 21 Jun 2019 20:27:28 +0000 Subject: hg: amber/amber: issue an error if the accessor returned type doesnt match exactly with that of the corresponding component Message-ID: <201906212027.x5LKRT4o018148@aojmv0008.oracle.com> Changeset: fe2ae6f104db Author: vromero Date: 2019-06-21 16:25 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/fe2ae6f104db issue an error if the accessor returned type doesnt match exactly with that of the corresponding component ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties + test/langtools/tools/javac/records/mandated_members/accessors/BadAccessorsTest.java + test/langtools/tools/javac/records/mandated_members/accessors/BadAccessorsTest.out From vicente.romero at oracle.com Fri Jun 21 20:52:42 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 21 Jun 2019 20:52:42 +0000 Subject: hg: amber/amber: compiler failing with unexpected kind: record Message-ID: <201906212052.x5LKqhgG001494@aojmv0008.oracle.com> Changeset: 76ea6cf6e40a Author: vromero Date: 2019-06-21 16:51 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/76ea6cf6e40a compiler failing with unexpected kind: record ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Kinds.java + test/langtools/tools/javac/records/miscellaneous/UnexpectedKindRecordTest.java + test/langtools/tools/javac/records/miscellaneous/UnexpectedKindRecordTest.out From anthonyv.be at outlook.com Sat Jun 22 13:46:31 2019 From: anthonyv.be at outlook.com (Anthony Vanelverdinghe) Date: Sat, 22 Jun 2019 13:46:31 +0000 Subject: Towards better serialization In-Reply-To: <428ce223-668b-0098-712a-cd8cbe0aebf8@oracle.com> References: <1441489070.554776.1560287280181.JavaMail.zimbra@u-pem.fr> <998633524.561933.1560293256055.JavaMail.zimbra@u-pem.fr> <1a720fcd-617d-c82d-0f15-f19479a67eb1@oracle.com> <428ce223-668b-0098-712a-cd8cbe0aebf8@oracle.com> Message-ID: How about introducing an explicit interface and using the module system's services mechanism? This is an obvious "Why not just ..."-kind of question (i.e. I'm sure it has been considered already), so I assume either the idea was dismissed, or it was put on the list of "details to be fleshed out". However, I can't readily see any flaws in it, and since it allows to do without additional encapsulation relaxation, I don't consider it a detail either. For example, java.base could contain something like: ``` public record SerializedForm(int version, Object... components) {} public interface SerializationFactory { ??? Function serializer(Class type); ??? Function deserializer(Class type); } ``` And application modules would `provides SerializationFactory with ...`, while serialization frameworks would `uses SerializationFactory`. Application modules would be free to implement the interface as they see fit, but `java.base` could provide a default implementation which would work as detailed in the draft (i.e. using reflection and the @Serializer/@Deserializer annotations). Serialization frameworks would then solely rely on `ServiceLoader` to do their work. One issue is that I was unable to implement `SerializationFactory` as given above, due to the generics. But I assume pattern matching would make this feasible, wouldn't it? Thanks in advance for any insights, Anthony On 17/06/2019 01:14, Brian Goetz wrote: > >> While I agree that the proposed usage of `open` would be a natural >> extension of the existing concept, I was always under the impression >> that `open` was intended as a ?temporary" migration aid. That >> frameworks were supposed to move away from reflection and adopt >> solutions based on `MethodHandles.Lookup` instead. So I'm surprised >> to see the use of reflection promoted now. > > Two reactions: > > ?- First, don't take the paper as something written in stone; it is a > first draft.? (A first draft that reflects hundreds of hours of > analysis (if not more) by multiple people over multiple years, but a > first draft nonetheless.? This is just the first version that reached > a level of "doesn't suck" sufficient that it was good enough to share > publicly, but I have no illusions that this is in any sense "done" -- > it's more that we have finally arrived at the starting line.)? > Accordingly, the specifics of how fine-grained the relaxation > mechanism, are a stake in the ground -- the high order bit here is > "there should be some way to identify individual methods as having > different dynamic accessibility as static accessibility, allowing > private methods in private classes in non-exported packages to still > somehow be callable dynamically -- based on an explicit indication in > the source."? The exact details are to be determined. Similarly, > whether exposed via classic reflection vs Lookup is a detail to be > determined. > > ?- I think you may have over-rotated towards the "reflection is dead" > meme.? Yes, Lookup is "better" because it is explicit, and allows the > access checks to be done at lookup time rather than on each > invocation.? But, reflection does things that Lookup does not (or at > least, not yet); you can't iterate over the methods of a class via a > Lookup, let alone interrogate them for their annotations, or query > their Signature attributes, or any number of other things frameworks > like to do.? So it is likely that frameworks will be using reflection > for quite a while, and that's OK. > >> An advantage of open packages, is that they are able to specify whom >> they're exporting to. So I can say: `opens foo.ser to >> some.ser.framework` and `opens foo.cdi to some.cdi.framework`. > > There's a pretty broad spectrum of granularity possible here.? On the > one extreme, you could just say "we don't need open methods, we have > open packages -- if you want to serialize, open the package." On the > other extreme, you could say that open methods are way too coarse > grained; they tar serialization frameworks and dependency injection > frameworks and mocking frameworks with the same brush. And there's a > lot in the middle. > > There's also a danger that the search for more accurate permission > granularity becomes a rathole; for example, the security manager > permissions model is quite fine-grained, but in reality people rarely > use that mechanism to tailor just the right security policy -- it's > too hard, too fussy, too much work, too hard to keep it in sync with > what the code actually needs.? So while we might over time attempt to > put more structure on "back door APIs", this is probably a good > starting position. > > Further, putting "opens X to Y" in the source code may actually > require us to name Y before we actually know it; when you're writing a > library class, do you really know which serialization frameworks the > application into which your library is incorporated will be using?? > This seems more an issue for application assembly time -- Y is often > only known when the entire application is put together -- than of > component development time.? But if the `opens` clause is in the > source file, we only know what is known at component development time. > > So, yes, there are likely to be more mechanisms to model accessibility > on the backdoor API (including, probably, the ability to say things > like "I know there are methods in module X that are open, but I still > want them encapsulated in MY application") -- but I think its > premature at this stage to try to design them now. > > > Cheers, > -Brian > > > From vicente.romero at oracle.com Mon Jun 24 15:01:37 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 24 Jun 2019 15:01:37 +0000 Subject: hg: amber/amber: manual merge with records branch Message-ID: <201906241501.x5OF1bmU003244@aojmv0008.oracle.com> Changeset: 6f4f37689df0 Author: vromero Date: 2019-06-24 11:00 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/6f4f37689df0 manual merge with records branch ! deps.txt - src/java.base/share/classes/java/lang/runtime/Extractor.java - src/java.base/share/classes/java/lang/runtime/ExtractorCarriers.java - src/java.base/share/classes/java/lang/runtime/ExtractorImpl.java - src/java.base/share/classes/java/lang/runtime/PatternSim.java ! src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java - src/java.base/share/classes/java/lang/runtime/_pattern.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties - test/jdk/java/lang/extractor/ExtractorTest.java - test/jdk/java/lang/extractor/RecordTest.java - test/jdk/java/lang/extractor/SwitchBootstrapsTest.java - test/jdk/java/lang/extractor/boottest/TEST.properties - test/jdk/java/lang/extractor/boottest/java.base/java/lang/runtime/CarrierTest.java From vicente.romero at oracle.com Mon Jun 24 23:07:51 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 24 Jun 2019 23:07:51 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201906242307.x5ON7pXw025867@aojmv0008.oracle.com> Changeset: 4b162290687a Author: vromero Date: 2019-06-24 18:07 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/4b162290687a delta applying patch to dont add final flag to sealed classes ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java Changeset: d4e8276ce5b3 Author: vromero Date: 2019-06-24 18:38 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/d4e8276ce5b3 sealed classes subtypes can be implicit if in same compilation unit ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java From maurizio.cimadamore at oracle.com Mon Jun 24 23:41:11 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 24 Jun 2019 23:41:11 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906242341.x5ONfC7G018209@aojmv0008.oracle.com> Changeset: 93144cfc2d71 Author: mcimadamore Date: 2019-06-25 01:40 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/93144cfc2d71 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java From brian.goetz at oracle.com Tue Jun 25 16:07:00 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Tue, 25 Jun 2019 12:07:00 -0400 Subject: Towards better serialization In-Reply-To: References: <1441489070.554776.1560287280181.JavaMail.zimbra@u-pem.fr> <998633524.561933.1560293256055.JavaMail.zimbra@u-pem.fr> <1a720fcd-617d-c82d-0f15-f19479a67eb1@oracle.com> <428ce223-668b-0098-712a-cd8cbe0aebf8@oracle.com> Message-ID: There?s a few layers here. The high-order bit of the approach outlined in the paper is: make the back-door API explicit, so that it can be seen and therefore understood. Once we accept this model ? where decomposition and reconstruction are part of the classes API, then we have a number of choices for how to expose these members in the source code. The approach you outline is basically saying ?we have (or will soon have) records, which are basically nominal tuples, so why not use those?? And that?s an entirely valid direction to explore. Using an interface has the problem that interfaces are inherited; that means that a serializable superclass imposes serialization requirements on its subclasses. That?s not necessarily a good thing, but let?s set that aside. Using records as our carrier for serialization state has some pros and cons. On the one hand, we can centralize all the serialization-related code in the carrier class: class Foo { record FooSerializedForm(int a, int b) { // serialization members } FooSerializedForm serialize() { ? } } This is nice from a code organization perspective, as we can put all the serialization-related members together (and we can use inline records eventually to eliminate the extra allocation.). On the other hand, it means we give up on the ability to share members between the front-door and back-door APIs ? we can?t just take an existing constructor and tag it as ?also use this for deserialization.? So, I think this goes in the ?details to be fleshed out? bucket ? because this is mostly about how we expose out the serialization behaviors into the source code. > On Jun 22, 2019, at 9:46 AM, Anthony Vanelverdinghe wrote: > > How about introducing an explicit interface and using the module > system's services mechanism? > This is an obvious "Why not just ..."-kind of question (i.e. I'm sure it > has been considered already), so I assume either the idea was dismissed, > or it was put on the list of "details to be fleshed out". However, I > can't readily see any flaws in it, and since it allows to do without > additional encapsulation relaxation, I don't consider it a detail either. > > For example, java.base could contain something like: > ``` > public record SerializedForm(int version, Object... components) {} > > public interface SerializationFactory { > Function serializer(Class type); > Function deserializer(Class type); > } > ``` > > And application modules would `provides SerializationFactory with ...`, > while serialization frameworks would `uses SerializationFactory`. > Application modules would be free to implement the interface as they see > fit, but `java.base` could provide a default implementation which would > work as detailed in the draft (i.e. using reflection and the > @Serializer/@Deserializer annotations). > Serialization frameworks would then solely rely on `ServiceLoader` to do > their work. > > One issue is that I was unable to implement `SerializationFactory` as > given above, due to the generics. But I assume pattern matching would > make this feasible, wouldn't it? > > Thanks in advance for any insights, > Anthony > > On 17/06/2019 01:14, Brian Goetz wrote: >> >>> While I agree that the proposed usage of `open` would be a natural >>> extension of the existing concept, I was always under the impression >>> that `open` was intended as a ?temporary" migration aid. That >>> frameworks were supposed to move away from reflection and adopt >>> solutions based on `MethodHandles.Lookup` instead. So I'm surprised >>> to see the use of reflection promoted now. >> >> Two reactions: >> >> - First, don't take the paper as something written in stone; it is a >> first draft. (A first draft that reflects hundreds of hours of >> analysis (if not more) by multiple people over multiple years, but a >> first draft nonetheless. This is just the first version that reached >> a level of "doesn't suck" sufficient that it was good enough to share >> publicly, but I have no illusions that this is in any sense "done" -- >> it's more that we have finally arrived at the starting line.) >> Accordingly, the specifics of how fine-grained the relaxation >> mechanism, are a stake in the ground -- the high order bit here is >> "there should be some way to identify individual methods as having >> different dynamic accessibility as static accessibility, allowing >> private methods in private classes in non-exported packages to still >> somehow be callable dynamically -- based on an explicit indication in >> the source." The exact details are to be determined. Similarly, >> whether exposed via classic reflection vs Lookup is a detail to be >> determined. >> >> - I think you may have over-rotated towards the "reflection is dead" >> meme. Yes, Lookup is "better" because it is explicit, and allows the >> access checks to be done at lookup time rather than on each >> invocation. But, reflection does things that Lookup does not (or at >> least, not yet); you can't iterate over the methods of a class via a >> Lookup, let alone interrogate them for their annotations, or query >> their Signature attributes, or any number of other things frameworks >> like to do. So it is likely that frameworks will be using reflection >> for quite a while, and that's OK. >> >>> An advantage of open packages, is that they are able to specify whom >>> they're exporting to. So I can say: `opens foo.ser to >>> some.ser.framework` and `opens foo.cdi to some.cdi.framework`. >> >> There's a pretty broad spectrum of granularity possible here. On the >> one extreme, you could just say "we don't need open methods, we have >> open packages -- if you want to serialize, open the package." On the >> other extreme, you could say that open methods are way too coarse >> grained; they tar serialization frameworks and dependency injection >> frameworks and mocking frameworks with the same brush. And there's a >> lot in the middle. >> >> There's also a danger that the search for more accurate permission >> granularity becomes a rathole; for example, the security manager >> permissions model is quite fine-grained, but in reality people rarely >> use that mechanism to tailor just the right security policy -- it's >> too hard, too fussy, too much work, too hard to keep it in sync with >> what the code actually needs. So while we might over time attempt to >> put more structure on "back door APIs", this is probably a good >> starting position. >> >> Further, putting "opens X to Y" in the source code may actually >> require us to name Y before we actually know it; when you're writing a >> library class, do you really know which serialization frameworks the >> application into which your library is incorporated will be using? >> This seems more an issue for application assembly time -- Y is often >> only known when the entire application is put together -- than of >> component development time. But if the `opens` clause is in the >> source file, we only know what is known at component development time. >> >> So, yes, there are likely to be more mechanisms to model accessibility >> on the backdoor API (including, probably, the ability to say things >> like "I know there are methods in module X that are open, but I still >> want them encapsulated in MY application") -- but I think its >> premature at this stage to try to design them now. >> >> >> Cheers, >> -Brian >> >> >> From vicente.romero at oracle.com Wed Jun 26 16:06:42 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 26 Jun 2019 16:06:42 +0000 Subject: hg: amber/amber: fixing bug on sealed classes in same compilation unit Message-ID: <201906261606.x5QG6hTb004037@aojmv0008.oracle.com> Changeset: f44032b6dbad Author: vromero Date: 2019-06-26 11:42 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/f44032b6dbad fixing bug on sealed classes in same compilation unit ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! test/langtools/tools/javac/sealed/CheckingAttributeAtRuntimeTest.java From maurizio.cimadamore at oracle.com Wed Jun 26 16:12:16 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 26 Jun 2019 16:12:16 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906261612.x5QGCH7n011051@aojmv0008.oracle.com> Changeset: 74b05fef33c6 Author: mcimadamore Date: 2019-06-26 18:12 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/74b05fef33c6 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java From vicente.romero at oracle.com Wed Jun 26 19:58:00 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 26 Jun 2019 19:58:00 +0000 Subject: hg: amber/amber: generate the MethodParameters attribute for the canonical constructor Message-ID: <201906261958.x5QJw0fb009445@aojmv0008.oracle.com> Changeset: 88397728dd30 Author: vromero Date: 2019-06-26 15:52 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/88397728dd30 generate the MethodParameters attribute for the canonical constructor ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! test/langtools/tools/javac/records/mandated_members/canonical_constructor/CanonicalConstructorTest.java + test/langtools/tools/javac/records/mandated_members/canonical_constructor/MethodParametersForCanonicalConstructorTest.java From maurizio.cimadamore at oracle.com Wed Jun 26 20:01:44 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 26 Jun 2019 20:01:44 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906262001.x5QK1irP011757@aojmv0008.oracle.com> Changeset: 268daac2afd7 Author: mcimadamore Date: 2019-06-26 22:01 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/268daac2afd7 Automatic merge with records-and-sealed From vicente.romero at oracle.com Wed Jun 26 21:54:11 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 26 Jun 2019 21:54:11 +0000 Subject: hg: amber/amber: adjusting Record attribute to last spec: remove access flags from the attr, etc Message-ID: <201906262154.x5QLsCSD027002@aojmv0008.oracle.com> Changeset: 8d093ef9814e Author: vromero Date: 2019-06-26 17:52 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/8d093ef9814e adjusting Record attribute to last spec: remove access flags from the attr, etc ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/recordParamInfo.hpp ! src/hotspot/share/oops/recordParamStreams.hpp ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java From maurizio.cimadamore at oracle.com Wed Jun 26 22:01:47 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 26 Jun 2019 22:01:47 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906262201.x5QM1nGa001813@aojmv0008.oracle.com> Changeset: 66954227dfc2 Author: mcimadamore Date: 2019-06-27 00:01 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/66954227dfc2 Automatic merge with records-and-sealed From vicente.romero at oracle.com Thu Jun 27 00:10:25 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 27 Jun 2019 00:10:25 +0000 Subject: hg: amber/amber: sync the reflection API for records with the specification Message-ID: <201906270010.x5R0AQaX018197@aojmv0008.oracle.com> Changeset: 7241fb1920dc Author: vromero Date: 2019-06-26 20:09 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/7241fb1920dc sync the reflection API for records with the specification ! make/hotspot/symbols/symbols-unix ! src/hotspot/share/include/jvm.h ! src/hotspot/share/prims/jvm.cpp ! src/java.base/share/classes/java/lang/Class.java ! src/java.base/share/native/libjava/Class.c From forax at univ-mlv.fr Thu Jun 27 06:00:10 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Thu, 27 Jun 2019 08:00:10 +0200 (CEST) Subject: hg: amber/amber: sync the reflection API for records with the specification In-Reply-To: <201906270010.x5R0AQaX018197@aojmv0008.oracle.com> References: <201906270010.x5R0AQaX018197@aojmv0008.oracle.com> Message-ID: <1937596579.544700.1561615210486.JavaMail.zimbra@u-pem.fr> Hi Vicente, two remarks, as a user, i will want to get the component name without doing reflection on it, by example to use method handles, so i think that in term of API, there should be a public method getRecordComponentNames() too. now in term of implementation of getRecordAccessors(), you have a bug in it, the loop mix the enhanced for with a supplementary index but you don't increment it int i = 0; for (String componentName : componentNames) { result[i] = getMethod(componentName); // oops } Here using the enhanced for is not a good idea, it should be used if you don't need an index, otherwise in the generated bytecodes you have two indexes, so the code should be for (int i = 0; i < componentNames.lengh; i++) { String componentName = componentNames[i]; result[i] = getMethod(componentName); // ok } regards, R?mi ----- Mail original ----- > De: "Vicente Romero" > ?: "amber-dev" > Envoy?: Jeudi 27 Juin 2019 02:10:25 > Objet: hg: amber/amber: sync the reflection API for records with the specification > Changeset: 7241fb1920dc > Author: vromero > Date: 2019-06-26 20:09 -0400 > URL: http://hg.openjdk.java.net/amber/amber/rev/7241fb1920dc > > sync the reflection API for records with the specification > > ! make/hotspot/symbols/symbols-unix > ! src/hotspot/share/include/jvm.h > ! src/hotspot/share/prims/jvm.cpp > ! src/java.base/share/classes/java/lang/Class.java > ! src/java.base/share/native/libjava/Class.c From maurizio.cimadamore at oracle.com Thu Jun 27 12:18:05 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 27 Jun 2019 12:18:05 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906271218.x5RCI6vX006892@aojmv0008.oracle.com> Changeset: 8997e7fb45a7 Author: mcimadamore Date: 2019-06-27 14:17 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/8997e7fb45a7 Automatic merge with records-and-sealed From vicente.romero at oracle.com Thu Jun 27 14:56:51 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 27 Jun 2019 14:56:51 +0000 Subject: hg: amber/amber: implementation of java.lang.Class::isRecord Message-ID: <201906271456.x5REuqrU023737@aojmv0008.oracle.com> Changeset: 8cbd278a7204 Author: vromero Date: 2019-06-27 10:55 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/8cbd278a7204 implementation of java.lang.Class::isRecord ! make/hotspot/symbols/symbols-unix ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/include/jvm.h ! src/hotspot/share/prims/jvm.cpp ! src/java.base/share/classes/java/lang/Class.java ! src/java.base/share/native/libjava/Class.c From maurizio.cimadamore at oracle.com Thu Jun 27 15:01:48 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 27 Jun 2019 15:01:48 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906271501.x5RF1mkw026592@aojmv0008.oracle.com> Changeset: 72b424f08068 Author: mcimadamore Date: 2019-06-27 17:01 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/72b424f08068 Automatic merge with records-and-sealed From vicente.romero at oracle.com Thu Jun 27 18:46:45 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 27 Jun 2019 18:46:45 +0000 Subject: hg: amber/amber: fixing several bugs plus adding reflection test Message-ID: <201906271846.x5RIkk0a027618@aojmv0008.oracle.com> Changeset: 5261a2b6a653 Author: vromero Date: 2019-06-27 14:45 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/5261a2b6a653 fixing several bugs plus adding reflection test ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/classFileParser.hpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/prims/jvm.cpp ! src/java.base/share/classes/java/lang/Class.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java + test/langtools/tools/javac/records/reflection/RecordReflectionTest.java From maurizio.cimadamore at oracle.com Thu Jun 27 18:51:47 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 27 Jun 2019 18:51:47 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201906271851.x5RIplLe001103@aojmv0008.oracle.com> Changeset: 43a6ba90748b Author: mcimadamore Date: 2019-06-27 20:51 +0200 URL: http://hg.openjdk.java.net/amber/amber/rev/43a6ba90748b Automatic merge with records-and-sealed From vicente.romero at oracle.com Fri Jun 28 21:10:44 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 28 Jun 2019 21:10:44 +0000 Subject: hg: amber/amber: updating non-sealed, removing non-final, adding restrictions to the use of sealed modifiers Message-ID: <201906282110.x5SLAjf1005793@aojmv0008.oracle.com> Changeset: ccb9986a609c Author: vromero Date: 2019-06-28 17:08 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/ccb9986a609c updating non-sealed, removing non-final, adding restrictions to the use of sealed modifiers ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/sealed/NotSealedTest.java ! test/langtools/tools/javac/sealed/NotSealedTest.out + test/langtools/tools/javac/sealed/PermitsInNoSealedClass.java + test/langtools/tools/javac/sealed/PermitsInNoSealedClass.out From joe.darcy at oracle.com Sat Jun 29 03:32:38 2019 From: joe.darcy at oracle.com (joe.darcy at oracle.com) Date: Sat, 29 Jun 2019 03:32:38 +0000 Subject: hg: amber/amber: Fix compilation problems in tools/javac/MethodParameters tests. Message-ID: <201906290332.x5T3Wc1E015795@aojmv0008.oracle.com> Changeset: 05e3221cdf2f Author: darcy Date: 2019-06-28 20:32 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/05e3221cdf2f Fix compilation problems in tools/javac/MethodParameters tests. ! test/langtools/tools/javac/MethodParameters/AttributeVisitor.java From joe.darcy at oracle.com Sat Jun 29 20:23:00 2019 From: joe.darcy at oracle.com (joe.darcy at oracle.com) Date: Sat, 29 Jun 2019 20:23:00 +0000 Subject: hg: amber/amber: Fix compilation problems in ClassfileInspector.java test library Message-ID: <201906292023.x5TKN1AV027823@aojmv0008.oracle.com> Changeset: 0c7ace1bea93 Author: darcy Date: 2019-06-29 13:22 -0700 URL: http://hg.openjdk.java.net/amber/amber/rev/0c7ace1bea93 Fix compilation problems in ClassfileInspector.java test library ! test/langtools/lib/annotations/annotations/classfile/ClassfileInspector.java From anthonyv.be at outlook.com Sun Jun 30 21:14:08 2019 From: anthonyv.be at outlook.com (Anthony Vanelverdinghe) Date: Sun, 30 Jun 2019 21:14:08 +0000 Subject: Towards better serialization In-Reply-To: References: <1441489070.554776.1560287280181.JavaMail.zimbra@u-pem.fr> <998633524.561933.1560293256055.JavaMail.zimbra@u-pem.fr> <1a720fcd-617d-c82d-0f15-f19479a67eb1@oracle.com> <428ce223-668b-0098-712a-cd8cbe0aebf8@oracle.com> Message-ID: The idea is to introduce a factory interface, which would not be implemented by the serializable classes, so I don't think interface inheritance concerns apply in this case. The SerializedForm record I mentioned, is a generic record that is used by the factory interface, so there wouldn't be something like `FooSerializedForm`. Assuming the JDK would provide a default implementation of SerializationFactory, I envision something like: ``` module foo { ??? provides SerializationFactory with FooSerializationFactory; } public class FooSerializationFactory extends DefaultSerializationFactory {} ``` with DefaultSerializationFactory something like: ``` public class DefaultSerializationFactory implements SerializationFactory { ??? public Function serializer(Class type) { ??????? var method = // find the @Serializer-annotated method ??????? var version = // extract the version from it ??????? return t -> new SerializedForm(version, (Object[]) method.invoke(t)); ??? } ??? public Function deserializer(Class type) { ??????? Map methods = // find all @Deserializer-annotated methods, keyed by version ??????? return sf -> methods.get(sf.version()).invoke(null, sf.components()); ??? } } ``` Kind regards, Anthony On 25/06/2019 18:07, Brian Goetz wrote: > There?s a few layers here. The high-order bit of the approach outlined in the paper is: make the back-door API explicit, so that it can be seen and therefore understood. Once we accept this model ? where decomposition and reconstruction are part of the classes API, then we have a number of choices for how to expose these members in the source code. The approach you outline is basically saying ?we have (or will soon have) records, which are basically nominal tuples, so why not use those?? And that?s an entirely valid direction to explore. > > Using an interface has the problem that interfaces are inherited; that means that a serializable superclass imposes serialization requirements on its subclasses. That?s not necessarily a good thing, but let?s set that aside. > > Using records as our carrier for serialization state has some pros and cons. On the one hand, we can centralize all the serialization-related code in the carrier class: > > class Foo { > record FooSerializedForm(int a, int b) { > // serialization members > } > > FooSerializedForm serialize() { ? } > } > > This is nice from a code organization perspective, as we can put all the serialization-related members together (and we can use inline records eventually to eliminate the extra allocation.). On the other hand, it means we give up on the ability to share members between the front-door and back-door APIs ? we can?t just take an existing constructor and tag it as ?also use this for deserialization.? > > So, I think this goes in the ?details to be fleshed out? bucket ? because this is mostly about how we expose out the serialization behaviors into the source code. > >> On Jun 22, 2019, at 9:46 AM, Anthony Vanelverdinghe wrote: >> >> How about introducing an explicit interface and using the module >> system's services mechanism? >> This is an obvious "Why not just ..."-kind of question (i.e. I'm sure it >> has been considered already), so I assume either the idea was dismissed, >> or it was put on the list of "details to be fleshed out". However, I >> can't readily see any flaws in it, and since it allows to do without >> additional encapsulation relaxation, I don't consider it a detail either. >> >> For example, java.base could contain something like: >> ``` >> public record SerializedForm(int version, Object... components) {} >> >> public interface SerializationFactory { >> Function serializer(Class type); >> Function deserializer(Class type); >> } >> ``` >> >> And application modules would `provides SerializationFactory with ...`, >> while serialization frameworks would `uses SerializationFactory`. >> Application modules would be free to implement the interface as they see >> fit, but `java.base` could provide a default implementation which would >> work as detailed in the draft (i.e. using reflection and the >> @Serializer/@Deserializer annotations). >> Serialization frameworks would then solely rely on `ServiceLoader` to do >> their work. >> >> One issue is that I was unable to implement `SerializationFactory` as >> given above, due to the generics. But I assume pattern matching would >> make this feasible, wouldn't it? >> >> Thanks in advance for any insights, >> Anthony >> >> On 17/06/2019 01:14, Brian Goetz wrote: >>>> While I agree that the proposed usage of `open` would be a natural >>>> extension of the existing concept, I was always under the impression >>>> that `open` was intended as a ?temporary" migration aid. That >>>> frameworks were supposed to move away from reflection and adopt >>>> solutions based on `MethodHandles.Lookup` instead. So I'm surprised >>>> to see the use of reflection promoted now. >>> Two reactions: >>> >>> - First, don't take the paper as something written in stone; it is a >>> first draft. (A first draft that reflects hundreds of hours of >>> analysis (if not more) by multiple people over multiple years, but a >>> first draft nonetheless. This is just the first version that reached >>> a level of "doesn't suck" sufficient that it was good enough to share >>> publicly, but I have no illusions that this is in any sense "done" -- >>> it's more that we have finally arrived at the starting line.) >>> Accordingly, the specifics of how fine-grained the relaxation >>> mechanism, are a stake in the ground -- the high order bit here is >>> "there should be some way to identify individual methods as having >>> different dynamic accessibility as static accessibility, allowing >>> private methods in private classes in non-exported packages to still >>> somehow be callable dynamically -- based on an explicit indication in >>> the source." The exact details are to be determined. Similarly, >>> whether exposed via classic reflection vs Lookup is a detail to be >>> determined. >>> >>> - I think you may have over-rotated towards the "reflection is dead" >>> meme. Yes, Lookup is "better" because it is explicit, and allows the >>> access checks to be done at lookup time rather than on each >>> invocation. But, reflection does things that Lookup does not (or at >>> least, not yet); you can't iterate over the methods of a class via a >>> Lookup, let alone interrogate them for their annotations, or query >>> their Signature attributes, or any number of other things frameworks >>> like to do. So it is likely that frameworks will be using reflection >>> for quite a while, and that's OK. >>> >>>> An advantage of open packages, is that they are able to specify whom >>>> they're exporting to. So I can say: `opens foo.ser to >>>> some.ser.framework` and `opens foo.cdi to some.cdi.framework`. >>> There's a pretty broad spectrum of granularity possible here. On the >>> one extreme, you could just say "we don't need open methods, we have >>> open packages -- if you want to serialize, open the package." On the >>> other extreme, you could say that open methods are way too coarse >>> grained; they tar serialization frameworks and dependency injection >>> frameworks and mocking frameworks with the same brush. And there's a >>> lot in the middle. >>> >>> There's also a danger that the search for more accurate permission >>> granularity becomes a rathole; for example, the security manager >>> permissions model is quite fine-grained, but in reality people rarely >>> use that mechanism to tailor just the right security policy -- it's >>> too hard, too fussy, too much work, too hard to keep it in sync with >>> what the code actually needs. So while we might over time attempt to >>> put more structure on "back door APIs", this is probably a good >>> starting position. >>> >>> Further, putting "opens X to Y" in the source code may actually >>> require us to name Y before we actually know it; when you're writing a >>> library class, do you really know which serialization frameworks the >>> application into which your library is incorporated will be using? >>> This seems more an issue for application assembly time -- Y is often >>> only known when the entire application is put together -- than of >>> component development time. But if the `opens` clause is in the >>> source file, we only know what is known at component development time. >>> >>> So, yes, there are likely to be more mechanisms to model accessibility >>> on the backdoor API (including, probably, the ability to say things >>> like "I know there are methods in module X that are open, but I still >>> want them encapsulated in MY application") -- but I think its >>> premature at this stage to try to design them now. >>> >>> >>> Cheers, >>> -Brian >>> >>> >>>