From vicente.romero at oracle.com Wed Jul 3 18:57:16 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 03 Jul 2019 18:57:16 +0000 Subject: hg: amber/amber: updating the Record attribute Message-ID: <201907031857.x63IvHWt007567@aojmv0008.oracle.com> Changeset: 47cdf3544a0a Author: vromero Date: 2019-07-03 14:55 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/47cdf3544a0a updating the Record attribute ! 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/hotspot/share/prims/jvm.cpp ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/jdk.jdeps/share/classes/com/sun/tools/classfile/ClassWriter.java ! src/jdk.jdeps/share/classes/com/sun/tools/classfile/Record_attribute.java ! src/jdk.jdeps/share/classes/com/sun/tools/javap/AttributeWriter.java From vicente.romero at oracle.com Wed Jul 3 20:23:18 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 03 Jul 2019 20:23:18 +0000 Subject: hg: amber/amber: simplifying accessor name extraction Message-ID: <201907032023.x63KNJEB022884@aojmv0008.oracle.com> Changeset: 2392106362e3 Author: vromero Date: 2019-07-03 16:16 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/2392106362e3 simplifying accessor name extraction ! src/hotspot/share/oops/recordParamInfo.hpp ! src/hotspot/share/oops/recordParamStreams.hpp ! src/hotspot/share/prims/jvm.cpp From vicente.romero at oracle.com Mon Jul 8 22:55:09 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 08 Jul 2019 22:55:09 +0000 Subject: hg: amber/amber: dont allow bodiless records Message-ID: <201907082255.x68Mt92t017445@aojmv0008.oracle.com> Changeset: b9beeba97204 Author: vromero Date: 2019-07-08 18:54 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/b9beeba97204 dont allow bodiless records ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! test/langtools/tools/javac/records/BadRecord.java ! test/langtools/tools/javac/records/BadRecord.out ! test/langtools/tools/javac/records/BadUseOfRecordKeywordTest.out - test/langtools/tools/javac/records/bodyless_interfaces/AllowBodyLessInterfacesTest.java - test/langtools/tools/javac/records/fields/RecordsCantDeclareFieldModifiersTest.java - test/langtools/tools/javac/records/fields/RecordsCantDeclareFieldModifiersTest.out ! test/langtools/tools/javac/records/mandated_members/canonical_constructor/CanonicalConstructorTest.java ! test/langtools/tools/javac/records/mandated_members/canonical_constructor/MethodParametersForCanonicalConstructorTest.java ! test/langtools/tools/javac/records/mandated_members/read_resolve_method/CheckReadResolveMethodTest.java ! test/langtools/tools/javac/records/records_cant_be_abstract/RecordsCantBeAbstractTest.java ! test/langtools/tools/javac/records/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.java ! test/langtools/tools/javac/records/records_cant_have_extends_clause/RecordsCantHaveExtendsClause.out ! test/langtools/tools/javac/records/reflection/RecordReflectionTest.java ! test/langtools/tools/javac/records/writeread/Record.java From vicente.romero at oracle.com Mon Jul 8 23:15:06 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 08 Jul 2019 23:15:06 +0000 Subject: hg: amber/amber: improving error message in records Message-ID: <201907082315.x68NF6TX027412@aojmv0008.oracle.com> Changeset: e7455c3923d9 Author: vromero Date: 2019-07-08 19:09 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/e7455c3923d9 improving error message in records ! 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.out From vicente.romero at oracle.com Tue Jul 9 00:37:11 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 09 Jul 2019 00:37:11 +0000 Subject: hg: amber/amber: dont allow anonymous classes or lambdas to extend or implement sealed classes Message-ID: <201907090037.x690bCdm010196@aojmv0008.oracle.com> Changeset: 180ed622d987 Author: vromero Date: 2019-07-08 20:36 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/180ed622d987 dont allow anonymous classes or lambdas to extend or implement sealed classes ! 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/AnonymousAndLambdaCantExtendSealed.java + test/langtools/tools/javac/sealed/AnonymousAndLambdaCantExtendSealed.out From vicente.romero at oracle.com Tue Jul 9 16:49:06 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 09 Jul 2019 16:49:06 +0000 Subject: hg: amber/amber: fixing NPE on visitLambda Message-ID: <201907091649.x69Gn7Ox025625@aojmv0008.oracle.com> Changeset: 17909be32d4f Author: vromero Date: 2019-07-09 11:56 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/17909be32d4f fixing NPE on visitLambda ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java From vicente.romero at oracle.com Tue Jul 9 18:37:04 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 09 Jul 2019 18:37:04 +0000 Subject: hg: amber/amber: manual merge with records Message-ID: <201907091837.x69Ib5eV026814@aojmv0008.oracle.com> Changeset: 7ffd78ba1db0 Author: vromero Date: 2019-07-09 14:36 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/7ffd78ba1db0 manual merge with records ! 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/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 - test/langtools/tools/javac/records/bodyless_interfaces/AllowBodyLessInterfacesTest.java - test/langtools/tools/javac/records/fields/RecordsCantDeclareFieldModifiersTest.java - test/langtools/tools/javac/records/fields/RecordsCantDeclareFieldModifiersTest.out From vicente.romero at oracle.com Wed Jul 10 00:37:37 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 10 Jul 2019 00:37:37 +0000 Subject: hg: amber/amber: updating golden file Message-ID: <201907100037.x6A0bcNp005540@aojmv0008.oracle.com> Changeset: 7c3537750620 Author: vromero Date: 2019-07-09 20:37 -0400 URL: http://hg.openjdk.java.net/amber/amber/rev/7c3537750620 updating golden file ! test/langtools/jdk/javadoc/doclet/testTaglets/TestTaglets.out From maurizio.cimadamore at oracle.com Wed Jul 10 06:10:50 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 10 Jul 2019 06:10:50 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907100610.x6A6Apmq017724@aojmv0008.oracle.com> Changeset: 6d2b8e46b010 Author: mcimadamore Date: 2019-07-10 06:10 +0000 URL: http://hg.openjdk.java.net/amber/amber/rev/6d2b8e46b010 Automatic merge with records-and-sealed From jan.lahoda at oracle.com Thu Jul 11 12:41:08 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Thu, 11 Jul 2019 12:41:08 +0000 Subject: hg: amber/amber: Fixing tests. Message-ID: <201907111241.x6BCf9xZ029303@aojmv0008.oracle.com> Changeset: aafe1923b9cc Author: jlahoda Date: 2019-07-11 14:40 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/aafe1923b9cc Fixing tests. ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! test/langtools/tools/javac/lib/DPrinter.java ! test/langtools/tools/javac/patterns/scope/ScopeTest.java From maurizio.cimadamore at oracle.com Thu Jul 11 12:45:46 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 11 Jul 2019 12:45:46 +0000 Subject: hg: amber/amber: Automatic merge with patterns-stage-1 Message-ID: <201907111245.x6BCjksE001042@aojmv0008.oracle.com> Changeset: f6a80788dc08 Author: mcimadamore Date: 2019-07-11 12:45 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/f6a80788dc08 Automatic merge with patterns-stage-1 ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java From jan.lahoda at oracle.com Fri Jul 12 15:12:20 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Fri, 12 Jul 2019 15:12:20 +0000 Subject: hg: amber/amber: Cleanup and bugfixing for type test patterns. Message-ID: <201907121512.x6CFCLZR016201@aojmv0008.oracle.com> Changeset: b212bd325a04 Author: jlahoda Date: 2019-07-12 17:10 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/b212bd325a04 Cleanup and bugfixing for type test patterns. ! 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/CompileStates.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 ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! test/langtools/tools/javac/api/TestGetElementReferenceData.java ! test/langtools/tools/javac/diags/examples/MatchBindingExists.java + test/langtools/tools/javac/diags/examples/MatchBindingExistsWithDifferentType.java + test/langtools/tools/javac/patterns/BindingsExistTest.java + test/langtools/tools/javac/patterns/BindingsExistTest.out ! test/langtools/tools/javac/patterns/BindingsTest1.java ! test/langtools/tools/javac/patterns/DuplicateBindingTest.out + test/langtools/tools/javac/patterns/LocalVariableTable.java ! test/langtools/tools/javac/patterns/MatchBindingScopeTest.out ! test/langtools/tools/javac/patterns/PatternMatchPosTest.java ! test/langtools/tools/javac/patterns/PatternMatchPosTest.out From vicente.romero at oracle.com Fri Jul 12 18:48:14 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 12 Jul 2019 18:48:14 +0000 Subject: hg: amber/amber: pushing down declaration annotations on records, initial support Message-ID: <201907121848.x6CImFgS012268@aojmv0008.oracle.com> Changeset: e458917a1c54 Author: vromero Date: 2019-07-12 14:47 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/e458917a1c54 pushing down declaration annotations on records, initial support ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/SymbolMetadata.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.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/tree/TreeInfo.java + test/langtools/tools/javac/records/annotations/BadAnnotations.java + test/langtools/tools/javac/records/annotations/BadAnnotations.out From maurizio.cimadamore at oracle.com Fri Jul 12 18:50:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 12 Jul 2019 18:50:55 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907121850.x6CIou7Y013973@aojmv0008.oracle.com> Changeset: 7559b9413ba7 Author: mcimadamore Date: 2019-07-12 18:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/7559b9413ba7 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java From vicente.romero at oracle.com Fri Jul 12 20:47:11 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 12 Jul 2019 20:47:11 +0000 Subject: hg: amber/amber: adding test to check that anno processor wont see annotations before being trimmed Message-ID: <201907122047.x6CKlCOG019458@aojmv0008.oracle.com> Changeset: b2747f122ad9 Author: vromero Date: 2019-07-12 16:45 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/b2747f122ad9 adding test to check that anno processor wont see annotations before being trimmed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java + test/langtools/tools/javac/records/annotations/AnnoProcessorOnRecordsTest.java From maurizio.cimadamore at oracle.com Fri Jul 12 20:50:45 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Fri, 12 Jul 2019 20:50:45 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907122050.x6CKojel021203@aojmv0008.oracle.com> Changeset: f02972e89dec Author: mcimadamore Date: 2019-07-12 20:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/f02972e89dec Automatic merge with records-and-sealed From jan.lahoda at oracle.com Mon Jul 15 11:30:28 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Mon, 15 Jul 2019 11:30:28 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201907151130.x6FBUTrJ023562@aojmv0008.oracle.com> Changeset: c487001dbbbc Author: jlahoda Date: 2019-07-15 12:52 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/c487001dbbbc Merging patterns-stage-1 branch into the patterns branch. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/CompileStates.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 ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! test/langtools/tools/javac/api/TestGetElementReferenceData.java ! test/langtools/tools/javac/diags/examples/MatchBindingExists.java ! test/langtools/tools/javac/patterns/DuplicateBindingTest.out ! test/langtools/tools/javac/patterns/MatchBindingScopeTest.out ! test/langtools/tools/javac/patterns/PatternMatchPosTest.java ! test/langtools/tools/javac/patterns/PatternMatchPosTest.out Changeset: 08eadf898934 Author: jlahoda Date: 2019-07-15 13:29 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/08eadf898934 Merging patterns branch to patterns-deconstruction branch. ! 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/Check.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 ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! test/langtools/tools/javac/lib/DPrinter.java ! test/langtools/tools/javac/patterns/BindingsTest1.java ! test/langtools/tools/javac/patterns/scope/ScopeTest.java From jan.lahoda at oracle.com Mon Jul 15 12:46:47 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Mon, 15 Jul 2019 12:46:47 +0000 Subject: hg: amber/amber: Cleanup. Message-ID: <201907151246.x6FCkmNX008800@aojmv0008.oracle.com> Changeset: cba20f435610 Author: jlahoda Date: 2019-07-15 14:46 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/cba20f435610 Cleanup. ! src/jdk.compiler/share/classes/com/sun/source/tree/BindingPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/PatternTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.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/MatchBindingsComputer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java From maurizio.cimadamore at oracle.com Mon Jul 15 12:50:41 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 15 Jul 2019 12:50:41 +0000 Subject: hg: amber/amber: Automatic merge with patterns-stage-1 Message-ID: <201907151250.x6FCogli011036@aojmv0008.oracle.com> Changeset: f3e3e9e47ade Author: mcimadamore Date: 2019-07-15 12:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/f3e3e9e47ade 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/MatchBindingsComputer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/Pretty.java From jan.lahoda at oracle.com Mon Jul 15 14:03:11 2019 From: jan.lahoda at oracle.com (jan.lahoda at oracle.com) Date: Mon, 15 Jul 2019 14:03:11 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201907151403.x6FE3Dq5026855@aojmv0008.oracle.com> Changeset: 201fed33aa8f Author: jlahoda Date: 2019-07-15 15:53 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/201fed33aa8f Post-merge fixes. ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MatchBindingsComputer.java Changeset: 22e1747208b6 Author: jlahoda Date: 2019-07-15 16:02 +0200 URL: https://hg.openjdk.java.net/amber/amber/rev/22e1747208b6 Merging patterns-stage-1 into patterns. ! src/jdk.compiler/share/classes/com/sun/source/tree/AnyPatternTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/DeconstructionPatternTree.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/MatchBindingsComputer.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java From vicente.romero at oracle.com Mon Jul 15 17:34:46 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 15 Jul 2019 17:34:46 +0000 Subject: hg: amber/amber: manual merge with patterns-stage-1 Message-ID: <201907151734.x6FHYl0I007009@aojmv0008.oracle.com> Changeset: de5b82868cdd Author: vromero Date: 2019-07-15 13:34 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/de5b82868cdd manual merge with patterns-stage-1 ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! 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/Flow.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! test/langtools/tools/javac/lib/DPrinter.java From vicente.romero at oracle.com Mon Jul 15 19:34:48 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 15 Jul 2019 19:34:48 +0000 Subject: hg: amber/amber: fixing failing regression tests Message-ID: <201907151934.x6FJYmVl019517@aojmv0008.oracle.com> Changeset: 400d527fd8a5 Author: vromero Date: 2019-07-15 15:21 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/400d527fd8a5 fixing failing regression tests ! test/langtools/tools/javac/diags/examples.not-yet.txt ! test/langtools/tools/javac/diags/examples/CantInheritFromSealed.java ! test/langtools/tools/javac/launcher/SourceLauncherTest.java ! test/langtools/tools/javac/parser/extend/TrialParser.java From maurizio.cimadamore at oracle.com Mon Jul 15 19:40:51 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 15 Jul 2019 19:40:51 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907151940.x6FJepBo026618@aojmv0008.oracle.com> Changeset: c0338134a40b Author: mcimadamore Date: 2019-07-15 19:40 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/c0338134a40b Automatic merge with records-and-sealed From chris.hegarty at oracle.com Tue Jul 16 09:49:37 2019 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Tue, 16 Jul 2019 10:49:37 +0100 Subject: compiler bug with overloaded Record constructor Message-ID: $ hg branch records-and-sealed $ hg log -b records-and-sealed -l 1 changeset: 56938:400d527fd8a5 branch: records-and-sealed parent: 56929:b2747f122ad9 user: vromero date: Mon Jul 15 15:21:19 2019 -0400 summary: fixing failing regression tests $ hg id 400d527fd8a5 (records-and-sealed) --- $ cat Rec.java record R(int i, int j) { public R(int i, int j, Object obj) { } } $ ./build/linux-x86_64-server-release/images/jdk/bin/javac Rec.java An exception has occurred in the compiler (13-internal). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you. java.lang.AssertionError at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155) at jdk.compiler/com.sun.tools.javac.util.Assert.check(Assert.java:46) at jdk.compiler/com.sun.tools.javac.util.Bits.incl(Bits.java:186) at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.initParam(Flow.java:2041) at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitMethodDef(Flow.java:1983) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:880) at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) at jdk.compiler/com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:406) at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1554) at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitClassDef(Flow.java:1925) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:788) at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) at jdk.compiler/com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:406) at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1554) at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.analyzeTree(Flow.java:2669) at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.analyzeTree(Flow.java:2651) at jdk.compiler/com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:217) at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1406) at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1380) at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:972) at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:318) at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:176) at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57) at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43) printing javac parameters to: /home/chhegar/repos/amber/amber/javac.20190716_104106.args -Chris. From vicente.romero at oracle.com Tue Jul 16 14:27:48 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Tue, 16 Jul 2019 10:27:48 -0400 Subject: compiler bug with overloaded Record constructor In-Reply-To: References: Message-ID: Hi Chris, Thanks for the bug report, Vicente On 7/16/19 5:49 AM, Chris Hegarty wrote: > $ hg branch > records-and-sealed > > $ hg log -b records-and-sealed -l 1 > changeset: 56938:400d527fd8a5 > branch: records-and-sealed > parent: 56929:b2747f122ad9 > user: vromero > date: Mon Jul 15 15:21:19 2019 -0400 > summary: fixing failing regression tests > > $ hg id > 400d527fd8a5 (records-and-sealed) > > --- > > $ cat Rec.java > record R(int i, int j) { > public R(int i, int j, Object obj) { } > } > > $ ./build/linux-x86_64-server-release/images/jdk/bin/javac Rec.java > An exception has occurred in the compiler (13-internal). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you. > java.lang.AssertionError > at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155) > at jdk.compiler/com.sun.tools.javac.util.Assert.check(Assert.java:46) > at jdk.compiler/com.sun.tools.javac.util.Bits.incl(Bits.java:186) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.initParam(Flow.java:2041) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitMethodDef(Flow.java:1983) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:880) > at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) > at jdk.compiler/com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:406) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1554) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitClassDef(Flow.java:1925) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:788) > at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) > at jdk.compiler/com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:406) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1554) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.analyzeTree(Flow.java:2669) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.analyzeTree(Flow.java:2651) > at jdk.compiler/com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:217) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1406) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1380) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:972) > at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:318) > at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:176) > at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57) > at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43) > printing javac parameters to: /home/chhegar/repos/amber/amber/javac.20190716_104106.args > > > -Chris. > From vicente.romero at oracle.com Tue Jul 16 18:01:42 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 16 Jul 2019 18:01:42 +0000 Subject: hg: amber/amber: do enter additional mandated members Message-ID: <201907161801.x6GI1gLB002026@aojmv0008.oracle.com> Changeset: 4ab1f9f1fda2 Author: vromero Date: 2019-07-16 14:01 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/4ab1f9f1fda2 do enter additional mandated members ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java + test/langtools/tools/javac/records/mandated_members/MandatedMembersNotBeingEntered.java From vicente.romero at oracle.com Tue Jul 16 18:04:58 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Tue, 16 Jul 2019 14:04:58 -0400 Subject: compiler bug with overloaded Record constructor In-Reply-To: References: Message-ID: <82434dbb-fd93-9cdc-f850-a87ca61e15ba@oracle.com> thanks Chris, I have fixed the bug you reported. The issue was that some mandated members were not being `entered` after being automatically added by the compiler. This implied that some fields were not initialized and thus flow analysis was complaining later. Thanks, Vicente Changeset: 4ab1f9f1fda2 Author: vromero Date: 2019-07-16 14:01 -0400 URL:https://hg.openjdk.java.net/amber/amber/rev/4ab1f9f1fda2 do enter additional mandated members On 7/16/19 5:49 AM, Chris Hegarty wrote: > $ hg branch > records-and-sealed > > $ hg log -b records-and-sealed -l 1 > changeset: 56938:400d527fd8a5 > branch: records-and-sealed > parent: 56929:b2747f122ad9 > user: vromero > date: Mon Jul 15 15:21:19 2019 -0400 > summary: fixing failing regression tests > > $ hg id > 400d527fd8a5 (records-and-sealed) > > --- > > $ cat Rec.java > record R(int i, int j) { > public R(int i, int j, Object obj) { } > } > > $ ./build/linux-x86_64-server-release/images/jdk/bin/javac Rec.java > An exception has occurred in the compiler (13-internal). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you. > java.lang.AssertionError > at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155) > at jdk.compiler/com.sun.tools.javac.util.Assert.check(Assert.java:46) > at jdk.compiler/com.sun.tools.javac.util.Bits.incl(Bits.java:186) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.initParam(Flow.java:2041) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitMethodDef(Flow.java:1983) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:880) > at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) > at jdk.compiler/com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:406) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1554) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.visitClassDef(Flow.java:1925) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:788) > at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) > at jdk.compiler/com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:406) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.scan(Flow.java:1554) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.analyzeTree(Flow.java:2669) > at jdk.compiler/com.sun.tools.javac.comp.Flow$AssignAnalyzer.analyzeTree(Flow.java:2651) > at jdk.compiler/com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:217) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1406) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1380) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:972) > at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:318) > at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:176) > at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57) > at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43) > printing javac parameters to: /home/chhegar/repos/amber/amber/javac.20190716_104106.args > > > -Chris. > From maurizio.cimadamore at oracle.com Tue Jul 16 18:05:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 16 Jul 2019 18:05:53 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907161805.x6GI5ruh004181@aojmv0008.oracle.com> Changeset: b904101cc8c4 Author: mcimadamore Date: 2019-07-16 18:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/b904101cc8c4 Automatic merge with records-and-sealed From vicente.romero at oracle.com Wed Jul 17 14:28:35 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 17 Jul 2019 14:28:35 +0000 Subject: hg: amber/amber: fixing regression test ListModuleDeps Message-ID: <201907171428.x6HESar5021069@aojmv0008.oracle.com> Changeset: 716120c32641 Author: vromero Date: 2019-07-17 10:27 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/716120c32641 fixing regression test ListModuleDeps ! test/langtools/tools/jdeps/listdeps/ListModuleDeps.java From maurizio.cimadamore at oracle.com Wed Jul 17 14:30:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 17 Jul 2019 14:30:53 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907171430.x6HEUrvw022931@aojmv0008.oracle.com> Changeset: fd2debbca81b Author: mcimadamore Date: 2019-07-17 14:30 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/fd2debbca81b Automatic merge with records-and-sealed From vicente.romero at oracle.com Wed Jul 17 18:47:22 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 17 Jul 2019 18:47:22 +0000 Subject: hg: amber/amber: adding support for type annotations on records Message-ID: <201907171847.x6HIlNZb007763@aojmv0008.oracle.com> Changeset: d5b1f8f224cd Author: vromero Date: 2019-07-17 13:21 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/d5b1f8f224cd adding support for type annotations on records ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! test/langtools/tools/javac/records/annotations/BadAnnotations.java ! test/langtools/tools/javac/records/annotations/BadAnnotations.out From maurizio.cimadamore at oracle.com Wed Jul 17 18:50:53 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 17 Jul 2019 18:50:53 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907171850.x6HIorXY010205@aojmv0008.oracle.com> Changeset: 63cb5c34b41e Author: mcimadamore Date: 2019-07-17 18:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/63cb5c34b41e Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java From vicente.romero at oracle.com Thu Jul 18 21:01:34 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Thu, 18 Jul 2019 21:01:34 +0000 Subject: hg: amber/amber: additional type annotation test Message-ID: <201907182101.x6IL1Zlj021230@aojmv0008.oracle.com> Changeset: d5ddf73923db Author: vromero Date: 2019-07-18 16:57 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/d5ddf73923db additional type annotation test ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java + test/langtools/tools/javac/records/annotations/CheckingTypeAnnotationsOnRecords.java From maurizio.cimadamore at oracle.com Thu Jul 18 21:05:55 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 18 Jul 2019 21:05:55 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907182105.x6IL5tkY023504@aojmv0008.oracle.com> Changeset: 36abd263dca2 Author: mcimadamore Date: 2019-07-18 21:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/36abd263dca2 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java From vicente.romero at oracle.com Tue Jul 23 22:41:33 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 23 Jul 2019 22:41:33 +0000 Subject: hg: amber/amber: module checking for sealed types, disallow changing PermittedSubtypes attr, adding tests Message-ID: <201907232241.x6NMfXlA016469@aojmv0008.oracle.com> Changeset: 7880389d8172 Author: hseigel Date: 2019-07-23 18:36 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/7880389d8172 module checking for sealed types, disallow changing PermittedSubtypes attr, adding tests ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/classFileParser.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/prims/jvmti.xml ! src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp ! src/hotspot/share/prims/jvmtiClassFileReconstituter.hpp ! src/hotspot/share/prims/jvmtiRedefineClasses.cpp ! src/java.instrument/share/native/libinstrument/JavaExceptions.c + test/hotspot/jtreg/runtime/modules/SealedModuleTest.java + test/hotspot/jtreg/runtime/modules/sealedP1/c1.java + test/hotspot/jtreg/runtime/modules/sealedP1/superClass.java + test/hotspot/jtreg/runtime/modules/sealedP2/c2.java + test/hotspot/jtreg/runtime/modules/sealedP3/c3.java + test/hotspot/jtreg/runtime/sealedTypes/Pkg/Permitted.java + test/hotspot/jtreg/runtime/sealedTypes/Pkg/notPermitted.jcod + test/hotspot/jtreg/runtime/sealedTypes/Pkg/sealedInterface.java + test/hotspot/jtreg/runtime/sealedTypes/SealedUnnamedModuleIntfTest.java + test/hotspot/jtreg/runtime/sealedTypes/SealedUnnamedModuleTest.java + test/hotspot/jtreg/runtime/sealedTypes/asteroids/Pluto.java + test/hotspot/jtreg/runtime/sealedTypes/otherPkg/wrongPackage.java + test/hotspot/jtreg/runtime/sealedTypes/planets/Mars.jcod + test/hotspot/jtreg/runtime/sealedTypes/planets/Neptune.java + test/hotspot/jtreg/runtime/sealedTypes/planets/outerPlanets.java + test/hotspot/jtreg/runtime/sealedTypes/sealedTest.java + test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/RedefinePermittedSubtypes.java From maurizio.cimadamore at oracle.com Tue Jul 23 22:46:06 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 23 Jul 2019 22:46:06 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907232246.x6NMk6Y7018625@aojmv0008.oracle.com> Changeset: 7ffbb586462a Author: mcimadamore Date: 2019-07-23 22:45 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/7ffbb586462a Automatic merge with records-and-sealed From reinier at zwitserloot.com Fri Jul 26 13:17:30 2019 From: reinier at zwitserloot.com (Reinier Zwitserloot) Date: Fri, 26 Jul 2019 15:17:30 +0200 Subject: Towards Better Serialization: Who holds the metadata? Message-ID: One detail I missed in brian's June 2019 edition of the proposal [1] is the following: Where goes the metadata? Who controls this? As an example, I'll use: package mypkg; @Value // generate all args constructor and such. public class Person { int unid; LocalDateTime birthDate; @Serializer(version = 1) public pattern Person(int unid, LocalDateTime birthDate) { unid = this.unid; birthDate = this.birthDate; } @Deserializer(version = 1) public static Person make(int unid, LocalDateTime birthDate) { return new Person(unid, birthDate); } } The metadata consists of 3 things. [A] The class name (here: 'mypkg.Person') [B] the version param of the @Serializer annotation (here: 1) [C] The tupletype. Here: . This metadata is required for any deserializer to know how to convert the raw streamformat's actual data component (in this case, treat it as first having an int value and then a LocalDateTime value), as well as to find the proper static @Deserializer method that needs to be invoked with this data in order to successfully deserialize this. There are 3 ways to go here: Strategy 1: Store the metadata together with the data in whatever streamformat we end up using for this. Strategy 2: Do not store the metadata at all; the metadata must be provided together with the bytestream. Strategy 3: Both; make it pluggable: The chosen serializer is handed the streamed data + the metadata and can do whatever it wants with it, and a chosen deserializer must provide the streamed data + the metadata, obtained however it wants, to the serialization framework which will then find the right deserializer and apply it. The java.io.Serializable serialization uses strategy 1 (metadata-with-data). However, a lot of commonly used alternative libraries, such as GSON and jackson, use strategy 2 (metadata-external). strategy 1 might look like (I picked JSON solely to illustrate the point, I presume debate about the precise stream format is premature at this phase): { "java-serialization-format-version": 1, "data": { "type": "mypkg.Person", "version": 1, "value": [ { "type": "int", "name": "unid", "value": 5 }, { type: "java.time.LocalDateTime", version: 0, name: "birthDate", "value": { "type": "String", "name": "spec", "value": "20190722T140030" } } ] } } Here we assume LDT has a serializer that serializes itself into a single string (20190722T140030 in this example). strategy 2 might look like: { "unid": 5, "birthDate": "20190722T140030" } Oof, that's a lot smaller. That is in fact so small and simple, it doesn't even look like anything java specific: This could well describe some random REST API. If somehow I can tell the java deserialization system to deserialize this straight into my Person class, that skips me an entire step. strategy 2, whilst very enticing in how compact the data becomes and how it looks like the serialized format can seamlessly interop with many other languages, has all sorts of obvious issues. Some food for thought: How would the deserializer do the job turning the bytes in the stream into an instance of java.lang.Object[] for the purposes of the proposed LinkedList deserializer, _even if_ the deserializer is provided with the information: "You must deserialize this into java.util.LinkedList"? The deserializer must also be provided the information: "The component type is LocalDateTime". What if I have a LinkedList that is a mix of integers, numbers, and localdatetimes? Given that the goal then becomes that you can deserialize REST API specifications straight into java objects, how do you specify a fieldname that isn't a valid java parameter name? '@Deserializer static Person make(@PropertyName("birth-date") LocalDate birthDate)"? Are we still exploring which of the 3 strategies to pick, or has a choice already been made? If not, how seriously should we attempt to find a way to do strategy #2? Alternatively, is part of the goal of this proposal to allow e.g. JSON mappers like GSON to use the new language features introduced here (such as deconstructors and the @Serializer annotation along with the pseudo-opens concept to deal with the reflective access issue)? I assume the answers are: "The serialization framework that ships with java is going to be focused solely on data-intermixed-with-metadata, but the language features would be usable by GSON and similar libraries as well", but I thought I'd check. [1] http://cr.openjdk.java.net/~briangoetz/amber/serialization.html --Reinier Zwitserloot From brian.goetz at oracle.com Fri Jul 26 14:54:51 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Fri, 26 Jul 2019 10:54:51 -0400 Subject: Towards Better Serialization: Who holds the metadata? In-Reply-To: References: Message-ID: I think you?ve got the right intuition about how this should work. The idea is that we let the programmer say ?here?s how you extract my at-rest state?. This is a lower-level service than serialization; serialization is a consumer of this service, but may have to make up some additional information in order to live up to its commitments. If the serialization framework wants to produce a self-contained stream, then yes, it would have to do something like (1). If all it cared about was list and maps of tuples, it could strip away all the class information and just do something like (2). There is a range of reproduction fidelities which a serialization framework could aim for, and if they are aiming for lower fidelity, than they can put less information in the stream. (For example, suppose you have a FooList in your object graph; could a serialization framework substitute a generic List? java.io serialization might not, but yours might, in which case you only need record the ?listiness? of the object.) Or, supposed you had a closed-world assumption, where the universe of classes was known. Then you could encode something more compact about which class it came from. There are many degrees of freedom for serialization frameworks; we?re trying to separate the object freeze/thaw part of the story from the encoding / fidelity / evolution part of the story. > On Jul 26, 2019, at 9:17 AM, Reinier Zwitserloot wrote: > > One detail I missed in brian's June 2019 edition of the proposal [1] is the > following: > > Where goes the metadata? Who controls this? > > As an example, I'll use: > > package mypkg; > > @Value // generate all args constructor and such. > public class Person { > int unid; > LocalDateTime birthDate; > > @Serializer(version = 1) > public pattern Person(int unid, LocalDateTime birthDate) { > unid = this.unid; > birthDate = this.birthDate; > } > > @Deserializer(version = 1) > public static Person make(int unid, LocalDateTime birthDate) { > return new Person(unid, birthDate); > } > } > > The metadata consists of 3 things. > > [A] The class name (here: 'mypkg.Person') > > [B] the version param of the @Serializer annotation (here: 1) > > [C] The tupletype. Here: . > > This metadata is required for any deserializer to know how to convert the > raw streamformat's actual data component (in this case, treat it as first > having an int value and then a LocalDateTime value), as well as to find the > proper static @Deserializer method that needs to be invoked with this data > in order to successfully deserialize this. > > There are 3 ways to go here: > > Strategy 1: Store the metadata together with the data in whatever > streamformat we end up using for this. > > Strategy 2: Do not store the metadata at all; the metadata must be provided > together with the bytestream. > > Strategy 3: Both; make it pluggable: The chosen serializer is handed the > streamed data + the metadata and can do whatever it wants with it, and a > chosen deserializer must provide the streamed data + the metadata, obtained > however it wants, to the serialization framework which will then find the > right deserializer and apply it. > > > > The java.io.Serializable serialization uses strategy 1 > (metadata-with-data). However, a lot of commonly used alternative > libraries, such as GSON and jackson, use strategy 2 (metadata-external). > > strategy 1 might look like (I picked JSON solely to illustrate the point, I > presume debate about the precise stream format is premature at this phase): > > { > "java-serialization-format-version": 1, > "data": { > "type": "mypkg.Person", > "version": 1, > "value": [ > { "type": "int", "name": "unid", "value": 5 }, > { type: "java.time.LocalDateTime", version: 0, name: > "birthDate", "value": > { "type": "String", "name": "spec", "value": > "20190722T140030" } > } > ] > } > } > > Here we assume LDT has a serializer that serializes itself into a single > string (20190722T140030 in this example). > > strategy 2 might look like: > > { > "unid": 5, > "birthDate": "20190722T140030" > } > > Oof, that's a lot smaller. That is in fact so small and simple, it doesn't > even look like anything java specific: This could well describe some random > REST API. If somehow I can tell the java deserialization system to > deserialize this straight into my Person class, that skips me an entire > step. > > strategy 2, whilst very enticing in how compact the data becomes and how it > looks like the serialized format can seamlessly interop with many other > languages, has all sorts of obvious issues. Some food for thought: > > How would the deserializer do the job turning the bytes in the stream into > an instance of java.lang.Object[] for the purposes of the proposed > LinkedList deserializer, _even if_ the deserializer is provided with the > information: "You must deserialize this into java.util.LinkedList"? The > deserializer must also be provided the information: "The component type is > LocalDateTime". What if I have a LinkedList that is a mix of integers, > numbers, and localdatetimes? > > Given that the goal then becomes that you can deserialize REST API > specifications straight into java objects, how do you specify a fieldname > that isn't a valid java parameter name? '@Deserializer static Person > make(@PropertyName("birth-date") LocalDate birthDate)"? > > > Are we still exploring which of the 3 strategies to pick, or has a choice > already been made? If not, how seriously should we attempt to find a way to > do strategy #2? Alternatively, is part of the goal of this proposal to > allow e.g. JSON mappers like GSON to use the new language features > introduced here (such as deconstructors and the @Serializer annotation > along with the pseudo-opens concept to deal with the reflective access > issue)? > > I assume the answers are: "The serialization framework that ships with java > is going to be focused solely on data-intermixed-with-metadata, but the > language features would be usable by GSON and similar libraries as well", > but I thought I'd check. > > > [1] http://cr.openjdk.java.net/~briangoetz/amber/serialization.html > > --Reinier Zwitserloot From vicente.romero at oracle.com Mon Jul 29 22:06:03 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Mon, 29 Jul 2019 22:06:03 +0000 Subject: hg: amber/amber: make JVM_GetPermittedSubtypes return an array of Strings Message-ID: <201907292206.x6TM63af002053@aojmv0008.oracle.com> Changeset: 6ef931c06a1a Author: vromero Date: 2019-07-29 18:02 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/6ef931c06a1a make JVM_GetPermittedSubtypes return an array of Strings ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/prims/jvm.cpp ! src/java.base/share/classes/java/lang/Class.java ! src/java.base/share/native/libjava/Class.c + test/hotspot/jtreg/runtime/sealedTypes/abstractSealedTest.java + test/hotspot/jtreg/runtime/sealedTypes/getPermittedSubtypesTest.java + test/hotspot/jtreg/runtime/sealedTypes/noLoadSubtypes.jcod + test/hotspot/jtreg/runtime/sealedTypes/overrideSealedTest.java From maurizio.cimadamore at oracle.com Mon Jul 29 22:11:01 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 29 Jul 2019 22:11:01 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907292211.x6TMB1pK008037@aojmv0008.oracle.com> Changeset: 960e2b3680da Author: mcimadamore Date: 2019-07-29 22:10 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/960e2b3680da Automatic merge with records-and-sealed From maurizio.cimadamore at oracle.com Wed Jul 31 20:45:52 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 31 Jul 2019 20:45:52 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907312045.x6VKjq7g021887@aojmv0008.oracle.com> Changeset: e9da6fa5d9da Author: mcimadamore Date: 2019-07-31 20:45 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/e9da6fa5d9da Automatic merge with records-and-sealed From maurizio.cimadamore at oracle.com Wed Jul 31 20:50:52 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 31 Jul 2019 20:50:52 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907312050.x6VKorht024811@aojmv0008.oracle.com> Changeset: 86541bf0ae13 Author: mcimadamore Date: 2019-07-31 20:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/86541bf0ae13 Automatic merge with records-and-sealed ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java From maurizio.cimadamore at oracle.com Wed Jul 31 21:05:51 2019 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 31 Jul 2019 21:05:51 +0000 Subject: hg: amber/amber: Automatic merge with records-and-sealed Message-ID: <201907312105.x6VL5pM0005519@aojmv0008.oracle.com> Changeset: 7096235cdd87 Author: mcimadamore Date: 2019-07-31 21:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/7096235cdd87 Automatic merge with records-and-sealed From jonathan.gibbons at oracle.com Wed Jul 31 20:41:54 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Wed, 31 Jul 2019 20:41:54 +0000 Subject: hg: amber/amber: implement JavacElements.isSealed Message-ID: <201907312041.x6VKftxI019656@aojmv0008.oracle.com> Changeset: 29bd151b3e52 Author: jjg Date: 2019-07-31 13:35 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/29bd151b3e52 implement JavacElements.isSealed ! src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacElements.java From jonathan.gibbons at oracle.com Wed Jul 31 20:44:35 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Wed, 31 Jul 2019 20:44:35 +0000 Subject: hg: amber/amber: improve failure diagnosis Message-ID: <201907312044.x6VKiam1020513@aojmv0008.oracle.com> Changeset: 51f1edd50183 Author: jjg Date: 2019-07-31 13:39 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/51f1edd50183 improve failure diagnosis ! test/langtools/tools/javac/tree/JavacTreeScannerTest.java From jonathan.gibbons at oracle.com Wed Jul 31 20:47:20 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Wed, 31 Jul 2019 20:47:20 +0000 Subject: hg: amber/amber: implement ClassTree.getPermitsClause and scanners Message-ID: <201907312047.x6VKlKJQ022370@aojmv0008.oracle.com> Changeset: 379c97f704d8 Author: jjg Date: 2019-07-31 13:41 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/379c97f704d8 implement ClassTree.getPermitsClause and scanners ! src/jdk.compiler/share/classes/com/sun/source/tree/ClassTree.java ! src/jdk.compiler/share/classes/com/sun/source/util/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeScanner.java From jonathan.gibbons at oracle.com Wed Jul 31 20:48:22 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Wed, 31 Jul 2019 20:48:22 +0000 Subject: hg: amber/amber: remove unused properties Message-ID: <201907312048.x6VKmMVL022836@aojmv0008.oracle.com> Changeset: 061ac88f1327 Author: jjg Date: 2019-07-31 13:43 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/061ac88f1327 remove unused properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties From jonathan.gibbons at oracle.com Wed Jul 31 20:59:24 2019 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Wed, 31 Jul 2019 20:59:24 +0000 Subject: hg: amber/amber: javadoc support for selaed/non-sealed modifiers Message-ID: <201907312059.x6VKxPjp002583@aojmv0008.oracle.com> Changeset: d0d29c0bc571 Author: jjg Date: 2019-07-31 13:54 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/d0d29c0bc571 javadoc support for selaed/non-sealed modifiers ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java + test/langtools/jdk/javadoc/doclet/testSealedTypes/TestSealedTypes.java