From michal at kleczek.org Sun Dec 1 12:36:54 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Sun, 01 Dec 2019 12:36:54 +0000 Subject: JEP-360 Sealed types and non-accessible subtypes Message-ID: Hello, I would like to ask about JEP-360 proposal in the context of "module implementation only types" (ie. public types that can only be extended/implemented by types in the same module). Right now there is only limited support for this: one can define a public abstract class with non-public constructor. Sealed types seem to provide such a feature but IMHO there is a couple of concerns: The syntax requires to explicitly list all permitted subtypes. It could be possible to make permits clause optional. Omitting it would mean "all subtypes in the same module". I admit such syntax is just a nice to have as explicitly listing subclasses is not such a big deal when all types must be in the same module anyway. What is interesting though is the interaction of permitted types declaration and exhaustiveness check: how should it work in case when a public sealed type permits a non-public/non-exported type? Introduction of exhaustiveness check also means adding a new permitted subtype is an incompatible change - similar to adding a value to existing enum. This makes it somewhat less useful for the module implementation only types use case. The solution might be to have sealed types without explicit permits clause (see above) and such types could not be used for exhaustiveness checks. Kind regards, Michal From michal at kleczek.org Sun Dec 1 18:10:21 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Sun, 01 Dec 2019 18:10:21 +0000 Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: References: Message-ID: I have just realized permits clause is in fact optional. Optionality is though only a syntactic sugar to save some keystrokes. I think it might be useful to change its semantics to mean any type in the same module and not just the compilation unit. Thanks, Michal On 01/12/2019 12:36:54, "K?eczek, Micha?" wrote: >Hello, > >I would like to ask about JEP-360 proposal in the context of "module >implementation only types" >(ie. public types that can only be extended/implemented by types in the >same module). > >Right now there is only limited support for this: one can define a >public abstract class with non-public constructor. > >Sealed types seem to provide such a feature but IMHO there is a couple >of concerns: > >The syntax requires to explicitly list all permitted subtypes. >It could be possible to make permits clause optional. Omitting it would >mean "all subtypes in the same module". >I admit such syntax is just a nice to have as explicitly listing >subclasses is not such a big deal >when all types must be in the same module anyway. > >What is interesting though is the interaction of permitted types >declaration and exhaustiveness check: >how should it work in case when a public sealed type permits a >non-public/non-exported type? > >Introduction of exhaustiveness check also means adding a new permitted >subtype is an incompatible change >- similar to adding a value to existing enum. >This makes it somewhat less useful for the module implementation only >types use case. >The solution might be to have sealed types without explicit permits >clause (see above) and >such types could not be used for exhaustiveness checks. > >Kind regards, >Michal From brian.goetz at oracle.com Sun Dec 1 18:28:50 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 1 Dec 2019 13:28:50 -0500 Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: References: Message-ID: <07582253-106C-40DC-80E9-41316E39F664@oracle.com> > Right now there is only limited support for this: one can define a public abstract class with non-public constructor. Correct, this works for classes, but not for interfaces. This puts API designers in a bind: it is better to expose only interfaces and final classes to clients, but without sealed types, API designers have a choice of allowing arbitrary implementation (which has costs to the API implementation) or exposing abstract classes. Sealed types give them the best of both worlds. > The syntax requires to explicitly list all permitted subtypes. > It could be possible to make permits clause optional. Omitting it would mean "all subtypes in the same module". > I admit such syntax is just a nice to have as explicitly listing subclasses is not such a big deal > when all types must be in the same module anyway. The permits clause is optional, but in that case is restricted to inferring all classes in the _same compilation unit_. This means that while the permits clause can be omitted from the source code, a full explicit list is available in the class file anyway. In turn, this enables the compiler to reason about _exhaustiveness_ ? that it knows what all the subtypes are. This is a common thing that people miss about sealed types; they think about it only in terms of ?I want to restrict my subtypes.? Which is part of it, but another part is being able to _enumerate_ the subtypes of a given class at the time a client is compiled ? which enables the compiler to reason about exhaustiveness (say, in switches with type patterns.) So while it might be tempting to say ?permits package? or ?permits module?, such a use would be giving up a benefit without necessarily realizing it. > What is interesting though is the interaction of permitted types declaration and exhaustiveness check: > how should it work in case when a public sealed type permits a non-public/non-exported type? This works as you would expect. When you compile against a JAR, you can _see_ the private classes in that API, but you can?t access them. If you try to access them (at compile or run time), you get an error. Sealed types work with this mechanism. If type A is sealed to permit B and C, if both B and C are accessible to the client trying to do an exhaustive switch on A, then the client is rewarded by being able to write a total switch on A. If B is accessible but not C, the compiler knows that the switch is _not_ exhaustive, and will make you write a default clause if you want to be total. So you still get the full type checking of the exhaustiveness, but you may or may not be able to explicitly match on all the types. This means that sealing and accessibility interact in basically the obvious way from the perspective of an API designer; if a class is sealed but some of the subtypes differ in their accessibility, that means that some clients may be able to switch explicitly and exhaustively, and others may not be. When we have full pattern matching, we expect that a not-uncommon scenario will be where there is a sealed public interface and a number of private subtypes, with public patterns exposed instead. That means the implementation gains the ability to assume that it controls all implementations, but without the obligation to expose them all. > Introduction of exhaustiveness check also means adding a new permitted subtype is an incompatible change > - similar to adding a value to existing enum. Yes, this is exactly analogous to the enum case. When the compiler identifies that a switch is exhaustive, it compiles in a default case anyway, which throws the obvious exception. What makes this an improvement over just providing the default yourself is not the convenience (though that is nice), but the fact that you will no long sweep these separate-compilation issues under the rug. In this situation, when you go to _recompile_ the client, and a new type/enum has been added, you?ll get a compile-time error that tells you that you are no longer exhaustive, and you get a chance to deal with it rather than sweeping it into the default that you think will never be matched. > This makes it somewhat less useful for the module implementation only types use case. > The solution might be to have sealed types without explicit permits clause (see above) and > such types could not be used for exhaustiveness checks. This is exactly why we did not allow ?permits package? or ?permits module?, and tied implicit permits to inferring the subtypes in the same compilation unit. From forax at univ-mlv.fr Sun Dec 1 18:33:40 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Sun, 1 Dec 2019 19:33:40 +0100 (CET) Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: References: Message-ID: <2132336381.1825719.1575225220337.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "Micha? K?eczek" > ?: "amber-dev" > Envoy?: Dimanche 1 D?cembre 2019 19:10:21 > Objet: Re: JEP-360 Sealed types and non-accessible subtypes > I have just realized permits clause is in fact optional. Optionality is > though only a syntactic sugar to save some keystrokes. > I think it might be useful to change its semantics to mean any type in > the same module and not just the compilation unit. i've hard time to understand what your are suggesting: - is it, if a sealed interface need to be compile then all files in the module need to be recompile ? - or is it if a class inside a module is changed, because we don't know if there is a sealed interface in it or not, we need to recompile the whole module ? In both cases, is it not equivalent to say that you can not compile a module incrementally anymore ? > > Thanks, > Michal regards, R?mi Forax > > On 01/12/2019 12:36:54, "K?eczek, Micha?" wrote: > >>Hello, >> >>I would like to ask about JEP-360 proposal in the context of "module >>implementation only types" >>(ie. public types that can only be extended/implemented by types in the >>same module). >> >>Right now there is only limited support for this: one can define a >>public abstract class with non-public constructor. >> >>Sealed types seem to provide such a feature but IMHO there is a couple >>of concerns: >> >>The syntax requires to explicitly list all permitted subtypes. >>It could be possible to make permits clause optional. Omitting it would >>mean "all subtypes in the same module". >>I admit such syntax is just a nice to have as explicitly listing >>subclasses is not such a big deal >>when all types must be in the same module anyway. >> >>What is interesting though is the interaction of permitted types >>declaration and exhaustiveness check: >>how should it work in case when a public sealed type permits a >>non-public/non-exported type? >> >>Introduction of exhaustiveness check also means adding a new permitted >>subtype is an incompatible change >>- similar to adding a value to existing enum. >>This makes it somewhat less useful for the module implementation only >>types use case. >>The solution might be to have sealed types without explicit permits >>clause (see above) and >>such types could not be used for exhaustiveness checks. >> >>Kind regards, > >Michal From michal at kleczek.org Sun Dec 1 18:45:34 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Sun, 01 Dec 2019 18:45:34 +0000 Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: <2132336381.1825719.1575225220337.JavaMail.zimbra@u-pem.fr> References: <2132336381.1825719.1575225220337.JavaMail.zimbra@u-pem.fr> Message-ID: On 01/12/2019 18:33:40, "Remi Forax" wrote: > >> I have just realized permits clause is in fact optional. Optionality is >> though only a syntactic sugar to save some keystrokes. >> I think it might be useful to change its semantics to mean any type in >> the same module and not just the compilation unit. > >i've hard time to understand what your are suggesting: >- is it, if a sealed interface need to be compile then all files in the module need to be recompile ? >- or is it if a class inside a module is changed, because we don't know if there is a sealed interface in it or not, we need to recompile the whole module ? > >In both cases, is it not equivalent to say that you can not compile a module incrementally anymore ? I am not sure I understand the second case. What I suggest is public sealed interface A {} would mean only types in the same module as A can implement/extend it. Generated class file does not need to contain any list of permitted subtypes - having an empty set means "any in the same module". I thinke we have the following cases: a) change sealed type to non-sealed Obviously non-issue b) change non-sealed type to sealed Does not affect existing classes in the same module (as they can subclass anyway) c) change a type to be a subtype of a sealed type Does not affect the sealed supertype. In general marking a type as sealed (without permits clause) would only require both the compiler and the verifier to check any class for being in the same module if any of its supertypes is sealed. Thanks, Michal From brian.goetz at oracle.com Sun Dec 1 18:52:56 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 1 Dec 2019 13:52:56 -0500 Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: References: <2132336381.1825719.1575225220337.JavaMail.zimbra@u-pem.fr> Message-ID: > I am not sure I understand the second case. What I suggest is > > public sealed interface A {} > > would mean only types in the same module as A can implement/extend it. Yes, I fully understand that this is what you are suggesting. It was suggested in the early design of the feature, we considered about it, explored the pros and cons, and we decided it was not the best interpretation. > Generated class file does not need to contain any list of permitted subtypes > - having an empty set means "any in the same module?. Yes, obviously we could make the classfile format and runtime behavior more complex by having multiple modes for the PermittedSubtypes attribute (explicit list, package-only, module-only), and we did consider it, but I think the return-on-complexity is negative here. By saying ?any class in the package/module?, you gain some flexibility as the author of the class, but it comes at a cost: then _no one_ gets the benefit of compile-time exhaustiveness checking. (From an ecosystem perspective, this benefits some individual class authors, at the cost of _all_ users ? which is likely to be worse for everyone in the aggregate.) By going the other way ? always requiring an explicit list in the classfile, and then inferring it at compile time where we can _reliably_ do so, everyone gets the benefits of exhaustiveness checking (and more explicit documentation), at the cost of potentially a little more work for a subset of API authors. That seems a far better tradeoff, so that?s the way we went. From michal at kleczek.org Sun Dec 1 18:58:33 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Sun, 01 Dec 2019 18:58:33 +0000 Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: <07582253-106C-40DC-80E9-41316E39F664@oracle.com> References: <07582253-106C-40DC-80E9-41316E39F664@oracle.com> Message-ID: Thanks for detailed answer. On 01/12/2019 18:28:50, "Brian Goetz" wrote: > >> Introduction of exhaustiveness check also means adding a new permitted subtype is an incompatible change >> - similar to adding a value to existing enum. > >Yes, this is exactly analogous to the enum case. When the compiler identifies that a switch is exhaustive, it compiles in a default case anyway, which throws the obvious exception. I think there is a subtle difference here. The subtlety is that traditionally adding a subtype does not require any change in the client code depending on the super type (as per Liskov Substitution Principle). I am wondering how surprising it will be that adding a non-public class (in the same compilation unit as the sealed super type) breaks existing clients. Maybe - if exhaustiveness check is so important - it is better to force explicit declaration of permitted subtypes - at least that would make it clear that adding one is an API change. Thanks, Michal From brian.goetz at oracle.com Sun Dec 1 19:04:37 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 1 Dec 2019 14:04:37 -0500 Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: References: <07582253-106C-40DC-80E9-41316E39F664@oracle.com> Message-ID: > I think there is a subtle difference here. The subtlety is that traditionally adding a subtype does not require any change in the client code depending on the super type (as per Liskov Substitution Principle). > I am wondering how surprising it will be that adding a non-public class (in the same compilation unit as the sealed super type) breaks existing clients. If all the types are public/exported, and you add a first non-exported one, then yes, this is binary-but-not-source-compatble (but the impact on clients is still pretty minimal, they need to add a default clause on their next recompilation.) If you _already_ have at least one nonpublic/nonexported subtype, then adding a second does not risk breaking anything, since clients would _already_ be doing so. In any case, this is a deliberate tradeoff; it has to be possible to evolve sealed APIs somehow, otherwise it is too brittle. This seemed the best place to draw this line. > Maybe - if exhaustiveness check is so important - it is better to force explicit declaration of permitted subtypes - at least that would make it clear that adding one is an API change. We did consider this, but this also seemed like a bad tradeoff ? making all APIs explicitly list all their subtypes ? when they are declared RIGHT THERE ? would be seen as just being mean, for little benefit. So again, this seemed the best way to balance the various concerns. From michal at kleczek.org Sun Dec 1 19:49:48 2019 From: michal at kleczek.org (=?utf-8?q?K=c5=82eczek=2c=20Micha=c5=82?=) Date: Sun, 01 Dec 2019 19:49:48 +0000 Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: References: <07582253-106C-40DC-80E9-41316E39F664@oracle.com> Message-ID: On 01/12/2019 19:04:37, "Brian Goetz" wrote: >> I think there is a subtle difference here. The subtlety is that traditionally adding a subtype does not require any change in the client code depending on the super type (as per Liskov Substitution Principle). >> I am wondering how surprising it will be that adding a non-public class (in the same compilation unit as the sealed super type) breaks existing clients. > >If all the types are public/exported, and you add a first non-exported one, then yes, this is binary-but-not-source-compatble While formally adding a subtype might be a compatible change (as the default case is always there) - in practice this is a breaking change (I cannot upgrade to a new version of the library _without_ any code changes - ie. by just replacing a jar file). Such a change is actually equivalent to removing a method. > (but the impact on clients is still pretty minimal, they need to add a default clause on their next recompilation.) If you _already_ have at least one nonpublic/nonexported subtype, then adding a second does not risk breaking anything, since clients would _already_ be doing so. Indeed. > > >In any case, this is a deliberate tradeoff; it has to be possible to evolve sealed APIs somehow, otherwise it is too brittle. This seemed the best place to draw this line. > >> Maybe - if exhaustiveness check is so important - it is better to force explicit declaration of permitted subtypes - at least that would make it clear that adding one is an API change. > >We did consider this, but this also seemed like a bad tradeoff ? making all APIs explicitly list all their subtypes ? when they are declared RIGHT THERE ? would be seen as just being mean, for little benefit. So again, this seemed the best way to balance the various concerns. > So it looks like the best practice for API designers is to _always_ add a non-public permitted subtype to force clients to implement default case. I even have a good name for this subtype: DefaultCase :) Thanks for sharing your thoughts. Michal From brian.goetz at oracle.com Sun Dec 1 19:56:33 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 1 Dec 2019 14:56:33 -0500 Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: References: <07582253-106C-40DC-80E9-41316E39F664@oracle.com> Message-ID: <60082D70-6F1E-435C-B9C2-3E7DE30124A3@oracle.com> >> If all the types are public/exported, and you add a first non-exported one, then yes, this is binary-but-not-source-compatble > While formally adding a subtype might be a compatible change (as the default case is always there) - in practice this is a breaking change > (I cannot upgrade to a new version of the library _without_ any code changes - ie. by just replacing a jar file). > Such a change is actually equivalent to removing a method. I don?t think that word means what you think it means ? I suggest you review the definitions of source-compatible and binary-compatible? Adding such a class is a _binary-compatible_ change, as existing classifies will load, constant pool entries will resolve, and existing callsites will link. It is possible that this is not _source-compatible_, in the event that there are explicitly exhaustive switches. But in these cases, there is a straightforward remediation for the clients. Virtually any change may be _behaviorally incompatible_ (every bug fix is in this category). From brian.goetz at oracle.com Sun Dec 1 20:24:48 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 1 Dec 2019 15:24:48 -0500 Subject: JEP-360 Sealed types and non-accessible subtypes In-Reply-To: References: <07582253-106C-40DC-80E9-41316E39F664@oracle.com> Message-ID: <2ACBF92C-F60C-47DD-BEF7-28DD0A4D4B1F@oracle.com> > So it looks like the best practice for API designers is to _always_ add a non-public permitted subtype to force clients to implement default case. No, that would be utterly TERRIBLE advice. In the same category of bad advice as ?to avoid ingrown toenails, chop off your foot.? So, no. Not a best practice, not even a good practice ? candidate for a worst practice, actually. From joe.darcy at oracle.com Mon Dec 2 01:59:43 2019 From: joe.darcy at oracle.com (joe.darcy at oracle.com) Date: Mon, 02 Dec 2019 01:59:43 +0000 Subject: hg: amber/amber: Enable variable source level in record tests. Message-ID: <201912020159.xB21xix2007122@aojmv0008.oracle.com> Changeset: c91826d62310 Author: darcy Date: 2019-12-01 17:58 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/c91826d62310 Enable variable source level in record tests. ! test/hotspot/jtreg/runtime/records/RedefineRecord.java + test/hotspot/jtreg/runtime/records/TEST.properties ! test/jdk/java/io/Serializable/records/AbsentStreamValuesTest.java ! test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java ! test/jdk/java/io/Serializable/records/BasicRecordSer.java ! test/jdk/java/io/Serializable/records/ConstructorAccessTest.java ! test/jdk/java/io/Serializable/records/ConstructorPermissionTest.java ! test/jdk/java/io/Serializable/records/CycleTest.java ! test/jdk/java/io/Serializable/records/ProhibitedMethods.java ! test/jdk/java/io/Serializable/records/ReadResolveTest.java ! test/jdk/java/io/Serializable/records/RecordClassTest.java ! test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java ! test/jdk/java/io/Serializable/records/SerialVersionUIDTest.java ! test/jdk/java/io/Serializable/records/StreamRefTest.java + test/jdk/java/io/Serializable/records/TEST.properties ! test/jdk/java/io/Serializable/records/ThrowingConstructorTest.java ! test/jdk/java/io/Serializable/records/WriteReplaceTest.java ! test/jdk/java/io/Serializable/records/migration/AssignableFromTest.java ! test/jdk/java/io/Serializable/records/migration/DefaultValuesTest.java ! test/jdk/java/io/Serializable/records/migration/SuperStreamFieldsTest.java ! test/jdk/java/lang/instrument/RedefineRecordAttr/TestRecordAttr.java ! test/jdk/java/lang/instrument/TEST.properties ! test/jdk/java/lang/reflect/records/RecordReflectionTest.java + test/jdk/java/lang/reflect/records/TEST.properties ! test/jdk/java/lang/runtime/ObjectMethodsTest.java + test/jdk/java/lang/runtime/TEST.properties From joe.darcy at oracle.com Mon Dec 2 06:17:06 2019 From: joe.darcy at oracle.com (Joe Darcy) Date: Sun, 1 Dec 2019 22:17:06 -0800 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <3805c12d-d476-0f09-3344-a0f7e215c34b@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> <32b8c703-523f-ae83-291d-4f1b28fa1d91@oracle.com> <04ab170a-72a3-81e0-c38b-79b9a2533cd1@oracle.com> <3805c12d-d476-0f09-3344-a0f7e215c34b@oracle.com> Message-ID: <1824646f-00f5-13c0-0873-6ea6f04137c3@oracle.com> Hi Vicente, I took the liberty of adding the necessary directory-level jtreg config files to enable the feature and updated the tests accordingly: ??? https://hg.openjdk.java.net/amber/amber/rev/c91826d62310 (The feature is enabled by default in for the langtools tests, but disabled by default elsewhere.) HTH, -Joe On 11/29/2019 3:12 PM, Vicente Romero wrote: > Hi Joe, > > All the tests that have an explicit -source 14 are that way because > of, I think to remember, a bug in jtreg that doesn't expand the > ${some.property} macro for those tests. I don't remember the details > though > > Thanks, > Vicente > > On 11/29/19 9:59 AM, Joe Darcy wrote: >> Hi Vicente, >> >> Please change all uses of >> >> ??? @compile --enable-preview -source 14 >> >> in jtreg tags to to >> >> ??? @compile --enable-preview -source ${jdk.version} >> >> The former structure will spuriously fail when the JDK 14 -> 15 >> transition occurs. >> >> Also, publishing delta-webrevs between iterations in additional to >> full webrev would help track the incremental changes. >> >> Thanks, >> >> -Joe >> >> On 11/28/2019 8:05 AM, Vicente Romero wrote: >>> Hi again, >>> >>> Sorry but I realized that I forgot to remove some code on the >>> compiler side. The code removed is small, before we were issuing an >>> error if some serialization methods were declared as record members. >>> That section was removed from the spec. I have prepared another >>> iteration with this change at [1] >>> >>> Thanks, >>> Vicente >>> >>> [1] >>> http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.01/ >>> >>> On 11/27/19 11:37 PM, Vicente Romero wrote: >>>> Hi, >>>> >>>> Please review the code for the records feature at [1]. This webrev >>>> includes all: APIs, runtime, compiler, serialization, javadoc, and >>>> more! Must of the code has been reviewed but there have been some >>>> changes since reviewers saw it. Also this is the first time an >>>> integral webrev is sent out for review. Last changes on top of my >>>> mind since last review iterations: >>>> >>>> On the compiler implementation: >>>> - it has been adapted to the last version of the language spec [2], >>>> as a reference the JVM spec is at [3]. This implied some changes in >>>> determining if a user defined constructor is the canonical or not. >>>> Now if a constructor is override-equivalent to a signature derived >>>> from the record components, then it is considered the canonical >>>> constructor. And any canonical constructor should satisfy a set of >>>> restrictions, see section 8.10.4 Record Constructor Declarations of >>>> the specification. >>>> - It was also added a check to make sure that accessors are not >>>> generic. >>>> - And that the canonical constructor, if user defined, is not >>>> explicitly invoking any other constructor. >>>> - The list of forbidden record component names has also been updated. >>>> - new error messages have been added >>>> >>>> APIs: >>>> - there have been some API editing in java.lang.Record, >>>> java.lang.runtime.ObjectMethods and >>>> java.lang.reflect.RecordComponent, java.io.ObjectInputStream, >>>> javax.lang.model (some visitors were added) >>>> >>>> On the JVM implementation: >>>> - some logging capabilities have been added to classFileParser.cpp >>>> to provide the reason for which the Record attribute has been ignored >>>> >>>> Reflection: >>>> - there are several new changes to the implementation of >>>> java.lang.reflect.RecordComponent apart from the spec changes >>>> mentioned before. >>>> >>>> bug fixes in >>>> - compiler >>>> - serialization, >>>> - JVM, etc >>>> >>>> As a reference the last iteration of the previous reviews can be >>>> found at [4] under folders: compiler, hotspot_runtime, javadoc, >>>> reflection and serialization, >>>> >>>> TIA, >>>> Vicente >>>> >>>> [1] >>>> http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/ >>>> [2] >>>> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html >>>> [3] >>>> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html >>>> [4] http://cr.openjdk.java.net/~vromero/records.review/ >>>> >>> > From chris.hegarty at oracle.com Mon Dec 2 14:51:44 2019 From: chris.hegarty at oracle.com (chris.hegarty at oracle.com) Date: Mon, 02 Dec 2019 14:51:44 +0000 Subject: hg: amber/amber: records: review comment - record-ness check should be part of the OSC Message-ID: <201912021451.xB2EpiC7029487@aojmv0008.oracle.com> Changeset: e1a4d3bc65c1 Author: chegar Date: 2019-12-02 14:51 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/e1a4d3bc65c1 records: review comment - record-ness check should be part of the OSC ! src/java.base/share/classes/java/io/ObjectOutputStream.java ! src/java.base/share/classes/java/io/ObjectStreamClass.java From chris.hegarty at oracle.com Mon Dec 2 14:53:01 2019 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Mon, 2 Dec 2019 14:53:01 +0000 Subject: ObjectOutputStream and Record In-Reply-To: <1458871005.1726008.1575157704870.JavaMail.zimbra@u-pem.fr> References: <1458871005.1726008.1575157704870.JavaMail.zimbra@u-pem.fr> Message-ID: Thank you Remi. Pushed: https://hg.openjdk.java.net/amber/amber/rev/e1a4d3bc65c1 -Chris. > On 30 Nov 2019, at 23:48, Remi Forax wrote: > > Hi all, > in ObjectOutputStream.writeOrdinaryObject, there is a weird code: > > final boolean isRecord = isRecord(obj.getClass()) ? true : false; > if (isRecord) { > > Like enums, proxies, etc, the ObjectStreamClass knows if a record is a record or not, > so the code can be simplified to > > if (desc.isRecord()) { > > > so the method isRecord can disappear (and writeRecordData can be marked as preview). > > regards, > R?mi From vicente.romero at oracle.com Mon Dec 2 21:07:39 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Mon, 2 Dec 2019 16:07:39 -0500 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <1824646f-00f5-13c0-0873-6ea6f04137c3@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> <32b8c703-523f-ae83-291d-4f1b28fa1d91@oracle.com> <04ab170a-72a3-81e0-c38b-79b9a2533cd1@oracle.com> <3805c12d-d476-0f09-3344-a0f7e215c34b@oracle.com> <1824646f-00f5-13c0-0873-6ea6f04137c3@oracle.com> Message-ID: thanks Joe, Vicente On 12/2/19 1:17 AM, Joe Darcy wrote: > Hi Vicente, > > I took the liberty of adding the necessary directory-level jtreg > config files to enable the feature and updated the tests accordingly: > > ??? https://hg.openjdk.java.net/amber/amber/rev/c91826d62310 > > (The feature is enabled by default in for the langtools tests, but > disabled by default elsewhere.) > > HTH, > > -Joe > > On 11/29/2019 3:12 PM, Vicente Romero wrote: >> Hi Joe, >> >> All the tests that have an explicit -source 14 are that way because >> of, I think to remember, a bug in jtreg that doesn't expand the >> ${some.property} macro for those tests. I don't remember the details >> though >> >> Thanks, >> Vicente >> >> On 11/29/19 9:59 AM, Joe Darcy wrote: >>> Hi Vicente, >>> >>> Please change all uses of >>> >>> ??? @compile --enable-preview -source 14 >>> >>> in jtreg tags to to >>> >>> ??? @compile --enable-preview -source ${jdk.version} >>> >>> The former structure will spuriously fail when the JDK 14 -> 15 >>> transition occurs. >>> >>> Also, publishing delta-webrevs between iterations in additional to >>> full webrev would help track the incremental changes. >>> >>> Thanks, >>> >>> -Joe >>> >>> On 11/28/2019 8:05 AM, Vicente Romero wrote: >>>> Hi again, >>>> >>>> Sorry but I realized that I forgot to remove some code on the >>>> compiler side. The code removed is small, before we were issuing an >>>> error if some serialization methods were declared as record >>>> members. That section was removed from the spec. I have prepared >>>> another iteration with this change at [1] >>>> >>>> Thanks, >>>> Vicente >>>> >>>> [1] >>>> http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.01/ >>>> >>>> On 11/27/19 11:37 PM, Vicente Romero wrote: >>>>> Hi, >>>>> >>>>> Please review the code for the records feature at [1]. This webrev >>>>> includes all: APIs, runtime, compiler, serialization, javadoc, and >>>>> more! Must of the code has been reviewed but there have been some >>>>> changes since reviewers saw it. Also this is the first time an >>>>> integral webrev is sent out for review. Last changes on top of my >>>>> mind since last review iterations: >>>>> >>>>> On the compiler implementation: >>>>> - it has been adapted to the last version of the language spec >>>>> [2], as a reference the JVM spec is at [3]. This implied some >>>>> changes in determining if a user defined constructor is the >>>>> canonical or not. Now if a constructor is override-equivalent to a >>>>> signature derived from the record components, then it is >>>>> considered the canonical constructor. And any canonical >>>>> constructor should satisfy a set of restrictions, see section >>>>> 8.10.4 Record Constructor Declarations of the specification. >>>>> - It was also added a check to make sure that accessors are not >>>>> generic. >>>>> - And that the canonical constructor, if user defined, is not >>>>> explicitly invoking any other constructor. >>>>> - The list of forbidden record component names has also been updated. >>>>> - new error messages have been added >>>>> >>>>> APIs: >>>>> - there have been some API editing in java.lang.Record, >>>>> java.lang.runtime.ObjectMethods and >>>>> java.lang.reflect.RecordComponent, java.io.ObjectInputStream, >>>>> javax.lang.model (some visitors were added) >>>>> >>>>> On the JVM implementation: >>>>> - some logging capabilities have been added to classFileParser.cpp >>>>> to provide the reason for which the Record attribute has been ignored >>>>> >>>>> Reflection: >>>>> - there are several new changes to the implementation of >>>>> java.lang.reflect.RecordComponent apart from the spec changes >>>>> mentioned before. >>>>> >>>>> bug fixes in >>>>> - compiler >>>>> - serialization, >>>>> - JVM, etc >>>>> >>>>> As a reference the last iteration of the previous reviews can be >>>>> found at [4] under folders: compiler, hotspot_runtime, javadoc, >>>>> reflection and serialization, >>>>> >>>>> TIA, >>>>> Vicente >>>>> >>>>> [1] >>>>> http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/ >>>>> >>>>> [2] >>>>> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html >>>>> [3] >>>>> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html >>>>> [4] http://cr.openjdk.java.net/~vromero/records.review/ >>>>> >>>> >> From hannes.wallnoefer at oracle.com Mon Dec 2 21:13:50 2019 From: hannes.wallnoefer at oracle.com (=?utf-8?Q?Hannes_Walln=C3=B6fer?=) Date: Mon, 2 Dec 2019 22:13:50 +0100 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> Message-ID: <0BAD6EC6-2DA0-4022-BC64-1673560FB7EA@oracle.com> Hi Vicente, I?ve looked at the Javadoc changes again, everything looks good to me. Hannes > Am 28.11.2019 um 05:37 schrieb Vicente Romero : > > Hi, > > Please review the code for the records feature at [1]. This webrev includes all: APIs, runtime, compiler, serialization, javadoc, and more! Must of the code has been reviewed but there have been some changes since reviewers saw it. Also this is the first time an integral webrev is sent out for review. Last changes on top of my mind since last review iterations: > > On the compiler implementation: > - it has been adapted to the last version of the language spec [2], as a reference the JVM spec is at [3]. This implied some changes in determining if a user defined constructor is the canonical or not. Now if a constructor is override-equivalent to a signature derived from the record components, then it is considered the canonical constructor. And any canonical constructor should satisfy a set of restrictions, see section 8.10.4 Record Constructor Declarations of the specification. > - It was also added a check to make sure that accessors are not generic. > - And that the canonical constructor, if user defined, is not explicitly invoking any other constructor. > - The list of forbidden record component names has also been updated. > - new error messages have been added > > APIs: > - there have been some API editing in java.lang.Record, java.lang.runtime.ObjectMethods and java.lang.reflect.RecordComponent, java.io.ObjectInputStream, javax.lang.model (some visitors were added) > > On the JVM implementation: > - some logging capabilities have been added to classFileParser.cpp to provide the reason for which the Record attribute has been ignored > > Reflection: > - there are several new changes to the implementation of java.lang.reflect.RecordComponent apart from the spec changes mentioned before. > > bug fixes in > - compiler > - serialization, > - JVM, etc > > As a reference the last iteration of the previous reviews can be found at [4] under folders: compiler, hotspot_runtime, javadoc, reflection and serialization, > > TIA, > Vicente > > [1] http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/ > [2] http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html > [3] http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html > [4] http://cr.openjdk.java.net/~vromero/records.review/ > From coleen.phillimore at oracle.com Mon Dec 2 16:52:54 2019 From: coleen.phillimore at oracle.com (coleen.phillimore at oracle.com) Date: Mon, 2 Dec 2019 11:52:54 -0500 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> Message-ID: <1263a30d-a04a-b821-d110-69ba52f1e1f7@oracle.com> (resending to all the lists) Hi, I've looked at the hotspot code again, and it looks good.? Nice work, Harold and Vincente! Coleen On 11/27/19 11:37 PM, Vicente Romero wrote: > Hi, > > Please review the code for the records feature at [1]. This webrev > includes all: APIs, runtime, compiler, serialization, javadoc, and > more! Must of the code has been reviewed but there have been some > changes since reviewers saw it. Also this is the first time an > integral webrev is sent out for review. Last changes on top of my mind > since last review iterations: > > On the compiler implementation: > - it has been adapted to the last version of the language spec [2], as > a reference the JVM spec is at [3]. This implied some changes in > determining if a user defined constructor is the canonical or not. Now > if a constructor is override-equivalent to a signature derived from > the record components, then it is considered the canonical > constructor. And any canonical constructor should satisfy a set of > restrictions, see section 8.10.4 Record Constructor Declarations of > the specification. > - It was also added a check to make sure that accessors are not generic. > - And that the canonical constructor, if user defined, is not > explicitly invoking any other constructor. > - The list of forbidden record component names has also been updated. > - new error messages have been added > > APIs: > - there have been some API editing in java.lang.Record, > java.lang.runtime.ObjectMethods and java.lang.reflect.RecordComponent, > java.io.ObjectInputStream, javax.lang.model (some visitors were added) > > On the JVM implementation: > - some logging capabilities have been added to classFileParser.cpp to > provide the reason for which the Record attribute has been ignored > > Reflection: > - there are several new changes to the implementation of > java.lang.reflect.RecordComponent apart from the spec changes > mentioned before. > > bug fixes in > - compiler > - serialization, > - JVM, etc > > As a reference the last iteration of the previous reviews can be found > at [4] under folders: compiler, hotspot_runtime, javadoc, reflection > and serialization, > > TIA, > Vicente > > [1] > http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/ > [2] > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html > [3] > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html > [4] http://cr.openjdk.java.net/~vromero/records.review/ > From lois.foltan at oracle.com Mon Dec 2 21:56:24 2019 From: lois.foltan at oracle.com (Lois Foltan) Date: Mon, 2 Dec 2019 16:56:24 -0500 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <1263a30d-a04a-b821-d110-69ba52f1e1f7@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> <1263a30d-a04a-b821-d110-69ba52f1e1f7@oracle.com> Message-ID: <300a8f8e-6db7-f73b-d212-c68f496c782d@oracle.com> I've looked over the hotspot code again as well.? Looks good, you have my review! Lois On 12/2/2019 11:52 AM, coleen.phillimore at oracle.com wrote: > (resending to all the lists) > > Hi, I've looked at the hotspot code again, and it looks good. Nice > work, Harold and Vincente! > > Coleen > > > On 11/27/19 11:37 PM, Vicente Romero wrote: >> Hi, >> >> Please review the code for the records feature at [1]. This webrev >> includes all: APIs, runtime, compiler, serialization, javadoc, and >> more! Must of the code has been reviewed but there have been some >> changes since reviewers saw it. Also this is the first time an >> integral webrev is sent out for review. Last changes on top of my >> mind since last review iterations: >> >> On the compiler implementation: >> - it has been adapted to the last version of the language spec [2], >> as a reference the JVM spec is at [3]. This implied some changes in >> determining if a user defined constructor is the canonical or not. >> Now if a constructor is override-equivalent to a signature derived >> from the record components, then it is considered the canonical >> constructor. And any canonical constructor should satisfy a set of >> restrictions, see section 8.10.4 Record Constructor Declarations of >> the specification. >> - It was also added a check to make sure that accessors are not generic. >> - And that the canonical constructor, if user defined, is not >> explicitly invoking any other constructor. >> - The list of forbidden record component names has also been updated. >> - new error messages have been added >> >> APIs: >> - there have been some API editing in java.lang.Record, >> java.lang.runtime.ObjectMethods and >> java.lang.reflect.RecordComponent, java.io.ObjectInputStream, >> javax.lang.model (some visitors were added) >> >> On the JVM implementation: >> - some logging capabilities have been added to classFileParser.cpp to >> provide the reason for which the Record attribute has been ignored >> >> Reflection: >> - there are several new changes to the implementation of >> java.lang.reflect.RecordComponent apart from the spec changes >> mentioned before. >> >> bug fixes in >> - compiler >> - serialization, >> - JVM, etc >> >> As a reference the last iteration of the previous reviews can be >> found at [4] under folders: compiler, hotspot_runtime, javadoc, >> reflection and serialization, >> >> TIA, >> Vicente >> >> [1] >> http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/ >> [2] >> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html >> [3] >> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html >> [4] http://cr.openjdk.java.net/~vromero/records.review/ >> > From forax at univ-mlv.fr Mon Dec 2 22:47:53 2019 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Mon, 2 Dec 2019 23:47:53 +0100 (CET) Subject: ObjectOutputStream and Record In-Reply-To: References: <1458871005.1726008.1575157704870.JavaMail.zimbra@u-pem.fr> Message-ID: <300108200.542863.1575326873979.JavaMail.zimbra@u-pem.fr> Thank you Chris. R?mi ----- Mail original ----- > De: "Chris Hegarty" > ?: "Remi Forax" > Cc: "amber-dev" > Envoy?: Lundi 2 D?cembre 2019 15:53:01 > Objet: Re: ObjectOutputStream and Record > Thank you Remi. > > Pushed: https://hg.openjdk.java.net/amber/amber/rev/e1a4d3bc65c1 > > -Chris. > >> On 30 Nov 2019, at 23:48, Remi Forax wrote: >> >> Hi all, >> in ObjectOutputStream.writeOrdinaryObject, there is a weird code: >> >> final boolean isRecord = isRecord(obj.getClass()) ? true : false; >> if (isRecord) { >> >> Like enums, proxies, etc, the ObjectStreamClass knows if a record is a record or >> not, >> so the code can be simplified to >> >> if (desc.isRecord()) { >> >> >> so the method isRecord can disappear (and writeRecordData can be marked as >> preview). >> >> regards, > > R?mi From david.holmes at oracle.com Tue Dec 3 00:36:35 2019 From: david.holmes at oracle.com (David Holmes) Date: Tue, 3 Dec 2019 10:36:35 +1000 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> Message-ID: Hi Vicente, I have also re-examined all the hotspot related code and everything looks fine - and very neat (kudos to you and Harold!). A couple of nits: src/hotspot/share/classfile/classFileParser.cpp src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp Typo: + // u2 attributs_count; --- src/hotspot/share/classfile/javaClasses.cpp You are using CHECK_0 in RecordComponent::create but that method returns oop. That seems wrong to me, but I see many other oop returning methods also use CHECK_0 so I'll take that up separately. (It's only a cosmetic issue.) --- test/hotspot/jtreg/runtime/records/abstractRecord.jcod 27 // This test is an Record marked as abstract. s/an/a/ --- Thanks, David ----- On 28/11/2019 2:37 pm, Vicente Romero wrote: > Hi, > > Please review the code for the records feature at [1]. This webrev > includes all: APIs, runtime, compiler, serialization, javadoc, and more! > Must of the code has been reviewed but there have been some changes > since reviewers saw it. Also this is the first time an integral webrev > is sent out for review. Last changes on top of my mind since last review > iterations: > > On the compiler implementation: > - it has been adapted to the last version of the language spec [2], as a > reference the JVM spec is at [3]. This implied some changes in > determining if a user defined constructor is the canonical or not. Now > if a constructor is override-equivalent to a signature derived from the > record components, then it is considered the canonical constructor. And > any canonical constructor should satisfy a set of restrictions, see > section 8.10.4 Record Constructor Declarations of the specification. > - It was also added a check to make sure that accessors are not generic. > - And that the canonical constructor, if user defined, is not explicitly > invoking any other constructor. > - The list of forbidden record component names has also been updated. > - new error messages have been added > > APIs: > - there have been some API editing in java.lang.Record, > java.lang.runtime.ObjectMethods and java.lang.reflect.RecordComponent, > java.io.ObjectInputStream, javax.lang.model (some visitors were added) > > On the JVM implementation: > - some logging capabilities have been added to classFileParser.cpp to > provide the reason for which the Record attribute has been ignored > > Reflection: > - there are several new changes to the implementation of > java.lang.reflect.RecordComponent apart from the spec changes mentioned > before. > > bug fixes in > - compiler > - serialization, > - JVM, etc > > As a reference the last iteration of the previous reviews can be found > at [4] under folders: compiler, hotspot_runtime, javadoc, reflection and > serialization, > > TIA, > Vicente > > [1] http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/ > [2] > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html > > [3] > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html > > [4] http://cr.openjdk.java.net/~vromero/records.review/ > From john.r.rose at oracle.com Tue Dec 3 01:08:54 2019 From: john.r.rose at oracle.com (John Rose) Date: Mon, 2 Dec 2019 17:08:54 -0800 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> Message-ID: On Dec 2, 2019, at 4:36 PM, David Holmes wrote: > > You are using CHECK_0 in RecordComponent::create but that method returns oop. That seems wrong to me, but I see many other oop returning methods also use CHECK_0 so I'll take that up separately. (It's only a cosmetic issue.) CHECK_NULL is clearly preferable. At some point IIRC it was more than just cosmetics, because we were getting warning noise about `return 0` converting to NULL, from some C++ compiler or other. AFAIK such warnings can still happen. ? John From david.holmes at oracle.com Tue Dec 3 05:27:36 2019 From: david.holmes at oracle.com (David Holmes) Date: Tue, 3 Dec 2019 15:27:36 +1000 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> Message-ID: <7bfe7b80-caa8-70e4-9d51-03aa39b29a4b@oracle.com> On 3/12/2019 11:08 am, John Rose wrote: > On Dec 2, 2019, at 4:36 PM, David Holmes > wrote: >> >> You are using CHECK_0 in RecordComponent::create but that method >> returns oop. That seems wrong to me, but I see many other oop >> returning methods also use CHECK_0 so I'll take that up separately. >> (It's only a cosmetic issue.) > > CHECK_NULL is clearly preferable. ?At some point IIRC it was more > than just cosmetics, because we were getting warning noise about > `return 0` converting to NULL, from some C++ compiler or other. > AFAIK such warnings can still happen. That was my recollection too (I know we fixed some CHECK_0 -> CHECK_FALSE usages for bool methods). I have filed: https://bugs.openjdk.java.net/browse/JDK-8235225 to fix the existing code. Vicente should make this change to his code before pushing (no need to see new webrev). Thanks, David > ? John From joe.darcy at oracle.com Tue Dec 3 05:36:40 2019 From: joe.darcy at oracle.com (Joe Darcy) Date: Mon, 2 Dec 2019 21:36:40 -0800 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <5cc9da98-3dae-b6c6-7acb-c9a4c3484a3b@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> <32b8c703-523f-ae83-291d-4f1b28fa1d91@oracle.com> <5cc9da98-3dae-b6c6-7acb-c9a4c3484a3b@oracle.com> Message-ID: <7e816aeb-7918-9426-2f6c-5d11d3ee263d@oracle.com> Hi Vicente, These comments are based on http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.01/ I looked over the core-libs and javax.lang.model changes. As a non-essential cleanup, in src/java.base/share/classes/java/io/ObjectOutputStream.java: 1444???????????? final boolean isRecord = isRecord(obj.getClass()) ? true : false; 1445???????????? if (isRecord) { 1446???????????????? writeRecordData(obj,desc); 1447???????????? } else if (desc.isExternalizable() && !desc.isProxy()) { would be clearer as 1445???????????? if (isRecord(obj.getClass())) { 1446???????????????? writeRecordData(obj,desc); 1447???????????? } else if (desc.isExternalizable() && !desc.isProxy()) { Also as a potential refactoring, in java.lang.Class, it would be clearer if the native getRecordComponents0 method returned a RecordComponent[] rather than an Object[] as it is elsewhere documented that only the VM can create RecordComponent objects. In src/java.base/share/classes/sun/reflect/annotation/TypeAnnotation.java, the obsolete way on indicating preview-ness is used. Please fix before pushing: ? 93???????? THROWS, ? 94???????? /** ? 95????????? * @deprecated This target is part of a preview feature and may be removed ? 96????????? * if the preview feature is removed. ? 97????????? */ ? 98???????? @Deprecated(forRemoval=true, since="14") ? 99???????? @SuppressWarnings("removal") ?100???????? RECORD_COMPONENT; No re-review is needed. Thanks, -Joe From chris.hegarty at oracle.com Tue Dec 3 12:38:05 2019 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Tue, 3 Dec 2019 12:38:05 +0000 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <7e816aeb-7918-9426-2f6c-5d11d3ee263d@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> <32b8c703-523f-ae83-291d-4f1b28fa1d91@oracle.com> <5cc9da98-3dae-b6c6-7acb-c9a4c3484a3b@oracle.com> <7e816aeb-7918-9426-2f6c-5d11d3ee263d@oracle.com> Message-ID: <9CABD094-6548-43D5-813E-9A5EB98682AD@oracle.com> Hi Joe, > On 3 Dec 2019, at 05:36, Joe Darcy wrote: > > ... > > As a non-essential cleanup, in src/java.base/share/classes/java/io/ObjectOutputStream.java: > > 1444 final boolean isRecord = isRecord(obj.getClass()) ? true : false; > 1445 if (isRecord) { > 1446 writeRecordData(obj,desc); > 1447 } else if (desc.isExternalizable() && !desc.isProxy()) { > > would be clearer as > > 1445 if (isRecord(obj.getClass())) { > 1446 writeRecordData(obj,desc); > 1447 } else if (desc.isExternalizable() && !desc.isProxy()) { Remi brought up similar on amber-dev ( and the implement has been updated ). https://mail.openjdk.java.net/pipermail/amber-dev/2019-December/005334.html -Chris. From harold.seigel at oracle.com Tue Dec 3 14:47:30 2019 From: harold.seigel at oracle.com (harold.seigel at oracle.com) Date: Tue, 03 Dec 2019 14:47:30 +0000 Subject: hg: amber/amber: Summary: clean up nits from open review and replace CHECK_0 with CHECK_NULL when appropriate Message-ID: <201912031447.xB3ElUfJ027417@aojmv0008.oracle.com> Changeset: 0d786d4f5c2e Author: hseigel Date: 2019-12-03 14:47 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/0d786d4f5c2e Summary: clean up nits from open review and replace CHECK_0 with CHECK_NULL when appropriate ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp ! test/hotspot/jtreg/runtime/records/abstractRecord.jcod From vicente.romero at oracle.com Tue Dec 3 15:55:44 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 03 Dec 2019 15:55:44 +0000 Subject: hg: amber/amber: fixing typo Message-ID: <201912031555.xB3Ftj0h014265@aojmv0008.oracle.com> Changeset: ecbed6d2f8c9 Author: vromero Date: 2019-12-03 10:27 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/ecbed6d2f8c9 fixing typo ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java From vicente.romero at oracle.com Tue Dec 3 17:01:07 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 03 Dec 2019 17:01:07 +0000 Subject: hg: amber/amber: 2 new changesets Message-ID: <201912031701.xB3H17B6024804@aojmv0008.oracle.com> Changeset: 8bd8ff9527bd Author: vromero Date: 2019-12-03 11:58 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/8bd8ff9527bd create fragments for the canonical and compact bits used in error messages ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/diags/examples/CanonicalCantInvokeOtherConstructor.java ! test/langtools/tools/javac/diags/examples/CanonicalConstructorArgumentMismatch.java ! test/langtools/tools/javac/diags/examples/CanonicalConstructorCantHaveReturn.java ! test/langtools/tools/javac/diags/examples/CanonicalConstructorCantHaveThrowsClause.java ! test/langtools/tools/javac/diags/examples/CanonicalConstructorMustBePublic.java ! test/langtools/tools/javac/diags/examples/CanonicalMustNotDeclareTypeVariables.java ! test/langtools/tools/javac/diags/examples/ConstructorWithSameErasureAsCanonical.java Changeset: 57147b4485e1 Author: vromero Date: 2019-12-03 12:00 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/57147b4485e1 accessors must not be static ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties + test/langtools/tools/javac/diags/examples/AccessorMethodCantBeStatic.java ! test/langtools/tools/javac/records/RecordCompilationTests.java From vicente.romero at oracle.com Tue Dec 3 22:47:23 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Tue, 3 Dec 2019 17:47:23 -0500 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> Message-ID: <1c6520f1-90c2-aeee-706a-b4de9dafdaa0@oracle.com> Hi David, On 12/2/19 7:36 PM, David Holmes wrote: > Hi Vicente, > > I have also re-examined all the hotspot related code and everything > looks fine - and very neat (kudos to you and Harold!). thanks, yep Harold has made most of the work here, I just wrote the initial prototype a while ago, > > A couple of nits: > > src/hotspot/share/classfile/classFileParser.cpp > src/hotspot/share/prims/jvmtiClassFileReconstituter.cpp > > Typo: > > + //??? u2 attributs_count; > > --- > > src/hotspot/share/classfile/javaClasses.cpp > > You are using CHECK_0 in RecordComponent::create but that method > returns oop. That seems wrong to me, but I see many other oop > returning methods also use CHECK_0 so I'll take that up separately. > (It's only a cosmetic issue.) > > --- > > test/hotspot/jtreg/runtime/records/abstractRecord.jcod > > 27 // This test is an Record marked as abstract. > > s/an/a/ > > --- > > Thanks, > David Thanks for the review, Vicente > ----- > > > On 28/11/2019 2:37 pm, Vicente Romero wrote: >> Hi, >> >> Please review the code for the records feature at [1]. This webrev >> includes all: APIs, runtime, compiler, serialization, javadoc, and >> more! Must of the code has been reviewed but there have been some >> changes since reviewers saw it. Also this is the first time an >> integral webrev is sent out for review. Last changes on top of my >> mind since last review iterations: >> >> On the compiler implementation: >> - it has been adapted to the last version of the language spec [2], >> as a reference the JVM spec is at [3]. This implied some changes in >> determining if a user defined constructor is the canonical or not. >> Now if a constructor is override-equivalent to a signature derived >> from the record components, then it is considered the canonical >> constructor. And any canonical constructor should satisfy a set of >> restrictions, see section 8.10.4 Record Constructor Declarations of >> the specification. >> - It was also added a check to make sure that accessors are not generic. >> - And that the canonical constructor, if user defined, is not >> explicitly invoking any other constructor. >> - The list of forbidden record component names has also been updated. >> - new error messages have been added >> >> APIs: >> - there have been some API editing in java.lang.Record, >> java.lang.runtime.ObjectMethods and >> java.lang.reflect.RecordComponent, java.io.ObjectInputStream, >> javax.lang.model (some visitors were added) >> >> On the JVM implementation: >> - some logging capabilities have been added to classFileParser.cpp to >> provide the reason for which the Record attribute has been ignored >> >> Reflection: >> - there are several new changes to the implementation of >> java.lang.reflect.RecordComponent apart from the spec changes >> mentioned before. >> >> bug fixes in >> - compiler >> - serialization, >> - JVM, etc >> >> As a reference the last iteration of the previous reviews can be >> found at [4] under folders: compiler, hotspot_runtime, javadoc, >> reflection and serialization, >> >> TIA, >> Vicente >> >> [1] >> http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/ >> [2] >> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html >> >> [3] >> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html >> >> [4] http://cr.openjdk.java.net/~vromero/records.review/ >> From mandy.chung at oracle.com Tue Dec 3 23:32:11 2019 From: mandy.chung at oracle.com (Mandy Chung) Date: Tue, 3 Dec 2019 15:32:11 -0800 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> Message-ID: Hi Vicente, I reviewed jvm.h, jvm.cpp, and the changes in java.base but only skimmed on the serialization change from this version: http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.01/ Class::getRecordComponents ?? - JVM_GetRecordComponents creates a new RecordComponent array or a zero-length array if not a record.?? The copying is not needed. I would recommend to include the spec of JVM_GetRecordComponents in jvm.h. Class.c 80 {"getRecordComponents0", "()[" OBJ, (void *)&JVM_GetRecordComponents}, 81 {"isRecord0", "()Z", (void *)&JVM_IsRecord}, Formatting nit: the new lines can be aligned with the existing lines/columns. java/lang/runtime/package-info.java.html I think this package summary should also have @PreviewFeature, shouldn't it? RecordComponent.java 247 * Return the record class which declares this record component. s/Return/Returns/ to be consistent with other methods. I'd expect that the webrev should show the runtime tests are renamed rather than hg add/hg remove (that would make it easier to review). Mandy From vicente.romero at oracle.com Tue Dec 3 23:51:35 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Tue, 03 Dec 2019 23:51:35 +0000 Subject: hg: amber/amber: updating preview feature comment at TypeAnnotation Message-ID: <201912032351.xB3NpZvD000426@aojmv0008.oracle.com> Changeset: 89f7cdb265cf Author: vromero Date: 2019-12-03 18:37 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/89f7cdb265cf updating preview feature comment at TypeAnnotation ! src/java.base/share/classes/sun/reflect/annotation/TypeAnnotation.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java From vicente.romero at oracle.com Wed Dec 4 04:49:03 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Wed, 04 Dec 2019 04:49:03 +0000 Subject: hg: amber/amber: fix on test ListModuleDeps.java Message-ID: <201912040449.xB44n3aj006402@aojmv0008.oracle.com> Changeset: 6e321004dde1 Author: vromero Date: 2019-12-03 23:45 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/6e321004dde1 fix on test ListModuleDeps.java ! test/langtools/tools/jdeps/listdeps/ListModuleDeps.java From srikanth.adayapalam at oracle.com Wed Dec 4 09:58:04 2019 From: srikanth.adayapalam at oracle.com (Srikanth) Date: Wed, 4 Dec 2019 15:28:04 +0530 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> Message-ID: Hi Vicente, I made one more pass over the code - Overall looks good to me and I don't have additional comments over and above the comments shared so far. +1 Thanks Srikanth On 28/11/19 10:07 AM, Vicente Romero wrote: > Hi, > > Please review the code for the records feature at [1]. This webrev > includes all: APIs, runtime, compiler, serialization, javadoc, and > more! Must of the code has been reviewed but there have been some > changes since reviewers saw it. Also this is the first time an > integral webrev is sent out for review. Last changes on top of my mind > since last review iterations: > > On the compiler implementation: > - it has been adapted to the last version of the language spec [2], as > a reference the JVM spec is at [3]. This implied some changes in > determining if a user defined constructor is the canonical or not. Now > if a constructor is override-equivalent to a signature derived from > the record components, then it is considered the canonical > constructor. And any canonical constructor should satisfy a set of > restrictions, see section 8.10.4 Record Constructor Declarations of > the specification. > - It was also added a check to make sure that accessors are not generic. > - And that the canonical constructor, if user defined, is not > explicitly invoking any other constructor. > - The list of forbidden record component names has also been updated. > - new error messages have been added > > APIs: > - there have been some API editing in java.lang.Record, > java.lang.runtime.ObjectMethods and java.lang.reflect.RecordComponent, > java.io.ObjectInputStream, javax.lang.model (some visitors were added) > > On the JVM implementation: > - some logging capabilities have been added to classFileParser.cpp to > provide the reason for which the Record attribute has been ignored > > Reflection: > - there are several new changes to the implementation of > java.lang.reflect.RecordComponent apart from the spec changes > mentioned before. > > bug fixes in > - compiler > - serialization, > - JVM, etc > > As a reference the last iteration of the previous reviews can be found > at [4] under folders: compiler, hotspot_runtime, javadoc, reflection > and serialization, > > TIA, > Vicente > > [1] > http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/ > [2] > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html > [3] > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html > [4] http://cr.openjdk.java.net/~vromero/records.review/ > From vicente.romero at oracle.com Wed Dec 4 14:07:56 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Wed, 4 Dec 2019 09:07:56 -0500 Subject: RFR: JEP 359: Records (Preview) (full code) In-Reply-To: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> References: <12069074-7830-8bf6-3818-1df7e2a29f18@oracle.com> Message-ID: <3cc46428-7ab4-a9bc-0c4d-c6a674b8f080@oracle.com> Hi, Thanks a lot to all reviewers. This is the header of the changeset I'm planning to push. There have been a ton of people working on the development and / or the review process and I don't want to forget anyone. Please let me know if I'm missing someone: 8225054: Compiler implementation for records 8225052: javax.lang.model support for records 8225053: Preview APIs support for records 8225055: Javadoc for records 8226314: com.sun.source support for records 8227113: Specification for java.lang.Record 8233526: JVM support for records Summary: implementation of records in the compiler and the JVM, including serialization, reflection and APIs support Reviewed-by: mcimadamore, briangoetz, alanb, darcy, jrose, jlahoda, coleenp, dholmes, lfoltan, mchung, sadayapalam, hannesw Contributed-by: vicente.romero at oracle.com, brian.goetz at oracle.com, maurizio.cimadamore at oracle.com, harold.seigel at oracle.com, joe.darcy at oracle.com, jonathan.gibbons at oracle.com, chris.hegarty at oracle.com, jan.lahoda at oracle.com Thanks to all, Vicente From amaembo at gmail.com Thu Dec 5 07:26:41 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Thu, 5 Dec 2019 14:26:41 +0700 Subject: [records] Confusing compilation error when record components are omitted Message-ID: Hello! My colleague experiments with records support. He made a fresh build from amber records branch and wrote this code: public record Record { } Compiler produced the following error message: error: class, interface, enum, or record expected public record Record { ^ 1 error It's pretty confusing to see the compiler pointing on the word 'record' and saying that 'record' is expected. The real problem is the absence of parentheses after the record name. I think such kind of mistake could be done by many newcomers. Probably a better compilation error should be displayed in this case? With best regards, Tagir Valeev. From maurizio.cimadamore at oracle.com Thu Dec 5 08:26:56 2019 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Thu, 5 Dec 2019 08:26:56 +0000 Subject: [records] Confusing compilation error when record components are omitted In-Reply-To: References: Message-ID: <7db4475c-8704-55cf-b5bf-c317348d3e3f@oracle.com> You are right - this is confusing. That said, javac is not super-smart in this department, here's another (not records-related): Test.java:4: error: ';' expected ??? public String foo { return "foo"; } ???????????????????? ^ 1 error But the one you found is particularly disturbing - I agree Maurizio On 05/12/2019 07:26, Tagir Valeev wrote: > Hello! > > My colleague experiments with records support. He made a fresh build > from amber records branch and wrote this code: > > public record Record { > } > > Compiler produced the following error message: > > error: class, interface, enum, or record expected > public record Record { > ^ > 1 error > > It's pretty confusing to see the compiler pointing on the word > 'record' and saying that 'record' is expected. The real problem is the > absence of parentheses after the record name. I think such kind of > mistake could be done by many newcomers. Probably a better compilation > error should be displayed in this case? > > With best regards, > Tagir Valeev. From joe.darcy at oracle.com Fri Dec 6 21:15:44 2019 From: joe.darcy at oracle.com (Joe Darcy) Date: Fri, 6 Dec 2019 13:15:44 -0800 Subject: JDK 14 RFR of JDK-8235514: Update record serialization tests to not use hard coded source versions Message-ID: <3bd68925-f3e1-ec5d-e849-065365642bc1@oracle.com> Hello, Please review the patch below to update to the records serialization tests to avoid hard-coded values for the -source argument during programmatic invocations of the compiler. Thanks, -Joe diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java --- a/test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java Fri Dec 06 12:13:25 2019 -0800 +++ b/test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java Fri Dec 06 13:13:45 2019 -0800 @@ -59,6 +59,7 @@ ? * constructor cannot be found during deserialization. ? */ ?public class BadCanonicalCtrTest { +??? private static final String VERSION = Integer.toString(Runtime.version().feature()); ???? // ClassLoader for creating instances of the records to test with. ???? ClassLoader goodRecordClassLoader; @@ -79,7 +80,7 @@ ???????? { ???????????? byte[] byteCode = InMemoryJavaCompiler.compile("R1", ???????????????????? "public record R1 () implements java.io.Serializable { }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? goodRecordClassLoader = new ByteCodeLoader("R1", byteCode, BadCanonicalCtrTest.class.getClassLoader()); ???????????? byte[] bc1 = removeConstructor(byteCode); ???????????? missingCtrClassLoader = new ByteCodeLoader("R1", bc1, BadCanonicalCtrTest.class.getClassLoader()); @@ -89,7 +90,7 @@ ???????? { ???????????? byte[] byteCode = InMemoryJavaCompiler.compile("R2", ???????????????????? "public record R2 (int x, int y) implements java.io.Serializable { }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? goodRecordClassLoader = new ByteCodeLoader("R2", byteCode, goodRecordClassLoader); ???????????? byte[] bc1 = removeConstructor(byteCode); ???????????? missingCtrClassLoader = new ByteCodeLoader("R2", bc1, missingCtrClassLoader); @@ -101,7 +102,7 @@ ???????????????????? "public record R3 (long l) implements java.io.Externalizable {" + ???????????????????? "??? public void writeExternal(java.io.ObjectOutput out) { }" + ???????????????????? "??? public void readExternal(java.io.ObjectInput in)??? { } }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? goodRecordClassLoader = new ByteCodeLoader("R3", byteCode, goodRecordClassLoader); ???????????? byte[] bc1 = removeConstructor(byteCode); ???????????? missingCtrClassLoader = new ByteCodeLoader("R3", bc1, missingCtrClassLoader); diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/ProhibitedMethods.java --- a/test/jdk/java/io/Serializable/records/ProhibitedMethods.java Fri Dec 06 12:13:25 2019 -0800 +++ b/test/jdk/java/io/Serializable/records/ProhibitedMethods.java Fri Dec 06 13:13:45 2019 -0800 @@ -69,6 +69,7 @@ ? * record objects. ? */ ?public class ProhibitedMethods { +??? private static final String VERSION = Integer.toString(Runtime.version().feature()); ???? public interface ThrowingExternalizable extends Externalizable { ???????? default void writeExternal(ObjectOutput out) { @@ -106,7 +107,7 @@ ???????? { ???????????? byte[] byteCode = InMemoryJavaCompiler.compile("Foo", ???????????????????? "public record Foo () implements java.io.Serializable { }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? byteCode = addWriteObject(byteCode); ???????????? byteCode = addReadObject(byteCode); ???????????? byteCode = addReadObjectNoData(byteCode); @@ -115,7 +116,7 @@ ???????? { ???????????? byte[] byteCode = InMemoryJavaCompiler.compile("Bar", ???????????????????? "public record Bar (int x, int y) implements java.io.Serializable { }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? byteCode = addWriteObject(byteCode); ???????????? byteCode = addReadObject(byteCode); ???????????? byteCode = addReadObjectNoData(byteCode); @@ -125,7 +126,7 @@ ???????????? byte[] byteCode = InMemoryJavaCompiler.compile("Baz", ???????????????????? "import java.io.Serializable;" + ???????????????????? "public record Baz(U u, V v) implements Serializable { }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? byteCode = addWriteObject(byteCode); ???????????? byteCode = addReadObject(byteCode); ???????????? byteCode = addReadObjectNoData(byteCode); diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java --- a/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java Fri Dec 06 12:13:25 2019 -0800 +++ b/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java Fri Dec 06 13:13:45 2019 -0800 @@ -64,6 +64,7 @@ ? * Checks that the serialPersistentFields declaration is effectively ignored. ? */ ?public class SerialPersistentFieldsTest { +??? private static final String VERSION = Integer.toString(Runtime.version().feature()); ???? ClassLoader serializableRecordLoader; @@ -85,7 +86,7 @@ ???????? {? // R1 ???????????? byte[] byteCode = InMemoryJavaCompiler.compile("R1", ???????????????????? "public record R1 () implements java.io.Serializable { }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? ObjectStreamField[] serialPersistentFields = { ???????????????????? new ObjectStreamField("s", String.class), ???????????????????? new ObjectStreamField("i", int.class), @@ -98,7 +99,7 @@ ???????? {? // R2 ???????????? byte[] byteCode = InMemoryJavaCompiler.compile("R2", ???????????????????? "public record R2 (int x) implements java.io.Serializable { }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? ObjectStreamField[] serialPersistentFields = { ???????????????????? new ObjectStreamField("s", String.class) ???????????? }; @@ -108,7 +109,7 @@ ???????? {? // R3 ???????????? byte[] byteCode = InMemoryJavaCompiler.compile("R3", ???????????????????? "public record R3 (int x, int y) implements java.io.Serializable { }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0]; ???????????? byteCode = addSerialPersistentFields(byteCode, serialPersistentFields); ???????????? serializableRecordLoader = new ByteCodeLoader("R3", byteCode, serializableRecordLoader); @@ -117,7 +118,7 @@ ???????????? byte[] byteCode = InMemoryJavaCompiler.compile("R4", ???????????????????? "import java.io.Serializable;" + ???????????????????? "public record R4(U u, V v) implements Serializable { }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? ObjectStreamField[] serialPersistentFields = { ???????????????????? new ObjectStreamField("v", String.class) ???????????? }; @@ -134,7 +135,7 @@ ???????????????????? "??? @Override public void readExternal(ObjectInput in) {\n" + ???????????????????? "??????? throw new AssertionError(\"should not reach here\");\n" + ???????????????????? "??? }? }", -??????????????????? "--enable-preview", "-source", "14"); +??????????????????? "--enable-preview", "-source", VERSION); ???????????? ObjectStreamField[] serialPersistentFields = { ???????????????????? new ObjectStreamField("v", String.class) ???????????? }; From lance.andersen at oracle.com Fri Dec 6 21:16:58 2019 From: lance.andersen at oracle.com (Lance Andersen) Date: Fri, 6 Dec 2019 16:16:58 -0500 Subject: JDK 14 RFR of JDK-8235514: Update record serialization tests to not use hard coded source versions In-Reply-To: <3bd68925-f3e1-ec5d-e849-065365642bc1@oracle.com> References: <3bd68925-f3e1-ec5d-e849-065365642bc1@oracle.com> Message-ID: <3954C93F-056A-4C21-AB6A-EC019027A4A5@oracle.com> +1 > On Dec 6, 2019, at 4:15 PM, Joe Darcy wrote: > > Hello, > > Please review the patch below to update to the records serialization tests to avoid hard-coded values for the -source argument during programmatic invocations of the compiler. > > Thanks, > > -Joe > > diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java > --- a/test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java Fri Dec 06 12:13:25 2019 -0800 > +++ b/test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java Fri Dec 06 13:13:45 2019 -0800 > @@ -59,6 +59,7 @@ > * constructor cannot be found during deserialization. > */ > public class BadCanonicalCtrTest { > + private static final String VERSION = Integer.toString(Runtime.version().feature()); > > // ClassLoader for creating instances of the records to test with. > ClassLoader goodRecordClassLoader; > @@ -79,7 +80,7 @@ > { > byte[] byteCode = InMemoryJavaCompiler.compile("R1", > "public record R1 () implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > goodRecordClassLoader = new ByteCodeLoader("R1", byteCode, BadCanonicalCtrTest.class.getClassLoader()); > byte[] bc1 = removeConstructor(byteCode); > missingCtrClassLoader = new ByteCodeLoader("R1", bc1, BadCanonicalCtrTest.class.getClassLoader()); > @@ -89,7 +90,7 @@ > { > byte[] byteCode = InMemoryJavaCompiler.compile("R2", > "public record R2 (int x, int y) implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > goodRecordClassLoader = new ByteCodeLoader("R2", byteCode, goodRecordClassLoader); > byte[] bc1 = removeConstructor(byteCode); > missingCtrClassLoader = new ByteCodeLoader("R2", bc1, missingCtrClassLoader); > @@ -101,7 +102,7 @@ > "public record R3 (long l) implements java.io.Externalizable {" + > " public void writeExternal(java.io.ObjectOutput out) { }" + > " public void readExternal(java.io.ObjectInput in) { } }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > goodRecordClassLoader = new ByteCodeLoader("R3", byteCode, goodRecordClassLoader); > byte[] bc1 = removeConstructor(byteCode); > missingCtrClassLoader = new ByteCodeLoader("R3", bc1, missingCtrClassLoader); > diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/ProhibitedMethods.java > --- a/test/jdk/java/io/Serializable/records/ProhibitedMethods.java Fri Dec 06 12:13:25 2019 -0800 > +++ b/test/jdk/java/io/Serializable/records/ProhibitedMethods.java Fri Dec 06 13:13:45 2019 -0800 > @@ -69,6 +69,7 @@ > * record objects. > */ > public class ProhibitedMethods { > + private static final String VERSION = Integer.toString(Runtime.version().feature()); > > public interface ThrowingExternalizable extends Externalizable { > default void writeExternal(ObjectOutput out) { > @@ -106,7 +107,7 @@ > { > byte[] byteCode = InMemoryJavaCompiler.compile("Foo", > "public record Foo () implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > byteCode = addWriteObject(byteCode); > byteCode = addReadObject(byteCode); > byteCode = addReadObjectNoData(byteCode); > @@ -115,7 +116,7 @@ > { > byte[] byteCode = InMemoryJavaCompiler.compile("Bar", > "public record Bar (int x, int y) implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > byteCode = addWriteObject(byteCode); > byteCode = addReadObject(byteCode); > byteCode = addReadObjectNoData(byteCode); > @@ -125,7 +126,7 @@ > byte[] byteCode = InMemoryJavaCompiler.compile("Baz", > "import java.io.Serializable;" + > "public record Baz(U u, V v) implements Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > byteCode = addWriteObject(byteCode); > byteCode = addReadObject(byteCode); > byteCode = addReadObjectNoData(byteCode); > diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java > --- a/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java Fri Dec 06 12:13:25 2019 -0800 > +++ b/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java Fri Dec 06 13:13:45 2019 -0800 > @@ -64,6 +64,7 @@ > * Checks that the serialPersistentFields declaration is effectively ignored. > */ > public class SerialPersistentFieldsTest { > + private static final String VERSION = Integer.toString(Runtime.version().feature()); > > ClassLoader serializableRecordLoader; > > @@ -85,7 +86,7 @@ > { // R1 > byte[] byteCode = InMemoryJavaCompiler.compile("R1", > "public record R1 () implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = { > new ObjectStreamField("s", String.class), > new ObjectStreamField("i", int.class), > @@ -98,7 +99,7 @@ > { // R2 > byte[] byteCode = InMemoryJavaCompiler.compile("R2", > "public record R2 (int x) implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = { > new ObjectStreamField("s", String.class) > }; > @@ -108,7 +109,7 @@ > { // R3 > byte[] byteCode = InMemoryJavaCompiler.compile("R3", > "public record R3 (int x, int y) implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0]; > byteCode = addSerialPersistentFields(byteCode, serialPersistentFields); > serializableRecordLoader = new ByteCodeLoader("R3", byteCode, serializableRecordLoader); > @@ -117,7 +118,7 @@ > byte[] byteCode = InMemoryJavaCompiler.compile("R4", > "import java.io.Serializable;" + > "public record R4(U u, V v) implements Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = { > new ObjectStreamField("v", String.class) > }; > @@ -134,7 +135,7 @@ > " @Override public void readExternal(ObjectInput in) {\n" + > " throw new AssertionError(\"should not reach here\");\n" + > " } }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = { > new ObjectStreamField("v", String.class) > }; > Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 Lance.Andersen at oracle.com From chris.hegarty at oracle.com Sat Dec 7 08:50:30 2019 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Sat, 7 Dec 2019 08:50:30 +0000 Subject: JDK 14 RFR of JDK-8235514: Update record serialization tests to not use hard coded source versions In-Reply-To: <3bd68925-f3e1-ec5d-e849-065365642bc1@oracle.com> References: <3bd68925-f3e1-ec5d-e849-065365642bc1@oracle.com> Message-ID: <5EDAAEA4-99E2-48DF-BBEF-005ECA3E5DE7@oracle.com> Thanks for doing this Joe. The changes look good. -Chris. > On 6 Dec 2019, at 21:15, Joe Darcy wrote: > > Hello, > > Please review the patch below to update to the records serialization tests to avoid hard-coded values for the -source argument during programmatic invocations of the compiler. > > Thanks, > > -Joe > > diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java > --- a/test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java Fri Dec 06 12:13:25 2019 -0800 > +++ b/test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java Fri Dec 06 13:13:45 2019 -0800 > @@ -59,6 +59,7 @@ > * constructor cannot be found during deserialization. > */ > public class BadCanonicalCtrTest { > + private static final String VERSION = Integer.toString(Runtime.version().feature()); > > // ClassLoader for creating instances of the records to test with. > ClassLoader goodRecordClassLoader; > @@ -79,7 +80,7 @@ > { > byte[] byteCode = InMemoryJavaCompiler.compile("R1", > "public record R1 () implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > goodRecordClassLoader = new ByteCodeLoader("R1", byteCode, BadCanonicalCtrTest.class.getClassLoader()); > byte[] bc1 = removeConstructor(byteCode); > missingCtrClassLoader = new ByteCodeLoader("R1", bc1, BadCanonicalCtrTest.class.getClassLoader()); > @@ -89,7 +90,7 @@ > { > byte[] byteCode = InMemoryJavaCompiler.compile("R2", > "public record R2 (int x, int y) implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > goodRecordClassLoader = new ByteCodeLoader("R2", byteCode, goodRecordClassLoader); > byte[] bc1 = removeConstructor(byteCode); > missingCtrClassLoader = new ByteCodeLoader("R2", bc1, missingCtrClassLoader); > @@ -101,7 +102,7 @@ > "public record R3 (long l) implements java.io.Externalizable {" + > " public void writeExternal(java.io.ObjectOutput out) { }" + > " public void readExternal(java.io.ObjectInput in) { } }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > goodRecordClassLoader = new ByteCodeLoader("R3", byteCode, goodRecordClassLoader); > byte[] bc1 = removeConstructor(byteCode); > missingCtrClassLoader = new ByteCodeLoader("R3", bc1, missingCtrClassLoader); > diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/ProhibitedMethods.java > --- a/test/jdk/java/io/Serializable/records/ProhibitedMethods.java Fri Dec 06 12:13:25 2019 -0800 > +++ b/test/jdk/java/io/Serializable/records/ProhibitedMethods.java Fri Dec 06 13:13:45 2019 -0800 > @@ -69,6 +69,7 @@ > * record objects. > */ > public class ProhibitedMethods { > + private static final String VERSION = Integer.toString(Runtime.version().feature()); > > public interface ThrowingExternalizable extends Externalizable { > default void writeExternal(ObjectOutput out) { > @@ -106,7 +107,7 @@ > { > byte[] byteCode = InMemoryJavaCompiler.compile("Foo", > "public record Foo () implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > byteCode = addWriteObject(byteCode); > byteCode = addReadObject(byteCode); > byteCode = addReadObjectNoData(byteCode); > @@ -115,7 +116,7 @@ > { > byte[] byteCode = InMemoryJavaCompiler.compile("Bar", > "public record Bar (int x, int y) implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > byteCode = addWriteObject(byteCode); > byteCode = addReadObject(byteCode); > byteCode = addReadObjectNoData(byteCode); > @@ -125,7 +126,7 @@ > byte[] byteCode = InMemoryJavaCompiler.compile("Baz", > "import java.io.Serializable;" + > "public record Baz(U u, V v) implements Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > byteCode = addWriteObject(byteCode); > byteCode = addReadObject(byteCode); > byteCode = addReadObjectNoData(byteCode); > diff -r 3b9efbac1b50 test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java > --- a/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java Fri Dec 06 12:13:25 2019 -0800 > +++ b/test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java Fri Dec 06 13:13:45 2019 -0800 > @@ -64,6 +64,7 @@ > * Checks that the serialPersistentFields declaration is effectively ignored. > */ > public class SerialPersistentFieldsTest { > + private static final String VERSION = Integer.toString(Runtime.version().feature()); > > ClassLoader serializableRecordLoader; > > @@ -85,7 +86,7 @@ > { // R1 > byte[] byteCode = InMemoryJavaCompiler.compile("R1", > "public record R1 () implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = { > new ObjectStreamField("s", String.class), > new ObjectStreamField("i", int.class), > @@ -98,7 +99,7 @@ > { // R2 > byte[] byteCode = InMemoryJavaCompiler.compile("R2", > "public record R2 (int x) implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = { > new ObjectStreamField("s", String.class) > }; > @@ -108,7 +109,7 @@ > { // R3 > byte[] byteCode = InMemoryJavaCompiler.compile("R3", > "public record R3 (int x, int y) implements java.io.Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0]; > byteCode = addSerialPersistentFields(byteCode, serialPersistentFields); > serializableRecordLoader = new ByteCodeLoader("R3", byteCode, serializableRecordLoader); > @@ -117,7 +118,7 @@ > byte[] byteCode = InMemoryJavaCompiler.compile("R4", > "import java.io.Serializable;" + > "public record R4(U u, V v) implements Serializable { }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = { > new ObjectStreamField("v", String.class) > }; > @@ -134,7 +135,7 @@ > " @Override public void readExternal(ObjectInput in) {\n" + > " throw new AssertionError(\"should not reach here\");\n" + > " } }", > - "--enable-preview", "-source", "14"); > + "--enable-preview", "-source", VERSION); > ObjectStreamField[] serialPersistentFields = { > new ObjectStreamField("v", String.class) > }; > From chris.hegarty at oracle.com Mon Dec 9 12:51:07 2019 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Mon, 9 Dec 2019 12:51:07 +0000 Subject: RFR [14] 8235550: Clarify record reflective support specification Message-ID: <9BE0B0CA-4A8C-4975-A21E-8F4163B68F8C@oracle.com> This is a review request for a change to add a clarification to the record related core reflection methods, that specifies what it means to be a record class and access to the record components. Discussed originally over on amber-spec-experts [1] I expanded the existing record reflection test and also added a new test ( with the original record push bug no. ) to cover security manager checks ( since I couldn't find an existing test ). Bug: https://bugs.openjdk.java.net/browse/JDK-8235550 CSR: https://bugs.openjdk.java.net/browse/JDK-8235583 Webrev: https://cr.openjdk.java.net/~chegar/8235550/webrev.00/ -Chris. [1] https://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-December/001840.html From dmitry.bessonov at oracle.com Mon Dec 9 19:09:59 2019 From: dmitry.bessonov at oracle.com (Dmitry Bessonov) Date: Mon, 9 Dec 2019 19:09:59 +0000 Subject: [records] customized accessor returning subtype Message-ID: <1FA7F2D7-6990-44DF-92A0-8686948732E1@oracle.com> Is there any reason for not allowing a customized accessor to return rc subtype: record R(Number number) { public Integer number() { return 42; } } Error: java: invalid accessor method in record R (return type of accessor method number() is not compatible with type of record component number) dmitry From joe.darcy at oracle.com Tue Dec 10 00:04:09 2019 From: joe.darcy at oracle.com (Joe Darcy) Date: Mon, 9 Dec 2019 16:04:09 -0800 Subject: [records] customized accessor returning subtype In-Reply-To: <1FA7F2D7-6990-44DF-92A0-8686948732E1@oracle.com> References: <1FA7F2D7-6990-44DF-92A0-8686948732E1@oracle.com> Message-ID: <6d10fe7b-af22-a340-bb72-d1129e0a7ca2@oracle.com> FYI, this issue was raised in the CSR review: > In "An implicitly declared public accessor method with the same name > as the record component, whose return type is the declared type of the > record component, unless a public method with the same signature is > explicitly declared in the body of the declaration of R." > > does that imply a "covariant override" accessor can be explicitly > defined as the signature does not include the return type? For example > if the component had a type of Object and the user defined an > accesssor method with a type of String? Would a bridge method need to > be defined? Should the return type be constrained to match too? > https://bugs.openjdk.java.net/browse/JDK-8233433?focusedCommentId=14302123&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14302123 and replied to > This is a very good question. I've actually changed the description of > accessor methods and constructor methods to make this clearer (I > hope). In essence there is a two stage process. For accessor methods: > If you have the name of a component and an empty formal parameter > list, then you are considered to be an accessor method for the > component. We then ask additional criteria of you - it's a > compile-time error if you don't satisfy them! This includes having a > return type that is identical to the derived type of the record > component, being |public|, etc. It's essentially the same for > constructors: a record component list essentially derives a canonical > constructor signature. If you are a constructor that is > override-equivalent, then you are a canonical constructor. We then ask > additional criteria of you, being |public|, not being generic, etc. > > These definitions clear up a lot of corner cases, and more importantly > lead to better error messages. (In your particular example, the > |String| returning method would /not/ be an accessor for the |Object| > component, so one would be implicitly declared for you, and then you'd > get an error as we'd have two overloads with identical signatures). > https://bugs.openjdk.java.net/browse/JDK-8233433?focusedCommentId=14302457&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14302457 Cheers, -Joe On 12/9/2019 11:09 AM, Dmitry Bessonov wrote: > Is there any reason for not allowing a customized accessor to return rc subtype: > > record R(Number number) { > public Integer number() { > return 42; > } > } > > Error: java: invalid accessor method in record R > (return type of accessor method number() is not compatible with type of record component number) > > > dmitry > From alex.buckley at oracle.com Tue Dec 10 00:36:40 2019 From: alex.buckley at oracle.com (Alex Buckley) Date: Mon, 9 Dec 2019 16:36:40 -0800 Subject: [records] customized accessor returning subtype In-Reply-To: <6d10fe7b-af22-a340-bb72-d1129e0a7ca2@oracle.com> References: <1FA7F2D7-6990-44DF-92A0-8686948732E1@oracle.com> <6d10fe7b-af22-a340-bb72-d1129e0a7ca2@oracle.com> Message-ID: I'm glad this was asked and answered during CSR, but I think Dmitry is clear about WHAT the spec says. I believe he is asking WHY an explicit accessor's return type must be identical to the component's type. At the heart of the matter is the fact that a Number-typed component implies a Number-typed field. Code in an accessor with an Integer return type would have to downcast the field often, or at least sometimes. Everything about that accessor makes it harder to understand the state of the record *which was meant to be plain from the Number component*. Does the "true" state involve a Number or an Integer, and does it depend on other conditions, and when, and why? A covariant override is for when a subclass adds specialization, but there's no specialization to be gained within a record. Alex On 12/9/2019 4:04 PM, Joe Darcy wrote: > FYI, this issue was raised in the CSR review: > >> In "An implicitly declared public accessor method with the same name >> as the record component, whose return type is the declared type of the >> record component, unless a public method with the same signature is >> explicitly declared in the body of the declaration of R." >> >> does that imply a "covariant override" accessor can be explicitly >> defined as the signature does not include the return type? For example >> if the component had a type of Object and the user defined an >> accesssor method with a type of String? Would a bridge method need to >> be defined? Should the return type be constrained to match too? >> > > https://bugs.openjdk.java.net/browse/JDK-8233433?focusedCommentId=14302123&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14302123 > > > and replied to > >> This is a very good question. I've actually changed the description of >> accessor methods and constructor methods to make this clearer (I >> hope). In essence there is a two stage process. For accessor methods: >> If you have the name of a component and an empty formal parameter >> list, then you are considered to be an accessor method for the >> component. We then ask additional criteria of you - it's a >> compile-time error if you don't satisfy them! This includes having a >> return type that is identical to the derived type of the record >> component, being |public|, etc. It's essentially the same for >> constructors: a record component list essentially derives a canonical >> constructor signature. If you are a constructor that is >> override-equivalent, then you are a canonical constructor. We then ask >> additional criteria of you, being |public|, not being generic, etc. >> >> These definitions clear up a lot of corner cases, and more importantly >> lead to better error messages. (In your particular example, the >> |String| returning method would /not/ be an accessor for the |Object| >> component, so one would be implicitly declared for you, and then you'd >> get an error as we'd have two overloads with identical signatures). >> > https://bugs.openjdk.java.net/browse/JDK-8233433?focusedCommentId=14302457&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14302457 > > > Cheers, > > -Joe > > On 12/9/2019 11:09 AM, Dmitry Bessonov wrote: >> Is there any reason for not allowing a customized accessor to return >> rc subtype: >> >> record R(Number number) { >> ???? public Integer number() { >> ???????? return 42; >> ???? } >> } >> >> Error: java: invalid accessor method in record R >> ?? (return type of accessor method number() is not compatible with >> type of record component number) >> >> >> dmitry >> From forax at univ-mlv.fr Tue Dec 10 01:06:07 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Tue, 10 Dec 2019 02:06:07 +0100 (CET) Subject: [records] customized accessor returning subtype In-Reply-To: References: <1FA7F2D7-6990-44DF-92A0-8686948732E1@oracle.com> <6d10fe7b-af22-a340-bb72-d1129e0a7ca2@oracle.com> Message-ID: <748630449.540381.1575939967263.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "Alex Buckley" > ?: "amber-dev" > Envoy?: Mardi 10 D?cembre 2019 01:36:40 > Objet: Re: [records] customized accessor returning subtype > I'm glad this was asked and answered during CSR, but I think Dmitry is > clear about WHAT the spec says. I believe he is asking WHY an explicit > accessor's return type must be identical to the component's type. > > At the heart of the matter is the fact that a Number-typed component > implies a Number-typed field. Code in an accessor with an Integer return > type would have to downcast the field often, or at least sometimes. > Everything about that accessor makes it harder to understand the state > of the record *which was meant to be plain from the Number component*. > Does the "true" state involve a Number or an Integer, and does it depend > on other conditions, and when, and why? A covariant override is for when > a subclass adds specialization, but there's no specialization to be > gained within a record. Yes, you can not create two accessors, one overriding the other inside the same class so there is little point to have a record supporting that. It will be become a corner case for an IDE that want to refactor a record to a class or vice versa. What you can do is the opposite, if you have an interface with an abstract accessor returning a super type, then a record can implement it: public interface Namable { Object name(); } public record Foo(String name) implements Namable { } in that case, you will correctly get a bridge like this: public java.lang.String name(); descriptor: ()Ljava/lang/String; flags: (0x0001) ACC_PUBLIC Code: stack=1, locals=1, args_size=1 0: aload_0 1: getfield #16 // Field name:Ljava/lang/String; 4: areturn public java.lang.Object name(); descriptor: ()Ljava/lang/Object; flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC Code: stack=1, locals=1, args_size=1 0: aload_0 1: invokevirtual #13 // Method name:()Ljava/lang/String; 4: areturn > > Alex R?mi > > On 12/9/2019 4:04 PM, Joe Darcy wrote: >> FYI, this issue was raised in the CSR review: >> >>> In "An implicitly declared public accessor method with the same name >>> as the record component, whose return type is the declared type of the >>> record component, unless a public method with the same signature is >>> explicitly declared in the body of the declaration of R." >>> >>> does that imply a "covariant override" accessor can be explicitly >>> defined as the signature does not include the return type? For example >>> if the component had a type of Object and the user defined an >>> accesssor method with a type of String? Would a bridge method need to >>> be defined? Should the return type be constrained to match too? >>> >> >> https://bugs.openjdk.java.net/browse/JDK-8233433?focusedCommentId=14302123&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14302123 >> >> >> and replied to >> >>> This is a very good question. I've actually changed the description of >>> accessor methods and constructor methods to make this clearer (I >>> hope). In essence there is a two stage process. For accessor methods: >>> If you have the name of a component and an empty formal parameter >>> list, then you are considered to be an accessor method for the >>> component. We then ask additional criteria of you - it's a >>> compile-time error if you don't satisfy them! This includes having a >>> return type that is identical to the derived type of the record >>> component, being |public|, etc. It's essentially the same for >>> constructors: a record component list essentially derives a canonical >>> constructor signature. If you are a constructor that is >>> override-equivalent, then you are a canonical constructor. We then ask >>> additional criteria of you, being |public|, not being generic, etc. >>> >>> These definitions clear up a lot of corner cases, and more importantly >>> lead to better error messages. (In your particular example, the >>> |String| returning method would /not/ be an accessor for the |Object| >>> component, so one would be implicitly declared for you, and then you'd >>> get an error as we'd have two overloads with identical signatures). >>> >> https://bugs.openjdk.java.net/browse/JDK-8233433?focusedCommentId=14302457&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14302457 >> >> >> Cheers, >> >> -Joe >> >> On 12/9/2019 11:09 AM, Dmitry Bessonov wrote: >>> Is there any reason for not allowing a customized accessor to return >>> rc subtype: >>> >>> record R(Number number) { >>> ???? public Integer number() { >>> ???????? return 42; >>> ???? } >>> } >>> >>> Error: java: invalid accessor method in record R >>> ?? (return type of accessor method number() is not compatible with >>> type of record component number) >>> >>> >>> dmitry From maurizio.cimadamore at oracle.com Tue Dec 10 12:39:28 2019 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Tue, 10 Dec 2019 12:39:28 +0000 Subject: RFR [14] 8235550: Clarify record reflective support specification In-Reply-To: <9BE0B0CA-4A8C-4975-A21E-8F4163B68F8C@oracle.com> References: <9BE0B0CA-4A8C-4975-A21E-8F4163B68F8C@oracle.com> Message-ID: Looks good. Minor nits: * in getRecordComponents there are some utterings of "true", "false" and "null" which are not surrounded by a {@code } block. * any reason as to why the j.l.Record class is not cached in a static field? On the CSR: * "These arose when finalizing and completing the runtime CSR" - please add a link to the CSR * "It's direct superclass must be |java.lang.Record,| and" --- s/it's/its * "in it's specification ... guaranteed --- s/it's/its and also s/guaranteed/guarantee * "We thought it kinda nice to be able to avoid returning null, but in hindsight" - "While initially it was considered desirable to avoid returning null, in hindsight" Added myself as reviewer Thanks Maurizio On 09/12/2019 12:51, Chris Hegarty wrote: > This is a review request for a change to add a clarification to the > record related core reflection methods, that specifies what it means to > be a record class and access to the record components. Discussed > originally over on amber-spec-experts [1] > > I expanded the existing record reflection test and also added a new test > ( with the original record push bug no. ) to cover security manager > checks ( since I couldn't find an existing test ). > > Bug: https://bugs.openjdk.java.net/browse/JDK-8235550 > CSR: https://bugs.openjdk.java.net/browse/JDK-8235583 > Webrev: https://cr.openjdk.java.net/~chegar/8235550/webrev.00/ > > -Chris. > > [1] https://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-December/001840.html From chris.hegarty at oracle.com Tue Dec 10 14:34:37 2019 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Tue, 10 Dec 2019 14:34:37 +0000 Subject: RFR [14] 8235550: Clarify record reflective support specification In-Reply-To: References: <9BE0B0CA-4A8C-4975-A21E-8F4163B68F8C@oracle.com> Message-ID: <2BE6E3EC-174F-4D04-BFD1-1024DB3F0367@oracle.com> Maurizio, > On 10 Dec 2019, at 12:39, Maurizio Cimadamore wrote: > > Looks good. Thank you. I updated and finalised the CSR. > Minor nits: > > * in getRecordComponents there are some utterings of "true", "false" and "null" which are not surrounded by a {@code } block. > > * any reason as to why the j.l.Record class is not cached in a static field? > No reason. Done. Changes over the previous webrev: diff --git a/src/java.base/share/classes/java/lang/Class.java b/src/java.base/share/classes/java/lang/Class.java --- a/src/java.base/share/classes/java/lang/Class.java +++ b/src/java.base/share/classes/java/lang/Class.java @@ -2278,9 +2278,9 @@ *

The components are returned in the same order that they are declared * in the record header. The array is empty if this record class has no * components. If the class is not a record class, that is {@link - * #isRecord()} returns false, then this method returns null. Conversely, if - * {@link #isRecord()} returns true, then this method returns a non-null - * value. + * #isRecord()} returns {@code false}, then this method returns {@code null}. + * Conversely, if {@link #isRecord()} returns {@code true}, then this method + * returns a non-null value. * * @return An array of {@code RecordComponent} objects representing all the * record components of this record class, or {@code null} if this @@ -3596,8 +3596,7 @@ this.getSuperclass() == java.lang.Enum.class; } - /** Returns java.lang.Record.class */ + /** java.lang.Record.class */ + private static final Class JAVA_LANG_RECORD_CLASS = javaLangRecordClass(); private static Class javaLangRecordClass() { try { return Class.forName0("java.lang.Record", false, null, null); @@ -3631,7 +3630,7 @@ @jdk.internal.PreviewFeature(feature=jdk.internal.PreviewFeature.Feature.RECORDS, essentialAPI=false) public boolean isRecord() { - return getSuperclass() == javaLangRecordClass() && isRecord0(); + return getSuperclass() == JAVA_LANG_RECORD_CLASS && isRecord0(); } // Fetches the factory for reflective objects Complete webrev: https://cr.openjdk.java.net/~chegar/8235550/webrev.01/ -Chris. From maurizio.cimadamore at oracle.com Tue Dec 10 14:53:19 2019 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Tue, 10 Dec 2019 14:53:19 +0000 Subject: RFR [14] 8235550: Clarify record reflective support specification In-Reply-To: <2BE6E3EC-174F-4D04-BFD1-1024DB3F0367@oracle.com> References: <9BE0B0CA-4A8C-4975-A21E-8F4163B68F8C@oracle.com> <2BE6E3EC-174F-4D04-BFD1-1024DB3F0367@oracle.com> Message-ID: Looks good Maurizio On 10/12/2019 14:34, Chris Hegarty wrote: > Maurizio, > >> On 10 Dec 2019, at 12:39, Maurizio Cimadamore >> > > wrote: >> >> Looks good. >> > Thank you. I updated and finalised the CSR. >> >> Minor nits: >> >> * in getRecordComponents there are some utterings of "true", "false" >> and "null" which are not surrounded by a {@code } block. >> >> * any reason as to why the j.l.Record class is not cached in a static >> field? >> > No reason. Done. > > Changes over the previous webrev: > > diff --git a/src/java.base/share/classes/java/lang/Class.java > b/src/java.base/share/classes/java/lang/Class.java > --- a/src/java.base/share/classes/java/lang/Class.java > +++ b/src/java.base/share/classes/java/lang/Class.java > @@ -2278,9 +2278,9 @@ > ? ? ? *

The components are returned in the same order that they > are declared > ? ? ? * in the record header. The array is empty if this record class > has no > ? ? ? * components. If the class is not a record class, that is {@link > -?? ??* #isRecord()} returns false, then this method returns null. > Conversely, if > -?? ??* {@link #isRecord()} returns true, then this method returns a > non-null > -?? ??* value. > +?? ? * #isRecord()} returns {@code false}, then this method returns > {@code null}. > +?? ? * Conversely, if {@link #isRecord()} returns {@code true}, then > this method > +?? ? * returns a non-null value. > ? ? ? * > ? ? ? * @return? An array of {@code RecordComponent} objects > representing all the > ? ? ? *? ? ? ? ? record components of this record class, or {@code > null} if this > @@ -3596,8 +3596,7 @@ > ?? ? ? ? this.getSuperclass() == java.lang.Enum.class; > ?? ? } > > > > - ? ?/** Returns java.lang.Record.class */ > + ? ?/** java.lang.Record.class */ > + ???private static final Class JAVA_LANG_RECORD_CLASS = > javaLangRecordClass(); > ?? ? private static Class javaLangRecordClass() { > ?? ? ? ? try { > ?? ? ? ? ? ? return Class.forName0("java.lang.Record", false, null, null); > @@ -3631,7 +3630,7 @@ > @jdk.internal.PreviewFeature(feature=jdk.internal.PreviewFeature.Feature.RECORDS, > ? ? essentialAPI=false) > ?? ? public boolean isRecord() { > - ? ? ???return getSuperclass() == javaLangRecordClass() && isRecord0(); > + ? ? ? ?return getSuperclass() == JAVA_LANG_RECORD_CLASS && isRecord0(); > ? ? ?} > > > ?? ? // Fetches the factory for reflective objects > Complete webrev: > https://cr.openjdk.java.net/~chegar/8235550/webrev.01/ > > -Chris. From maurizio.cimadamore at oracle.com Tue Dec 10 15:07:53 2019 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Tue, 10 Dec 2019 15:07:53 +0000 Subject: [records] customized accessor returning subtype In-Reply-To: References: <1FA7F2D7-6990-44DF-92A0-8686948732E1@oracle.com> <6d10fe7b-af22-a340-bb72-d1129e0a7ca2@oracle.com> Message-ID: <37ead4c9-00fc-3822-11db-84f90ba29479@oracle.com> On 10/12/2019 00:36, Alex Buckley wrote: > I'm glad this was asked and answered during CSR, but I think Dmitry is > clear about WHAT the spec says. I believe he is asking WHY an explicit > accessor's return type must be identical to the component's type. > > At the heart of the matter is the fact that a Number-typed component > implies a Number-typed field. Code in an accessor with an Integer > return type would have to downcast the field often, or at least > sometimes. Everything about that accessor makes it harder to > understand the state of the record *which was meant to be plain from > the Number component*. Does the "true" state involve a Number or an > Integer, and does it depend on other conditions, and when, and why? A > covariant override is for when a subclass adds specialization, but > there's no specialization to be gained within a record. > Not to mention the fact that, as soon as you go down that path (covariant accessors) some developers could ask for the dual (contravariant constructor parameters) - at which point I think we're well past the design center for records. Maurizio > Alex > > On 12/9/2019 4:04 PM, Joe Darcy wrote: >> FYI, this issue was raised in the CSR review: >> >>> In "An implicitly declared public accessor method with the same name >>> as the record component, whose return type is the declared type of >>> the record component, unless a public method with the same signature >>> is explicitly declared in the body of the declaration of R." >>> >>> does that imply a "covariant override" accessor can be explicitly >>> defined as the signature does not include the return type? For >>> example if the component had a type of Object and the user defined >>> an accesssor method with a type of String? Would a bridge method >>> need to be defined? Should the return type be constrained to match too? >>> >> >> https://bugs.openjdk.java.net/browse/JDK-8233433?focusedCommentId=14302123&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14302123 >> >> >> and replied to >> >>> This is a very good question. I've actually changed the description >>> of accessor methods and constructor methods to make this clearer (I >>> hope). In essence there is a two stage process. For accessor >>> methods: If you have the name of a component and an empty formal >>> parameter list, then you are considered to be an accessor method for >>> the component. We then ask additional criteria of you - it's a >>> compile-time error if you don't satisfy them! This includes having a >>> return type that is identical to the derived type of the record >>> component, being |public|, etc. It's essentially the same for >>> constructors: a record component list essentially derives a >>> canonical constructor signature. If you are a constructor that is >>> override-equivalent, then you are a canonical constructor. We then >>> ask additional criteria of you, being |public|, not being generic, etc. >>> >>> These definitions clear up a lot of corner cases, and more >>> importantly lead to better error messages. (In your particular >>> example, the |String| returning method would /not/ be an accessor >>> for the |Object| component, so one would be implicitly declared for >>> you, and then you'd get an error as we'd have two overloads with >>> identical signatures). >>> >> https://bugs.openjdk.java.net/browse/JDK-8233433?focusedCommentId=14302457&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14302457 >> >> >> Cheers, >> >> -Joe >> >> On 12/9/2019 11:09 AM, Dmitry Bessonov wrote: >>> Is there any reason for not allowing a customized accessor to return >>> rc subtype: >>> >>> record R(Number number) { >>> ???? public Integer number() { >>> ???????? return 42; >>> ???? } >>> } >>> >>> Error: java: invalid accessor method in record R >>> ?? (return type of accessor method number() is not compatible with >>> type of record component number) >>> >>> >>> dmitry >>> From jesper at selskabet.org Thu Dec 12 13:40:07 2019 From: jesper at selskabet.org (=?utf-8?Q?Jesper_Steen_M=C3=B8ller?=) Date: Thu, 12 Dec 2019 14:40:07 +0100 Subject: Fix for JDK-8235239 (local-methods branch) In-Reply-To: References: <490ca1c3-05e0-5ffe-2553-3b2074a8316a@oracle.com> Message-ID: <18C461C5-A092-496D-9F6C-73B0A4E3C739@selskabet.org> Hej list I've started looking at javac, with the intent of working on inline types at the valhalla. Srikanth suggested that I started with some issues on local methods to warm up on, so here's my first shot at that, a proposed patch for JDK-8235239. My OCA is on record. I was unsure about the copyright notice, though. It that right? -------------- next part -------------- -Jesper From srikanth.adayapalam at oracle.com Thu Dec 12 13:42:37 2019 From: srikanth.adayapalam at oracle.com (Srikanth) Date: Thu, 12 Dec 2019 19:12:37 +0530 Subject: Fix for JDK-8235239 (local-methods branch) In-Reply-To: <18C461C5-A092-496D-9F6C-73B0A4E3C739@selskabet.org> References: <490ca1c3-05e0-5ffe-2553-3b2074a8316a@oracle.com> <18C461C5-A092-496D-9F6C-73B0A4E3C739@selskabet.org> Message-ID: Thanks Jesper, I will follow up. It may be a while though as I am about to head to my year end break. Wish you a good holiday season too. Srikanth On 12/12/19 7:10 pm, Jesper Steen M?ller wrote: > Hej list > > I've started looking at javac, with the intent of working on inline types at the valhalla. > > Srikanth suggested that I started with some issues on local methods to warm up on, so here's my first shot at that, a proposed patch for JDK-8235239. My OCA is on record. > > I was unsure about the copyright notice, though. It that right? > > > > -Jesper From gunnar at hibernate.org Sat Dec 14 21:58:03 2019 From: gunnar at hibernate.org (Gunnar Morling) Date: Sat, 14 Dec 2019 22:58:03 +0100 Subject: Records and bi-directional relationships Message-ID: Hi all, I was exploring the records feature in the latest 14 EA build a bit. An interesting question came up in how records will work for bi-directional relationships between two record types. I found no way to instantiate such pair of records without creating a temporary instance of one of the two (unlike with regular classes, where I could wire the relationship from within the constructor of one). Did I miss an alternative way to do so (see below for what I came up with)? A related question: this program will raise a StackOverflowError in the toString() method. Is this an accepted limitation? Thanks, --Gunnar public class RecordsBidi { public static void main (String... args) { Surface surface = new Surface(new Point(1, 2)); System.out.println(surface); } record Point(int x, int y, Surface owning) { public Point(int x, int y) { this(x, y, null); } } record Surface(Point center) { public Surface(Point center) { this.center = new Point(center.x, center.y, this); } } } From arash.shahkar at gmail.com Sat Dec 14 22:01:09 2019 From: arash.shahkar at gmail.com (Arash Shahkar) Date: Sat, 14 Dec 2019 17:01:09 -0500 Subject: Records =?utf-8?Q?=E2=80=94_?=Dealing with nullable values In-Reply-To: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> Message-ID: <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> Hi, I?ve been using Lombok for quite a while now to automatically generate boilerplate code for "data carrier" classes. However, a pattern I really like and have found to work very well is to verify non-nullity of all the fields that must not be null, and return an Optional from the accessor of a field if it?s allowed to have a null value. Consider: @lombok.Value class Person { ? ? String name; ? ? Gender gender; ? ? Person(String name, Gender gender) { ? } // customize the constructor, verifying that name is defined and valid ? ? Optional getGender() { // customize the accessor for gender, to make sure calling code deals with the possibility of gender being null ? ? ? ? return ofNullable(gender); ? ? } } Doing a similar thing with records is not possible, due to the fact that the accessor for gender has to exactly return a Gender. With the current specification for records, the only option is to do: record Person(String name, Optional gender) { ? ? ? } Is this considered good practice? Do you suggest any alternatives? From brian.goetz at oracle.com Sat Dec 14 22:11:56 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sat, 14 Dec 2019 17:11:56 -0500 Subject: Records and bi-directional relationships In-Reply-To: References: Message-ID: <1d957388-fe3c-abf7-c415-d6702632c32f@oracle.com> I think you are asking: is it possible to create cycles with records?? And the answer is, mostly no.? (You can have records that have mutable components and then later mutate them to be cyclic. What you're doing in the `Surface` constructor is allowing the `this` reference escape during construction, which undermines the memory model guarantees for final fields. On 12/14/2019 4:58 PM, Gunnar Morling wrote: > Hi all, > > I was exploring the records feature in the latest 14 EA build a bit. An > interesting question came up in how records will work for > bi-directional relationships between two record types. > > I found no way to instantiate such pair of records without creating a > temporary instance of one of the two (unlike with regular classes, where I > could wire the relationship from within the constructor of one). Did I miss > an alternative way to do so (see below for what I came up with)? > > A related question: this program will raise a StackOverflowError in the > toString() method. Is this an accepted limitation? > > Thanks, > > --Gunnar > > public class RecordsBidi { > public static void main (String... args) { > Surface surface = new Surface(new Point(1, 2)); > System.out.println(surface); > } > > record Point(int x, int y, Surface owning) { > public Point(int x, int y) { > this(x, y, null); > } > } > > record Surface(Point center) { > public Surface(Point center) { > this.center = new Point(center.x, center.y, this); > } > } > } From brian.goetz at oracle.com Sat Dec 14 22:14:24 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sat, 14 Dec 2019 17:14:24 -0500 Subject: =?UTF-8?Q?Re=3a_Records_=e2=80=94_Dealing_with_nullable_values?= In-Reply-To: <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> Message-ID: <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> No, that would not be a good idea.? If you find yourself using Optional for a method parameter, or a field type, or a record component type, you've almost certainly gone Optional-crazy.? It's a common, but curable, disease. What you want to do is this: ??? record Foo(String name, Gender gender) { ??????? Foo { ??????????? requireNonNull(name); ??????????? requireNonNull(gender); ??????? } ??? } The `Foo { ... }` is a _compact constructor_, which is a constructor whose signature is the same as that of the record, and which automatically handles the `this.x = x` boilerplate for you. This is where you put argument validation / normalization. On 12/14/2019 5:01 PM, Arash Shahkar wrote: > Hi, > > I?ve been using Lombok for quite a while now to automatically generate boilerplate code for "data carrier" classes. However, a pattern I really like and have found to work very well is to verify non-nullity of all the fields that must not be null, and return an Optional from the accessor of a field if it?s allowed to have a null value. Consider: > > @lombok.Value > class Person { > > ? ? String name; > ? ? Gender gender; > > ? ? Person(String name, Gender gender) { ? } // customize the constructor, verifying that name is defined and valid > > ? ? Optional getGender() { // customize the accessor for gender, to make sure calling code deals with the possibility of gender being null > ? ? ? ? return ofNullable(gender); > ? ? } > } > > Doing a similar thing with records is not possible, due to the fact that the accessor for gender has to exactly return a Gender. With the current specification for records, the only option is to do: > > record Person(String name, Optional gender) { > ? ? ? > } > > Is this considered good practice? Do you suggest any alternatives? From gunnar at hibernate.org Sat Dec 14 22:24:41 2019 From: gunnar at hibernate.org (Gunnar Morling) Date: Sat, 14 Dec 2019 23:24:41 +0100 Subject: Records and bi-directional relationships In-Reply-To: <1d957388-fe3c-abf7-c415-d6702632c32f@oracle.com> References: <1d957388-fe3c-abf7-c415-d6702632c32f@oracle.com> Message-ID: Am Sa., 14. Dez. 2019 um 23:12 Uhr schrieb Brian Goetz < brian.goetz at oracle.com>: > I think you are asking: is it possible to create cycles with records? > Essentially, yes. I couldn't find anything on that topic in the JEP. > And the answer is, mostly no. (You can have records that have mutable > components and then later mutate them to be cyclic. > That's interesting, how would I declare a mutable component? From reading the JEP I concluded they'd be final. In that light, isn't the potential SOE in toString() even more of a concern than in the very specific corner case of an escaping reference I sketched? What you're doing in the `Surface` constructor is allowing the `this` > reference escape during construction, which undermines the memory model > guarantees for final fields. > On 12/14/2019 4:58 PM, Gunnar Morling wrote: > > Hi all, > > > > I was exploring the records feature in the latest 14 EA build a bit. An > > interesting question came up in how records will work for > > bi-directional relationships between two record types. > > > > I found no way to instantiate such pair of records without creating a > > temporary instance of one of the two (unlike with regular classes, where > I > > could wire the relationship from within the constructor of one). Did I > miss > > an alternative way to do so (see below for what I came up with)? > > > > A related question: this program will raise a StackOverflowError in the > > toString() method. Is this an accepted limitation? > > > > Thanks, > > > > --Gunnar > > > > public class RecordsBidi { > > public static void main (String... args) { > > Surface surface = new Surface(new Point(1, 2)); > > System.out.println(surface); > > } > > > > record Point(int x, int y, Surface owning) { > > public Point(int x, int y) { > > this(x, y, null); > > } > > } > > > > record Surface(Point center) { > > public Surface(Point center) { > > this.center = new Point(center.x, center.y, this); > > } > > } > > } > > From brian.goetz at oracle.com Sat Dec 14 22:29:48 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sat, 14 Dec 2019 17:29:48 -0500 Subject: Records and bi-directional relationships In-Reply-To: References: <1d957388-fe3c-abf7-c415-d6702632c32f@oracle.com> Message-ID: <55ab5717-d640-041d-e1b6-dd554a5c761f@oracle.com> > And the answer is, mostly no.? (You can have records that have > mutable > components and then later mutate them to be cyclic. > > > That's interesting, how would I declare a mutable component? From > reading the JEP I concluded they'd be final. The fields themselves are final, but they can refer to mutable objects: ??? record Foo(Object[] a) { } ??? record Bar(Foo f) { } ??? Foo f = new Foo(new Object[1]); ??? Bar b = new Bar(f); ??? f.a()[0] = b;? // don't code like this This is what I meant, but I wasn't really recommending it.? Records are _shallowly immutable_ (because, 1995.) > In that light, isn't the potential SOE in toString() even more of a > concern than in the very specific corner case of an escaping reference > I sketched? Yes, that's awful too :) From arash.shahkar at gmail.com Sat Dec 14 22:31:12 2019 From: arash.shahkar at gmail.com (Arash Shahkar) Date: Sat, 14 Dec 2019 17:31:12 -0500 Subject: Records =?utf-8?Q?=E2=80=94_?=Dealing with nullable values In-Reply-To: <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> Message-ID: In my example, gender can be left undefined, but not name. Dropping requireNonNull(gender) from the compact constructor works, but leaves the accessor for gender returning null (possibly). What I?d like to achieve is to have the accessor for gender return Optional, to clearly communicate that it might be null. I have found this pretty common, and using this pattern has helped a lot. I was wondering if my ?workaround? to be able to use records and drop Lombok for these cases is a big no-no. On Dec 14, 2019, 5:16 PM -0500, Brian Goetz , wrote: > No, that would not be a good idea.? If you find yourself using Optional > for a method parameter, or a field type, or a record component type, > you've almost certainly gone Optional-crazy.? It's a common, but > curable, disease. > > What you want to do is this: > > ??? record Foo(String name, Gender gender) { > ??????? Foo { > ??????????? requireNonNull(name); > ??????????? requireNonNull(gender); > ??????? } > ??? } > > The `Foo { ... }` is a _compact constructor_, which is a constructor > whose signature is the same as that of the record, and which > automatically handles the `this.x = x` boilerplate for you. This is > where you put argument validation / normalization. > > > On 12/14/2019 5:01 PM, Arash Shahkar wrote: > > Hi, > > > > I?ve been using Lombok for quite a while now to automatically generate boilerplate code for "data carrier" classes. However, a pattern I really like and have found to work very well is to verify non-nullity of all the fields that must not be null, and return an Optional from the accessor of a field if it?s allowed to have a null value. Consider: > > > > @lombok.Value > > class Person { > > > > ? ? String name; > > ? ? Gender gender; > > > > ? ? Person(String name, Gender gender) { ? } // customize the constructor, verifying that name is defined and valid > > > > ? ? Optional getGender() { // customize the accessor for gender, to make sure calling code deals with the possibility of gender being null > > ? ? ? ? return ofNullable(gender); > > ? ? } > > } > > > > Doing a similar thing with records is not possible, due to the fact that the accessor for gender has to exactly return a Gender. With the current specification for records, the only option is to do: > > > > record Person(String name, Optional gender) { > > ? ? ? > > } > > > > Is this considered good practice? Do you suggest any alternatives? > From brian.goetz at oracle.com Sat Dec 14 22:37:54 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sat, 14 Dec 2019 17:37:54 -0500 Subject: =?UTF-8?Q?Re=3a_Records_=e2=80=94_Dealing_with_nullable_values?= In-Reply-To: References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> Message-ID: Records are _transparent, shallowly immutable containers for their state_.? So either the record holds a Gender and exposes that as the API, or it holds an Optional, and exposes that.? If you are using what is essentially a macro generator (like Lombok), I'm sure it has a hundred knobs you can twiddle to represent your favorite patterns.? But that's not what records are -- records are _nominal tuples_ (just as functional interfaces are _nominal function types_.) I get why you are seeking a nulls-in, Optional-out protocol -- you're trying to follow Postel's law.? But if you really want to treat "no gender" as a valid point in the domain, then just make a record with an Optional component, and push the `Optional.ofNullable()` to the caller (or, provide an overloaded constructor that does it for them.)? But I would still use this pattern sparingly; the majority of uses I see of Optional in domain models are gratuitous. On 12/14/2019 5:31 PM, Arash Shahkar wrote: > In my example, gender can be left undefined, but not name. Dropping > requireNonNull(gender) from the compact constructor works, but leaves > the accessor for gender returning null (possibly). > > What I?d like to achieve is to have the accessor for gender return > Optional, to clearly communicate that it might be null. I have > found this pretty common, and using this pattern has helped a lot. > > I was wondering if my ?workaround? to be able to use records and drop > Lombok for these cases is a big no-no. > On Dec 14, 2019, 5:16 PM -0500, Brian Goetz , > wrote: >> No, that would not be a good idea.? If you find yourself using Optional >> for a method parameter, or a field type, or a record component type, >> you've almost certainly gone Optional-crazy.? It's a common, but >> curable, disease. >> >> What you want to do is this: >> >> ??? record Foo(String name, Gender gender) { >> ??????? Foo { >> ??????????? requireNonNull(name); >> ??????????? requireNonNull(gender); >> ??????? } >> ??? } >> >> The `Foo { ... }` is a _compact constructor_, which is a constructor >> whose signature is the same as that of the record, and which >> automatically handles the `this.x = x` boilerplate for you. This is >> where you put argument validation / normalization. >> >> >> On 12/14/2019 5:01 PM, Arash Shahkar wrote: >>> Hi, >>> >>> I?ve been using Lombok for quite a while now to automatically >>> generate boilerplate code for "data carrier" classes. However, a >>> pattern I really like and have found to work very well is to verify >>> non-nullity of all the fields that must not be null, and return an >>> Optional from the accessor of a field if it?s allowed to have >>> a null value. Consider: >>> >>> @lombok.Value >>> class Person { >>> >>> ? ? String name; >>> ? ? Gender gender; >>> >>> ? ? Person(String name, Gender gender) { ? } // customize the >>> constructor, verifying that name is defined and valid >>> >>> ? ? Optional getGender() { // customize the accessor for >>> gender, to make sure calling code deals with the possibility of >>> gender being null >>> ? ? ? ? return ofNullable(gender); >>> ? ? } >>> } >>> >>> Doing a similar thing with records is not possible, due to the fact >>> that the accessor for gender has to exactly return a Gender. With >>> the current specification for records, the only option is to do: >>> >>> record Person(String name, Optional gender) { >>> ? ? ? >>> } >>> >>> Is this considered good practice? Do you suggest any alternatives? >> From forax at univ-mlv.fr Sat Dec 14 22:53:44 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Sat, 14 Dec 2019 23:53:44 +0100 (CET) Subject: =?utf-8?Q?Re:_Records_=E2=80=94_Dealing_with_nullable_values?= In-Reply-To: <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> Message-ID: <924823605.958224.1576364024754.JavaMail.zimbra@u-pem.fr> Hi Arash, in your example, you want gender to be Optional in term of API but stored as null in term of implementation. Records only supports to have the same API internally and externally. so either you declare gender as Optional or you use a class instead of a record because you want a clean separation between the public API and the private implementation. regards, R?mi ----- Mail original ----- > De: "Arash Shahkar" > ?: "amber-dev" > Envoy?: Samedi 14 D?cembre 2019 23:01:09 > Objet: Records ? Dealing with nullable values > Hi, > > I?ve been using Lombok for quite a while now to automatically generate > boilerplate code for "data carrier" classes. However, a pattern I really like > and have found to work very well is to verify non-nullity of all the fields > that must not be null, and return an Optional from the accessor of a > field if it?s allowed to have a null value. Consider: > > @lombok.Value > class Person { > >? ? String name; >? ? Gender gender; > >? ? Person(String name, Gender gender) { ? } // customize the constructor, verifying >? ? that name is defined and valid > >? ? Optional getGender() { // customize the accessor for gender, to make >? ? sure calling code deals with the possibility of gender being null >? ? ? ? return ofNullable(gender); >? ? } > } > > Doing a similar thing with records is not possible, due to the fact that the > accessor for gender has to exactly return a Gender. With the current > specification for records, the only option is to do: > > record Person(String name, Optional gender) { >? ? ? > } > > Is this considered good practice? Do you suggest any alternatives? From scolebourne at joda.org Sun Dec 15 01:07:45 2019 From: scolebourne at joda.org (Stephen Colebourne) Date: Sun, 15 Dec 2019 01:07:45 +0000 Subject: =?UTF-8?Q?Re=3A_Records_=E2=80=94_Dealing_with_nullable_values?= In-Reply-To: References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> Message-ID: As a data point, we at OpenGamma follow the get/optional pattern 100%. We never return null from a data object, always optional. And we never use Optional as the field value. And very rarely is Optional used as a method/constructor parameter, because doing so is very unfriendly to your caller. >From a quick search: Subsystem a: 1035 beans which contain 4895 properties, of which 400 properties follow the get=optional pattern (~8%) Subsystem b: 1124 beans which contain 2694 properties, of which 126 properties follow the get=optional pattern (~5%) Records are clearly not beans, they are effectively something new (nominal tuples) that Java devs will have to learn not to overuse. (And I suspect there will be a lot of overuse). ie. Arash, I'd question whether its really the right choice to switch from Lombok to records, despite the shorter syntax. Brian, I still think that there is the opportunity to build on records, onion-like, to handle bean use cases. ie. allowing a class to declare its public state as a record, but keeping that record separate from the main API of the class. eg with some examplar syntax: public class Person { public record(String name, Gender gender); private String summary; // additional non-record fields for whatever purpose is necessary // constructor/equals/hashCode/toString/accessors delegate to record but can be overridden with none of the restrictions records have // thus this is OK, package scoped and optional Optional gender() { return ofNullable(record.gender()); } // and setters too if desired public void setName(String name) { record = new record(name, record.gender()); } ie. whenever the formal state is needed, code can use `person.record` instead of `person`. I suspect much of this would work anyway if a dev wrote a nested record of Person and a public field named `record`, but the idea is that extra syntax sugar here would integrate the class with the record more closely. Stephen On Sat, 14 Dec 2019 at 22:39, Brian Goetz wrote: > > Records are _transparent, shallowly immutable containers for their > state_. So either the record holds a Gender and exposes that as the > API, or it holds an Optional, and exposes that. If you are > using what is essentially a macro generator (like Lombok), I'm sure it > has a hundred knobs you can twiddle to represent your favorite > patterns. But that's not what records are -- records are _nominal > tuples_ (just as functional interfaces are _nominal function types_.) > > I get why you are seeking a nulls-in, Optional-out protocol -- you're > trying to follow Postel's law. But if you really want to treat "no > gender" as a valid point in the domain, then just make a record with an > Optional component, and push the `Optional.ofNullable()` to the > caller (or, provide an overloaded constructor that does it for them.) > But I would still use this pattern sparingly; the majority of uses I see > of Optional in domain models are gratuitous. From amaembo at gmail.com Sun Dec 15 02:20:40 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Sun, 15 Dec 2019 09:20:40 +0700 Subject: =?UTF-8?Q?Re=3A_Records_=E2=80=94_Dealing_with_nullable_values?= In-Reply-To: References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> Message-ID: > But if you really want to treat "no > gender" as a valid point in the domain, then just make a record with an > Optional component, and push the `Optional.ofNullable()` to the > caller (or, provide an overloaded constructor that does it for them.) > A better solution, to my opinion, is to encode an unspecified gender as one of the values within the Gender type and make it non-nullable. E.g. if Gender is an enum, just add a new UNSPECIFIED constant. This is much better for all clients. E. g. you may safely do person.gender().toString() to display the gender in the UI without ugly things like person.gender().map(Gender::toString).orElse(Messages.UNSPECIFIED_GENDER). With best regards, Tagir Valeev. But I would still use this pattern sparingly; the majority of uses I see > of Optional in domain models are gratuitous. > > On 12/14/2019 5:31 PM, Arash Shahkar wrote: > > In my example, gender can be left undefined, but not name. Dropping > > requireNonNull(gender) from the compact constructor works, but leaves > > the accessor for gender returning null (possibly). > > > > What I?d like to achieve is to have the accessor for gender return > > Optional, to clearly communicate that it might be null. I have > > found this pretty common, and using this pattern has helped a lot. > > > > I was wondering if my ?workaround? to be able to use records and drop > > Lombok for these cases is a big no-no. > > On Dec 14, 2019, 5:16 PM -0500, Brian Goetz , > > wrote: > >> No, that would not be a good idea. If you find yourself using Optional > >> for a method parameter, or a field type, or a record component type, > >> you've almost certainly gone Optional-crazy. It's a common, but > >> curable, disease. > >> > >> What you want to do is this: > >> > >> record Foo(String name, Gender gender) { > >> Foo { > >> requireNonNull(name); > >> requireNonNull(gender); > >> } > >> } > >> > >> The `Foo { ... }` is a _compact constructor_, which is a constructor > >> whose signature is the same as that of the record, and which > >> automatically handles the `this.x = x` boilerplate for you. This is > >> where you put argument validation / normalization. > >> > >> > >> On 12/14/2019 5:01 PM, Arash Shahkar wrote: > >>> Hi, > >>> > >>> I?ve been using Lombok for quite a while now to automatically > >>> generate boilerplate code for "data carrier" classes. However, a > >>> pattern I really like and have found to work very well is to verify > >>> non-nullity of all the fields that must not be null, and return an > >>> Optional from the accessor of a field if it?s allowed to have > >>> a null value. Consider: > >>> > >>> @lombok.Value > >>> class Person { > >>> > >>> String name; > >>> Gender gender; > >>> > >>> Person(String name, Gender gender) { ? } // customize the > >>> constructor, verifying that name is defined and valid > >>> > >>> Optional getGender() { // customize the accessor for > >>> gender, to make sure calling code deals with the possibility of > >>> gender being null > >>> return ofNullable(gender); > >>> } > >>> } > >>> > >>> Doing a similar thing with records is not possible, due to the fact > >>> that the accessor for gender has to exactly return a Gender. With > >>> the current specification for records, the only option is to do: > >>> > >>> record Person(String name, Optional gender) { > >>> ? > >>> } > >>> > >>> Is this considered good practice? Do you suggest any alternatives? > >> > > From forax at univ-mlv.fr Sun Dec 15 11:10:41 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Sun, 15 Dec 2019 12:10:41 +0100 (CET) Subject: =?utf-8?Q?Re:_Records_=E2=80=94_Dealing_with_nullable_values?= In-Reply-To: References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> Message-ID: <1010314288.981822.1576408241635.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "Stephen Colebourne" > ?: "amber-dev" > Envoy?: Dimanche 15 D?cembre 2019 02:07:45 > Objet: Re: Records ? Dealing with nullable values > As a data point, we at OpenGamma follow the get/optional pattern 100%. > We never return null from a data object, always optional. And we never > use Optional as the field value. And very rarely is Optional used as a > method/constructor parameter, because doing so is very unfriendly to > your caller. Hi Stephen, wrapping my head around what you are saying, if you have a getter that returns an Optional and rarely a constructor or a setter that takes Optional, it means that your class is mutable, right ? > > From a quick search: > Subsystem a: 1035 beans which contain 4895 properties, of which 400 > properties follow the get=optional pattern (~8%) > Subsystem b: 1124 beans which contain 2694 properties, of which 126 > properties follow the get=optional pattern (~5%) > > Records are clearly not beans, they are effectively something new > (nominal tuples) that Java devs will have to learn not to overuse. > (And I suspect there will be a lot of overuse). ie. Arash, I'd > question whether its really the right choice to switch from Lombok to > records, despite the shorter syntax. yes, we should communicate more on that, records are not beans, i repeat, records are not beans ! you will be disappointed if you try to replace all your beans by records. Personally, i'm fine with record components being declared as Optional but in the future when Optional will be retrofitted to be an inline class :) I suppose the closest you can come with a record to emulate the pattern you and Arash described is record Person(String name, Optional gender) { public Person { Objects.requireNonNull(name); } public Person(String name) { this(name, Optional.empty()); } } the compact constructor guarantee that name is never null, the other constructor sweet the pill for callers. [...] > > Stephen R?mi From novitools.novi at web.de Sun Dec 15 13:14:37 2019 From: novitools.novi at web.de (Novi) Date: Sun, 15 Dec 2019 14:14:37 +0100 Subject: Records and bi-directional relationships In-Reply-To: <1d957388-fe3c-abf7-c415-d6702632c32f@oracle.com> References: <1d957388-fe3c-abf7-c415-d6702632c32f@oracle.com> Message-ID: Hello Brian Goetz, I always wonder what is the best way to model cycles in Java when using immutable classes. > What you're doing in the `Surface` constructor is allowing the `this` > reference escape during construction, which undermines the memory model > guarantees for final fields. After reading your article "Safe construction techniques"[1], I thought it we be okay if the `this` reference escapes during construction as long as no other thread can see it. > What you're doing in the `Surface` constructor is allowing the `this` > reference escape during construction, which undermines the memory model > guarantees for final fields. Does an escaped `this` reference always undermine the memory model guarantees for final fields? Or does it only undermine the memory model if the `this` reference is published during construction so that it is accessible from other threads? - Novi 1: https://www.ibm.com/developerworks/library/j-jtp0618/index.html Am 14.12.2019, 23:11 Uhr, schrieb Brian Goetz : > I think you are asking: is it possible to create cycles with records? > And the answer is, mostly no. (You can have records that have mutable > components and then later mutate them to be cyclic. > > What you're doing in the `Surface` constructor is allowing the `this` > reference escape during construction, which undermines the memory model > guarantees for final fields. > > On 12/14/2019 4:58 PM, Gunnar Morling wrote: >> Hi all, >> >> I was exploring the records feature in the latest 14 EA build a bit. An >> interesting question came up in how records will work for >> bi-directional relationships between two record types. >> >> I found no way to instantiate such pair of records without creating a >> temporary instance of one of the two (unlike with regular classes, >> where I >> could wire the relationship from within the constructor of one). Did I >> miss >> an alternative way to do so (see below for what I came up with)? >> >> A related question: this program will raise a StackOverflowError in the >> toString() method. Is this an accepted limitation? >> >> Thanks, >> >> --Gunnar >> >> public class RecordsBidi { >> public static void main (String... args) { >> Surface surface = new Surface(new Point(1, 2)); >> System.out.println(surface); >> } >> >> record Point(int x, int y, Surface owning) { >> public Point(int x, int y) { >> this(x, y, null); >> } >> } >> >> record Surface(Point center) { >> public Surface(Point center) { >> this.center = new Point(center.x, center.y, this); >> } >> } >> } From brian.goetz at oracle.com Sun Dec 15 16:34:30 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 15 Dec 2019 11:34:30 -0500 Subject: =?utf-8?Q?Future_directions_for_records_=28was=3A_Records_?= =?utf-8?Q?=E2=80=94_Dealing_with_nullable_values=29?= In-Reply-To: References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> Message-ID: > Brian, I still think that there is the opportunity to build on > records, onion-like, to handle bean use cases. I have long been assuming so (though, by way of expectation setting, I want to let the current feature settle and get real usage feedback before we dive into future rounds of design.) Our hope has always been to find a way to spread the record goodies more generally, in a way that records are, in the end, revealed to be merely a specific configuration of lower-level features. (In this way, we?re building onion-like towards the center of the onion.) If there were primitives for ?better constructors?, ?better equals and hashCode?, and ?more streamlined accessor methods?, then there?d be nothing special about records, other than they bundle up these features. This would be a nice world because then you could take or leave whichever bits benefit you, and if you want the whole package, you still get a nice (syntactically and semantically) way to say it. Based on preliminary explorations, though, I doubt there is a single unifying factor that ties together all of these; I think these are largely separate primitives. One obvious example of where we can build is how fields are initialized in constructors; the `this.x = x` boilerplate should be eliminable in most cases, as they are in the compact record constructor, as long as we can provide a mapping between parameters and fields. (Records win here because there is, by definition, such a mapping between ctor parameters and fields.) And when we have declarable deconstruction patterns, the reverse boilerplate (x = this.x) will get similar treatment. Stepping back, the information that is destroyed in the typical encapsulation story is that there are multiple utterances of the name `x`, but there is no linguistically justifiable means to reason that the field `x` and the constructor parameter `x` and the accessors `getX` and `setX` are referring to the same x, unless a human reads the documentation for the class and concludes this to be the case. (This sucks, since this is actually the case most of the time, and indeed frameworks make assumptions all the time that getX and setX must be referring to the same abstract property.) Records reconstruct this, with a big hammer, by forcing all of the protocols (representation, construction, deconstruction, equality, hashing, display) into strict alignment; this is great when it does what we want. In the general case, we need to find a way to associate that the `x` parameter of the constructor is really talking about the same `x` as the field `x`; this can unlock more of the goodies (?the equals and hashing protocols are derived from the fields x, y, and z?). Building in the other onion-direction, another example is one we haven?t done yet: named invocation. It has been pointed out that records could use named invocation (e.g., new Foo(x: 1, y: 2)), and they could ? but we would rather wait until we can have a consistent treatment for all classes. All of this is to say, it is likely that records are not the end of this story, but it is likely the rest of the story will be on hold for a while, as we look towards other priorities. From amaembo at gmail.com Thu Dec 19 04:45:35 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Thu, 19 Dec 2019 11:45:35 +0700 Subject: javac compiler message when class extends record Message-ID: Hello! Consider the following code: class Test extends Record {} When I compile it (build 14-ea+27-1339) I see the following message: Test.java:1: error: records cannot directly extend Record class Test extends Record {} ^ Note: Test.java uses preview language features. Note: Recompile with -Xlint:preview for details. 1 error I think it's somewhat confusing as it's not a record at all. For comparison, here's what we have if we change Record to Enum: Test.java:1: error: classes cannot directly extend java.lang.Enum class Test extends Enum {} ^ I expect a similar message like "classes cannot directly extend java.lang.Record" in the first case. WDYT? With best regards, Tagir Valeev. From amaembo at gmail.com Thu Dec 19 04:48:46 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Thu, 19 Dec 2019 11:48:46 +0700 Subject: javac compiler message when class extends record In-Reply-To: References: Message-ID: Btw note that "record Test() extends Record {}" is not parseable at all. The compiler message here is the following: Test.java:1: error: '{' expected record Test() extends Record {} ^ So "records cannot directly extend Record" is never displayed for the records. With best regards, Tagir Valeev. On Thu, Dec 19, 2019 at 11:45 AM Tagir Valeev wrote: > > Hello! > > Consider the following code: > > class Test extends Record {} > > When I compile it (build 14-ea+27-1339) I see the following message: > > Test.java:1: error: records cannot directly extend Record > class Test extends Record {} > ^ > Note: Test.java uses preview language features. > Note: Recompile with -Xlint:preview for details. > 1 error > > I think it's somewhat confusing as it's not a record at all. For > comparison, here's what we have if we change Record to Enum: > > Test.java:1: error: classes cannot directly extend java.lang.Enum > class Test extends Enum {} > ^ > > I expect a similar message like "classes cannot directly extend > java.lang.Record" in the first case. WDYT? > > With best regards, > Tagir Valeev. From maurizio.cimadamore at oracle.com Thu Dec 19 09:32:13 2019 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Thu, 19 Dec 2019 09:32:13 +0000 Subject: javac compiler message when class extends record In-Reply-To: References: Message-ID: <7abb6728-73ca-c2c6-2dd2-883d60a005e5@oracle.com> I agree that the message should align with that we have for enums (so, the message should speak about "classes" not "records"). As for records with 'extends' clause not being parseable, I observe the same with enums: jshell> enum E extends Foo { } |? Error: |? '{' expected |? enum E extends Foo { } |??????? ^ |? Error: |? enum constant expected here |? enum E extends Foo { } |???????? ^ |? Error: |? reached end of file while parsing |? enum E extends Foo { } |??????????????????????? ^ So I think we're at least consistent there (we might want, one day, to improve this on both fronts). Maurizio On 19/12/2019 04:48, Tagir Valeev wrote: > Btw note that "record Test() extends Record {}" is not parseable at > all. The compiler message here is the following: > > Test.java:1: error: '{' expected > record Test() extends Record {} > ^ > > So "records cannot directly extend Record" is never displayed for the records. > > With best regards, > Tagir Valeev. > > On Thu, Dec 19, 2019 at 11:45 AM Tagir Valeev wrote: >> Hello! >> >> Consider the following code: >> >> class Test extends Record {} >> >> When I compile it (build 14-ea+27-1339) I see the following message: >> >> Test.java:1: error: records cannot directly extend Record >> class Test extends Record {} >> ^ >> Note: Test.java uses preview language features. >> Note: Recompile with -Xlint:preview for details. >> 1 error >> >> I think it's somewhat confusing as it's not a record at all. For >> comparison, here's what we have if we change Record to Enum: >> >> Test.java:1: error: classes cannot directly extend java.lang.Enum >> class Test extends Enum {} >> ^ >> >> I expect a similar message like "classes cannot directly extend >> java.lang.Record" in the first case. WDYT? >> >> With best regards, >> Tagir Valeev. From vicente.romero at oracle.com Thu Dec 19 13:46:54 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Thu, 19 Dec 2019 08:46:54 -0500 Subject: javac compiler message when class extends record In-Reply-To: References: Message-ID: thanks Tagir, I have created [1] to track this, Vicente [1] https://bugs.openjdk.java.net/browse/JDK-8236266 On 12/18/19 11:45 PM, Tagir Valeev wrote: > Hello! > > Consider the following code: > > class Test extends Record {} > > When I compile it (build 14-ea+27-1339) I see the following message: > > Test.java:1: error: records cannot directly extend Record > class Test extends Record {} > ^ > Note: Test.java uses preview language features. > Note: Recompile with -Xlint:preview for details. > 1 error > > I think it's somewhat confusing as it's not a record at all. For > comparison, here's what we have if we change Record to Enum: > > Test.java:1: error: classes cannot directly extend java.lang.Enum > class Test extends Enum {} > ^ > > I expect a similar message like "classes cannot directly extend > java.lang.Record" in the first case. WDYT? > > With best regards, > Tagir Valeev. From sormuras at gmail.com Thu Dec 19 17:10:57 2019 From: sormuras at gmail.com (Christian Stein) Date: Thu, 19 Dec 2019 18:10:57 +0100 Subject: The (potential) Return Of The Constant Interface Pattern Message-ID: Hi. After reading https://https://openjdk.java.net/jeps/360 I wonder if an empty set of permits is allowed for an sealed interface. Something like this: sealed interface Constant permits EMPTY_SET { Number N = 123; } Looking at resurrecting the "constant interface pattern" -- without the disadvantage of somebody being able to implement that interface even in the same maintenance domain as the type itself. Cheers, Christian From brian.goetz at oracle.com Thu Dec 19 17:32:15 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Thu, 19 Dec 2019 12:32:15 -0500 Subject: The (potential) Return Of The Constant Interface Pattern In-Reply-To: References: Message-ID: <07DC2459-2C26-4042-B887-53B55C278349@oracle.com> Currently abstract classes and interfaces with no permitted subtypes are forbidden. The reason the ?constant interface anti pattern? got off the ground at all is that it seemed like a clever abuse of the (flawed) inheritance of fields from interfaces. What I think you?re saying is: we need a place to put static fields (and maybe methods), and, while we have final classes, they?re annoying because you need to declare an inaccessible constructor to prevent them from being instantiated, and a sealed { abstract class, interface } with no permitted subtypes would be a shorter path to get to ?non instantiable classes?? (Indeed, this is an argument that could have been made 25 years ago: ?can we have final interfaces??.) I don?t think that getting there via sealed interfaces is really any more attractive than getting there via final classes with an inaccessible constructor; both seem to be stretching the intent equally?. > On Dec 19, 2019, at 12:10 PM, Christian Stein wrote: > > Hi. > > After reading https://https://openjdk.java.net/jeps/360 I wonder > if an empty set of permits is allowed for an sealed interface. > > Something like this: > > sealed interface Constant permits EMPTY_SET { > Number N = 123; > } > > Looking at resurrecting the "constant interface pattern" -- > without the disadvantage of somebody being able to > implement that interface even in the same maintenance > domain as the type itself. > > Cheers, > Christian From lucius.q.user at gmail.com Thu Dec 19 21:58:01 2019 From: lucius.q.user at gmail.com (Lucius User) Date: Fri, 20 Dec 2019 00:58:01 +0300 Subject: The (potential) Return Of The Constant Interface Pattern In-Reply-To: <07DC2459-2C26-4042-B887-53B55C278349@oracle.com> References: <07DC2459-2C26-4042-B887-53B55C278349@oracle.com> Message-ID: Hi. It is quite possible that i am missing something, but isn't it possible to "just" allow a class to both have ACC_FINAL and ACC_ABSTRACT, with the same effect as having a private constructor? Regards, Lucius. > On 19 Dec 2019, at 20:32, Brian Goetz wrote: > > Currently abstract classes and interfaces with no permitted subtypes are forbidden. > > The reason the ?constant interface anti pattern? got off the ground at all is that it seemed like a clever abuse of the (flawed) inheritance of fields from interfaces. > > What I think you?re saying is: we need a place to put static fields (and maybe methods), and, while we have final classes, they?re annoying because you need to declare an inaccessible constructor to prevent them from being instantiated, and a sealed { abstract class, interface } with no permitted subtypes would be a shorter path to get to ?non instantiable classes?? (Indeed, this is an argument that could have been made 25 years ago: ?can we have final interfaces??.) > > I don?t think that getting there via sealed interfaces is really any more attractive than getting there via final classes with an inaccessible constructor; both seem to be stretching the intent equally?. > >> On Dec 19, 2019, at 12:10 PM, Christian Stein wrote: >> >> Hi. >> >> After reading https://https://openjdk.java.net/jeps/360 I wonder >> if an empty set of permits is allowed for an sealed interface. >> >> Something like this: >> >> sealed interface Constant permits EMPTY_SET { >> Number N = 123; >> } >> >> Looking at resurrecting the "constant interface pattern" -- >> without the disadvantage of somebody being able to >> implement that interface even in the same maintenance >> domain as the type itself. >> >> Cheers, >> Christian > From scolebourne at joda.org Fri Dec 20 10:17:30 2019 From: scolebourne at joda.org (Stephen Colebourne) Date: Fri, 20 Dec 2019 10:17:30 +0000 Subject: =?UTF-8?Q?Re=3A_Records_=E2=80=94_Dealing_with_nullable_values?= In-Reply-To: <1010314288.981822.1576408241635.JavaMail.zimbra@u-pem.fr> References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> <1010314288.981822.1576408241635.JavaMail.zimbra@u-pem.fr> Message-ID: On Sun, 15 Dec 2019 at 11:10, Remi Forax wrote: > wrapping my head around what you are saying, if you have a getter that returns an Optional and rarely a constructor or a setter that takes Optional, > it means that your class is mutable, right ? No, our classes are all immutable, eg. https://github.com/OpenGamma/Strata/blob/master/modules/product/src/main/java/com/opengamma/strata/product/TradeInfo.java#L40 Bear in mind that Optional is not serializable, and while we might all hate Serializable it is a very popular mechanism. Right now, having a field be an instance of Optional is not really something to recommend IMO (it certainly divides opinion). Our approach is documented here: https://blog.joda.org/2015/08/java-se-8-optional-pragmatic-approach.html (and I suspect has been reasonably widely adopted as an approach). > we should communicate more on that, records are not beans, i repeat, records are not beans ! > you will be disappointed if you try to replace all your beans by records. My personal view is that communication won't be enough. The shorter syntax for records is *so* appealing that it will be used in many, many places where it really isn't that appropriate. This is why I have consistently argued that records should only be introduced alongside a fuller solution for the bean use cases, as outlined in my last mail [1]. Unlike switch, where I disagree with the adopted solution but any damage is limited to within a method, over-use of records affects the API of a project and thus can't be easily rolled back or altered later. I fully understand the desire to "get records done", but just like "get brexit done", my view is that an incomplete solution will result in a worse result during adoption. Stephen [1] http://mail.openjdk.java.net/pipermail/amber-dev/2019-December/005383.html From brian.goetz at oracle.com Fri Dec 20 16:33:54 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Fri, 20 Dec 2019 11:33:54 -0500 Subject: The (potential) Return Of The Constant Interface Pattern In-Reply-To: References: <07DC2459-2C26-4042-B887-53B55C278349@oracle.com> Message-ID: <580d0256-9fc7-4cc4-b813-9e0d428d5760@oracle.com> Yes and no :) From the perspective of the language and JVM specs, yes, it is indeed a trivial change to say that these bits (either at the ACC_* level or at the language modifier level) can be combined. The question is whether the resulting language is perceived as better or worse for this.? I would expect the first -- and persistent -- reaction of nearly all users, when they encounter "abstract final class C { ... }" is: WTF?? It is hard to imagine at first what the purpose of an "abstract final" class would be; even when they learn that "abstract final" is a fancy name for "nonegleton" (like a singleton, but with one fewer instance), it will likely forever feel like a hack, because the intuitive meaning of these modifiers to most users doesn't lend themselves to easy combination.? The result is that the language becomes harder to learn and use; this is the hidden cost. You are basically arguing: "I want nonegletons (though I might be happy with singletons in their place), and it seems cheap to get there by combining abstract and final, so let's do that."? Which is a reasonable argument as far as it goes, but I suspect that this is going to be one of those cases where you bought something mostly because it was cheap, and are now stuck with something that is cheaper than you want. (If the language had a `non-instantiable` modifier (which IMO does not carry it's conceptual weight), a reasonable translation strategy would indeed be ACC_ABSTRACT + ACC_FINAL.) On 12/19/2019 4:58 PM, Lucius User wrote: > Hi. > > It is quite possible that i am missing something, but isn't it possible to "just" allow a class to both have ACC_FINAL and ACC_ABSTRACT, with the same effect as having a private constructor? > > Regards, > Lucius. > >> On 19 Dec 2019, at 20:32, Brian Goetz wrote: >> >> Currently abstract classes and interfaces with no permitted subtypes are forbidden. >> >> The reason the ?constant interface anti pattern? got off the ground at all is that it seemed like a clever abuse of the (flawed) inheritance of fields from interfaces. >> >> What I think you?re saying is: we need a place to put static fields (and maybe methods), and, while we have final classes, they?re annoying because you need to declare an inaccessible constructor to prevent them from being instantiated, and a sealed { abstract class, interface } with no permitted subtypes would be a shorter path to get to ?non instantiable classes?? (Indeed, this is an argument that could have been made 25 years ago: ?can we have final interfaces??.) >> >> I don?t think that getting there via sealed interfaces is really any more attractive than getting there via final classes with an inaccessible constructor; both seem to be stretching the intent equally?. >> >>> On Dec 19, 2019, at 12:10 PM, Christian Stein wrote: >>> >>> Hi. >>> >>> After reading https://https://openjdk.java.net/jeps/360 I wonder >>> if an empty set of permits is allowed for an sealed interface. >>> >>> Something like this: >>> >>> sealed interface Constant permits EMPTY_SET { >>> Number N = 123; >>> } >>> >>> Looking at resurrecting the "constant interface pattern" -- >>> without the disadvantage of somebody being able to >>> implement that interface even in the same maintenance >>> domain as the type itself. >>> >>> Cheers, >>> Christian From vicente.romero at oracle.com Fri Dec 20 18:05:51 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Fri, 20 Dec 2019 18:05:51 +0000 Subject: hg: amber/amber: 393 new changesets Message-ID: <201912201806.xBKI6D3K006325@aojmv0008.oracle.com> Changeset: 60bdcb9a7b94 Author: mli Date: 2019-11-28 13:48 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/60bdcb9a7b94 8232446: logging enhancement for rmi when socket closed Reviewed-by: rriggs, plevart ! src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPConnection.java ! src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPTransport.java Changeset: d67bb40f422c Author: jwilhelm Date: 2019-11-28 07:05 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/d67bb40f422c Added tag jdk-14+25 for changeset 17d242844fc9 ! .hgtags Changeset: 24e8cdead5f3 Author: ssahoo Date: 2019-11-27 22:11 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/24e8cdead5f3 8234725: sun/security/ssl/SSLContextImpl tests support TLSv1.3 Summary: Missing TLSv1.3 test cases Reviewed-by: xuelei ! test/jdk/sun/security/ssl/SSLContextImpl/IllegalProtocolProperty.java ! test/jdk/sun/security/ssl/SSLContextImpl/SSLContextVersion.java Changeset: 1d6e62764eee Author: bulasevich Date: 2019-11-28 10:57 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/1d6e62764eee 8234891: AArch64: Fix build failure after JDK-8234387 Reviewed-by: vlivanov, smonteith ! src/hotspot/cpu/aarch64/aarch64.ad Changeset: 643d9cf3d8fc Author: mdoerr Date: 2019-11-28 12:05 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/643d9cf3d8fc 8234645: ARM32: C1: PatchingStub for field access: not enough bytes Reviewed-by: cgo, goetz ! src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp Changeset: 219ec11136d9 Author: dfuchs Date: 2019-11-28 12:28 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/219ec11136d9 8223196: java/nio/channels/spi/SelectorProvider/inheritedChannel/InheritedChannelTest.java fails on Solaris SPARC Summary: The test is fixed to use InetAddress.getLocalHost consistently, instead of a mix of getLocalHost/wildcard addresses. Reviewed-by: chegar, vtewari ! test/jdk/java/nio/channels/spi/SelectorProvider/inheritedChannel/Launcher.java ! test/jdk/java/nio/channels/spi/SelectorProvider/inheritedChannel/StateTest.java Changeset: bdf999e08a3a Author: cgo Date: 2019-11-27 10:13 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/bdf999e08a3a 8234807: [TESTBUG] LoopRotateBadNodeBudget fails for client VMs due to Unrecognized VM option PartialPeelNewPhiDelta Reviewed-by: kvn ! test/hotspot/jtreg/compiler/loopopts/LoopRotateBadNodeBudget.java Changeset: fc216dcef2bb Author: fyang Date: 2019-11-04 16:10 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/fc216dcef2bb 8233466: aarch64: remove unnecessary load of mdo when profiling return and parameters type Reviewed-by: adinn ! src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp Changeset: 70f49f08c9e6 Author: cgo Date: 2019-11-28 16:11 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/70f49f08c9e6 8234894: [TESTBUG] TestEliminateLocksOffCrash fails for client VMs due to Unrecognized VM option EliminateLocks Reviewed-by: thartmann ! test/hotspot/jtreg/compiler/escapeAnalysis/TestEliminateLocksOffCrash.java Changeset: be238525d240 Author: lucy Date: 2019-11-28 16:28 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/be238525d240 8234583: PrintAssemblyOptions isn't passed to hsdis library Reviewed-by: vlivanov, mdoerr ! src/hotspot/share/compiler/disassembler.cpp Changeset: 72f3dd43dd28 Author: egahlin Date: 2019-11-28 16:38 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/72f3dd43dd28 8234888: EventStream::close doesn't abort streaming thread Reviewed-by: mgronlun, mseledtsov ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/AbstractEventStream.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkParser.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventDirectoryStream.java ! test/jdk/jdk/jfr/api/consumer/recordingstream/TestClose.java Changeset: b42eaca7d234 Author: jboes Date: 2019-11-28 13:02 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/b42eaca7d234 8233185: HttpServer.stop() blocks indefinitely when called on dispatch thread Summary: Skip dispatcherThread.join() if current thread is the dispatcherThread Reviewed-by: dfuchs, msheppar, vtewari ! src/jdk.httpserver/share/classes/sun/net/httpserver/ServerImpl.java + test/jdk/com/sun/net/httpserver/HttpServerTest.java Changeset: 43eee1237934 Author: cito Date: 2019-11-28 18:30 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/43eee1237934 8232594: Make the output of the JFR command duration more user friendly Reviewed-by: egahlin, cito Contributed-by: chiroito107 at gmail.com, erik.gahlin at oracle.com ! src/jdk.jfr/share/classes/jdk/jfr/internal/Utils.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/tool/PrettyWriter.java + test/jdk/jdk/jfr/jvm/TestFormatDuration.java Changeset: 6f12009ea9d7 Author: pconcannon Date: 2019-11-28 16:49 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/6f12009ea9d7 8233307: MulticastSocket getOption(IP_MULTICAST_IF) returns interface when not set Summary: The MulticastSocket method getOption has been changed to conform to the behavior described in StandardSocketOptions.IP_MULTICAST_IF. Reviewed-by: chegar, dfuchs ! src/java.base/share/classes/java/net/MulticastSocket.java ! src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c ! src/java.base/windows/native/libnet/TwoStacksPlainDatagramSocketImpl.c + test/jdk/java/net/NetworkInterface/NoSetNetworkInterface.java Changeset: f29e5cd27300 Author: rhalade Date: 2019-11-28 10:43 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/f29e5cd27300 8233223: Add Amazon Root CA certificates Reviewed-by: mullan + make/data/cacerts/amazonrootca1 + make/data/cacerts/amazonrootca2 + make/data/cacerts/amazonrootca3 + make/data/cacerts/amazonrootca4 + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/AmazonCA.java ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: e0d919d7c1a6 Author: jjiang Date: 2019-11-29 14:07 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/e0d919d7c1a6 8234724: javax/net/ssl/templates/SSLSocketSSLEngineTemplate.java supports TLSv1.3 Reviewed-by: xuelei ! test/jdk/javax/net/ssl/templates/SSLSocketSSLEngineTemplate.java Changeset: 753ab8dcdbba Author: ssahoo Date: 2019-11-28 22:29 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/753ab8dcdbba 8234723: javax/net/ssl/TLS tests support TLSv1.3 Summary: Missing TLSv1.3 test cases Reviewed-by: xuelei ! test/jdk/javax/net/ssl/TLS/TLSClientPropertyTest.java ! test/jdk/javax/net/ssl/TLS/TestJSSEClientDefaultProtocol.java ! test/jdk/javax/net/ssl/TLS/TestJSSEClientProtocol.java ! test/jdk/javax/net/ssl/TLS/TestJSSEServerProtocol.java Changeset: 7089399d6ade Author: mbaesken Date: 2019-11-28 09:23 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/7089399d6ade 8234625: hs test serviceability/sa/ClhsdbCDSCore.java fails on macOS 10.15 Reviewed-by: clanger, iignatyev ! test/hotspot/jtreg/serviceability/sa/ClhsdbCDSCore.java Changeset: 70021dbed82b Author: bulasevich Date: 2019-11-29 11:28 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/70021dbed82b 8234893: ARM32: build failure after JDK-8234387 Reviewed-by: vlivanov ! src/hotspot/cpu/arm/arm.ad ! src/hotspot/cpu/arm/arm_32.ad Changeset: 9ee940f1de90 Author: tschatzl Date: 2019-11-29 10:20 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/9ee940f1de90 8227739: Merge cost predictions for scanning cards and log buffer entries Summary: Revamp the cost predictions for the changes in JDK-8200545 and JDK-8213108. Reviewed-by: sjohanss, kbarrett ! src/hotspot/share/gc/g1/g1Analytics.cpp ! src/hotspot/share/gc/g1/g1Analytics.hpp ! src/hotspot/share/gc/g1/g1CardTable.hpp ! src/hotspot/share/gc/g1/g1CardTable.inline.hpp ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp ! src/hotspot/share/gc/g1/g1HotCardCache.cpp ! src/hotspot/share/gc/g1/g1HotCardCache.hpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Policy.hpp ! src/hotspot/share/gc/g1/g1RemSet.cpp Changeset: 11ff4e485670 Author: tschatzl Date: 2019-11-29 10:20 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/11ff4e485670 8227434: G1 predictions may over/underflow with high variance input Summary: Clamp G1 prediction output to sensible values. Reviewed-by: lkorinth, sjohanss ! src/hotspot/share/gc/g1/g1Analytics.cpp ! src/hotspot/share/gc/g1/g1Analytics.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1IHOPControl.cpp ! src/hotspot/share/gc/g1/g1IHOPControl.hpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Predictions.hpp ! src/hotspot/share/gc/g1/survRateGroup.cpp ! test/hotspot/gtest/gc/g1/test_g1Predictions.cpp Changeset: 5775e4825e58 Author: tschatzl Date: 2019-11-29 10:20 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/5775e4825e58 8233998: New young regions registered too early in collection set Reviewed-by: sangheki, sjohanss ! src/hotspot/share/gc/g1/g1CollectionSet.cpp Changeset: ae2eb76c486d Author: mbaesken Date: 2019-11-28 13:02 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/ae2eb76c486d 8234821: remove unused functions from libjli Reviewed-by: clanger, alanb ! src/java.base/macosx/native/libjli/java_md_macosx.m ! src/java.base/share/native/libjli/java.c ! src/java.base/share/native/libjli/java.h ! src/java.base/unix/native/libjli/java_md_common.c ! src/java.base/unix/native/libjli/java_md_solinux.c ! src/java.base/windows/native/libjli/java_md.c Changeset: 5e8f9713e343 Author: neliasso Date: 2019-11-29 11:26 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/5e8f9713e343 8234520: ZGC: C2: Oop instance cloning causing skipped compiles Reviewed-by: pliden, vlivanov ! src/hotspot/share/gc/shared/c2/barrierSetC2.cpp ! src/hotspot/share/gc/shared/c2/barrierSetC2.hpp ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp ! src/hotspot/share/gc/z/zBarrierSetRuntime.cpp ! src/hotspot/share/gc/z/zBarrierSetRuntime.hpp ! src/hotspot/share/opto/arraycopynode.hpp Changeset: 3636bab5e81e Author: rehn Date: 2019-11-29 12:09 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/3636bab5e81e 8234086: VM operation can be simplified Reviewed-by: kbarrett, dholmes, dcubed ! src/hotspot/share/jfr/leakprofiler/utilities/vmOperation.hpp ! src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp ! src/hotspot/share/runtime/biasedLocking.cpp ! src/hotspot/share/runtime/handshake.cpp ! src/hotspot/share/runtime/safepoint.cpp ! src/hotspot/share/runtime/safepoint.hpp ! src/hotspot/share/runtime/synchronizer.cpp ! src/hotspot/share/runtime/synchronizer.hpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/vmOperations.cpp ! src/hotspot/share/runtime/vmOperations.hpp ! src/hotspot/share/runtime/vmThread.cpp ! src/hotspot/share/runtime/vmThread.hpp ! test/hotspot/gtest/threadHelper.inline.hpp Changeset: 851a389fc54d Author: adinn Date: 2019-11-29 15:37 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/851a389fc54d 8232828: AArch64: compiler/c2/aarch64/TestVolatilesG1.java fails after JDK-8225776 Reviewed-by: aph ! test/hotspot/jtreg/compiler/c2/aarch64/TestVolatiles.java Changeset: 2c3578aa0bdf Author: egahlin Date: 2019-11-29 17:31 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/2c3578aa0bdf 8234671: JFR api/consumer/recordingstream/TestStart.java failed due to timeout at testStartTwice() Reviewed-by: mgronlun ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/AbstractEventStream.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/ChunkParser.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventDirectoryStream.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/StreamConfiguration.java ! test/jdk/jdk/jfr/api/consumer/recordingstream/TestClose.java ! test/jdk/jdk/jfr/api/consumer/recordingstream/TestOnEvent.java Changeset: f280911d3427 Author: iklam Date: 2019-11-29 14:11 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/f280911d3427 8230385: [cds] No message is logged when shared image cannot be used due to mismatched configuration Reviewed-by: stuefe, dholmes, ccheung ! src/hotspot/share/runtime/arguments.cpp Changeset: 289000934908 Author: alanb Date: 2019-11-30 16:21 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/289000934908 8234805: (dc) Remove JNI upcall from DatagramChannel.receive implementation Reviewed-by: dfuchs, chegar ! src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java + src/java.base/share/classes/sun/nio/ch/NativeSocketAddress.java + src/java.base/share/native/libnio/ch/NativeSocketAddress.c ! src/java.base/unix/native/libnio/ch/DatagramChannelImpl.c ! src/java.base/windows/native/libnio/ch/DatagramChannelImpl.c + test/jdk/java/nio/channels/DatagramChannel/ManySenders.java Changeset: 5b96c12f909d Author: phh Date: 2019-11-30 14:33 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/5b96c12f909d 8234541: C1 emits an empty message when it inlines successfully Summary: Use "inline" as the message when successfull Reviewed-by: thartmann, mdoerr Contributed-by: navy.xliu at gmail.com ! src/hotspot/share/c1/c1_GraphBuilder.cpp ! src/hotspot/share/c1/c1_GraphBuilder.hpp Changeset: 5028793d05ff Author: igerasim Date: 2019-12-01 15:29 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/5028793d05ff 8234147: Avoid looking up standard charsets in core libraries Reviewed-by: alanb ! src/java.base/share/classes/com/sun/java/util/jar/pack/Driver.java ! src/java.base/share/classes/com/sun/security/ntlm/NTLM.java ! src/java.base/share/classes/java/io/InputStreamReader.java ! src/java.base/share/classes/java/io/OutputStreamWriter.java ! src/java.base/share/classes/java/lang/CharacterName.java ! src/java.base/share/classes/java/net/InetAddress.java ! src/java.base/share/classes/java/net/SocksSocketImpl.java ! src/java.base/share/classes/java/net/URI.java ! src/java.base/share/classes/java/nio/file/FileChannelLinesSpliterator.java ! src/java.base/share/classes/java/nio/file/Files.java ! src/java.base/share/classes/java/util/Base64.java ! src/java.base/share/classes/java/util/Properties.java ! src/java.base/share/classes/java/util/PropertyResourceBundle.java ! src/java.base/share/classes/java/util/ServiceLoader.java ! src/java.base/share/classes/java/util/jar/Attributes.java ! src/java.base/share/classes/java/util/jar/Manifest.java ! src/java.base/share/classes/java/util/zip/ZipCoder.java ! src/java.base/share/classes/java/util/zip/ZipFile.java ! src/java.base/share/classes/java/util/zip/ZipInputStream.java ! src/java.base/share/classes/java/util/zip/ZipOutputStream.java ! src/java.base/share/classes/jdk/internal/module/IllegalAccessMaps.java ! src/java.base/share/classes/jdk/internal/module/ModulePath.java ! src/java.base/share/classes/jdk/internal/perf/Perf.java ! src/java.base/share/classes/jdk/internal/util/jar/JarIndex.java ! src/java.base/share/classes/sun/net/www/ParseUtil.java ! src/java.base/share/classes/sun/net/www/http/ChunkedInputStream.java ! src/java.base/share/classes/sun/net/www/http/ChunkedOutputStream.java ! src/java.base/share/classes/sun/net/www/protocol/http/BasicAuthentication.java ! src/java.base/share/classes/sun/net/www/protocol/http/DigestAuthentication.java ! src/java.base/share/classes/sun/nio/cs/ThreadLocalCoders.java ! src/java.base/share/classes/sun/util/PropertyResourceBundleCharset.java ! src/java.base/unix/classes/sun/nio/fs/UnixFileStore.java ! src/java.net.http/share/classes/jdk/internal/net/http/common/Utils.java ! src/java.prefs/share/classes/java/util/prefs/XmlSupport.java ! src/java.sql.rowset/share/classes/com/sun/rowset/CachedRowSetImpl.java ! test/jdk/java/lang/reflect/AccessibleObject/TrySetAccessibleTest.java Changeset: 8dcd966f7fd4 Author: jlahoda Date: 2019-12-02 10:58 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/8dcd966f7fd4 8233524: Wrong module name for \"package P is declared in the unnamed module, but module M does not read it\" Summary: Using the correct placeholder for the module name. Reviewed-by: jjg ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Changeset: f5f494bd4d3e Author: jlahoda Date: 2019-12-02 10:58 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/f5f494bd4d3e 8234078: Missing license headers in a few javac files Reviewed-by: vromero ! make/langtools/tools/propertiesparser/resources/templates.properties ! src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor7.java - src/jdk.compiler/share/classes/META-INF/services/com.sun.tools.javac.platform.PlatformProvider - src/jdk.compiler/share/classes/com/sun/tools/javac/services/javax.tools.JavaCompilerTool Changeset: e199f4a62e66 Author: tschatzl Date: 2019-12-02 14:21 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/e199f4a62e66 8233919: Incrementally calculate the occupied cards in a heap region remembered set Summary: Instead of iterating over the remembered set card containers, continuously update a single counter per remembered set about occupancy. Reviewed-by: sangheki, sjohanss ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp ! src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.cpp ! src/hotspot/share/gc/g1/heapRegionRemSet.cpp ! src/hotspot/share/gc/g1/heapRegionRemSet.hpp ! src/hotspot/share/gc/g1/heapRegionRemSet.inline.hpp ! src/hotspot/share/gc/g1/sparsePRT.cpp ! src/hotspot/share/gc/g1/sparsePRT.hpp + src/hotspot/share/gc/g1/sparsePRT.inline.hpp Changeset: 7dfcc42ad35b Author: tschatzl Date: 2019-12-02 14:21 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/7dfcc42ad35b 8233588: Clean up SurvRateGroup Summary: Remove unnecessary members, enforce stricter visibility within use. Reviewed-by: sangheki, kbarrett ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Policy.hpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp ! src/hotspot/share/gc/g1/survRateGroup.cpp ! src/hotspot/share/gc/g1/survRateGroup.hpp Changeset: d1b2fa77e75e Author: tschatzl Date: 2019-12-02 14:21 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/d1b2fa77e75e 8231579: G1's incremental calculation of region elapsed time always uses the same age group for prediction Summary: Separate calculation of time required for copying objects from non-copy time. Calculate the former in bulk, and the latter as usual, combining them as needed. Reviewed-by: sjohanss, kbarrett ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Policy.hpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp Changeset: 676eb5c4a3e4 Author: tschatzl Date: 2019-12-02 14:21 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/676eb5c4a3e4 8234574: Rename prediction methods in G1Analytics Reviewed-by: sjohanss, sangheki ! src/hotspot/share/gc/g1/g1Analytics.cpp ! src/hotspot/share/gc/g1/g1Analytics.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1IHOPControl.cpp ! src/hotspot/share/gc/g1/g1IHOPControl.hpp ! src/hotspot/share/gc/g1/g1Predictions.hpp ! src/hotspot/share/gc/g1/survRateGroup.cpp ! src/hotspot/share/gc/g1/survRateGroup.hpp ! test/hotspot/gtest/gc/g1/test_g1Predictions.cpp Changeset: 1d4f51045433 Author: tschatzl Date: 2019-12-02 14:21 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/1d4f51045433 8234179: Move HeapRegion::_recorded_rs_length/_predicted_elapsed_time_ms into G1CollectionSet Reviewed-by: sjohanss, lkorinth ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp Changeset: d680c3ff80f6 Author: tschatzl Date: 2019-12-02 14:21 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/d680c3ff80f6 8234586: Rename survRateGroup.?pp files to g1SurvRateGroup.?pp Reviewed-by: kbarrett, sjohanss + src/hotspot/share/gc/g1/g1SurvRateGroup.cpp + src/hotspot/share/gc/g1/g1SurvRateGroup.hpp ! src/hotspot/share/gc/g1/heapRegion.hpp - src/hotspot/share/gc/g1/survRateGroup.cpp - src/hotspot/share/gc/g1/survRateGroup.hpp Changeset: a79eafba5b38 Author: tschatzl Date: 2019-12-02 14:21 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/a79eafba5b38 8234587: Rename the SurvRateGroup class to G1SurvRateGroup Reviewed-by: kbarrett, sangheki ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/g1Policy.hpp ! src/hotspot/share/gc/g1/g1SurvRateGroup.cpp ! src/hotspot/share/gc/g1/g1SurvRateGroup.hpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp Changeset: e79ece2eb1ba Author: coleenp Date: 2019-12-02 08:40 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/e79ece2eb1ba 8173361: various crashes in JvmtiExport::post_compiled_method_load Summary: Don't post information that uses metadata from unloaded nmethods Reviewed-by: eosterlund, dholmes, sspitsyn ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/jvmtiImpl.cpp ! src/hotspot/share/prims/jvmtiImpl.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/serviceThread.cpp ! src/hotspot/share/runtime/serviceThread.hpp ! src/hotspot/share/runtime/thread.hpp Changeset: 4774b50671ed Author: coleenp Date: 2019-12-02 09:02 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/4774b50671ed 8173658: JvmtiExport::post_class_unload() is broken for non-JavaThread initiators Summary: call extension ClassUnload event as a deferred event from the ServiceThread and remove unsafe arguments Reviewed-by: sspitsyn, dholmes ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/jvmtiExport.hpp ! src/hotspot/share/prims/jvmtiExtensions.cpp ! src/hotspot/share/prims/jvmtiImpl.cpp ! src/hotspot/share/prims/jvmtiImpl.hpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.inline.hpp ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/extension/EX03/ex03t001/ex03t001.cpp Changeset: 73da8751c395 Author: rriggs Date: 2019-12-02 09:45 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/73da8751c395 8233799: Review the need for overview.html in the java.time package Reviewed-by: dfuchs, naoto, lancea - src/java.base/share/classes/java/time/overview.html Changeset: 2baa1f8721b8 Author: hannesw Date: 2019-12-02 18:52 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/2baa1f8721b8 8223252: Update Javadoc help page with new search features Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties Changeset: d8b5e32ffa2f Author: xuelei Date: 2019-12-02 10:42 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/d8b5e32ffa2f 8235183: Remove the "HACK CODE" in comment Reviewed-by: jnimeh ! src/java.base/share/classes/sun/security/ssl/NamedGroup.java ! src/java.base/share/classes/sun/security/ssl/SSLEngineInputRecord.java ! src/java.base/share/classes/sun/security/ssl/SignatureScheme.java Changeset: f794ce3de310 Author: weijun Date: 2019-12-03 14:38 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/f794ce3de310 8234744: KeyStore.store can write wrong type of file Reviewed-by: mullan ! src/java.base/share/classes/sun/security/util/KeyStoreDelegator.java + test/jdk/sun/security/provider/KeyStore/WrongStoreType.java Changeset: 37434b8a1e8e Author: jiefu Date: 2019-12-03 09:36 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/37434b8a1e8e 8235218: Minimal VM is broken after JDK-8173361 Reviewed-by: dholmes ! src/hotspot/share/prims/jvmtiImpl.hpp Changeset: 0b1c61e76d60 Author: psadhukhan Date: 2019-11-21 14:43 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/0b1c61e76d60 8234385: [TESTBUG] java/awt/EventQueue/6980209/bug6980209.java fails in linux nightly Reviewed-by: serb ! test/jdk/java/awt/EventQueue/6980209/bug6980209.java Changeset: 5602e016309b Author: jdv Date: 2019-11-22 11:35 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/5602e016309b 8233696: [TESTBUG]Some jtreg tests fail when CAPS_LOCK is ON Reviewed-by: serb, prr ! test/jdk/java/awt/SplashScreen/MultiResolutionSplash/MultiResolutionSplashTest.java ! test/jdk/java/awt/SplashScreen/MultiResolutionSplash/unix/UnixMultiResolutionSplashTest.java ! test/jdk/java/awt/Toolkit/LockingKeyStateTest/LockingKeyStateTest.java ! test/jdk/java/awt/Toolkit/RealSync/Test.java ! test/jdk/javax/swing/JFileChooser/8041694/bug8041694.java Changeset: b256c7afe8cc Author: psadhukhan Date: 2019-11-25 11:20 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/b256c7afe8cc 8193544: Regression automated test '/open/test/jdk/javax/swing/JDialog/Transparency/TransparencyTest.java' fails Reviewed-by: serb ! test/jdk/javax/swing/JDialog/Transparency/TransparencyTest.java Changeset: aa3918700fea Author: prr Date: 2019-11-25 12:09 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/aa3918700fea 8227324: Upgrade to freetype 2.10.1 Reviewed-by: serb, jdv ! src/java.desktop/share/legal/freetype.md ! src/java.desktop/share/native/libfreetype/include/freetype/freetype.h ! src/java.desktop/share/native/libfreetype/include/freetype/fterrors.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftglyph.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftimage.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftmodapi.h ! src/java.desktop/share/native/libfreetype/include/freetype/ftoutln.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftcalc.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftobjs.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/ftstream.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/fttrace.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/internal.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/psaux.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgldict.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/sfnt.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/t1types.h ! src/java.desktop/share/native/libfreetype/include/freetype/internal/tttypes.h + src/java.desktop/share/native/libfreetype/include/freetype/internal/wofftypes.h ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.c ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.dat ! src/java.desktop/share/native/libfreetype/src/autofit/afblue.h ! src/java.desktop/share/native/libfreetype/src/autofit/afcjk.c ! src/java.desktop/share/native/libfreetype/src/autofit/afglobal.c ! src/java.desktop/share/native/libfreetype/src/autofit/aflatin.c ! src/java.desktop/share/native/libfreetype/src/autofit/afranges.c ! src/java.desktop/share/native/libfreetype/src/autofit/afscript.h ! src/java.desktop/share/native/libfreetype/src/autofit/afstyles.h ! src/java.desktop/share/native/libfreetype/src/base/ftbbox.c ! src/java.desktop/share/native/libfreetype/src/base/ftbitmap.c ! src/java.desktop/share/native/libfreetype/src/base/ftinit.c ! src/java.desktop/share/native/libfreetype/src/base/ftlcdfil.c ! src/java.desktop/share/native/libfreetype/src/base/ftobjs.c ! src/java.desktop/share/native/libfreetype/src/base/ftoutln.c ! src/java.desktop/share/native/libfreetype/src/base/ftstroke.c ! src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.c ! src/java.desktop/share/native/libfreetype/src/cff/cffobjs.c ! src/java.desktop/share/native/libfreetype/src/cff/cffparse.c ! src/java.desktop/share/native/libfreetype/src/cff/cffparse.h ! src/java.desktop/share/native/libfreetype/src/psaux/afmparse.c ! src/java.desktop/share/native/libfreetype/src/psaux/psfixed.h ! src/java.desktop/share/native/libfreetype/src/psaux/psfont.c ! src/java.desktop/share/native/libfreetype/src/psaux/psobjs.c ! src/java.desktop/share/native/libfreetype/src/psaux/psobjs.h ! src/java.desktop/share/native/libfreetype/src/raster/ftraster.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.c ! src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.h + src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff.c + src/java.desktop/share/native/libfreetype/src/sfnt/sfwoff.h ! src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.c ! src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.c ! src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.c ! src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttgload.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.h ! src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c ! src/java.desktop/share/native/libfreetype/src/truetype/ttpload.c ! src/java.desktop/share/native/libfreetype/src/type1/t1driver.c ! src/java.desktop/share/native/libfreetype/src/type1/t1load.c Changeset: 998cf5f99b8b Author: prr Date: 2019-11-26 09:50 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/998cf5f99b8b 8234769: Duplicate attribution in freetype.md Reviewed-by: psadhukhan ! src/java.desktop/share/legal/freetype.md Changeset: 1e563056dd3c Author: pbansal Date: 2019-11-27 11:05 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/1e563056dd3c 8230235: Rendering HTML with empty img attribute and documentBaseKey cause Exception Reviewed-by: serb, aivanov ! src/java.desktop/share/classes/javax/swing/text/html/ImageView.java + test/jdk/javax/swing/text/html/TestJLabelWithHTMLText.java Changeset: b4c6bc80171d Author: psadhukhan Date: 2019-11-27 13:35 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/b4c6bc80171d 8234786: Fix for JDK-8214578 breaks OS X 10.12 compatibility Reviewed-by: jdv ! src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.h Changeset: 327b35573471 Author: dbatrak Date: 2019-11-27 16:39 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/327b35573471 8210058: Algorithmic Italic font leans opposite angle in Printing Reviewed-by: prr, jdv, psadhukhan ! src/java.desktop/share/native/libfontmanager/freetypeScaler.c + test/jdk/java/awt/font/Rotate/A.ttf + test/jdk/java/awt/font/Rotate/RotatedItalicsTest.java Changeset: 7637e77c4c8a Author: psadhukhan Date: 2019-12-02 11:58 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/7637e77c4c8a 8234149: Several regression tests do not dispose Frame at end Reviewed-by: serb ! test/jdk/javax/swing/AbstractButton/6711682/bug6711682.java ! test/jdk/javax/swing/Action/8133039/bug8133039.java ! test/jdk/javax/swing/JButton/4368790/bug4368790.java ! test/jdk/javax/swing/JButton/4796987/bug4796987.java ! test/jdk/javax/swing/JColorChooser/Test8051548.java ! test/jdk/javax/swing/JComboBox/4523758/bug4523758.java ! test/jdk/javax/swing/JComboBox/6236162/bug6236162.java ! test/jdk/javax/swing/JComboBox/7195179/Test7195179.java ! test/jdk/javax/swing/JComboBox/8057893/bug8057893.java ! test/jdk/javax/swing/JComponent/4337267/bug4337267.java ! test/jdk/javax/swing/JComponent/6989617/bug6989617.java ! test/jdk/javax/swing/JComponent/7154030/bug7154030.java ! test/jdk/javax/swing/JEditorPane/4492274/bug4492274.java ! test/jdk/javax/swing/JFrame/4962534/bug4962534.java ! test/jdk/javax/swing/JFrame/8175301/ScaledFrameBackgroundTest.java ! test/jdk/javax/swing/JInternalFrame/5066752/bug5066752.java ! test/jdk/javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java ! test/jdk/javax/swing/JInternalFrame/InternalFrameIsNotCollectedTest.java ! test/jdk/javax/swing/JLabel/6596966/bug6596966.java ! test/jdk/javax/swing/JLayer/6824395/bug6824395.java ! test/jdk/javax/swing/JList/6462008/bug6462008.java ! test/jdk/javax/swing/JList/6510999/bug6510999.java ! test/jdk/javax/swing/JMenu/4417601/bug4417601.java ! test/jdk/javax/swing/JMenu/4515762/bug4515762.java ! test/jdk/javax/swing/JMenu/4692443/bug4692443.java ! test/jdk/javax/swing/JMenu/6359669/bug6359669.java ! test/jdk/javax/swing/JMenu/6470128/bug6470128.java ! test/jdk/javax/swing/JMenu/6538132/bug6538132.java ! test/jdk/javax/swing/JMenuBar/4750590/bug4750590.java ! test/jdk/javax/swing/JMenuItem/4171437/bug4171437.java ! test/jdk/javax/swing/JMenuItem/4654927/bug4654927.java ! test/jdk/javax/swing/JMenuItem/6209975/bug6209975.java ! test/jdk/javax/swing/JPopupMenu/4634626/bug4634626.java ! test/jdk/javax/swing/JPopupMenu/6217905/bug6217905.java ! test/jdk/javax/swing/JPopupMenu/6515446/bug6515446.java ! test/jdk/javax/swing/JPopupMenu/6580930/bug6580930.java ! test/jdk/javax/swing/JPopupMenu/6827786/bug6827786.java ! test/jdk/javax/swing/JPopupMenu/6987844/bug6987844.java ! test/jdk/javax/swing/JRadioButton/8041561/bug8041561.java ! test/jdk/javax/swing/JRadioButton/8075609/bug8075609.java ! test/jdk/javax/swing/JRootPane/4670486/bug4670486.java ! test/jdk/javax/swing/JScrollBar/4708809/bug4708809.java ! test/jdk/javax/swing/JScrollBar/4865918/bug4865918.java ! test/jdk/javax/swing/JScrollBar/6542335/bug6542335.java ! test/jdk/javax/swing/JScrollBar/bug4202954/bug4202954.java ! test/jdk/javax/swing/JSpinner/4973721/bug4973721.java ! test/jdk/javax/swing/JSplitPane/4885629/bug4885629.java ! test/jdk/javax/swing/JTabbedPane/4361477/bug4361477.java ! test/jdk/javax/swing/JTabbedPane/4624207/bug4624207.java ! test/jdk/javax/swing/JTabbedPane/6495408/bug6495408.java ! test/jdk/javax/swing/JTabbedPane/7161568/bug7161568.java ! test/jdk/javax/swing/JTabbedPane/8134116/Bug8134116.java ! test/jdk/javax/swing/JTable/4220171/bug4220171.java ! test/jdk/javax/swing/JTable/6777378/bug6777378.java Changeset: 8991f75a1409 Author: psadhukhan Date: 2019-12-03 11:52 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/8991f75a1409 Merge - src/hotspot/share/gc/g1/survRateGroup.cpp - src/hotspot/share/gc/g1/survRateGroup.hpp - src/java.base/share/classes/java/time/overview.html - src/jdk.compiler/share/classes/META-INF/services/com.sun.tools.javac.platform.PlatformProvider - src/jdk.compiler/share/classes/com/sun/tools/javac/services/javax.tools.JavaCompilerTool - src/jdk.zipfs/share/classes/jdk/nio/zipfs/JarFileSystem.java - src/jdk.zipfs/share/classes/jdk/nio/zipfs/JarFileSystemProvider.java - test/jdk/jdk/jfr/api/consumer/streaming/TestRepositoryMigration.java - test/jdk/sun/security/tools/jarsigner/warnings/BadKeyUsageTest.java - test/langtools/jdk/javadoc/doclet/testDocFiles/pkg/Test.java - test/langtools/jdk/javadoc/doclet/testDocFiles/pkg/doc-files/test.txt Changeset: 9eaef94e74b5 Author: psadhukhan Date: 2019-12-03 12:42 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/9eaef94e74b5 Merge Changeset: 90f3ea9785d5 Author: thartmann Date: 2019-12-03 08:29 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/90f3ea9785d5 8234617: C1: Incorrect result of field load due to missing narrowing conversion Summary: Emit an explicit conversion to get the correct field value after the write. Reviewed-by: vlivanov, mdoerr ! src/hotspot/share/c1/c1_GraphBuilder.cpp + test/hotspot/jtreg/compiler/conversions/Conversion.jasm + test/hotspot/jtreg/compiler/conversions/TestPrimitiveConversions.java Changeset: 1f2359ae7a86 Author: stefank Date: 2019-12-03 10:40 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/1f2359ae7a86 8234822: Limit ZGC jtreg-support to Windows 2019 Server Reviewed-by: iignatyev, eosterlund ! test/lib/sun/hotspot/gc/GC.java Changeset: d4a477d5080f Author: stefank Date: 2019-11-07 15:29 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/d4a477d5080f 8233299: Implementation: JEP 365: ZGC on Windows Reviewed-by: pliden, eosterlund ! make/autoconf/hotspot.m4 ! src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp + src/hotspot/os/windows/gc/z/zBackingFile_windows.cpp + src/hotspot/os/windows/gc/z/zBackingFile_windows.hpp + src/hotspot/os/windows/gc/z/zInitialize_windows.cpp + src/hotspot/os/windows/gc/z/zLargePages_windows.cpp + src/hotspot/os/windows/gc/z/zMapper_windows.cpp + src/hotspot/os/windows/gc/z/zMapper_windows.hpp + src/hotspot/os/windows/gc/z/zNUMA_windows.cpp + src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.cpp + src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.hpp + src/hotspot/os/windows/gc/z/zSyscall_windows.cpp + src/hotspot/os/windows/gc/z/zSyscall_windows.hpp + src/hotspot/os/windows/gc/z/zUtils_windows.cpp + src/hotspot/os/windows/gc/z/zVirtualMemory_windows.cpp Changeset: ac3c8cae4815 Author: mbaesken Date: 2019-11-29 09:52 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/ac3c8cae4815 8234741: enhance os::get_core_path on macOS Reviewed-by: clanger, gziemski ! src/hotspot/os/bsd/os_bsd.cpp Changeset: de99f7acea70 Author: mgronlun Date: 2019-12-03 12:41 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/de99f7acea70 8216041: [Event Request] - Deoptimization Reviewed-by: iignatyev, vlivanov, egahlin Contributed-by: Igor Ignatyev ! src/hotspot/share/code/codeBlob.hpp ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/jfr/metadata/metadata.xml ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.hpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp ! src/hotspot/share/runtime/deoptimization.cpp ! src/jdk.jfr/share/conf/jfr/default.jfc ! src/jdk.jfr/share/conf/jfr/profile.jfc + test/jdk/jdk/jfr/event/compiler/TestDeoptimization.java ! test/lib/jdk/test/lib/jfr/EventNames.java Changeset: d48638a26026 Author: michaelm Date: 2019-12-03 11:55 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/d48638a26026 8234823: java/net/Socket/Timeouts.java testcase testTimedConnect2() fails on Windows 10 Reviewed-by: alanb ! test/jdk/java/net/Socket/Timeouts.java Changeset: 721dc0c243e7 Author: michaelm Date: 2019-12-03 11:57 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/721dc0c243e7 8234824: java/nio/channels/SocketChannel/AdaptSocket.java fails on Windows 10 Reviewed-by: alanb ! test/jdk/java/nio/channels/SocketChannel/AdaptSocket.java Changeset: 0821487ef0ab Author: jlaskey Date: 2019-12-03 08:35 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/0821487ef0ab 8233116: Escape Sequences For Line Continuation and White Space (Preview) Reviewed-by: vromero, jlahoda, bchristi, mcimadamore ! 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 ! test/jdk/java/lang/String/TranslateEscapes.java ! test/langtools/tools/javac/TextBlockAPI.java ! test/langtools/tools/javac/TextBlockLang.java Changeset: 79fba633d07f Author: pliden Date: 2019-12-03 13:51 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/79fba633d07f 8234543: ZGC: Parallel pre-touch Reviewed-by: eosterlund, stefank ! src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.cpp ! src/hotspot/os/bsd/gc/z/zPhysicalMemoryBacking_bsd.hpp ! src/hotspot/os/linux/gc/z/zPhysicalMemoryBacking_linux.cpp ! src/hotspot/os/linux/gc/z/zPhysicalMemoryBacking_linux.hpp ! src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.cpp ! src/hotspot/os/windows/gc/z/zPhysicalMemoryBacking_windows.hpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zPageAllocator.cpp ! src/hotspot/share/gc/z/zPageAllocator.hpp ! src/hotspot/share/gc/z/zPhysicalMemory.cpp ! src/hotspot/share/gc/z/zPhysicalMemory.hpp ! src/hotspot/share/gc/z/zWorkers.cpp + test/hotspot/jtreg/gc/z/TestAlwaysPreTouch.java Changeset: aa12d1f0bc66 Author: hseigel Date: 2019-12-03 14:10 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/aa12d1f0bc66 8234656: Improve granularity of verifier logging Summary: Print brief output for log level 'info'. Print detailed output for 'debug' and 'trace'. Reviewed-by: iklam, lfoltan, dholmes ! src/hotspot/share/classfile/verifier.cpp ! test/hotspot/jtreg/runtime/logging/VerificationTest.java ! test/hotspot/jtreg/runtime/verifier/TraceClassRes.java Changeset: 2945676fa6ae Author: jboes Date: 2019-12-03 12:44 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/2945676fa6ae 8234964: failure_handler: gather more environment information on Windows, Solaris and Linux Summary: Add 'ifconfig -a' on Solaris and Linux, 'ipconfig /all' on Windows Reviewed-by: iignatyev, vtewari ! test/failure_handler/src/share/conf/linux.properties ! test/failure_handler/src/share/conf/mac.properties ! test/failure_handler/src/share/conf/solaris.properties ! test/failure_handler/src/share/conf/windows.properties Changeset: 99b71c5b02ff Author: rehn Date: 2019-12-03 15:32 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/99b71c5b02ff 8234796: Refactor Handshake::execute to take a more complex type than ThreadClosure Reviewed-by: dholmes, pliden, coleenp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentRefine.cpp ! src/hotspot/share/gc/g1/g1DirtyCardQueue.cpp ! src/hotspot/share/gc/g1/g1RemSetSummary.cpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/psScavenge.cpp ! src/hotspot/share/gc/shared/genCollectedHeap.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedup.cpp ! src/hotspot/share/gc/shared/stringdedup/stringDedup.hpp ! src/hotspot/share/gc/shared/workgroup.cpp ! src/hotspot/share/gc/shared/workgroup.hpp ! src/hotspot/share/gc/shenandoah/shenandoahUnload.cpp ! src/hotspot/share/gc/z/zCollectedHeap.cpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeap.hpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRuntimeWorkers.hpp ! src/hotspot/share/gc/z/zWorkers.hpp ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp ! src/hotspot/share/jfr/writers/jfrJavaEventWriter.cpp ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/prims/jvmtiEnvBase.cpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/biasedLocking.cpp ! src/hotspot/share/runtime/deoptimization.cpp ! src/hotspot/share/runtime/handshake.cpp ! src/hotspot/share/runtime/handshake.hpp ! src/hotspot/share/runtime/sweeper.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/runtime/threadSMR.inline.hpp ! src/hotspot/share/runtime/vmThread.cpp ! src/hotspot/share/utilities/globalCounter.cpp Changeset: 0c4b36eb590d Author: jjiang Date: 2019-12-04 00:06 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/0c4b36eb590d 8235255: ProblemList javax/net/ssl/templates/SSLSocketSSLEngineTemplate.java Reviewed-by: mullan ! test/jdk/ProblemList.txt Changeset: 252a8bb9f587 Author: eosterlund Date: 2019-12-03 16:13 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/252a8bb9f587 8234426: Sweeper should not CompiledIC::set_to_clean with ICStubs for is_unloading() nmethods Reviewed-by: stefank, thartmann ! src/hotspot/share/code/compiledMethod.cpp Changeset: cfed0da56a7b Author: eosterlund Date: 2019-12-03 16:13 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/cfed0da56a7b 8234662: Sweeper should keep current nmethod alive before yielding for ICStub refills Reviewed-by: pliden, stefank ! src/hotspot/share/code/compiledMethod.cpp ! src/hotspot/share/gc/shared/barrierSetNMethod.hpp Changeset: 54af3178cdbd Author: vlivanov Date: 2019-12-03 20:13 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/54af3178cdbd 8231430: C2: Memory stomp in max_array_length() for T_ILLEGAL type Reviewed-by: kvn, thartmann ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/opto/type.hpp Changeset: 138b0f3fe18c Author: vlivanov Date: 2019-12-03 20:13 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/138b0f3fe18c 8234923: Missed call_site_target nmethod dependency for non-fully initialized ConstantCallSite instance Reviewed-by: jrose ! src/hotspot/share/c1/c1_GraphBuilder.cpp ! src/hotspot/share/ci/ciCallSite.cpp ! src/hotspot/share/ci/ciCallSite.hpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/javaClasses.inline.hpp ! src/hotspot/share/opto/type.cpp ! src/java.base/share/classes/java/lang/invoke/ConstantCallSite.java ! test/jdk/java/lang/invoke/CallSiteTest.java Changeset: ca50cc82e443 Author: sspitsyn Date: 2019-12-03 19:45 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/ca50cc82e443 8235280: UnProblemList vmTestbase/nsk/jvmti/GetThreadState/thrstat001/TestDescription.java Summary: Remove test from ProblemList.txt. Reviewed-by: iignatyev ! test/hotspot/jtreg/ProblemList.txt Changeset: d66315fd78c3 Author: kbarrett Date: 2019-12-03 15:12 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/d66315fd78c3 8213415: BitMap::word_index_round_up overflow problems Summary: Limit BitMap sizes so to-word round-up can't overflow. Reviewed-by: tschatzl, stuefe ! src/hotspot/share/gc/parallel/parMarkBitMap.cpp ! src/hotspot/share/gc/parallel/parMarkBitMap.hpp ! src/hotspot/share/gc/parallel/parMarkBitMap.inline.hpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/utilities/bitMap.cpp ! src/hotspot/share/utilities/bitMap.hpp ! src/hotspot/share/utilities/bitMap.inline.hpp ! test/hotspot/gtest/utilities/test_bitMap_setops.cpp Changeset: 1ea1c063ad52 Author: rkennke Date: 2019-12-03 21:23 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/1ea1c063ad52 8235260: Shenandoah: Don't allow recycle-assist until concurrent roots are done Reviewed-by: zgu ! src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp ! src/hotspot/share/gc/shenandoah/shenandoahFreeSet.hpp Changeset: 68f9bbda438d Author: kbarrett Date: 2019-12-03 19:09 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/68f9bbda438d 8234779: Provide idiom for declaring classes noncopyable Summary: Add NONCOPYABLE macro and uses. Reviewed-by: dholmes, pliden, coleenp ! src/hotspot/os/aix/os_perf_aix.cpp ! src/hotspot/os/bsd/os_perf_bsd.cpp ! src/hotspot/os/bsd/semaphore_bsd.hpp ! src/hotspot/os/linux/os_perf_linux.cpp ! src/hotspot/os/linux/waitBarrier_linux.hpp ! src/hotspot/os/posix/os_posix.hpp ! src/hotspot/os/posix/semaphore_posix.hpp ! src/hotspot/os/solaris/os_perf_solaris.cpp ! src/hotspot/os/solaris/os_solaris.hpp ! src/hotspot/os/windows/os_perf_windows.cpp ! src/hotspot/os/windows/os_windows.hpp ! src/hotspot/os/windows/semaphore_windows.hpp ! src/hotspot/share/gc/g1/g1FreeIdSet.hpp ! src/hotspot/share/gc/g1/g1SharedDirtyCardQueue.hpp ! src/hotspot/share/gc/shared/oopStorage.hpp ! src/hotspot/share/gc/shared/oopStorage.inline.hpp ! src/hotspot/share/gc/shared/oopStorageParState.hpp ! src/hotspot/share/gc/shared/ptrQueue.hpp ! src/hotspot/share/gc/shared/taskqueue.hpp ! src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeapRegionSet.hpp ! src/hotspot/share/gc/z/zArray.hpp ! src/hotspot/share/gc/z/zList.hpp ! src/hotspot/share/jfr/jni/jfrJavaCall.hpp ! src/hotspot/share/memory/metaspaceClosure.hpp ! src/hotspot/share/oops/array.hpp ! src/hotspot/share/runtime/os_perf.hpp ! src/hotspot/share/runtime/semaphore.hpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/utilities/bitMap.hpp ! src/hotspot/share/utilities/globalDefinitions.hpp ! src/hotspot/share/utilities/lockFreeStack.hpp ! src/hotspot/share/utilities/ostream.hpp ! src/hotspot/share/utilities/singleWriterSynchronizer.hpp ! src/hotspot/share/utilities/waitBarrier.hpp ! src/hotspot/share/utilities/waitBarrier_generic.hpp Changeset: e3463d022cb9 Author: xuelei Date: 2019-12-03 17:15 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/e3463d022cb9 8235263: Revert TLS 1.3 change that wrapped IOExceptions Reviewed-by: mullan ! src/java.base/share/classes/sun/security/ssl/SSLSocketImpl.java Changeset: b8b80f27d7a9 Author: cjplummer Date: 2019-12-03 20:08 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/b8b80f27d7a9 8235221: Fix ProblemList.txt for sun/tools/jhsdb/HeapDumpTestWithActiveProcess.java Reviewed-by: iignatyev ! test/jdk/ProblemList.txt Changeset: f90eefff864e Author: iignatyev Date: 2019-12-03 20:23 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/f90eefff864e 8129092: compiler/intrinsics/classcast/NullCheckDroppingsTest.java testVarClassCast() can fail Reviewed-by: kvn ! test/hotspot/jtreg/compiler/intrinsics/klass/CastNullCheckDroppingsTest.java Changeset: a1802614d6fe Author: thartmann Date: 2019-12-04 07:07 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/a1802614d6fe 8234616: assert(0 <= i && i < _len) failed: illegal index in PhaseMacroExpand::expand_macro_nodes() Summary: Make sure the index into the macro node array is decremented on removal. Reviewed-by: vlivanov, kvn ! src/hotspot/share/opto/macro.cpp Changeset: 047b5d642743 Author: pli Date: 2019-11-29 03:48 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/047b5d642743 8234791: Fix Client VM build for x86_64 and AArch64 Reviewed-by: adinn, aph, thartmann ! src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp ! src/hotspot/share/runtime/arguments.cpp Changeset: 775b714a2e49 Author: mbaesken Date: 2019-12-03 11:41 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/775b714a2e49 8235243: handle VS2017 15.9 and VS2019 in abstract_vm_version Reviewed-by: dholmes, mdoerr ! src/hotspot/share/runtime/abstract_vm_version.cpp Changeset: 396b2290219f Author: jlahoda Date: 2019-12-04 09:38 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/396b2290219f 8234899: Compiler reports AssertionError for conditional operator ? : and pattern matching for instanceof Reviewed-by: mcimadamore ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTaskPool.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java + test/langtools/tools/javac/ConditionalExpressionResolvePending.java ! test/langtools/tools/javac/patterns/BindingsTest1.java Changeset: 4fcdea88d423 Author: jlahoda Date: 2019-12-04 09:38 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/4fcdea88d423 8234922: No compilation error reported not reported for a binding variable when loop broken with label Summary: Any break outside of a loop should confine the binding variables from the loop's condition to the loop Reviewed-by: mcimadamore ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java ! test/langtools/tools/javac/patterns/BindingsTest1.java ! test/langtools/tools/javac/patterns/BindingsTest2.java ! test/langtools/tools/javac/patterns/BindingsTest2.out + test/langtools/tools/javac/patterns/BreakAndLoops.java Changeset: cfc005b8a117 Author: mbaesken Date: 2019-12-04 09:43 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/cfc005b8a117 8235325: build failure on Linux after 8235243 Reviewed-by: clanger ! src/hotspot/share/runtime/abstract_vm_version.cpp Changeset: 636d71e53732 Author: stefank Date: 2019-12-04 10:26 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/636d71e53732 8235257: Split 'assert(loader != NULL && oopDesc::is_oop(loader), "loader must be oop")' Reviewed-by: dcubed, hseigel ! src/hotspot/share/classfile/javaClasses.cpp Changeset: c2ce3849c62f Author: rehn Date: 2019-12-04 11:57 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/c2ce3849c62f 8234742: Improve handshake logging Reviewed-by: dholmes, pchilanomate ! src/hotspot/share/runtime/handshake.cpp ! src/hotspot/share/runtime/handshake.hpp ! src/hotspot/share/runtime/thread.hpp Changeset: 354025d0427d Author: azeller Date: 2019-12-02 17:10 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/354025d0427d 8234696: tools/jlink/plugins/VendorInfoPluginsTest.java times out Reviewed-by: mchung, clanger ! test/jdk/tools/jlink/plugins/VendorInfoPluginsTest.java Changeset: 3b61c66ce692 Author: mbaesken Date: 2019-12-03 15:17 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/3b61c66ce692 8234397: add OS uptime information to os::print_os_info output Reviewed-by: clanger, dholmes, lucy ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/bsd/os_bsd.cpp ! src/hotspot/os/bsd/os_bsd.hpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/linux/os_linux.hpp ! src/hotspot/os/posix/os_posix.cpp ! src/hotspot/os/posix/os_posix.hpp ! src/hotspot/os/solaris/os_solaris.cpp ! src/hotspot/os/windows/os_windows.cpp ! src/hotspot/os/windows/os_windows.hpp ! src/hotspot/share/runtime/os.cpp ! src/hotspot/share/runtime/os.hpp Changeset: 19d927f669e9 Author: tschatzl Date: 2019-12-04 16:58 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/19d927f669e9 8235247: WorkerDataArray leaks C heap memory for associated work items Reviewed-by: lkorinth, kbarrett ! src/hotspot/share/gc/shared/workerDataArray.inline.hpp Changeset: 86fdc7632b01 Author: coleenp Date: 2019-12-04 11:09 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/86fdc7632b01 8234355: Buffer overflow in jcmd GC.class_stats due to too many classes Summary: Remove use of GC.class_stats in testing and failure analysis (plan to deprecate) Reviewed-by: dcubed ! test/failure_handler/src/share/conf/common.properties Changeset: d2977f4e9ef6 Author: alanb Date: 2019-12-04 16:37 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/d2977f4e9ef6 8235193: (dc) Remove JNI overhead from DatagramChannel.send implementation Reviewed-by: chegar ! src/java.base/share/classes/java/net/Inet4Address.java ! src/java.base/share/classes/java/net/Inet6Address.java ! src/java.base/share/classes/java/net/InetAddress.java ! src/java.base/share/classes/jdk/internal/access/JavaNetInetAddressAccess.java ! src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/NativeSocketAddress.java ! src/java.base/share/native/libnio/ch/NativeSocketAddress.c ! src/java.base/unix/native/libnio/ch/DatagramChannelImpl.c ! src/java.base/windows/native/libnio/ch/DatagramChannelImpl.c - test/jdk/java/nio/channels/DatagramChannel/ManySenders.java + test/jdk/java/nio/channels/DatagramChannel/ManySourcesAndTargets.java Changeset: 799c800624fb Author: tschatzl Date: 2019-12-04 18:54 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/799c800624fb 8235347: [Backout] 8235247: WorkerDataArray leaks C heap memory for associated work items Summary: Backout of earlier change due to unexpected crashes. Reviewed-by: sjohanss ! src/hotspot/share/gc/shared/workerDataArray.inline.hpp Changeset: a9347576dbc7 Author: mchung Date: 2019-12-04 10:46 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/a9347576dbc7 8233527: Update Lookup::hasPrivateAccess and Lookup::defineClass spec w.r.t. full power lookup Summary: Add a new Lookup::hasFullPrivilegeAccess method and document the capabilities requiring full privileges Reviewed-by: alanb, plevart ! src/java.base/share/classes/java/lang/invoke/BootstrapMethodInvoker.java ! src/java.base/share/classes/java/lang/invoke/LambdaMetafactory.java ! src/java.base/share/classes/java/lang/invoke/MethodHandles.java ! src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java ! test/jdk/java/lang/invoke/MethodHandles/privateLookupIn/test/p/PrivateLookupInTests.java Changeset: e71931b1c3b7 Author: coleenp Date: 2019-12-04 13:48 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/e71931b1c3b7 8235273: nmethodLocker not needed for COMPILED_METHOD_UNLOAD events Summary: remove unnecessary nmethodLocker Reviewed-by: dholmes, sspitsyn ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/prims/jvmtiImpl.cpp ! src/hotspot/share/prims/jvmtiImpl.hpp Changeset: db5097a1ec61 Author: rkennke Date: 2019-12-04 20:03 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/db5097a1ec61 8235337: Shenandoah: Fix evac OOM scoping for concurrent class unloading Reviewed-by: zgu ! src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp Changeset: f97907a7bba9 Author: iklam Date: 2019-12-04 11:19 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/f97907a7bba9 8235179: [TESTBUG] DynamicArchiveRelocationTest.java fails with 'runtime archive relocation start' missing Reviewed-by: mseledtsov, ccheung ! test/hotspot/jtreg/runtime/cds/appcds/ArchiveRelocationTest.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicArchiveRelocationTest.java Changeset: 288777cf0702 Author: mgronlun Date: 2019-12-04 21:26 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/288777cf0702 8234060: Potential memory reordering problem in JfrBuffer flush mechanism Reviewed-by: egahlin Contributed-by: Denghui Dong ! src/hotspot/share/jfr/recorder/storage/jfrBuffer.cpp ! src/hotspot/share/jfr/recorder/storage/jfrBuffer.hpp ! src/hotspot/share/jfr/recorder/storage/jfrMemorySpace.inline.hpp ! src/hotspot/share/jfr/recorder/storage/jfrStorage.cpp ! src/hotspot/share/jfr/recorder/storage/jfrStorageUtils.inline.hpp ! src/jdk.jfr/share/classes/jdk/jfr/internal/EventWriter.java Changeset: 8a8c60853789 Author: rkennke Date: 2019-12-04 21:40 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/8a8c60853789 8235355: Shenandoah: Resolve deadlock between OOM handler and nmethod lock Reviewed-by: zgu ! src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp Changeset: 8e76f81d057a Author: vromero Date: 2019-12-04 15:57 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/8e76f81d057a 8225054: Compiler implementation for records 8225052: javax.lang.model support for records 8225053: Preview APIs support for records 8225055: Javadoc for records 8226314: com.sun.source support for records 8227113: Specification for java.lang.Record 8233526: JVM support for records Summary: implement records in the compiler and the JVM, including serialization, reflection and APIs support Reviewed-by: mcimadamore, briangoetz, alanb, darcy, chegar, jrose, jlahoda, coleenp, dholmes, lfoltan, mchung, sadayapalam, hannesw, sspitsyn Contributed-by: vicente.romero at oracle.com, brian.goetz at oracle.com, maurizio.cimadamore at oracle.com, harold.seigel at oracle.com, joe.darcy at oracle.com, jonathan.gibbons at oracle.com, chris.hegarty at oracle.com, jan.lahoda at oracle.com ! make/CompileInterimLangtools.gmk ! make/hotspot/symbols/symbols-unix ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/classFileParser.hpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/systemDictionary.hpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/include/jvm.h ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/memory/allocation.hpp ! src/hotspot/share/memory/heapInspection.hpp ! src/hotspot/share/memory/metaspaceShared.cpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp + src/hotspot/share/oops/recordComponent.cpp + src/hotspot/share/oops/recordComponent.hpp ! src/hotspot/share/prims/jvm.cpp ! 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/hotspot/share/prims/jvmtiRedefineClasses.hpp ! src/java.base/share/classes/java/io/ObjectInputStream.java ! src/java.base/share/classes/java/io/ObjectOutputStream.java ! src/java.base/share/classes/java/io/ObjectStreamClass.java ! src/java.base/share/classes/java/lang/Class.java + src/java.base/share/classes/java/lang/Record.java ! src/java.base/share/classes/java/lang/annotation/ElementType.java + src/java.base/share/classes/java/lang/reflect/RecordComponent.java + src/java.base/share/classes/java/lang/runtime/ObjectMethods.java + src/java.base/share/classes/java/lang/runtime/package-info.java ! src/java.base/share/classes/jdk/internal/PreviewFeature.java ! src/java.base/share/classes/module-info.java ! src/java.base/share/classes/sun/reflect/annotation/TypeAnnotation.java ! src/java.base/share/native/libjava/Class.c ! src/java.compiler/share/classes/javax/annotation/processing/RoundEnvironment.java ! src/java.compiler/share/classes/javax/lang/model/element/Element.java ! src/java.compiler/share/classes/javax/lang/model/element/ElementKind.java ! src/java.compiler/share/classes/javax/lang/model/element/ElementVisitor.java + src/java.compiler/share/classes/javax/lang/model/element/RecordComponentElement.java ! src/java.compiler/share/classes/javax/lang/model/element/TypeElement.java ! src/java.compiler/share/classes/javax/lang/model/element/package-info.java + src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor6.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor7.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor8.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor9.java + src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor6.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor7.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor8.java + src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor6.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor7.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor8.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java + src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor6.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor7.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor8.java + src/java.compiler/share/classes/javax/lang/model/util/ElementScanner14.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementScanner6.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementScanner7.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementScanner8.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementScanner9.java ! src/java.compiler/share/classes/javax/lang/model/util/Elements.java + src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor6.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor7.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor8.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor9.java + src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor6.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor7.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor8.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor9.java + src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor6.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor7.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor8.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor9.java + src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor6.java ! src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor7.java ! src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor8.java ! src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor9.java ! src/java.instrument/share/native/libinstrument/JavaExceptions.c ! src/jdk.compiler/share/classes/com/sun/source/tree/ClassTree.java ! src/jdk.compiler/share/classes/com/sun/source/tree/Tree.java ! src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Kinds.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/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/Symtab.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.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/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/model/JavacElements.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/processing/JavacProcessingEnvironment.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacRoundEnvironment.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/TreeInfo.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Dependencies.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! src/jdk.compiler/share/classes/com/sun/tools/sjavac/comp/PubapiVisitor.java ! src/jdk.compiler/share/classes/com/sun/tools/sjavac/pubapi/PubApi.java ! src/jdk.compiler/share/classes/com/sun/tools/sjavac/pubapi/TypeDesc.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDoclet.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/LinkInfoImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/BaseConfiguration.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ClassWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/CommentUtils.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PackageSummaryWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/Resources.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ClassBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PackageSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/SerializedFormBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ParamTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/ClassUseMapper.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/TypeElementCatalog.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberTable.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ElementsTable.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocMemberEnter.java ! src/jdk.jdeps/share/classes/com/sun/tools/classfile/Attribute.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 ! src/jdk.jshell/share/classes/jdk/jshell/CompletenessAnalyzer.java ! src/jdk.jshell/share/classes/jdk/jshell/ReplParser.java + test/hotspot/jtreg/runtime/records/RedefineRecord.java + test/hotspot/jtreg/runtime/records/TEST.properties + test/hotspot/jtreg/runtime/records/abstractRecord.jcod + test/hotspot/jtreg/runtime/records/badRecordAttribute.jcod + test/hotspot/jtreg/runtime/records/ignoreRecordAttribute.java + test/hotspot/jtreg/runtime/records/notFinalRecord.jcod + test/hotspot/jtreg/runtime/records/oldRecordAttribute.jcod + test/hotspot/jtreg/runtime/records/recordAttributeTest.java + test/hotspot/jtreg/runtime/records/recordIgnoredVersion.jcod + test/hotspot/jtreg/runtime/records/recordReflectionTest.java + test/hotspot/jtreg/runtime/records/shortRecordAttribute.jcod + test/hotspot/jtreg/runtime/records/superNotJLRecord.jcod + test/hotspot/jtreg/runtime/records/twoRecordAttributes.jcod ! test/jdk/ProblemList.txt + test/jdk/java/io/Serializable/records/AbsentStreamValuesTest.java + test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java + test/jdk/java/io/Serializable/records/BadValues.java + test/jdk/java/io/Serializable/records/BasicRecordSer.java + test/jdk/java/io/Serializable/records/ConstructorAccessTest.java + test/jdk/java/io/Serializable/records/ConstructorPermissionTest.java + test/jdk/java/io/Serializable/records/CycleTest.java + test/jdk/java/io/Serializable/records/ProhibitedMethods.java + test/jdk/java/io/Serializable/records/ReadResolveTest.java + test/jdk/java/io/Serializable/records/RecordClassTest.java + test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java + test/jdk/java/io/Serializable/records/SerialVersionUIDTest.java + test/jdk/java/io/Serializable/records/StreamRefTest.java + test/jdk/java/io/Serializable/records/TEST.properties + test/jdk/java/io/Serializable/records/ThrowingConstructorTest.java + test/jdk/java/io/Serializable/records/WriteReplaceTest.java + test/jdk/java/io/Serializable/records/empty_security.policy + test/jdk/java/io/Serializable/records/migration/AbstractTest.java + test/jdk/java/io/Serializable/records/migration/AssignableFrom.java + test/jdk/java/io/Serializable/records/migration/AssignableFromTest.java + test/jdk/java/io/Serializable/records/migration/DefaultValues.java + test/jdk/java/io/Serializable/records/migration/DefaultValuesTest.java + test/jdk/java/io/Serializable/records/migration/Point.java + test/jdk/java/io/Serializable/records/migration/SuperStreamFields.java + test/jdk/java/io/Serializable/records/migration/SuperStreamFieldsTest.java + test/jdk/java/io/Serializable/records/migration/plain/AssignableFromImpl.java + test/jdk/java/io/Serializable/records/migration/plain/DefaultValuesImpl.java + test/jdk/java/io/Serializable/records/migration/plain/PointImpl.java + test/jdk/java/io/Serializable/records/migration/plain/SuperStreamFieldsImpl.java + test/jdk/java/io/Serializable/records/migration/record/AssignableFromImpl.java + test/jdk/java/io/Serializable/records/migration/record/DefaultValuesImpl.java + test/jdk/java/io/Serializable/records/migration/record/PointImpl.java + test/jdk/java/io/Serializable/records/migration/record/SuperStreamFieldsImpl.java - test/jdk/java/lang/Runtime/Resources.java - test/jdk/java/lang/Runtime/Version/Basic.java - test/jdk/java/lang/Runtime/Version/VersionProps.java - test/jdk/java/lang/Runtime/exec/ArgWithSpaceAndFinalBackslash.java - test/jdk/java/lang/Runtime/exec/BadEnvp.java - test/jdk/java/lang/Runtime/exec/ConcurrentRead.java - test/jdk/java/lang/Runtime/exec/Duped.java - test/jdk/java/lang/Runtime/exec/ExecCommand.java - test/jdk/java/lang/Runtime/exec/ExecEmptyString.java - test/jdk/java/lang/Runtime/exec/ExecWithDir.java - test/jdk/java/lang/Runtime/exec/ExecWithInput.java - test/jdk/java/lang/Runtime/exec/ExecWithLotsOfArgs.java - test/jdk/java/lang/Runtime/exec/ExitValue.java - test/jdk/java/lang/Runtime/exec/LotsOfDestroys.java - test/jdk/java/lang/Runtime/exec/LotsOfOutput.java - test/jdk/java/lang/Runtime/exec/SetCwd.java - test/jdk/java/lang/Runtime/exec/SleepyCat.java - test/jdk/java/lang/Runtime/exec/Space.java - test/jdk/java/lang/Runtime/exec/Status.java - test/jdk/java/lang/Runtime/exec/StreamsSurviveDestroy.java - test/jdk/java/lang/Runtime/exec/UnixCommands.java - test/jdk/java/lang/Runtime/exec/WinCommand.java - test/jdk/java/lang/Runtime/exec/setcwd.sh - test/jdk/java/lang/Runtime/loadLibrary/LoadLibraryTest.java - test/jdk/java/lang/Runtime/loadLibrary/src/Target.java - test/jdk/java/lang/Runtime/loadLibrary/src/Target2.java - test/jdk/java/lang/Runtime/shutdown/Basic.java - test/jdk/java/lang/Runtime/shutdown/ShutdownHooks.java - test/jdk/java/lang/Runtime/shutdown/ShutdownHooks.sh - test/jdk/java/lang/Runtime/shutdown/ShutdownInterruptedMain.java + test/jdk/java/lang/RuntimeTests/Resources.java + test/jdk/java/lang/RuntimeTests/Version/Basic.java + test/jdk/java/lang/RuntimeTests/Version/VersionProps.java + test/jdk/java/lang/RuntimeTests/exec/ArgWithSpaceAndFinalBackslash.java + test/jdk/java/lang/RuntimeTests/exec/BadEnvp.java + test/jdk/java/lang/RuntimeTests/exec/ConcurrentRead.java + test/jdk/java/lang/RuntimeTests/exec/Duped.java + test/jdk/java/lang/RuntimeTests/exec/ExecCommand.java + test/jdk/java/lang/RuntimeTests/exec/ExecEmptyString.java + test/jdk/java/lang/RuntimeTests/exec/ExecWithDir.java + test/jdk/java/lang/RuntimeTests/exec/ExecWithInput.java + test/jdk/java/lang/RuntimeTests/exec/ExecWithLotsOfArgs.java + test/jdk/java/lang/RuntimeTests/exec/ExitValue.java + test/jdk/java/lang/RuntimeTests/exec/LotsOfDestroys.java + test/jdk/java/lang/RuntimeTests/exec/LotsOfOutput.java + test/jdk/java/lang/RuntimeTests/exec/SetCwd.java + test/jdk/java/lang/RuntimeTests/exec/SleepyCat.java + test/jdk/java/lang/RuntimeTests/exec/Space.java + test/jdk/java/lang/RuntimeTests/exec/Status.java + test/jdk/java/lang/RuntimeTests/exec/StreamsSurviveDestroy.java + test/jdk/java/lang/RuntimeTests/exec/UnixCommands.java + test/jdk/java/lang/RuntimeTests/exec/WinCommand.java + test/jdk/java/lang/RuntimeTests/exec/setcwd.sh + test/jdk/java/lang/RuntimeTests/loadLibrary/LoadLibraryTest.java + test/jdk/java/lang/RuntimeTests/loadLibrary/src/Target.java + test/jdk/java/lang/RuntimeTests/loadLibrary/src/Target2.java + test/jdk/java/lang/RuntimeTests/shutdown/Basic.java + test/jdk/java/lang/RuntimeTests/shutdown/ShutdownHooks.java + test/jdk/java/lang/RuntimeTests/shutdown/ShutdownHooks.sh + test/jdk/java/lang/RuntimeTests/shutdown/ShutdownInterruptedMain.java + test/jdk/java/lang/instrument/RedefineRecordAttr/Host/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/Host/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostA/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostA/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostAB/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostAB/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostABC/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostABC/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostABCD/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostABD/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostAC/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostACB/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostB/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostBA/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostBAC/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostBCA/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostCAB/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/HostCBA/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttr/TestRecordAttr.java + test/jdk/java/lang/instrument/RedefineRecordAttrGenericSig/Host/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttrGenericSig/Host/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttrGenericSig/HostA/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttrGenericSig/HostA/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttrGenericSig/HostB/redef/Host.java + test/jdk/java/lang/instrument/RedefineRecordAttrGenericSig/TestRecordAttrGenericSig.java ! test/jdk/java/lang/instrument/TEST.properties + test/jdk/java/lang/reflect/records/RecordReflectionTest.java + test/jdk/java/lang/reflect/records/TEST.properties + test/jdk/java/lang/runtime/ObjectMethodsTest.java + test/jdk/java/lang/runtime/TEST.properties + test/jdk/java/lang/runtime/empty.policy ! test/jdk/jdk/modules/etc/JdkQualifiedExportTest.java ! test/langtools/ProblemList.txt ! test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/TestRecordTypes.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/examples/AnnotatedBinaryNode.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/examples/BinaryNode.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/examples/Coords.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/examples/Holder.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/examples/Node.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/examples/NonNull.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/examples/Point.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/examples/SerializablePoint.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/examples/SerializableProxy.java + test/langtools/jdk/javadoc/doclet/testRecordTypes/jdk11/element-list ! test/langtools/jdk/javadoc/lib/javadoc/tester/JavadocTester.java ! test/langtools/jdk/javadoc/tool/api/basic/GetTask_DiagListenerTest.java ! test/langtools/jdk/javadoc/tool/modules/ModuleTestBase.java ! test/langtools/jdk/javadoc/tool/reporter_generates_warnings/pkg/MyDoclet.java ! test/langtools/jdk/jshell/CompletenessTest.java ! test/langtools/lib/annotations/annotations/classfile/ClassfileInspector.java + test/langtools/lib/combo/tools/javac/combo/CompilationTestCase.java ! test/langtools/lib/combo/tools/javac/combo/Diagnostics.java ! test/langtools/lib/combo/tools/javac/combo/JavacTemplateTestBase.java ! test/langtools/lib/combo/tools/javac/combo/Template.java ! test/langtools/lib/combo/tools/javac/combo/TemplateTest.java ! test/langtools/tools/javac/6402516/CheckLocalElements.java ! test/langtools/tools/javac/MethodParameters/AttributeVisitor.java ! test/langtools/tools/javac/annotations/repeatingAnnotations/NoTargetOnContainer.java ! test/langtools/tools/javac/annotations/repeatingAnnotations/NoTargetOnContainer2.java ! test/langtools/tools/javac/annotations/repeatingAnnotations/combo/TargetAnnoCombo.java + test/langtools/tools/javac/diags/examples/AccessorCantBeGeneric.java + test/langtools/tools/javac/diags/examples/AccessorCantThrowException.java + test/langtools/tools/javac/diags/examples/AccessorMethodCantBeStatic.java + test/langtools/tools/javac/diags/examples/AccessorReturnTypeDoesntMatch.java + test/langtools/tools/javac/diags/examples/CanonicalCantInvokeOtherConstructor.java + test/langtools/tools/javac/diags/examples/CanonicalConstructorArgumentMismatch.java + test/langtools/tools/javac/diags/examples/CanonicalConstructorCantHaveReturn.java + test/langtools/tools/javac/diags/examples/CanonicalConstructorCantHaveThrowsClause.java + test/langtools/tools/javac/diags/examples/CanonicalConstructorMustBePublic.java + test/langtools/tools/javac/diags/examples/CanonicalMustNotDeclareTypeVariables.java + test/langtools/tools/javac/diags/examples/ConstructorWithSameErasureAsCanonical.java + test/langtools/tools/javac/diags/examples/FirstInvocationMustBeAnotherConstructor.java + test/langtools/tools/javac/diags/examples/IllegalRecordComponentName.java ! test/langtools/tools/javac/diags/examples/IllegalStartOfStmt.java + test/langtools/tools/javac/diags/examples/InstanceInitializersNotAllowedInRecords.java + test/langtools/tools/javac/diags/examples/InvalidSuperTypeRecord.java + test/langtools/tools/javac/diags/examples/KindnameRecord.java + test/langtools/tools/javac/diags/examples/MethodMustBePublic.java + test/langtools/tools/javac/diags/examples/Records.java + test/langtools/tools/javac/diags/examples/RecordsCanNotDeclareInstanceFields.java + test/langtools/tools/javac/diags/examples/RecordsCantDeclareComponentModifiers.java + test/langtools/tools/javac/diags/examples/RecordsNotAllowedInInnerClasses.java ! test/langtools/tools/javac/expswitch/ExpSwitchNestingTest.java ! test/langtools/tools/javac/importscope/T8193717.java ! test/langtools/tools/javac/lambda/bridge/template_tests/BridgeMethodTestCase.java ! test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java ! test/langtools/tools/javac/modules/AnnotationProcessing.java ! test/langtools/tools/javac/options/BCPOrSystemNotSpecified.java ! test/langtools/tools/javac/parser/extend/TrialParser.java ! test/langtools/tools/javac/patterns/scope/ScopeTest.java ! test/langtools/tools/javac/processing/model/TestSourceVersion.java ! test/langtools/tools/javac/processing/model/TestSymtabItems.java + test/langtools/tools/javac/processing/model/element/AnnoProcessorOnRecordsTest.java + test/langtools/tools/javac/processing/model/element/CheckingTypeAnnotationsOnRecords.java + test/langtools/tools/javac/processing/model/element/JavaxLangModelForRecords.java ! test/langtools/tools/javac/processing/model/element/TestElementKindPredicates.java + test/langtools/tools/javac/processing/model/element/TestRecord.java + test/langtools/tools/javac/processing/model/element/TestRecordDesugar.java ! test/langtools/tools/javac/processing/model/util/TestTypeKindVisitors.java + test/langtools/tools/javac/records/MapAccessorToComponent.java + test/langtools/tools/javac/records/RecordCompilationTests.java + test/langtools/tools/javac/records/RecordMemberTests.java + test/langtools/tools/javac/records/VarargsRecordsTest.java + test/langtools/tools/javac/records/mandated_members/CheckRecordMembers.java + test/langtools/tools/javac/records/mandated_members/read_resolve_method/CheckReadResolveMethodTest.java + test/langtools/tools/javac/records/writeread/Record.java + test/langtools/tools/javac/records/writeread/WriteReadTest.java ! test/langtools/tools/javac/tree/JavacTreeScannerTest.java ! test/langtools/tools/javac/tree/SourceTreeScannerTest.java ! test/langtools/tools/javac/tree/TreeKindTest.java ! test/langtools/tools/jdeps/listdeps/ListModuleDeps.java ! test/langtools/tools/lib/toolbox/ToolBox.java ! test/lib/jdk/test/lib/ByteCodeLoader.java Changeset: c22583a70542 Author: mseledtsov Date: 2019-12-04 14:44 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/c22583a70542 8235356: [TESTBUG] Disable 'producer is alive' check in JFR TestCrossProcessStreaming Summary: disabled the check Reviewed-by: dcubed ! test/jdk/jdk/jfr/api/consumer/streaming/TestCrossProcessStreaming.java Changeset: 666fa504b60c Author: sviswanathan Date: 2019-12-04 14:55 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/666fa504b60c 8235288: AVX 512 instructions inadvertently used on Xeon for small vector width operations Reviewed-by: kvn, vlivanov ! src/hotspot/cpu/x86/macroAssembler_x86.hpp Changeset: e7f7be79ba52 Author: phh Date: 2019-12-04 15:01 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/e7f7be79ba52 8234288: Turkey Time Zone returns incorrect time zone name Summary: Add and use "Turkey Time" time zone. Reviewed-by: naoto, martin, phh Contributed-by: letuyang at amazon.com ! src/java.base/share/classes/sun/util/resources/TimeZoneNames.java ! test/jdk/sun/text/resources/LocaleData ! test/jdk/sun/text/resources/LocaleDataTest.java Changeset: 1413f714d1a9 Author: cgo Date: 2019-12-04 10:38 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/1413f714d1a9 8234906: [TESTBUG] TestDivZeroCheckControl fails for client VMs due to Unrecognized VM option LoopUnrollLimit Reviewed-by: kvn ! test/hotspot/jtreg/compiler/loopopts/TestDivZeroCheckControl.java Changeset: 18420160287b Author: weijun Date: 2019-12-05 10:36 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/18420160287b 8234267: DelegationPermission implementation doesn't completely follow the updated specification Reviewed-by: xuelei ! src/java.security.jgss/share/classes/javax/security/auth/kerberos/DelegationPermission.java ! test/jdk/javax/security/auth/kerberos/DelegationPermissionInit.java Changeset: 832efc785f53 Author: valeriep Date: 2019-12-05 03:55 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/832efc785f53 8233016: javax.crypto.Cipher throws NPE for the given custom CipherSpi and Provider Summary: Changed to throw IAE instead of NPE for non-null invalid arguments Reviewed-by: mullan ! src/java.base/share/classes/javax/crypto/Cipher.java Changeset: e4b6321c11a4 Author: jwilhelm Date: 2019-12-05 08:21 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/e4b6321c11a4 Added tag jdk-14+26 for changeset 288777cf0702 ! .hgtags Changeset: 5defda391e18 Author: jbhateja Date: 2019-12-05 12:56 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/5defda391e18 8234391: C2: Generic vector operands Reviewed-by: vlivanov, sviswanathan, thartmann, jrose ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/arm/arm.ad ! src/hotspot/cpu/ppc/ppc.ad ! src/hotspot/cpu/s390/s390.ad ! src/hotspot/cpu/sparc/sparc.ad ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/cpu/x86/x86_32.ad ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/share/adlc/output_h.cpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/machnode.cpp ! src/hotspot/share/opto/machnode.hpp ! src/hotspot/share/opto/matcher.cpp ! src/hotspot/share/opto/matcher.hpp ! src/hotspot/share/opto/phase.cpp ! src/hotspot/share/opto/phase.hpp Changeset: 97d531d87bd7 Author: lkorinth Date: 2019-12-05 12:52 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/97d531d87bd7 8235250: Create (test) abstraction for allocating objects that is immune to removal by optimizations Reviewed-by: eosterlund, tschatzl ! test/hotspot/jtreg/gc/arguments/TestTargetSurvivorRatioFlag.java ! test/hotspot/jtreg/gc/cslocker/TestCSLocker.java ! test/hotspot/jtreg/gc/g1/TestHumongousAllocNearlyFullRegion.java ! test/hotspot/jtreg/gc/g1/humongousObjects/TestNoAllocationsInHRegions.java ! test/hotspot/jtreg/gc/logging/TestUnifiedLoggingSwitchStress.java + test/hotspot/jtreg/gc/testlibrary/Allocation.java ! test/hotspot/jtreg/gc/z/TestSmallHeap.java Changeset: 2ca0201e99f3 Author: jlaskey Date: 2019-12-05 09:22 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/2ca0201e99f3 8232681: ArrayIndexOutOfBoundsException with text blocks in javac when using -Xlint Reviewed-by: sundar ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java ! test/langtools/tools/javac/TextBlockAPI.java Changeset: 0a94d3675782 Author: hseigel Date: 2019-12-05 15:45 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/0a94d3675782 8235360: Update JDWP, JDI and Instrumentation specs for Record attribute Summary: Add Record to list of attributes that class redefinition cannot change Reviewed-by: lfoltan ! make/data/jdwp/jdwp.spec ! src/java.instrument/share/classes/java/lang/instrument/Instrumentation.java ! src/jdk.jdi/share/classes/com/sun/jdi/VirtualMachine.java Changeset: 9f9e7c969f78 Author: herrick Date: 2019-12-05 11:25 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/9f9e7c969f78 8212780: Packaging Tool Implementation Reviewed-by: asemenyuk, almatvee, herrick, kcr, prr, erikj, ihse, rriggs, mchung, alanb Contributed-by: alexey.semenyuk at oracle.com, alexander.matveev at oracle.com, andy.herrick at oracle.com, kevin.rushforth at oracle.com, philip.race at oracle.com ! make/CompileJavaModules.gmk ! make/common/Modules.gmk ! make/common/NativeCompilation.gmk + make/launcher/Launcher-jdk.incubator.jpackage.gmk + make/lib/Lib-jdk.incubator.jpackage.gmk ! src/java.base/share/classes/module-info.java + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/DesktopIntegration.java + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/LibProvidersLookup.java + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/LinuxAppBundler.java + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/LinuxAppImageBuilder.java + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/LinuxDebBundler.java + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/LinuxPackageBundler.java + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/LinuxRpmBundler.java + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/PackageProperty.java + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/LinuxResources.properties + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/LinuxResources_ja.properties + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/LinuxResources_zh_CN.properties + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/java32.png + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.control + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.copyright + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.desktop + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.postinst + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.postrm + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.preinst + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.prerm + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/template.spec + src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/utils.sh + src/jdk.incubator.jpackage/linux/classes/module-info.java.extra + src/jdk.incubator.jpackage/linux/native/jpackageapplauncher/launcher.cpp + src/jdk.incubator.jpackage/linux/native/libapplauncher/LinuxPlatform.cpp + src/jdk.incubator.jpackage/linux/native/libapplauncher/LinuxPlatform.h + src/jdk.incubator.jpackage/linux/native/libapplauncher/PlatformDefs.h + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/EnumeratedBundlerParam.java + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacAppBundler.java + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacAppImageBuilder.java + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacAppStoreBundler.java + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacBaseInstallerBundler.java + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacCertificate.java + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacDmgBundler.java + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacPkgBundler.java + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/DMGsetup.scpt + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/Info-lite.plist.template + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/MacAppStore.entitlements + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/MacAppStore_Inherit.entitlements + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/MacResources.properties + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/MacResources_ja.properties + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/MacResources_zh_CN.properties + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/Runtime-Info.plist.template + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/background_dmg.png + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/background_pkg.png + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/java.icns + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/lic_template.plist + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/postinstall.template + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/preinstall.template + src/jdk.incubator.jpackage/macosx/classes/module-info.java.extra + src/jdk.incubator.jpackage/macosx/native/jpackageapplauncher/main.m + src/jdk.incubator.jpackage/macosx/native/libapplauncher/MacPlatform.h + src/jdk.incubator.jpackage/macosx/native/libapplauncher/MacPlatform.mm + src/jdk.incubator.jpackage/macosx/native/libapplauncher/PlatformDefs.h + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/AbstractAppImageBuilder.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/AbstractBundler.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/AbstractImageBundler.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/AddLauncherArguments.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/AppImageFile.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/ApplicationLayout.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/ArgAction.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Arguments.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/BasicBundlers.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/BundleParams.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Bundler.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/BundlerParamInfo.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Bundlers.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/CLIHelp.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/ConfigException.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/DeployParams.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/DottedVersion.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Executor.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/FileAssociation.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/I18N.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/IOUtils.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/JLinkBundlerHelper.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/JPackageToolProvider.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Log.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/ModFile.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/OverridableResource.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/PackagerException.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/PathGroup.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Platform.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/PlatformPackage.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/RelativeFileSet.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/ScriptRunner.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/StandardBundlerParam.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/ToolValidator.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/ValidOptions.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/HelpResources.properties + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/HelpResources_ja.properties + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/HelpResources_zh_CN.properties + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/MainResources.properties + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/MainResources_ja.properties + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/MainResources_zh_CN.properties + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/ResourceLocator.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/main/CommandLine.java + src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/main/Main.java + src/jdk.incubator.jpackage/share/classes/module-info.java + src/jdk.incubator.jpackage/share/native/libapplauncher/FileAttributes.h + src/jdk.incubator.jpackage/share/native/libapplauncher/FilePath.h + src/jdk.incubator.jpackage/share/native/libapplauncher/Helpers.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/Helpers.h + src/jdk.incubator.jpackage/share/native/libapplauncher/IniFile.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/IniFile.h + src/jdk.incubator.jpackage/share/native/libapplauncher/JavaVirtualMachine.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/JavaVirtualMachine.h + src/jdk.incubator.jpackage/share/native/libapplauncher/Library.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/Library.h + src/jdk.incubator.jpackage/share/native/libapplauncher/Macros.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/Macros.h + src/jdk.incubator.jpackage/share/native/libapplauncher/Messages.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/Messages.h + src/jdk.incubator.jpackage/share/native/libapplauncher/OrderedMap.h + src/jdk.incubator.jpackage/share/native/libapplauncher/Package.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/Package.h + src/jdk.incubator.jpackage/share/native/libapplauncher/Platform.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/Platform.h + src/jdk.incubator.jpackage/share/native/libapplauncher/PlatformString.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/PlatformString.h + src/jdk.incubator.jpackage/share/native/libapplauncher/Properties.h + src/jdk.incubator.jpackage/share/native/libapplauncher/PropertyFile.cpp + src/jdk.incubator.jpackage/share/native/libapplauncher/PropertyFile.h + src/jdk.incubator.jpackage/share/native/libapplauncher/main.cpp + src/jdk.incubator.jpackage/unix/native/libapplauncher/FileAttribute.h + src/jdk.incubator.jpackage/unix/native/libapplauncher/FileAttributes.cpp + src/jdk.incubator.jpackage/unix/native/libapplauncher/FilePath.cpp + src/jdk.incubator.jpackage/unix/native/libapplauncher/PosixPlatform.cpp + src/jdk.incubator.jpackage/unix/native/libapplauncher/PosixPlatform.h + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WinAppBundler.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WinExeBundler.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WinMsiBundler.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WindowsAppImageBuilder.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WindowsBundlerParam.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WindowsDefender.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WindowsRegistry.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WixPipeline.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WixSourcesBuilder.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WixTool.java + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/MsiInstallerStrings_en.wxl + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/MsiInstallerStrings_ja.wxl + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/MsiInstallerStrings_zh_CN.wxl + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/WinLauncher.template + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/WinResources.properties + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/WinResources_ja.properties + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/WinResources_zh_CN.properties + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/java48.ico + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/main.wxs + src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/resources/overrides.wxi + src/jdk.incubator.jpackage/windows/classes/module-info.java.extra + src/jdk.incubator.jpackage/windows/native/jpackageapplauncher/WinLauncher.cpp + src/jdk.incubator.jpackage/windows/native/libapplauncher/DllMain.cpp + src/jdk.incubator.jpackage/windows/native/libapplauncher/FileAttribute.h + src/jdk.incubator.jpackage/windows/native/libapplauncher/FilePath.cpp + src/jdk.incubator.jpackage/windows/native/libapplauncher/PlatformDefs.h + src/jdk.incubator.jpackage/windows/native/libapplauncher/WindowsPlatform.cpp + src/jdk.incubator.jpackage/windows/native/libapplauncher/WindowsPlatform.h + src/jdk.incubator.jpackage/windows/native/libjpackage/ByteBuffer.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/ByteBuffer.h + src/jdk.incubator.jpackage/windows/native/libjpackage/ErrorHandling.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/ErrorHandling.h + src/jdk.incubator.jpackage/windows/native/libjpackage/FileUtils.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/FileUtils.h + src/jdk.incubator.jpackage/windows/native/libjpackage/IconSwap.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/IconSwap.h + src/jdk.incubator.jpackage/windows/native/libjpackage/Log.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/Log.h + src/jdk.incubator.jpackage/windows/native/libjpackage/ResourceEditor.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/ResourceEditor.h + src/jdk.incubator.jpackage/windows/native/libjpackage/SourceCodePos.h + src/jdk.incubator.jpackage/windows/native/libjpackage/SysInfo.h + src/jdk.incubator.jpackage/windows/native/libjpackage/UniqueHandle.h + src/jdk.incubator.jpackage/windows/native/libjpackage/Utils.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/Utils.h + src/jdk.incubator.jpackage/windows/native/libjpackage/VersionInfoSwap.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/VersionInfoSwap.h + src/jdk.incubator.jpackage/windows/native/libjpackage/WinErrorHandling.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/WinErrorHandling.h + src/jdk.incubator.jpackage/windows/native/libjpackage/WinSysInfo.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/WinSysInfo.h + src/jdk.incubator.jpackage/windows/native/libjpackage/WindowsRegistry.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/jpackage.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/tstrings.cpp + src/jdk.incubator.jpackage/windows/native/libjpackage/tstrings.h + src/jdk.incubator.jpackage/windows/native/libwixhelper/libwixhelper.cpp + src/jdk.incubator.jpackage/windows/native/msiwrapper/Executor.cpp + src/jdk.incubator.jpackage/windows/native/msiwrapper/Executor.h + src/jdk.incubator.jpackage/windows/native/msiwrapper/MsiWrapper.cpp + src/jdk.incubator.jpackage/windows/native/msiwrapper/Resources.cpp + src/jdk.incubator.jpackage/windows/native/msiwrapper/Resources.h - src/jdk.jlink/share/classes/jdk/tools/jlink/internal/packager/AppRuntimeImageBuilder.java + test/jdk/tools/jpackage/TEST.properties + test/jdk/tools/jpackage/apps/com.hello/com/hello/Hello.java + test/jdk/tools/jpackage/apps/com.hello/module-info.java + test/jdk/tools/jpackage/apps/com.other/com/other/Other.java + test/jdk/tools/jpackage/apps/com.other/module-info.java + test/jdk/tools/jpackage/apps/dukeplug.png + test/jdk/tools/jpackage/apps/image/Hello.java + test/jdk/tools/jpackage/apps/installer/Hello.java + test/jdk/tools/jpackage/helpers/JPackageHelper.java + test/jdk/tools/jpackage/helpers/JPackageInstallerHelper.java + test/jdk/tools/jpackage/helpers/JPackagePath.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Annotations.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/CfgFile.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/CommandArguments.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Executor.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/FileAssociations.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Functional.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JarBuilder.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaTool.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LinuxHelper.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MacHelper.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MethodCall.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/PackageTest.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/PackageType.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilder.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestInstance.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/WindowsHelper.java + test/jdk/tools/jpackage/junit/jdk/incubator/jpackage/internal/AppImageFileTest.java + test/jdk/tools/jpackage/junit/jdk/incubator/jpackage/internal/ApplicationLayoutTest.java + test/jdk/tools/jpackage/junit/jdk/incubator/jpackage/internal/CompareDottedVersionTest.java + test/jdk/tools/jpackage/junit/jdk/incubator/jpackage/internal/DeployParamsTest.java + test/jdk/tools/jpackage/junit/jdk/incubator/jpackage/internal/DottedVersionTest.java + test/jdk/tools/jpackage/junit/jdk/incubator/jpackage/internal/InvalidDottedVersionTest.java + test/jdk/tools/jpackage/junit/jdk/incubator/jpackage/internal/OverridableResourceTest.java + test/jdk/tools/jpackage/junit/jdk/incubator/jpackage/internal/PathGroupTest.java + test/jdk/tools/jpackage/junit/jdk/incubator/jpackage/internal/ToolValidatorTest.java + test/jdk/tools/jpackage/junit/junit.java + test/jdk/tools/jpackage/junit/run_junit.sh + test/jdk/tools/jpackage/linux/AppCategoryTest.java + test/jdk/tools/jpackage/linux/LicenseTypeTest.java + test/jdk/tools/jpackage/linux/LinuxBundleNameTest.java + test/jdk/tools/jpackage/linux/LinuxResourceTest.java + test/jdk/tools/jpackage/linux/MaintainerTest.java + test/jdk/tools/jpackage/linux/PackageDepsTest.java + test/jdk/tools/jpackage/linux/ReleaseTest.java + test/jdk/tools/jpackage/linux/ShortcutHintTest.java + test/jdk/tools/jpackage/macosx/MacPropertiesTest.java + test/jdk/tools/jpackage/macosx/NameWithSpaceTest.java + test/jdk/tools/jpackage/macosx/SigningAppImageTest.java + test/jdk/tools/jpackage/macosx/SigningPackageTest.java + test/jdk/tools/jpackage/macosx/base/SigningBase.java + test/jdk/tools/jpackage/macosx/base/SigningCheck.java + test/jdk/tools/jpackage/manage_packages.sh + test/jdk/tools/jpackage/resources/icon.icns + test/jdk/tools/jpackage/resources/icon.ico + test/jdk/tools/jpackage/resources/icon.png + test/jdk/tools/jpackage/resources/license.txt + test/jdk/tools/jpackage/run_tests.sh + test/jdk/tools/jpackage/share/AddLauncherBase.java + test/jdk/tools/jpackage/share/AddLauncherModuleTest.java + test/jdk/tools/jpackage/share/AddLauncherTest.java + test/jdk/tools/jpackage/share/AddLaunchersTest.java + test/jdk/tools/jpackage/share/AdditionalLaunchersTest.java + test/jdk/tools/jpackage/share/AppImagePackageTest.java + test/jdk/tools/jpackage/share/ArgumentsTest.java + test/jdk/tools/jpackage/share/Base.java + test/jdk/tools/jpackage/share/ErrorTest.java + test/jdk/tools/jpackage/share/FileAssociationsTest.java + test/jdk/tools/jpackage/share/IconTest.java + test/jdk/tools/jpackage/share/InstallDirTest.java + test/jdk/tools/jpackage/share/InvalidArgTest.java + test/jdk/tools/jpackage/share/JavaOptionsBase.java + test/jdk/tools/jpackage/share/JavaOptionsEqualsTest.java + test/jdk/tools/jpackage/share/JavaOptionsModuleTest.java + test/jdk/tools/jpackage/share/JavaOptionsTest.java + test/jdk/tools/jpackage/share/LicenseTest.java + test/jdk/tools/jpackage/share/MissingArgumentsTest.java + test/jdk/tools/jpackage/share/RuntimePackageTest.java + test/jdk/tools/jpackage/share/SimplePackageTest.java + test/jdk/tools/jpackage/share/jdk/jpackage/tests/AppVersionTest.java + test/jdk/tools/jpackage/share/jdk/jpackage/tests/BasicTest.java + test/jdk/tools/jpackage/share/jdk/jpackage/tests/MainClassTest.java + test/jdk/tools/jpackage/share/jdk/jpackage/tests/ModulePathTest.java + test/jdk/tools/jpackage/test_jpackage.sh + test/jdk/tools/jpackage/windows/WinConsoleTest.java + test/jdk/tools/jpackage/windows/WinDirChooserTest.java + test/jdk/tools/jpackage/windows/WinMenuGroupTest.java + test/jdk/tools/jpackage/windows/WinMenuTest.java + test/jdk/tools/jpackage/windows/WinPerUserInstallTest.java + test/jdk/tools/jpackage/windows/WinResourceTest.java + test/jdk/tools/jpackage/windows/WinScriptTest.java + test/jdk/tools/jpackage/windows/WinShortcutTest.java + test/jdk/tools/jpackage/windows/WinUpgradeUUIDTest.java ! test/jdk/tools/launcher/HelpFlagsTest.java ! test/jdk/tools/launcher/VersionCheck.java Changeset: 1d3c5da689d0 Author: michaelm Date: 2019-12-05 16:43 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/1d3c5da689d0 8235413: com.sun.net.httpserver.BasicAuthenticator.charset is protected field Reviewed-by: chegar, dfuchs ! src/jdk.httpserver/share/classes/com/sun/net/httpserver/BasicAuthenticator.java Changeset: 7d732f6e17b2 Author: naoto Date: 2019-12-05 13:10 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/7d732f6e17b2 8222756: Plural support in CompactNumberFormat Reviewed-by: joehw, rriggs ! make/jdk/src/classes/build/tools/cldrconverter/AbstractLDMLHandler.java ! make/jdk/src/classes/build/tools/cldrconverter/Bundle.java ! make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java ! make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java + make/jdk/src/classes/build/tools/cldrconverter/PluralsParseHandler.java ! make/jdk/src/classes/build/tools/cldrconverter/ResourceBundleGenerator.java ! make/jdk/src/classes/build/tools/cldrconverter/StringListElement.java ! make/jdk/src/classes/build/tools/cldrconverter/StringListEntry.java ! src/java.base/share/classes/java/text/CompactNumberFormat.java ! src/java.base/share/classes/java/text/spi/NumberFormatProvider.java ! src/java.base/share/classes/sun/util/locale/provider/NumberFormatProviderImpl.java ! src/java.base/share/classes/sun/util/locale/provider/SPILocaleProviderAdapter.java + test/jdk/java/text/Format/CompactNumberFormat/SPIProviderTest.java ! test/jdk/java/text/Format/CompactNumberFormat/TestCompactNumber.java ! test/jdk/java/text/Format/CompactNumberFormat/TestEquality.java + test/jdk/java/text/Format/CompactNumberFormat/TestPlurals.java + test/jdk/java/text/Format/CompactNumberFormat/provider/module-info.java + test/jdk/java/text/Format/CompactNumberFormat/provider/test/NumberFormatProviderImpl.java Changeset: a112b0a6d91e Author: amenkov Date: 2019-12-05 13:52 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/a112b0a6d91e 8235433: Problem list JdwpListenTest.java and JdwpAttachTest.java on Windows Reviewed-by: dcubed ! test/jdk/ProblemList.txt Changeset: 366c0f357ee6 Author: coleenp Date: 2019-12-05 16:57 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/366c0f357ee6 8212160: JVMTI agent crashes with "assert(_value != 0LL) failed: resolving NULL _value" Summary: Add local deferred event list to thread to post events outside CodeCache_lock. Reviewed-by: eosterlund, dholmes, sspitsyn ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/code/nmethod.hpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.cpp ! src/hotspot/share/prims/jvmtiCodeBlobEvents.cpp ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/jvmtiExport.hpp ! src/hotspot/share/prims/jvmtiImpl.cpp ! src/hotspot/share/prims/jvmtiImpl.hpp ! src/hotspot/share/prims/jvmtiThreadState.cpp ! src/hotspot/share/prims/jvmtiThreadState.hpp ! src/hotspot/share/runtime/serviceThread.cpp ! src/hotspot/share/runtime/serviceThread.hpp ! src/hotspot/share/runtime/thread.cpp + test/hotspot/jtreg/serviceability/jvmti/CompiledMethodLoad/Zombie.java + test/hotspot/jtreg/serviceability/jvmti/CompiledMethodLoad/libCompiledZombie.cpp Changeset: fcd70fd2d3f6 Author: coleenp Date: 2019-12-05 16:58 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/fcd70fd2d3f6 Merge Changeset: 20dfe7974cc2 Author: darcy Date: 2019-12-05 14:14 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/20dfe7974cc2 8224630: ElementScannerN, N > 9 should scan type parameters Reviewed-by: mcimadamore, erikj ! make/autoconf/boot-jdk.m4 ! src/java.compiler/share/classes/javax/lang/model/util/ElementScanner14.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacRoundEnvironment.java Changeset: dda989866962 Author: darcy Date: 2019-12-05 14:19 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/dda989866962 8235369: Class.toGenericString need to be updated for records Reviewed-by: vromero, mchung, chegar ! src/java.base/share/classes/java/lang/Class.java ! test/jdk/java/lang/reflect/records/RecordReflectionTest.java Changeset: 0bec2ec012fc Author: jzhu Date: 2019-12-06 10:41 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/0bec2ec012fc 8233948: AArch64: Incorrect mapping between OptoReg and VMReg for high 64 bits of Vector Register Reviewed-by: adinn ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/assembler_aarch64.hpp ! src/hotspot/cpu/aarch64/register_aarch64.cpp ! src/hotspot/cpu/aarch64/register_aarch64.hpp ! src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp ! src/hotspot/cpu/aarch64/vmreg_aarch64.cpp ! src/hotspot/cpu/aarch64/vmreg_aarch64.hpp ! src/hotspot/cpu/aarch64/vmreg_aarch64.inline.hpp Changeset: 2b8719a4793f Author: jiefu Date: 2019-12-06 10:13 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/2b8719a4793f 8235456: Minimal VM is broken after JDK-8212160 Reviewed-by: dholmes ! src/hotspot/share/prims/jvmtiImpl.hpp Changeset: d6fe7d58d994 Author: rraghavan Date: 2019-12-06 13:42 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/d6fe7d58d994 8228448: Jconsole can't connect to itself Summary: Additions done to allow jconsole to connect to itself Reviewed-by: erikj Contributed-by: ramkumar.sunderbabu at oracle.com ! make/launcher/Launcher-jdk.jconsole.gmk Changeset: f55c453cef06 Author: tschatzl Date: 2019-12-06 09:49 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/f55c453cef06 8235346: [Redo] 8235247: WorkerDataArray leaks C heap memory for associated work items Summary: Fix gtest after last iteration to acknowledge correct ownership of sub-WorkerDataArrays. Reviewed-by: lkorinth, sjohanss ! src/hotspot/share/gc/shared/workerDataArray.inline.hpp ! test/hotspot/gtest/gc/shared/test_workerDataArray.cpp Changeset: ada146daf105 Author: tschatzl Date: 2019-12-06 09:49 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/ada146daf105 8235341: Improve WorkerDataArray API to disallow separate instantiation of sub-items Reviewed-by: lkorinth, sjohanss ! src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp ! src/hotspot/share/gc/shared/referenceProcessorPhaseTimes.cpp ! src/hotspot/share/gc/shared/weakProcessorPhaseTimes.cpp ! src/hotspot/share/gc/shared/weakProcessorPhaseTimes.hpp ! src/hotspot/share/gc/shared/workerDataArray.hpp ! src/hotspot/share/gc/shared/workerDataArray.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.cpp ! test/hotspot/gtest/gc/shared/test_workerDataArray.cpp Changeset: 4938269b8b17 Author: chagedorn Date: 2019-12-06 10:00 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/4938269b8b17 8229994: assert(false) failed: Bad graph detected in get_early_ctrl_for_expensive Summary: Fixes wrong idom information set in loop peeling when a loop strip mined loop is involved. Reviewed-by: vlivanov, thartmann ! src/hotspot/share/opto/loopTransform.cpp + test/hotspot/jtreg/compiler/loopopts/PeelingAndLoopStripMining.java Changeset: c6d7bb2146aa Author: prappo Date: 2019-12-06 10:12 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/c6d7bb2146aa 8235435: Remove (obsolete) @author info from javadoc source and tests 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/AbstractIndexWriter.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/AbstractTreeWriter.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/AnnotationTypeOptionalMemberWriterImpl.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/AnnotationTypeWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.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/DeprecatedListWriter.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/HelpWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDoclet.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/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/LinkFactoryImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/LinkOutputImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MarkerComments.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/ModuleIndexWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.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/SectionName.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SourceToHTMLConverter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SubWriterHolderWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/WriterFactoryImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Comment.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/DocType.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlAttr.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlDocument.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/HtmlTag.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/RawHtml.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/StringContent.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AbstractDoclet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeFieldWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeOptionalMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeRequiredMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/BaseConfiguration.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ClassWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstantsSummaryWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstructorWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/Content.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/MemberSummaryWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/MethodWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ModuleSummaryWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/NestedClassWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PackageSummaryWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PropertyWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/SerializedFormWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WriterFactory.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AbstractBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AbstractMemberBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeBuilder.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/AnnotationTypeOptionalMemberBuilder.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/BuilderFactory.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ClassBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ConstantsSummaryBuilder.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/MemberSummaryBuilder.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/ModuleSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PackageSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PropertyBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/SerializedFormBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/BaseTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/CodeTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/DeprecatedTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/DocRootTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/IndexTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/InheritDocTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/InheritableTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/LiteralTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ParamTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ReturnTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SeeTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SimpleTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/Taglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ThrowsTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/UserTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ValueTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/ClassTree.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/ClassUseMapper.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DeprecatedAPIListBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocFinder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocletConstants.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/ElementListWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Extern.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Group.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/IndexBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/MetaKeywords.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/TypeElementCatalog.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkFactory.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkInfo.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkOutput.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/DocEnvImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocClassFinder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocEnter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocMemberEnter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocTodo.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocTool.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Messager.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Start.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ToolEnvironment.java ! test/langtools/jdk/javadoc/doclet/AccessAsciiArt/AccessAsciiArt.java ! test/langtools/jdk/javadoc/doclet/AccessH1/AccessH1.java ! test/langtools/jdk/javadoc/doclet/AccessSkipNav/AccessSkipNav.java ! test/langtools/jdk/javadoc/doclet/AccessSummary/AccessSummary.java ! test/langtools/jdk/javadoc/doclet/AuthorDD/AuthorDD.java ! test/langtools/jdk/javadoc/doclet/DocRootSlash/DocRootSlash.java ! test/langtools/jdk/javadoc/doclet/InheritDocForUserTags/DocTest.java ! test/langtools/jdk/javadoc/doclet/JavascriptWinTitle/JavascriptWinTitle.java ! test/langtools/jdk/javadoc/doclet/MetaTag/MetaTag.java ! test/langtools/jdk/javadoc/doclet/ValidHtml/ValidHtml.java ! test/langtools/jdk/javadoc/doclet/VersionNumber/VersionNumber.java ! test/langtools/jdk/javadoc/doclet/WindowTitles/WindowTitles.java ! test/langtools/jdk/javadoc/doclet/constantValues/TestConstantValuesDriver.java ! test/langtools/jdk/javadoc/doclet/dupThrowsTags/TestDupThrowsTags.java ! test/langtools/jdk/javadoc/doclet/testAbsLinkPath/TestAbsLinkPath.java ! test/langtools/jdk/javadoc/doclet/testAbstractMethod/TestAbstractMethod.java ! test/langtools/jdk/javadoc/doclet/testAnchorNames/TestAnchorNames.java ! test/langtools/jdk/javadoc/doclet/testAnnotationOptional/TestAnnotationOptional.java ! test/langtools/jdk/javadoc/doclet/testAnnotationTypes/TestAnnotationTypes.java ! test/langtools/jdk/javadoc/doclet/testBackSlashInLink/TestBackSlashInLink.java ! test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/TestBadPackageFileInJar.java ! test/langtools/jdk/javadoc/doclet/testBadSourceFile/TestBadSourceFile.java ! test/langtools/jdk/javadoc/doclet/testBaseClass/TestBaseClass.java ! test/langtools/jdk/javadoc/doclet/testBreakIterator/TestBreakIterator.java ! test/langtools/jdk/javadoc/doclet/testCRLineSeparator/TestCRLineSeparator.java ! test/langtools/jdk/javadoc/doclet/testCharset/TestCharset.java ! test/langtools/jdk/javadoc/doclet/testClassCrossReferences/TestClassCrossReferences.java ! test/langtools/jdk/javadoc/doclet/testClassTree/TestClassTree.java ! test/langtools/jdk/javadoc/doclet/testCmndLineClass/TestCmndLineClass.java ! test/langtools/jdk/javadoc/doclet/testCompletionFailure/TestCompletionFailure.java ! test/langtools/jdk/javadoc/doclet/testConstantValuesPage/TestConstantValuesPage.java ! test/langtools/jdk/javadoc/doclet/testConstructorIndent/TestConstructorIndent.java ! test/langtools/jdk/javadoc/doclet/testConstructors/TestConstructors.java ! test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/TestDeprecatedDocs.java ! test/langtools/jdk/javadoc/doclet/testDocEncoding/TestDocEncoding.java ! test/langtools/jdk/javadoc/doclet/testDocErrorReporter/TestDocErrorReporter.java ! test/langtools/jdk/javadoc/doclet/testDocFileDir/TestDocFileDir.java ! test/langtools/jdk/javadoc/doclet/testDocRootInlineTag/TestDocRootInlineTag.java ! test/langtools/jdk/javadoc/doclet/testDocRootLink/TestDocRootLink.java ! test/langtools/jdk/javadoc/doclet/testDupParamWarn/TestDupParamWarn.java ! test/langtools/jdk/javadoc/doclet/testEmptyClass/TestEmptyClass.java ! test/langtools/jdk/javadoc/doclet/testEnclosingClass/TestEnclosingClass.java ! test/langtools/jdk/javadoc/doclet/testEncoding/TestEncoding.java ! test/langtools/jdk/javadoc/doclet/testExternalOverridenMethod/TestExternalOverridenMethod.java ! test/langtools/jdk/javadoc/doclet/testGroupOption/TestGroupOption.java ! test/langtools/jdk/javadoc/doclet/testHeadings/TestHeadings.java ! test/langtools/jdk/javadoc/doclet/testHelpFile/TestHelpFile.java ! test/langtools/jdk/javadoc/doclet/testHelpOption/TestHelpOption.java ! test/langtools/jdk/javadoc/doclet/testHiddenMembers/TestHiddenMembers.java ! test/langtools/jdk/javadoc/doclet/testHref/TestHref.java ! test/langtools/jdk/javadoc/doclet/testHrefInDocComment/TestHrefInDocComment.java ! test/langtools/jdk/javadoc/doclet/testHtmlComments/TestHtmlComments.java ! test/langtools/jdk/javadoc/doclet/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java ! test/langtools/jdk/javadoc/doclet/testHtmlDocument/TestHtmlDocument.java ! test/langtools/jdk/javadoc/doclet/testHtmlStrongTag/TestHtmlStrongTag.java ! test/langtools/jdk/javadoc/doclet/testHtmlTableStyles/TestHtmlTableStyles.java ! test/langtools/jdk/javadoc/doclet/testHtmlTableTags/TestHtmlTableTags.java ! test/langtools/jdk/javadoc/doclet/testHtmlTag/TestHtmlTag.java ! test/langtools/jdk/javadoc/doclet/testHtmlVersion/TestHtmlVersion.java ! test/langtools/jdk/javadoc/doclet/testIndex/TestIndex.java ! test/langtools/jdk/javadoc/doclet/testIndexFiles/TestIndexFiles.java ! test/langtools/jdk/javadoc/doclet/testInlineLinkLabel/TestInlineLinkLabel.java ! test/langtools/jdk/javadoc/doclet/testInterface/TestInterface.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java ! test/langtools/jdk/javadoc/doclet/testJavascript/TestJavascript.java ! test/langtools/jdk/javadoc/doclet/testLambdaFeature/TestLambdaFeature.java ! test/langtools/jdk/javadoc/doclet/testLeadingSpaces/LeadingSpaces.java ! test/langtools/jdk/javadoc/doclet/testLegacyTaglet/TestLegacyTaglet.java ! test/langtools/jdk/javadoc/doclet/testLinkOption/TestBadLinkOption.java ! test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java ! test/langtools/jdk/javadoc/doclet/testLinkOption/TestNewLineInLink.java ! test/langtools/jdk/javadoc/doclet/testLinkTaglet/TestLinkTaglet.java ! test/langtools/jdk/javadoc/doclet/testLinkToSerialForm/TestLinkToSerialForm.java ! test/langtools/jdk/javadoc/doclet/testMemberInheritance/TestMemberInheritance.java ! test/langtools/jdk/javadoc/doclet/testMemberSummary/TestMemberSummary.java ! test/langtools/jdk/javadoc/doclet/testMethodTypes/TestMethodTypes.java ! test/langtools/jdk/javadoc/doclet/testModules/TestModules.java ! test/langtools/jdk/javadoc/doclet/testNavigation/TestNavigation.java ! test/langtools/jdk/javadoc/doclet/testNestedGenerics/TestNestedGenerics.java ! test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java ! test/langtools/jdk/javadoc/doclet/testNoPackagesFile/TestNoPackagesFile.java ! test/langtools/jdk/javadoc/doclet/testNotifications/TestNotifications.java ! test/langtools/jdk/javadoc/doclet/testOptions/TestOptions.java ! test/langtools/jdk/javadoc/doclet/testOverriddenMethods/TestMultiInheritance.java ! test/langtools/jdk/javadoc/doclet/testOverriddenMethods/TestOverriddenMethodDocCopy.java ! test/langtools/jdk/javadoc/doclet/testOverriddenMethods/TestOverriddenPrivateMethods.java ! test/langtools/jdk/javadoc/doclet/testOverriddenMethods/TestOverriddenPrivateMethodsWithPackageFlag.java ! test/langtools/jdk/javadoc/doclet/testOverriddenMethods/TestOverriddenPrivateMethodsWithPrivateFlag.java ! test/langtools/jdk/javadoc/doclet/testPackageDeprecation/TestPackageDeprecation.java ! test/langtools/jdk/javadoc/doclet/testPackagePage/TestPackagePage.java ! test/langtools/jdk/javadoc/doclet/testParamTaglet/TestParamTaglet.java ! test/langtools/jdk/javadoc/doclet/testPrivateClasses/TestPrivateClasses.java ! test/langtools/jdk/javadoc/doclet/testRecurseSubPackages/TestRecurseSubPackages.java ! test/langtools/jdk/javadoc/doclet/testRelativeLinks/TestRelativeLinks.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/TestRepeatedAnnotations.java ! test/langtools/jdk/javadoc/doclet/testReturnTag/TestReturnTag.java ! test/langtools/jdk/javadoc/doclet/testSearch/TestSearch.java ! test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java ! test/langtools/jdk/javadoc/doclet/testSerialVersionUID/TestSerialVersionUID.java ! test/langtools/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java ! test/langtools/jdk/javadoc/doclet/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java ! test/langtools/jdk/javadoc/doclet/testSimpleTag/TestSimpleTag.java ! test/langtools/jdk/javadoc/doclet/testSimpleTagExclude/TestSimpleTagExclude.java ! test/langtools/jdk/javadoc/doclet/testSinceTag/TestSinceTag.java ! test/langtools/jdk/javadoc/doclet/testSingleQuotedLink/TestSingleQuotedLink.java ! test/langtools/jdk/javadoc/doclet/testSourceTab/TestSourceTab.java ! test/langtools/jdk/javadoc/doclet/testStylesheet/TestStylesheet.java ! test/langtools/jdk/javadoc/doclet/testSubTitle/TestSubTitle.java ! test/langtools/jdk/javadoc/doclet/testSummaryHeading/TestSummaryHeading.java ! test/langtools/jdk/javadoc/doclet/testSuperclassInSerialForm/TestSuperClassInSerialForm.java ! test/langtools/jdk/javadoc/doclet/testSupplementary/TestSupplementary.java ! test/langtools/jdk/javadoc/doclet/testTagInheritence/TestTagInheritence.java ! test/langtools/jdk/javadoc/doclet/testTagMisuse/TestTagMisuse.java ! test/langtools/jdk/javadoc/doclet/testTagOutput/TestTagOutput.java ! test/langtools/jdk/javadoc/doclet/testThrowsHead/TestThrowsHead.java ! test/langtools/jdk/javadoc/doclet/testThrowsInheritence/TestThrowsTagInheritence.java ! test/langtools/jdk/javadoc/doclet/testThrowsTag/TestThrowsTag.java ! test/langtools/jdk/javadoc/doclet/testTitleInHref/TestTitleInHref.java ! test/langtools/jdk/javadoc/doclet/testTopOption/TestTopOption.java ! test/langtools/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java ! test/langtools/jdk/javadoc/doclet/testTypeParams/TestTypeParameters.java ! test/langtools/jdk/javadoc/doclet/testUnnamedPackage/TestUnnamedPackage.java ! test/langtools/jdk/javadoc/doclet/testUseOption/TestUseOption.java ! test/langtools/jdk/javadoc/doclet/testValueTag/TestValueTag.java ! test/langtools/jdk/javadoc/doclet/testWarnBadParamNames/TestWarnBadParamNames.java ! test/langtools/jdk/javadoc/doclet/testWarnings/TestWarnings.java ! test/langtools/jdk/javadoc/doclet/typeAnnotations/smoke/TestSmoke.java ! test/langtools/jdk/javadoc/lib/javadoc/tester/JavadocTester.java ! test/langtools/jdk/javadoc/tool/NoStar.java ! test/langtools/jdk/javadoc/tool/T4696488.java ! test/langtools/jdk/javadoc/tool/T4994049/T4994049.java ! test/langtools/jdk/javadoc/tool/T6551367.java ! test/langtools/jdk/javadoc/tool/XWerror.java ! test/langtools/jdk/javadoc/tool/completionFailure/CompletionFailure.java ! test/langtools/jdk/javadoc/tool/dupOk/DupOk.java ! test/langtools/jdk/javadoc/tool/outputRedirect/Test.java ! test/langtools/jdk/javadoc/tool/sourceOnly/Test.java ! test/langtools/jdk/javadoc/tool/sourceOption/SourceOption.java Changeset: c1ee5babd539 Author: sjohanss Date: 2019-10-23 21:28 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/c1ee5babd539 8220465: Use shadow regions for faster ParallelGC full GCs Reviewed-by: sjohanss, tschatzl Contributed-by: Haoyu Li ! src/hotspot/share/gc/parallel/psCompactionManager.cpp ! src/hotspot/share/gc/parallel/psCompactionManager.hpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.hpp Changeset: cb2774f0e6eb Author: hseigel Date: 2019-12-06 13:05 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/cb2774f0e6eb 8235359: Simplify method Class.getRecordComponents() Summary: Change getRecordComponents0() to return an array of RecordComponent's so no conversion is needed Reviewed-by: lfoltan, chegar, fparain, vromero, mchung ! src/java.base/share/classes/java/lang/Class.java ! src/java.base/share/native/libjava/Class.c Changeset: 2bea4bea7004 Author: clanger Date: 2019-12-06 14:13 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/2bea4bea7004 8234185: Cleanup usage of canonicalize function between libjava, hotspot and libinstrument Reviewed-by: dholmes, alanb, sspitsyn ! src/hotspot/share/classfile/classLoader.cpp ! src/hotspot/share/include/jvm.h ! src/java.base/share/native/libjava/jdk_util.h ! src/java.base/share/native/libjava/jni_util.c ! src/java.base/unix/native/libjava/UnixFileSystem_md.c ! src/java.base/unix/native/libjava/canonicalize_md.c ! src/java.base/windows/native/libjava/canonicalize_md.c ! src/java.base/windows/native/libjava/io_util_md.h ! src/java.instrument/share/native/libinstrument/InvocationAdapter.c Changeset: 87fb3f5a499c Author: mdoerr Date: 2019-12-06 14:31 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/87fb3f5a499c 8220348: [ntintel] asserts about copying unaligned array Reviewed-by: clanger, stuefe ! src/java.prefs/windows/native/libprefs/WindowsPreferences.c ! src/java.security.jgss/share/native/libj2gss/GSSLibStub.c Changeset: ee448a1f33cc Author: michaelm Date: 2019-12-06 14:17 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/ee448a1f33cc 8235475: Add additional timestamp to test java/nio/channels/Selector/SelectWithConsumer.java Reviewed-by: alanb ! test/jdk/java/nio/channels/Selector/SelectWithConsumer.java Changeset: 948012822469 Author: ccheung Date: 2019-12-06 09:09 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/948012822469 8225219: [TESTBUG] AppCDS tests timed out with -Xcomp and --limit-modules option won't work with Graal Reviewed-by: kvn, iklam, iignatyev ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/MainModuleOnly.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/MainModuleOnly.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ModulePathAndCP_JFR.java Changeset: 31f9903f0838 Author: iignatyev Date: 2019-12-06 09:14 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/31f9903f0838 8235353: clean up hotspot problem lists Reviewed-by: kvn, mdoerr ! test/hotspot/jtreg/ProblemList.txt Changeset: 0edc7fd0d7a3 Author: redestad Date: 2019-12-06 18:05 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/0edc7fd0d7a3 8234331: Add robust and optimized utility for rounding up to next power of two Reviewed-by: eosterlund, stuefe, jrose ! src/hotspot/cpu/aarch64/gc/z/zGlobals_aarch64.cpp ! src/hotspot/cpu/x86/gc/z/zGlobals_x86.cpp ! src/hotspot/share/gc/z/zForwarding.cpp ! src/hotspot/share/gc/z/zHeuristics.cpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zUtils.inline.hpp ! src/hotspot/share/libadt/dict.cpp ! src/hotspot/share/libadt/vectset.cpp ! src/hotspot/share/opto/block.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/phaseX.cpp ! src/hotspot/share/runtime/threadSMR.cpp ! src/hotspot/share/utilities/count_leading_zeros.hpp ! src/hotspot/share/utilities/growableArray.hpp + src/hotspot/share/utilities/powerOfTwo.hpp - test/hotspot/gtest/gc/z/test_zUtils.cpp ! test/hotspot/gtest/utilities/test_count_leading_zeros.cpp + test/hotspot/gtest/utilities/test_powerOfTwo.cpp Changeset: 5f73126dc390 Author: vromero Date: 2019-12-06 14:23 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/5f73126dc390 8235446: confusing error message for records with no parens Reviewed-by: mcimadamore ! 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/diags/examples/IncorrectRecordDeclaration.java ! test/langtools/tools/javac/records/RecordCompilationTests.java Changeset: 1498cd1c98ad Author: dlsmith Date: 2019-12-06 12:33 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/1498cd1c98ad 8234835: Use UTF-8 charset in fixuppandoc Reviewed-by: martin, jjg ! make/jdk/src/classes/build/tools/fixuppandoc/Main.java Changeset: 24f9f0843abb Author: erikj Date: 2019-12-06 12:01 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/24f9f0843abb 8230067: Add optional automatic retry when running jtreg tests Reviewed-by: prr ! doc/testing.html ! doc/testing.md ! make/RunTests.gmk ! make/conf/jib-profiles.js Changeset: 3b9efbac1b50 Author: darcy Date: 2019-12-06 12:13 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/3b9efbac1b50 8235499: Change HotSpot jtreg records test to better handle JDK updates Reviewed-by: hseigel, iignatyev ! test/hotspot/jtreg/runtime/records/ignoreRecordAttribute.java ! test/hotspot/jtreg/runtime/records/recordReflectionTest.java Changeset: 0bd09f6d2617 Author: jjg Date: 2019-12-06 13:03 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/0bd09f6d2617 8218268: Javac treats Manifest Class-Path entries as Paths instead of URLs Reviewed-by: mchung, bchristi ! src/jdk.compiler/share/classes/com/sun/tools/javac/file/FSInfo.java Changeset: 01cb61a27e61 Author: darcy Date: 2019-12-06 13:32 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/01cb61a27e61 8235514: Update record serialization tests to not use hard coded source versions Reviewed-by: lancea ! test/jdk/java/io/Serializable/records/BadCanonicalCtrTest.java ! test/jdk/java/io/Serializable/records/ProhibitedMethods.java ! test/jdk/java/io/Serializable/records/SerialPersistentFieldsTest.java Changeset: 8539243dc929 Author: kvn Date: 2019-12-06 14:47 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/8539243dc929 8235438: [JVMCI] StackTraceElement::decode should use the original Method Reviewed-by: coleenp, never ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/jvmci/jvmciEnv.cpp Changeset: 4437d58547ce Author: mchung Date: 2019-12-06 15:10 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/4437d58547ce 8235351: Lookup::unreflect should bind with the original caller independent of Method's accessible flag Reviewed-by: alanb ! src/java.base/share/classes/java/lang/invoke/MethodHandles.java ! test/jdk/java/lang/invoke/CallerSensitiveAccess.java Changeset: c9adad6d7055 Author: sviswanathan Date: 2019-12-06 16:03 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/c9adad6d7055 8235510: java.util.zip.CRC32 performance drop after 8200067 Summary: backout 8200067 optimization Reviewed-by: kvn ! src/hotspot/cpu/x86/assembler_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.hpp Changeset: 31882abe1494 Author: weijun Date: 2019-12-07 09:40 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/31882abe1494 8233222: Clarify system property usage in KerberosPrincipal instantiation Reviewed-by: mullan ! src/java.security.jgss/share/classes/javax/security/auth/kerberos/KerberosPrincipal.java Changeset: fb39a8d1d101 Author: zgu Date: 2019-12-08 10:05 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/fb39a8d1d101 8235262: Move c2i_entry_barrier for x86_32 to shared Reviewed-by: rkennke, eosterlund ! src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp ! src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp ! src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp Changeset: 046f9512418b Author: rraghavan Date: 2019-12-09 14:02 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/046f9512418b 8233453: MLVM deoptimize stress test timed out Summary: Increased timeout factor for MLVM deoptimize stress test Reviewed-by: iignatyev, thartmann ! test/hotspot/jtreg/vmTestbase/vm/mlvm/meth/stress/compiler/deoptimize/Test.java Changeset: 22edf8054aa2 Author: jlahoda Date: 2019-12-09 10:16 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/22edf8054aa2 8235483: Warnings printed during the build Reviewed-by: erikj ! make/gendata/Gendata-jdk.compiler.gmk Changeset: 45fceff98bb5 Author: sjohanss Date: 2019-12-09 10:26 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/45fceff98bb5 8165443: Free Collection Set serial phase takes very long on large heaps Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp ! src/hotspot/share/gc/g1/g1Policy.cpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp ! src/hotspot/share/gc/g1/heapRegionManager.cpp ! src/hotspot/share/gc/g1/heapRegionManager.hpp ! src/hotspot/share/gc/g1/heapRegionSet.cpp ! src/hotspot/share/gc/g1/heapRegionSet.hpp ! src/hotspot/share/gc/g1/heapRegionSet.inline.hpp ! test/hotspot/jtreg/gc/g1/TestGCLogMessages.java ! test/jdk/jdk/jfr/event/gc/collection/TestG1ParallelPhases.java Changeset: c445504316e4 Author: jboes Date: 2019-12-09 12:06 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/c445504316e4 8233319: Deprecate MulticastSocket methods that operate on java.net.InetAddress Summary: Deprecate any method that operates on InetAddress as well as getLoopbackMode and setLoopbackMode Reviewed-by: chegar, dfuchs, alanb ! src/java.base/share/classes/java/net/MulticastSocket.java ! src/java.base/share/classes/java/net/StandardSocketOptions.java Changeset: 5e94d60e5dd3 Author: jboes Date: 2019-12-09 12:46 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/5e94d60e5dd3 8232513: java/net/DatagramSocket/PortUnreachable.java still fails intermittently with BindException Summary: Increase the number of bind retries and test repeats, best effort only Reviewed-by: msheppar, dfuchs, vtewari ! test/jdk/java/net/DatagramSocket/PortUnreachable.java Changeset: 3df41c569827 Author: clanger Date: 2019-12-09 15:01 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/3df41c569827 8235403: Further cleanup to test serviceability/sa/ClhsdbCDSCore.java Reviewed-by: iklam, iignatyev ! test/hotspot/jtreg/serviceability/sa/ClhsdbCDSCore.java Changeset: 3009b27660be Author: aefimov Date: 2019-12-09 14:07 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/3009b27660be 8141685: com/sun/jndi/ldap/InvalidLdapFilters.java initializes context failed Reviewed-by: dfuchs, vtewari ! test/jdk/com/sun/jndi/ldap/InvalidLdapFilters.java Changeset: 9cb141c7329f Author: pconcannon Date: 2019-12-09 14:25 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/9cb141c7329f 8234148: DatagramSocket.setOption/getOption/supportedOption should support multicast options Summary: Fix adds multicast socket options to DatagramSocket Reviewed-by: alanb, dfuchs, vtewari ! src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java ! src/java.base/windows/classes/java/net/DualStackPlainDatagramSocketImpl.java + test/jdk/java/net/DatagramSocket/SupportedOptionsCheck.java ! test/jdk/java/net/SocketOption/SupportedOptionsSet.java Changeset: 7fbe6a42ffe9 Author: redestad Date: 2019-12-09 16:46 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/7fbe6a42ffe9 8234735: InstanceKlass:find_method_index regression after JDK-8231610 Reviewed-by: iklam, coleenp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp Changeset: 8df91a722672 Author: pconcannon Date: 2019-12-09 15:54 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/8df91a722672 8233191: MulticastSocket joinGroup/leaveGroup do not specify their behavior when the outgoing interface has not been set Summary: Clarifies the behaviour of 2-arg joinGroup/leaveGroup methods when null is passed for the NetworkInteface argument. The fix also clarifies what is returned by getInterface() and getNetworkInterface() methods when no previous NetworkInterface has been set. Reviewed-by: alanb, chegar, dfuchs ! src/java.base/share/classes/java/net/MulticastSocket.java Changeset: 1b86798de6aa Author: vlivanov Date: 2019-12-09 19:29 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/1b86798de6aa 8226411: C2: Avoid memory barriers around off-heap unsafe accesses Reviewed-by: kvn, thartmann, eosterlund, jrose, rkennke ! src/hotspot/share/gc/g1/c2/g1BarrierSetC2.cpp ! src/hotspot/share/gc/shared/c2/barrierSetC2.cpp ! src/hotspot/share/oops/accessDecorators.hpp ! src/hotspot/share/opto/library_call.cpp Changeset: c3203a6a2ed4 Author: vlivanov Date: 2019-12-09 19:29 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/c3203a6a2ed4 8235143: C2: No memory state needed in Thread::currentThread() intrinsic Reviewed-by: mdoerr, jrose ! src/hotspot/share/opto/library_call.cpp Changeset: 153e5f76551d Author: sundar Date: 2019-12-09 23:00 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/153e5f76551d 8225562: jlink --module-path behavior inconsistent with help/errors Reviewed-by: alanb ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties Changeset: 93a167720c90 Author: herrick Date: 2019-12-09 13:01 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/93a167720c90 8235453: tools/jpackage/junit/junit.java failed Reviewed-by: prr ! test/jdk/tools/jpackage/junit/junit.java Changeset: e6ed9bef5f8f Author: herrick Date: 2019-12-09 13:02 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/e6ed9bef5f8f Merge Changeset: 66211c44e126 Author: iklam Date: 2019-12-09 09:59 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/66211c44e126 8235490: AppCDS DynamicArchiveRelocationTest.java failed: 'always map archive(s) at an alternative address' missing Reviewed-by: coleenp, ccheung ! src/hotspot/share/memory/metaspaceShared.cpp ! test/hotspot/jtreg/runtime/cds/appcds/ArchiveRelocationTest.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicArchiveRelocationTest.java Changeset: 8d507e815358 Author: jjg Date: 2019-12-09 10:44 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/8d507e815358 8234211: allow discoverable javac plugins to be invoked by default Reviewed-by: jlahoda ! src/jdk.compiler/share/classes/com/sun/source/util/Plugin.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/BasicJavacTask.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/Main.java + test/langtools/tools/javac/plugin/AutostartPlugins.java Changeset: a0c21305ee87 Author: xuelei Date: 2019-12-09 10:56 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/a0c21305ee87 8235448: code cleanup in SSLContextImpl.java Reviewed-by: jnimeh ! src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java Changeset: 60eff58d6f67 Author: zgu Date: 2019-12-09 14:01 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/60eff58d6f67 8235586: Shenandoah: Traversal GC still uses old CLD::oops_do API Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp Changeset: 17b0f051280f Author: jjg Date: 2019-12-09 12:27 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/17b0f051280f 8234689: facilitate writing additional custom attributes in a class file Reviewed-by: jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java + test/langtools/tools/javac/classwriter/ExtraAttributes.java Changeset: b82209a3f793 Author: lmesnik Date: 2019-12-09 13:02 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/b82209a3f793 8235530: Removed duplicated threadByName methods in nsk/jdi tests Reviewed-by: dholmes, sspitsyn ! test/hotspot/jtreg/vmTestbase/nsk/jdi/BooleanType/_itself_/booleantype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addInstanceFilter/instancefilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/addThreadFilter/threadfilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/BreakpointRequest/location/location001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ByteType/_itself_/bytetype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/CharType/_itself_/chartype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/definedClasses/definedclasses001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassLoaderReference/visibleClasses/visibleclasses001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassExclusionFilter/filter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_rt/filter_rt002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassPrepareRequest/addClassFilter_s/filter_s002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ClassType/invokeMethod/invokemethod015.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/DoubleType/_itself_/doubletype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/request/request001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventIterator/nextEvent/nextevent001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove/remove004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/addCountFilter/addcountfilter001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/disable/disable001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/disable/disable002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/enable/enable001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/enable/enable002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/getProperty/getproperty001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/hashCode/hashcode001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/isEnabled/isenabled001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/putProperty/putproperty001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/setSuspendPolicy/setsuspendpolicy001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequest/suspendPolicy/suspendpolicy001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/accessWatchpointRequests/accwtchpreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/breakpointRequests/breakpreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classPrepareRequests/clsprepreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/classUnloadRequests/clsunlreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createAccessWatchpointRequest/craccwtchpreq003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createBreakpointRequest/crbreakpreq003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createClassPrepareRequest/cpreg001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createClassUnloadRequest/cureg001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createExceptionRequest/crexreq009.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createExceptionRequest/crexreq010.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createMethodEntryRequest/menreg001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createMethodExitRequest/mexreg001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createModificationWatchpointRequest/crmodwtchpreq003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq005.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq006.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq007.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq008.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq009.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createStepRequest/crstepreq010.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createThreadDeathRequest/tdreg001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createThreadStartRequest/tsreg001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/createVMDeathRequest/vmdreg001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteAllBreakpoints/delallbreakp002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequest/delevtreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/deleteEventRequests/delevtreqs002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/exceptionRequests/excreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodEntryRequests/methentreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/methodExitRequests/methexitreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/modificationWatchpointRequests/modwtchpreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/stepRequests/stepreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadDeathRequests/thrdeathreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/threadStartRequests/thrstartreq002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventRequestManager/vmDeathRequests/vmdeathreq001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/eventIterator/eventiterator004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume005.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume006.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume007.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume010.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume011.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume012.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/resume/resume013.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy005.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy006.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy007.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy008.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy009.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy010.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy011.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy012.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy013.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy014.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy015.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy016.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/EventSet/suspendPolicy/suspendpolicy017.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassExclusionFilter/filter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_rt/filter_rt002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addClassFilter_s/filter_s002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addInstanceFilter/instancefilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/addThreadFilter/threadfilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/exception/exception001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/notifyCaught/notifycaught001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ExceptionRequest/notifyUncaught/notifyuncaught001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/FloatType/_itself_/floattype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/IntegerType/_itself_/integertype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/LocatableEvent/thread/thread001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/LongType/_itself_/longtype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassExclusionFilter/filter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_rt/filter_rt002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addClassFilter_s/filter_s002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addInstanceFilter/instancefilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodEntryRequest/addThreadFilter/threadfilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassExclusionFilter/filter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_rt/filter_rt002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addClassFilter_s/filter_s002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addInstanceFilter/instancefilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/MethodExitRequest/addThreadFilter/threadfilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ModificationWatchpointEvent/_itself_/mwevent001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/disableCollection/disablecollection002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/PathSearchingVirtualMachine/classPath/classpath001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/PrimitiveType/_itself_/primitivetype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/classLoader/classloader001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValue/getvalue003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/getValues/getvalues001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isFinal/isfinal001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isStatic/isstatic001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/isStatic/isstatic002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/nestedTypes/nestedtypes001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ReferenceType/nestedTypes/nestedtypes002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ShortType/_itself_/shorttype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassExclusionFilter/filter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_rt/filter_rt002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addClassFilter_s/filter_s002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/addInstanceFilter/instancefilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/depth/depth001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/depth/depth002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/depth/depth003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/size/size001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/size/size002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/StepRequest/thread/thread001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadDeathRequest/addThreadFilter/addthreadfilter005.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadReference/popFrames/popframes005.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/ThreadStartRequest/addThreadFilter/addthreadfilter005.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath002.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VMDeathEvent/_itself_/vmdeath003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/allClasses/allclasses001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canAddMethod/canaddmethod001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canPopFrames/canpopframes001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canRedefineClasses/canredefineclasses001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canRequestVMDeathEvent/canreqvmdev001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canUnrestrictedlyRedefineClasses/curc001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canUseInstanceFilters/canusefilters001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldAccess/canwatchaccess001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/canWatchFieldModification/canwatchmod001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/VoidType/_itself_/voidtype001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassExclusionFilter/filter004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_rt/filter_rt004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addClassFilter_s/filter_s004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter005.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addInstanceFilter/instancefilter006.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter003.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter004.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter005.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/addThreadFilter/addthreadfilter006.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/field/field001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/WatchpointRequest/field/field002.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java + test/hotspot/jtreg/vmTestbase/nsk/share/jdi/JDITestRuntimeException.java Changeset: 35d8d9b65744 Author: stefank Date: 2019-12-04 11:30 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/35d8d9b65744 8235324: Dying objects are published from users of CollectedHeap::object_iterate Reviewed-by: pliden, eosterlund, sjohanss, rkennke ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp ! src/hotspot/share/gc/z/zBarrier.cpp ! src/hotspot/share/gc/z/zBarrier.hpp ! src/hotspot/share/gc/z/zBarrier.inline.hpp ! src/hotspot/share/gc/z/zCollectedHeap.cpp ! src/hotspot/share/gc/z/zCollectedHeap.hpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeap.hpp ! src/hotspot/share/memory/heapInspection.cpp ! src/hotspot/share/prims/jvmtiTagMap.cpp Changeset: 2aaa8bcb90a9 Author: stefank Date: 2019-12-09 15:28 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/2aaa8bcb90a9 8234508: VM_HeapWalkOperation::iterate_over_object reads non-strong fields with an on-strong load barrier Reviewed-by: pliden, eosterlund ! src/hotspot/share/prims/jvmtiTagMap.cpp Changeset: f236fd5d0c2c Author: henryjen Date: 2019-12-10 00:36 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/f236fd5d0c2c 8234542: code removal of Pack200 Tools and API Reviewed-by: alanb, mchung, erikj ! make/autoconf/compare.sh.in ! make/common/Modules.gmk - make/launcher/Launcher-jdk.pack.gmk - make/lib/Lib-jdk.pack.gmk ! make/nashorn/element-list ! make/scripts/compare.sh ! make/scripts/compare_exceptions.sh.incl - src/java.base/share/classes/com/sun/java/util/jar/pack/AdaptiveCoding.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Attribute.java - src/java.base/share/classes/com/sun/java/util/jar/pack/BandStructure.java - src/java.base/share/classes/com/sun/java/util/jar/pack/ClassReader.java - src/java.base/share/classes/com/sun/java/util/jar/pack/ClassWriter.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Code.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Coding.java - src/java.base/share/classes/com/sun/java/util/jar/pack/CodingChooser.java - src/java.base/share/classes/com/sun/java/util/jar/pack/CodingMethod.java - src/java.base/share/classes/com/sun/java/util/jar/pack/ConstantPool.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Constants.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Driver.java - src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource.java - src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource_ja.java - src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource_zh_CN.java - src/java.base/share/classes/com/sun/java/util/jar/pack/FixedList.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Fixups.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Histogram.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Instruction.java - src/java.base/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Package.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PackageReader.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PackageWriter.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PackerImpl.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PropMap.java - src/java.base/share/classes/com/sun/java/util/jar/pack/TLGlobals.java - src/java.base/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Utils.java - src/java.base/share/classes/com/sun/java/util/jar/pack/intrinsic.properties - src/java.base/share/classes/com/sun/java/util/jar/pack/package-info.java - src/java.base/share/classes/java/util/jar/Pack200.java ! src/jdk.jartool/share/classes/sun/tools/jar/GNUStyleOptions.java ! src/jdk.jartool/share/classes/sun/tools/jar/Main.java ! src/jdk.jartool/share/classes/sun/tools/jar/resources/jar.properties - src/jdk.pack/share/classes/module-info.java - src/jdk.pack/share/man/pack200.1 - src/jdk.pack/share/man/unpack200.1 - src/jdk.pack/share/native/common-unpack/bands.cpp - src/jdk.pack/share/native/common-unpack/bands.h - src/jdk.pack/share/native/common-unpack/bytes.cpp - src/jdk.pack/share/native/common-unpack/bytes.h - src/jdk.pack/share/native/common-unpack/coding.cpp - src/jdk.pack/share/native/common-unpack/coding.h - src/jdk.pack/share/native/common-unpack/constants.h - src/jdk.pack/share/native/common-unpack/defines.h - src/jdk.pack/share/native/common-unpack/unpack.cpp - src/jdk.pack/share/native/common-unpack/unpack.h - src/jdk.pack/share/native/common-unpack/utils.cpp - src/jdk.pack/share/native/common-unpack/utils.h - src/jdk.pack/share/native/common-unpack/zip.cpp - src/jdk.pack/share/native/common-unpack/zip.h - src/jdk.pack/share/native/libunpack/jni.cpp - src/jdk.pack/share/native/unpack200/main.cpp - src/jdk.pack/windows/native/unpack200/unpack200_proto.exe.manifest ! src/utils/IdealGraphVisualizer/nbproject/project.properties ! test/jdk/ProblemList.txt ! test/jdk/TEST.groups - test/jdk/java/util/jar/Pack200/SecurityTest.java - test/jdk/tools/jar/DeprecateOptionN.java ! test/jdk/tools/launcher/HelpFlagsTest.java ! test/jdk/tools/launcher/VersionCheck.java - test/jdk/tools/pack200/AttributeTests.java - test/jdk/tools/pack200/BandIntegrity.java - test/jdk/tools/pack200/CommandLineTests.java - test/jdk/tools/pack200/DeprecatePack200.java - test/jdk/tools/pack200/InstructionTests.java - test/jdk/tools/pack200/ModuleAttributes.java - test/jdk/tools/pack200/MultiRelease.java - test/jdk/tools/pack200/Pack200Props.java - test/jdk/tools/pack200/Pack200Test.java - test/jdk/tools/pack200/PackChecksum.java - test/jdk/tools/pack200/PackTestZip64.java - test/jdk/tools/pack200/PackTestZip64Manual.java - test/jdk/tools/pack200/PackageVersionTest.java - test/jdk/tools/pack200/RepackTest.java - test/jdk/tools/pack200/T7007157.java - test/jdk/tools/pack200/TestExceptions.java - test/jdk/tools/pack200/TestNormal.java - test/jdk/tools/pack200/TimeStamp.java - test/jdk/tools/pack200/UnpackerMemoryTest.java - test/jdk/tools/pack200/Utils.java - test/jdk/tools/pack200/badattr.jar - test/jdk/tools/pack200/pack200-verifier/data/README - test/jdk/tools/pack200/pack200-verifier/data/golden.jar - test/jdk/tools/pack200/pack200-verifier/make/build.xml - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/ClassCompare.java - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/Globals.java - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/JarFileCompare.java - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/Main.java - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/VerifyTreeSet.java - test/jdk/tools/pack200/pack200-verifier/src/xmlkit/ClassReader.java - test/jdk/tools/pack200/pack200-verifier/src/xmlkit/CommandLineParser.java - test/jdk/tools/pack200/pack200-verifier/src/xmlkit/TokenList.java - test/jdk/tools/pack200/pack200-verifier/src/xmlkit/XMLKit.java - test/jdk/tools/pack200/typeannos/Lambda.java - test/jdk/tools/pack200/typeannos/Readme.txt - test/jdk/tools/pack200/typeannos/TargetTypes.java - test/jdk/tools/pack200/typeannos/TestTypeAnnotations.java - test/jdk/tools/pack200/typeannos/TypeUseTarget.java Changeset: b2e191f03473 Author: mseledtsov Date: 2019-12-09 17:24 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/b2e191f03473 8235600: Problemlist JFR streaming/TestJVMCrash until after-test cleanup issue is resolved Summary: Placed TestJVMCrash test on a problem list Reviewed-by: dcubed ! test/jdk/ProblemList.txt Changeset: 9ea6521df290 Author: rhalade Date: 2019-12-09 21:38 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/9ea6521df290 8190492: Remove SSLv2Hello and SSLv3 from default enabled TLS protocols Reviewed-by: mullan, wetmore, xuelei ! src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java ! test/jdk/javax/net/ssl/SSLEngine/NoAuthClientAuth.java ! test/jdk/javax/net/ssl/ServerName/SSLEngineExplorer.java ! test/jdk/javax/net/ssl/ServerName/SSLSocketExplorer.java ! test/jdk/javax/net/ssl/sanity/interop/JSSEServer.java ! test/jdk/sun/security/pkcs11/sslecc/JSSEServer.java ! test/jdk/sun/security/ssl/ProtocolVersion/HttpsProtocols.java ! test/jdk/sun/security/ssl/SSLContextImpl/CustomizedDefaultProtocols.java ! test/jdk/sun/security/ssl/SSLContextImpl/CustomizedServerDefaultProtocols.java ! test/jdk/sun/security/ssl/SSLContextImpl/DefaultEnabledProtocols.java ! test/jdk/sun/security/ssl/SSLContextImpl/NoOldVersionContext.java ! test/jdk/sun/security/ssl/SSLSocketImpl/InvalidateServerSessionRenegotiate.java ! test/jdk/sun/security/ssl/SSLSocketImpl/NoImpactServerRenego.java Changeset: 3b693618d084 Author: chagedorn Date: 2019-12-10 09:28 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/3b693618d084 8233032: assert(in_bb(n)) failed: must be Summary: Find first and last memory state of a load pack without relying on bb indices. Reviewed-by: roland, kvn, thartmann Contributed-by: Roland Westrelin , Christian Hagedorn ! src/hotspot/share/opto/superword.cpp + test/hotspot/jtreg/compiler/loopopts/superword/CoLocatePack.java Changeset: a4fb32538898 Author: xliu Date: 2019-12-10 10:34 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/a4fb32538898 8235383: C1 compilation fails with -XX:+PrintIRDuringConstruction -XX:+Verbose Summary: Added check for printable bci. Reviewed-by: thartmann ! src/hotspot/share/c1/c1_InstructionPrinter.cpp + test/hotspot/jtreg/compiler/c1/TestPrintIRDuringConstruction.java Changeset: f52cc36158cf Author: michaelm Date: 2019-12-10 11:26 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/f52cc36158cf 8234871: deprecate SocketFlow (SO_FLOW_SLA) and related APIs for removal Reviewed-by: alanb, chegar ! src/jdk.net/share/classes/jdk/net/ExtendedSocketOptions.java ! src/jdk.net/share/classes/jdk/net/NetworkPermission.java ! src/jdk.net/share/classes/jdk/net/SocketFlow.java ! src/jdk.net/share/classes/jdk/net/Sockets.java ! src/jdk.net/solaris/classes/jdk/net/SolarisSocketOptions.java Changeset: 9f4e98d4dcd4 Author: pliden Date: 2019-12-10 13:12 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/9f4e98d4dcd4 8235366: ZGC: Kitchensink.java fails in ZBarrier::should_mark_through Reviewed-by: eosterlund, stefank ! src/hotspot/share/gc/z/zAddress.hpp ! src/hotspot/share/gc/z/zAddress.inline.hpp ! src/hotspot/share/gc/z/zBarrier.cpp ! src/hotspot/share/gc/z/zBarrier.hpp ! src/hotspot/share/gc/z/zBarrier.inline.hpp Changeset: de30eb1867e3 Author: pliden Date: 2019-12-10 13:39 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/de30eb1867e3 8234654: ZGC: Only disarm NMethods when marking/relocating code roots Reviewed-by: eosterlund, stefank ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zNMethod.cpp ! src/hotspot/share/gc/z/zNMethod.hpp ! src/hotspot/share/gc/z/zRelocate.cpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp Changeset: 88799f0b0f82 Author: herrick Date: 2019-12-10 08:11 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/88799f0b0f82 8235601: redundant code in IOUtils.java Reviewed-by: prr, asemenyuk, almatvee ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/IOUtils.java Changeset: de502a45751f Author: coleenp Date: 2019-12-10 08:11 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/de502a45751f 8235334: Deprecate jcmd GC.class_stats Summary: Add a deprecation message Reviewed-by: zgu, iklam ! src/hotspot/share/services/diagnosticCommand.hpp Changeset: d1688b8d1516 Author: coleenp Date: 2019-12-10 08:12 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/d1688b8d1516 Merge Changeset: d56c192d967d Author: herrick Date: 2019-12-10 08:15 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/d56c192d967d 8234867: Issue warning for mutually exclusive options on jpackage command line Reviewed-by: prr, asemenyuk, almatvee ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Arguments.java ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/MainResources.properties ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/MainResources_ja.properties ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/resources/MainResources_zh_CN.properties Changeset: 32d978ba562f Author: dfuchs Date: 2019-12-10 13:22 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/32d978ba562f 8235141: Specify the required standard socket options for the socket types in the java.net package Reviewed-by: alanb, chegar ! src/java.base/share/classes/java/net/DatagramSocket.java ! src/java.base/share/classes/java/net/MulticastSocket.java ! src/java.base/share/classes/java/net/ServerSocket.java ! src/java.base/share/classes/java/net/Socket.java + test/jdk/java/net/SocketOption/RequiredOptions.java Changeset: 3c8af950e849 Author: redestad Date: 2019-12-10 14:18 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/3c8af950e849 8234863: Increase default value of MaxInlineLevel Reviewed-by: kvn, neliasso ! src/hotspot/share/runtime/globals.hpp Changeset: 94b120e510d2 Author: eosterlund Date: 2019-12-10 13:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/94b120e510d2 8235174: ZGC: Add support for JFR leak profiler Reviewed-by: stefank, mgronlun, egahlin ! src/hotspot/share/jfr/jfr.cpp ! src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp ! src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.hpp ! src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp ! src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.hpp ! src/hotspot/share/jfr/leakprofiler/chains/edge.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edge.hpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeQueue.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeQueue.hpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeStore.cpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeStore.hpp ! src/hotspot/share/jfr/leakprofiler/chains/edgeUtils.cpp ! src/hotspot/share/jfr/leakprofiler/chains/rootSetClosure.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/eventEmitter.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleWriter.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.hpp ! src/hotspot/share/jfr/leakprofiler/leakProfiler.cpp ! src/hotspot/share/jfr/leakprofiler/leakProfiler.hpp + src/hotspot/share/jfr/leakprofiler/sampling/objectSample.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/objectSample.hpp ! src/hotspot/share/jfr/leakprofiler/sampling/objectSampler.cpp ! src/hotspot/share/jfr/leakprofiler/sampling/objectSampler.hpp - src/hotspot/share/jfr/leakprofiler/utilities/unifiedOop.hpp + src/hotspot/share/jfr/leakprofiler/utilities/unifiedOopRef.hpp + src/hotspot/share/jfr/leakprofiler/utilities/unifiedOopRef.inline.hpp Changeset: 819be120e63d Author: hseigel Date: 2019-12-10 15:00 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/819be120e63d 8235513: Change JVM to check for preview features using JVM_CLASSFILE_MAJOR_VERSION Summary: Check for JVM_CLASSFILE_MAJOR_VERSION instead of a hard-wired version number Reviewed-by: dholmes, coleenp ! src/hotspot/share/classfile/classFileParser.cpp Changeset: 3333517d634e Author: xuelei Date: 2019-12-10 07:07 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/3333517d634e 8235311: Tag mismatch may alert bad_record_mac Reviewed-by: mullan ! src/java.base/share/classes/sun/security/ssl/SSLTransport.java Changeset: 44aa31d0dea3 Author: roland Date: 2019-12-09 15:37 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/44aa31d0dea3 8234350: assert(mode == ControlAroundStripMined && (use == sfpt || !use->is_reachable_from_root())) failed: missed a node Reviewed-by: thartmann, mdoerr ! src/hotspot/share/opto/loopopts.cpp + test/hotspot/jtreg/compiler/loopstripmining/DeadNodesInOuterLoopAtLoopCloning2.java Changeset: 61446ba18984 Author: gromero Date: 2019-05-10 18:20 -0400 URL: https://hg.openjdk.java.net/amber/amber/rev/61446ba18984 8223968: Add abort type description to RTM statistic counters Reviewed-by: mdoerr, kvn ! src/hotspot/share/runtime/rtmLocking.cpp ! src/hotspot/share/runtime/rtmLocking.hpp ! test/hotspot/jtreg/compiler/testlibrary/rtm/RTMLockingStatistics.java Changeset: daf317439415 Author: xuelei Date: 2019-12-10 09:31 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/daf317439415 8235655: Clean the duplicated block in SSLContextImpl Reviewed-by: coffeys ! src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java Changeset: 56aa1c3b8659 Author: dnsimon Date: 2019-12-10 09:34 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/56aa1c3b8659 8235539: [JVMCI] -XX:+EnableJVMCIProduct breaks -XX:-EnableJVMCI Reviewed-by: kvn, thartmann ! src/hotspot/share/jvmci/jvmci_globals.cpp ! src/hotspot/share/jvmci/jvmci_globals.hpp ! src/hotspot/share/runtime/arguments.cpp + test/hotspot/jtreg/compiler/jvmci/TestEnableJVMCIProduct.java Changeset: 8375c9115e6d Author: pchilanomate Date: 2019-12-10 18:32 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/8375c9115e6d 8235515: TestBasicLogOutput.java crashes due to EXCEPTION_ACCESS_VIOLATION in HandshakeThreadsOperation::do_handshake Summary: Signal _done sempahore after executing name() in log_debug() Reviewed-by: dcubed, mdoerr ! src/hotspot/share/runtime/handshake.cpp Changeset: 86222ee8e248 Author: gziemski Date: 2019-12-10 12:50 -0600 URL: https://hg.openjdk.java.net/amber/amber/rev/86222ee8e248 8223261: JDK-8189208 followup - remove JDK_GetVersionInfo0 and the supporting code Summary: Removed JDK_GetVersionInfo Reviewed-by: redestad, dholmes, mchung, clanger ! make/hotspot/src/classes/build/tools/projectcreator/WinGammaPlatformVC10.java ! make/hotspot/symbols/symbols-shared ! src/hotspot/share/include/jvm.h ! src/hotspot/share/prims/jvm.cpp ! src/hotspot/share/runtime/abstract_vm_version.hpp ! src/hotspot/share/runtime/java.cpp - src/java.base/share/native/libjava/jdk_util.c ! src/java.base/share/native/libjava/jdk_util.h Changeset: a88e99d92248 Author: rkennke Date: 2019-12-10 20:06 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/a88e99d92248 8235598: Shenandoah: Update copyrights Reviewed-by: zgu ! src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.cpp ! src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.hpp ! src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp ! src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahPassiveHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.cpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahTraversalAggressiveHeuristics.hpp ! src/hotspot/share/gc/shenandoah/heuristics/shenandoahTraversalHeuristics.hpp ! src/hotspot/share/gc/shenandoah/shenandoahAllocRequest.hpp ! src/hotspot/share/gc/shenandoah/shenandoahAllocTracker.hpp ! src/hotspot/share/gc/shenandoah/shenandoahArguments.hpp ! src/hotspot/share/gc/shenandoah/shenandoahAsserts.hpp ! src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahBarrierSetAssembler.hpp ! src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.cpp ! src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.hpp ! src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.cpp ! src/hotspot/share/gc/shenandoah/shenandoahCollectorPolicy.hpp ! src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp ! src/hotspot/share/gc/shenandoah/shenandoahControlThread.hpp ! src/hotspot/share/gc/shenandoah/shenandoahEvacOOMHandler.cpp ! src/hotspot/share/gc/shenandoah/shenandoahEvacOOMHandler.hpp ! src/hotspot/share/gc/shenandoah/shenandoahForwarding.hpp ! src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahFreeSet.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeapRegionCounters.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeapRegionCounters.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeapRegionSet.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeuristics.cpp ! src/hotspot/share/gc/shenandoah/shenandoahHeuristics.hpp ! src/hotspot/share/gc/shenandoah/shenandoahMarkCompact.hpp ! src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahMemoryPool.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMemoryPool.hpp ! src/hotspot/share/gc/shenandoah/shenandoahMetrics.hpp ! src/hotspot/share/gc/shenandoah/shenandoahMonitoringSupport.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMonitoringSupport.hpp ! src/hotspot/share/gc/shenandoah/shenandoahNumberSeq.cpp ! src/hotspot/share/gc/shenandoah/shenandoahNumberSeq.hpp ! src/hotspot/share/gc/shenandoah/shenandoahOopClosures.hpp ! src/hotspot/share/gc/shenandoah/shenandoahOopClosures.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahPacer.hpp ! src/hotspot/share/gc/shenandoah/shenandoahPacer.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.cpp ! src/hotspot/share/gc/shenandoah/shenandoahRuntime.cpp ! src/hotspot/share/gc/shenandoah/shenandoahSharedVariables.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStrDedupQueue.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStrDedupQueue.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahTimingTracker.cpp ! src/hotspot/share/gc/shenandoah/shenandoahTimingTracker.hpp ! src/hotspot/share/gc/shenandoah/shenandoahTracer.hpp ! src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.hpp ! src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahVMOperations.cpp ! src/hotspot/share/gc/shenandoah/shenandoahVMOperations.hpp ! src/hotspot/share/gc/shenandoah/shenandoahWorkGroup.hpp ! src/hotspot/share/gc/shenandoah/shenandoahWorkerPolicy.cpp ! src/hotspot/share/gc/shenandoah/shenandoahWorkerPolicy.hpp Changeset: 9a04e072302c Author: chegar Date: 2019-12-10 19:10 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/9a04e072302c 8235531: Update record serialization migration tests to not use hard coded source versions Reviewed-by: darcy ! test/jdk/java/io/Serializable/records/migration/AbstractTest.java Changeset: 05b884481924 Author: chegar Date: 2019-12-10 19:12 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/05b884481924 8235550: Clarify record reflective support specification Reviewed-by: mcimadamore ! src/java.base/share/classes/java/lang/Class.java ! test/hotspot/jtreg/runtime/records/recordReflectionTest.java + test/jdk/java/lang/reflect/records/RecordPermissionsTest.java ! test/jdk/java/lang/reflect/records/RecordReflectionTest.java + test/jdk/java/lang/reflect/records/allPermissions.policy Changeset: 336885e766af Author: bchristi Date: 2019-12-10 11:56 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/336885e766af 8235361: JAR Class-Path no longer accepts relative URLs encoding absolute Windows paths (e.g "/C:/...") Reviewed-by: alanb, mchung ! src/java.base/share/classes/jdk/internal/loader/URLClassPath.java ! test/jdk/jdk/internal/loader/URLClassPath/JarClassPathFileEntry.java Changeset: 4a601cb7a903 Author: zgu Date: 2019-12-10 20:20 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/4a601cb7a903 8235685: Shenandoah: Enable leak profiler Reviewed-by: rkennke ! src/hotspot/share/jfr/leakprofiler/leakProfiler.cpp Changeset: dcf8e70d78d5 Author: jjiang Date: 2019-12-11 11:29 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/dcf8e70d78d5 8231810: javax/net/ssl/templates/SSLSocketSSLEngineTemplate.java fails intermittently with "java.lang.Exception: Unexpected EOF" Reviewed-by: xuelei ! test/jdk/ProblemList.txt ! test/jdk/javax/net/ssl/templates/SSLSocketSSLEngineTemplate.java Changeset: c71ec1f09f21 Author: mikael Date: 2019-12-10 20:04 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/c71ec1f09f21 8234370: Implementation of JEP 362: Deprecate the Solaris and SPARC Ports Reviewed-by: erikj, tbell ! doc/building.html ! doc/building.md ! make/autoconf/platform.m4 Changeset: 71674e727f6c Author: epavlova Date: 2019-12-10 21:49 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/71674e727f6c 8215728: [Graal] we should run some Graal tests in tier1 Reviewed-by: iignatyev ! test/hotspot/jtreg/TEST.groups ! test/hotspot/jtreg/compiler/graalunit/ApiDirectivesTest.java ! test/hotspot/jtreg/compiler/graalunit/ApiTest.java ! test/hotspot/jtreg/compiler/graalunit/AsmAarch64Test.java ! test/hotspot/jtreg/compiler/graalunit/AsmAmd64Test.java ! test/hotspot/jtreg/compiler/graalunit/AsmSparcTest.java ! test/hotspot/jtreg/compiler/graalunit/CollectionsTest.java ! test/hotspot/jtreg/compiler/graalunit/CoreAarch64Test.java ! test/hotspot/jtreg/compiler/graalunit/CoreAmd64Test.java ! test/hotspot/jtreg/compiler/graalunit/CoreJdk9Test.java ! test/hotspot/jtreg/compiler/graalunit/CoreTest.java ! test/hotspot/jtreg/compiler/graalunit/DebugTest.java ! test/hotspot/jtreg/compiler/graalunit/EATest.java ! test/hotspot/jtreg/compiler/graalunit/GraphTest.java ! test/hotspot/jtreg/compiler/graalunit/HotspotAarch64Test.java ! test/hotspot/jtreg/compiler/graalunit/HotspotAmd64Test.java ! test/hotspot/jtreg/compiler/graalunit/HotspotJdk9Test.java ! test/hotspot/jtreg/compiler/graalunit/HotspotLirTest.java ! test/hotspot/jtreg/compiler/graalunit/HotspotSparcTest.java ! test/hotspot/jtreg/compiler/graalunit/HotspotTest.java ! test/hotspot/jtreg/compiler/graalunit/Jtt.MicroTest.java ! test/hotspot/jtreg/compiler/graalunit/JttBackendTest.java ! test/hotspot/jtreg/compiler/graalunit/JttBytecodeTest.java ! test/hotspot/jtreg/compiler/graalunit/JttExceptTest.java ! test/hotspot/jtreg/compiler/graalunit/JttHotpathTest.java ! test/hotspot/jtreg/compiler/graalunit/JttHotspotTest.java ! test/hotspot/jtreg/compiler/graalunit/JttJdkTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLangALTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLangMathALTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLangMathMZTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLangNZTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLoopTest.java ! test/hotspot/jtreg/compiler/graalunit/JttOptimizeTest.java ! test/hotspot/jtreg/compiler/graalunit/JttReflectAETest.java ! test/hotspot/jtreg/compiler/graalunit/JttReflectFieldGetTest.java ! test/hotspot/jtreg/compiler/graalunit/JttReflectFieldSetTest.java ! test/hotspot/jtreg/compiler/graalunit/JttReflectGZTest.java ! test/hotspot/jtreg/compiler/graalunit/JttThreadsTest.java ! test/hotspot/jtreg/compiler/graalunit/LirJttTest.java ! test/hotspot/jtreg/compiler/graalunit/LirTest.java ! test/hotspot/jtreg/compiler/graalunit/LoopTest.java ! test/hotspot/jtreg/compiler/graalunit/NodesTest.java ! test/hotspot/jtreg/compiler/graalunit/OptionsTest.java ! test/hotspot/jtreg/compiler/graalunit/PhasesCommonTest.java ! test/hotspot/jtreg/compiler/graalunit/Replacements12Test.java ! test/hotspot/jtreg/compiler/graalunit/Replacements9Test.java ! test/hotspot/jtreg/compiler/graalunit/ReplacementsTest.java ! test/hotspot/jtreg/compiler/graalunit/UtilTest.java ! test/hotspot/jtreg/compiler/graalunit/generateTests.sh Changeset: f051fadd0d06 Author: psadhukhan Date: 2019-12-02 12:01 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/f051fadd0d06 Merge - src/jdk.zipfs/share/classes/jdk/nio/zipfs/JarFileSystem.java - src/jdk.zipfs/share/classes/jdk/nio/zipfs/JarFileSystemProvider.java - test/jdk/jdk/jfr/api/consumer/streaming/TestRepositoryMigration.java - test/jdk/sun/security/tools/jarsigner/warnings/BadKeyUsageTest.java - test/langtools/jdk/javadoc/doclet/testDocFiles/pkg/Test.java - test/langtools/jdk/javadoc/doclet/testDocFiles/pkg/doc-files/test.txt Changeset: fe5e931830e5 Author: serb Date: 2019-12-02 16:38 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/fe5e931830e5 8230597: Update GIFlib library to the 5.2.1 Reviewed-by: prr, psadhukhan, jdv ! src/java.desktop/share/legal/giflib.md ! src/java.desktop/share/native/libsplashscreen/giflib/dgif_lib.c ! src/java.desktop/share/native/libsplashscreen/giflib/gif_err.c ! src/java.desktop/share/native/libsplashscreen/giflib/gif_hash.h ! src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h ! src/java.desktop/share/native/libsplashscreen/giflib/gif_lib_private.h ! src/java.desktop/share/native/libsplashscreen/giflib/gifalloc.c ! src/java.desktop/share/native/libsplashscreen/giflib/openbsd-reallocarray.c Changeset: 8081bf6f4309 Author: psadhukhan Date: 2019-12-03 12:45 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/8081bf6f4309 Merge - src/hotspot/share/gc/g1/survRateGroup.cpp - src/hotspot/share/gc/g1/survRateGroup.hpp - src/java.base/share/classes/java/time/overview.html - src/jdk.compiler/share/classes/META-INF/services/com.sun.tools.javac.platform.PlatformProvider - src/jdk.compiler/share/classes/com/sun/tools/javac/services/javax.tools.JavaCompilerTool Changeset: e26c3e28f6f0 Author: serb Date: 2019-11-18 10:39 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/e26c3e28f6f0 8234325: Delete unused vsync related code from the OGL pipeline on macOS Reviewed-by: jdv ! src/java.desktop/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java ! src/java.desktop/macosx/classes/sun/java2d/opengl/CGLVolatileSurfaceManager.java Changeset: 53eff6c5da11 Author: serb Date: 2019-10-06 21:42 -0700 URL: https://hg.openjdk.java.net/amber/amber/rev/53eff6c5da11 8185041: Incorrect GPL header in pnglibconf.h Reviewed-by: prr ! src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h Changeset: 94402342255e Author: psadhukhan Date: 2019-12-04 16:28 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/94402342255e 8221903: PIT: javax/swing/RepaintManager/IconifyTest/IconifyTest.java fails on ubuntu18.04 Reviewed-by: serb ! test/jdk/ProblemList.txt ! test/jdk/javax/swing/RepaintManager/IconifyTest/IconifyTest.java Changeset: 3a2a04dbab8f Author: aivanov Date: 2019-12-04 13:49 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/3a2a04dbab8f 8235245: tiff_metadata.html has invalid HTML structure: misplaced element Reviewed-by: bpb, serb ! src/java.desktop/share/classes/javax/imageio/metadata/doc-files/tiff_metadata.html Changeset: a680d0981607 Author: prr Date: 2019-12-04 17:41 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/a680d0981607 8234784: Update jpeg.md to reflect code used by JDK Reviewed-by: serb ! src/java.desktop/share/legal/jpeg.md Changeset: 002b849de829 Author: prr Date: 2019-12-04 17:42 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/002b849de829 8214481: freetype path does not disable TrueType hinting with AA+FM hints Reviewed-by: serb, psadhukhan ! src/java.desktop/share/native/libfontmanager/freetypeScaler.c Changeset: 269d810313dc Author: prr Date: 2019-12-05 13:24 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/269d810313dc 8209113: Use WeakReference for lastFontStrike for created Fonts Reviewed-by: serb, jdv ! src/java.desktop/share/classes/sun/font/Font2D.java ! src/java.desktop/share/classes/sun/font/FontStrikeDisposer.java ! src/java.desktop/share/classes/sun/font/SunFontManager.java Changeset: aff43b3630be Author: serb Date: 2019-12-05 15:29 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/aff43b3630be 8234137: The "AutoTestOnTop.java" test may run external applications Reviewed-by: prr ! test/jdk/ProblemList.txt ! test/jdk/java/awt/Window/AlwaysOnTop/AutoTestOnTop.java Changeset: d2d6c97a1366 Author: serb Date: 2019-12-05 15:31 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/d2d6c97a1366 7124307: JSpinner and changing value by mouse Reviewed-by: prr, pbansal ! src/java.desktop/macosx/classes/com/apple/laf/AquaSpinnerUI.java + test/jdk/javax/swing/JSpinner/4788637/bug4788637.java Changeset: 86c2c566da0a Author: serb Date: 2019-12-05 15:33 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/86c2c566da0a 8232226: [macos 10.15] test/jdk/java/awt/color/EqualityTest/EqualityTest.java may fail Reviewed-by: prr, pbansal + test/jdk/java/awt/ColorClass/EqualityTest/EqualityTest.java Changeset: f7923e6f8cbe Author: tnakamura Date: 2019-12-05 15:36 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/f7923e6f8cbe 8234386: [macos] NPE was thrown at expanding Choice from maximized frame Reviewed-by: serb ! src/java.desktop/share/classes/javax/swing/JPopupMenu.java + test/jdk/java/awt/Choice/ChoiceFromMaximizedFrame/ChoiceFromMaximizedFrame.java Changeset: 0417b0fcf9d9 Author: arapte Date: 2019-12-06 16:37 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/0417b0fcf9d9 4949105: Access Bridge lacks html tags parsing Reviewed-by: serb, prr, pbansal ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicHTML.java + test/jdk/javax/accessibility/AccessibleName/GetAccessibleNameTest.java Changeset: 221a47a6f6d3 Author: prr Date: 2019-12-06 12:06 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/221a47a6f6d3 Merge - src/jdk.jlink/share/classes/jdk/tools/jlink/internal/packager/AppRuntimeImageBuilder.java - test/hotspot/gtest/gc/z/test_zUtils.cpp ! test/jdk/ProblemList.txt - test/jdk/java/lang/Runtime/Resources.java - test/jdk/java/lang/Runtime/Version/Basic.java - test/jdk/java/lang/Runtime/Version/VersionProps.java - test/jdk/java/lang/Runtime/exec/ArgWithSpaceAndFinalBackslash.java - test/jdk/java/lang/Runtime/exec/BadEnvp.java - test/jdk/java/lang/Runtime/exec/ConcurrentRead.java - test/jdk/java/lang/Runtime/exec/Duped.java - test/jdk/java/lang/Runtime/exec/ExecCommand.java - test/jdk/java/lang/Runtime/exec/ExecEmptyString.java - test/jdk/java/lang/Runtime/exec/ExecWithDir.java - test/jdk/java/lang/Runtime/exec/ExecWithInput.java - test/jdk/java/lang/Runtime/exec/ExecWithLotsOfArgs.java - test/jdk/java/lang/Runtime/exec/ExitValue.java - test/jdk/java/lang/Runtime/exec/LotsOfDestroys.java - test/jdk/java/lang/Runtime/exec/LotsOfOutput.java - test/jdk/java/lang/Runtime/exec/SetCwd.java - test/jdk/java/lang/Runtime/exec/SleepyCat.java - test/jdk/java/lang/Runtime/exec/Space.java - test/jdk/java/lang/Runtime/exec/Status.java - test/jdk/java/lang/Runtime/exec/StreamsSurviveDestroy.java - test/jdk/java/lang/Runtime/exec/UnixCommands.java - test/jdk/java/lang/Runtime/exec/WinCommand.java - test/jdk/java/lang/Runtime/exec/setcwd.sh - test/jdk/java/lang/Runtime/loadLibrary/LoadLibraryTest.java - test/jdk/java/lang/Runtime/loadLibrary/src/Target.java - test/jdk/java/lang/Runtime/loadLibrary/src/Target2.java - test/jdk/java/lang/Runtime/shutdown/Basic.java - test/jdk/java/lang/Runtime/shutdown/ShutdownHooks.java - test/jdk/java/lang/Runtime/shutdown/ShutdownHooks.sh - test/jdk/java/lang/Runtime/shutdown/ShutdownInterruptedMain.java - test/jdk/java/nio/channels/DatagramChannel/ManySenders.java Changeset: dae610645225 Author: serb Date: 2019-12-08 20:25 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/dae610645225 8231438: [macOS] Dark mode for the desktop is not supported Reviewed-by: prr, psadhukhan ! src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m ! test/jdk/java/awt/Window/FullWindowContentTest/FullWindowContentTest.java Changeset: 434c10d551c7 Author: trebari Date: 2019-12-09 15:09 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/434c10d551c7 8234802: [TESTBUG] Test Right Mouse Button Drag Gesture Recognition in all the platforms Reviewed-by: serb + test/jdk/java/awt/dnd/RightMouseButtonDragTest/RightMouseButtonDragTest.java Changeset: b7a958df3992 Author: aivanov Date: 2019-12-09 19:43 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/b7a958df3992 8234398: Replace ID2D1Factory::GetDesktopDpi with GetDeviceCaps Reviewed-by: serb, prr ! src/java.desktop/windows/native/common/awt/systemscale/systemScale.cpp Changeset: aa0f481d0024 Author: serb Date: 2019-12-09 14:59 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/aa0f481d0024 8235547: Video memory leak in the OGL pipeline on macOS Reviewed-by: prr ! src/java.desktop/macosx/classes/sun/java2d/opengl/CGLLayer.java Changeset: fa409cbc32ad Author: psadhukhan Date: 2019-12-10 10:44 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/fa409cbc32ad Merge - make/launcher/Launcher-jdk.pack.gmk - make/lib/Lib-jdk.pack.gmk - src/java.base/share/classes/com/sun/java/util/jar/pack/AdaptiveCoding.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Attribute.java - src/java.base/share/classes/com/sun/java/util/jar/pack/BandStructure.java - src/java.base/share/classes/com/sun/java/util/jar/pack/ClassReader.java - src/java.base/share/classes/com/sun/java/util/jar/pack/ClassWriter.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Code.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Coding.java - src/java.base/share/classes/com/sun/java/util/jar/pack/CodingChooser.java - src/java.base/share/classes/com/sun/java/util/jar/pack/CodingMethod.java - src/java.base/share/classes/com/sun/java/util/jar/pack/ConstantPool.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Constants.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Driver.java - src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource.java - src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource_ja.java - src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource_zh_CN.java - src/java.base/share/classes/com/sun/java/util/jar/pack/FixedList.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Fixups.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Histogram.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Instruction.java - src/java.base/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Package.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PackageReader.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PackageWriter.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PackerImpl.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PopulationCoding.java - src/java.base/share/classes/com/sun/java/util/jar/pack/PropMap.java - src/java.base/share/classes/com/sun/java/util/jar/pack/TLGlobals.java - src/java.base/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java - src/java.base/share/classes/com/sun/java/util/jar/pack/Utils.java - src/java.base/share/classes/com/sun/java/util/jar/pack/intrinsic.properties - src/java.base/share/classes/com/sun/java/util/jar/pack/package-info.java - src/java.base/share/classes/java/util/jar/Pack200.java - src/jdk.pack/share/classes/module-info.java - src/jdk.pack/share/man/pack200.1 - src/jdk.pack/share/man/unpack200.1 - src/jdk.pack/share/native/common-unpack/bands.cpp - src/jdk.pack/share/native/common-unpack/bands.h - src/jdk.pack/share/native/common-unpack/bytes.cpp - src/jdk.pack/share/native/common-unpack/bytes.h - src/jdk.pack/share/native/common-unpack/coding.cpp - src/jdk.pack/share/native/common-unpack/coding.h - src/jdk.pack/share/native/common-unpack/constants.h - src/jdk.pack/share/native/common-unpack/defines.h - src/jdk.pack/share/native/common-unpack/unpack.cpp - src/jdk.pack/share/native/common-unpack/unpack.h - src/jdk.pack/share/native/common-unpack/utils.cpp - src/jdk.pack/share/native/common-unpack/utils.h - src/jdk.pack/share/native/common-unpack/zip.cpp - src/jdk.pack/share/native/common-unpack/zip.h - src/jdk.pack/share/native/libunpack/jni.cpp - src/jdk.pack/share/native/unpack200/main.cpp - src/jdk.pack/windows/native/unpack200/unpack200_proto.exe.manifest ! test/jdk/ProblemList.txt - test/jdk/java/util/jar/Pack200/SecurityTest.java - test/jdk/tools/jar/DeprecateOptionN.java - test/jdk/tools/pack200/AttributeTests.java - test/jdk/tools/pack200/BandIntegrity.java - test/jdk/tools/pack200/CommandLineTests.java - test/jdk/tools/pack200/DeprecatePack200.java - test/jdk/tools/pack200/InstructionTests.java - test/jdk/tools/pack200/ModuleAttributes.java - test/jdk/tools/pack200/MultiRelease.java - test/jdk/tools/pack200/Pack200Props.java - test/jdk/tools/pack200/Pack200Test.java - test/jdk/tools/pack200/PackChecksum.java - test/jdk/tools/pack200/PackTestZip64.java - test/jdk/tools/pack200/PackTestZip64Manual.java - test/jdk/tools/pack200/PackageVersionTest.java - test/jdk/tools/pack200/RepackTest.java - test/jdk/tools/pack200/T7007157.java - test/jdk/tools/pack200/TestExceptions.java - test/jdk/tools/pack200/TestNormal.java - test/jdk/tools/pack200/TimeStamp.java - test/jdk/tools/pack200/UnpackerMemoryTest.java - test/jdk/tools/pack200/Utils.java - test/jdk/tools/pack200/badattr.jar - test/jdk/tools/pack200/pack200-verifier/data/README - test/jdk/tools/pack200/pack200-verifier/data/golden.jar - test/jdk/tools/pack200/pack200-verifier/make/build.xml - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/ClassCompare.java - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/Globals.java - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/JarFileCompare.java - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/Main.java - test/jdk/tools/pack200/pack200-verifier/src/sun/tools/pack/verify/VerifyTreeSet.java - test/jdk/tools/pack200/pack200-verifier/src/xmlkit/ClassReader.java - test/jdk/tools/pack200/pack200-verifier/src/xmlkit/CommandLineParser.java - test/jdk/tools/pack200/pack200-verifier/src/xmlkit/TokenList.java - test/jdk/tools/pack200/pack200-verifier/src/xmlkit/XMLKit.java - test/jdk/tools/pack200/typeannos/Lambda.java - test/jdk/tools/pack200/typeannos/Readme.txt - test/jdk/tools/pack200/typeannos/TargetTypes.java - test/jdk/tools/pack200/typeannos/TestTypeAnnotations.java - test/jdk/tools/pack200/typeannos/TypeUseTarget.java Changeset: 6e16ceda3b96 Author: psadhukhan Date: 2019-12-11 11:13 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/6e16ceda3b96 Merge - src/hotspot/share/jfr/leakprofiler/utilities/unifiedOop.hpp - src/java.base/share/native/libjava/jdk_util.c ! test/jdk/ProblemList.txt Changeset: 2d77b8cd4230 Author: psadhukhan Date: 2019-12-11 12:03 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/2d77b8cd4230 Merge Changeset: dcf88e5c8c07 Author: clanger Date: 2019-12-09 16:14 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/dcf88e5c8c07 8235585: Enable macOS codesigning for all libraries and executables Reviewed-by: erikj, clanger Contributed-by: rene.schuenemann at gmail.com ! make/autoconf/basics.m4 ! make/autoconf/spec.gmk.in ! make/common/NativeCompilation.gmk + make/data/macosxsigning/entitlements.plist ! make/launcher/Launcher-jdk.hotspot.agent.gmk ! make/launcher/Launcher-jdk.jcmd.gmk ! make/launcher/LauncherCommon.gmk Changeset: 1a7175456d29 Author: thartmann Date: 2019-12-11 10:42 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/1a7175456d29 8235452: Strip mined loop verification fails with assert(is_OuterStripMinedLoop()) failed: invalid node class Summary: Do not try to verify strip mining if the strip mined loop is malformed. Reviewed-by: roland, vlivanov ! src/hotspot/share/opto/loopPredicate.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp + test/hotspot/jtreg/compiler/loopstripmining/TestDeadOuterStripMinedLoop.java Changeset: 6cf6761c444e Author: sjohanss Date: 2019-12-11 12:12 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/6cf6761c444e 8235427: Remove unnecessary parameters from G1CollectedHeap::free_region and HeapRegion::hr_clear Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/heapRegion.cpp ! src/hotspot/share/gc/g1/heapRegion.hpp Changeset: f5b2d188240d Author: jlahoda Date: 2019-12-11 13:08 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/f5b2d188240d 8235474: JShell does not handle records properly Reviewed-by: vromero, rfield ! src/java.base/share/classes/module-info.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/jdk.jshell/share/classes/jdk/jshell/CompletenessAnalyzer.java ! src/jdk.jshell/share/classes/jdk/jshell/Eval.java ! src/jdk.jshell/share/classes/jdk/jshell/ReplParser.java ! src/jdk.jshell/share/classes/jdk/jshell/Snippet.java ! test/langtools/jdk/jshell/CompletenessTest.java + test/langtools/jdk/jshell/RecordsTest.java Changeset: 6afc12975478 Author: jlahoda Date: 2019-12-11 13:08 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/6afc12975478 8235338: test jdk/jshell/CompletenessTest.java fails for records Reviewed-by: rfield ! test/langtools/ProblemList.txt Changeset: 9b513dbd57a3 Author: neliasso Date: 2019-12-11 14:08 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/9b513dbd57a3 8235653: Clean-up BarrierSetC2 Reviewed-by: redestad, rkennke, thartmann ! src/hotspot/share/gc/shared/c2/barrierSetC2.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/graphKit.hpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/macro.cpp ! src/hotspot/share/opto/matcher.cpp ! src/hotspot/share/opto/memnode.cpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/parse2.cpp ! src/hotspot/share/opto/phaseX.cpp ! src/hotspot/share/opto/phaseX.hpp ! src/hotspot/share/opto/stringopts.cpp Changeset: 63004af6fc57 Author: chagedorn Date: 2019-12-11 14:33 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/63004af6fc57 8233033: C2 produces wrong result while unswitching a loop due to lost control dependencies Summary: Adding missing control dependencies when cloning loop predicates at loop unswitching. Reviewed-by: roland, vlivanov, thartmann ! src/hotspot/share/opto/loopUnswitch.cpp + test/hotspot/jtreg/compiler/loopopts/PartialPeelingUnswitch.java Changeset: 99c493a347a1 Author: rehn Date: 2019-12-11 15:27 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/99c493a347a1 8235410: Enable handshakes on Linux x86 (32-bit) Reviewed-by: dholmes, dcubed ! src/hotspot/cpu/x86/globals_x86.hpp Changeset: be5d924adffa Author: rehn Date: 2019-12-11 15:30 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/be5d924adffa 8220049: Obsolete ThreadLocalHandshakes Reviewed-by: dholmes, dcubed, mdoerr ! src/hotspot/cpu/aarch64/globals_aarch64.hpp ! src/hotspot/cpu/arm/globals_arm.hpp ! src/hotspot/cpu/ppc/globals_ppc.hpp ! src/hotspot/cpu/s390/globals_s390.hpp ! src/hotspot/cpu/sparc/globals_sparc.hpp ! src/hotspot/cpu/x86/globals_x86.hpp ! src/hotspot/cpu/zero/globals_zero.hpp ! src/hotspot/os/aix/safepointMechanism_aix.cpp ! src/hotspot/share/aot/aotCodeHeap.cpp ! src/hotspot/share/aot/aotCodeHeap.hpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/biasedLocking.cpp ! src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp ! src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/handshake.cpp ! src/hotspot/share/runtime/safepoint.cpp ! src/hotspot/share/runtime/safepointMechanism.cpp ! src/hotspot/share/runtime/safepointMechanism.hpp ! src/hotspot/share/runtime/sweeper.cpp ! src/jdk.aot/share/classes/jdk.tools.jaotc.binformat/src/jdk/tools/jaotc/binformat/BinaryContainer.java ! src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/MarkProcessor.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotSafepointOp.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotSafepointOp.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.sparc.test/src/org/graalvm/compiler/hotspot/sparc/test/SPARCAllocatorTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotSafepointOp.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java Changeset: a11adaddb8ab Author: hannesw Date: 2019-12-11 16:09 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/a11adaddb8ab 8233866: Text in table cells has inconsistent alignment Reviewed-by: jjg, prappo ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Changeset: d87f6de9a63a Author: hannesw Date: 2019-12-11 16:13 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/d87f6de9a63a 8235670: Javadoc pages not printing correctly in some browsers Reviewed-by: jjg, prappo ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Changeset: 5d477a977ce5 Author: prappo Date: 2019-12-11 15:16 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/5d477a977ce5 8234746: Improve indexing of system properties Reviewed-by: hannesw, jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java ! test/langtools/jdk/javadoc/doclet/testIndex/TestIndex.java ! test/langtools/jdk/javadoc/doclet/testModules/TestModules.java ! test/langtools/jdk/javadoc/doclet/testSearch/TestSearch.java ! test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/TestSystemPropertyTaglet.java + test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/mymodule/module-info.java + test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/mymodule/mypackage/MyAnnotation.java + test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/mymodule/mypackage/MyClass.java + test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/mymodule/mypackage/MyEnum.java + test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/mymodule/mypackage/MyError.java + test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/mymodule/mypackage/MyException.java + test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/mymodule/mypackage/MyInterface.java + test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/mymodule/mypackage/package-info.java Changeset: 0d33d0db0c96 Author: redestad Date: 2019-12-11 16:24 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/0d33d0db0c96 8235551: BitMap::count_one_bits should use population_count Reviewed-by: kbarrett, neliasso Contributed-by: kim.barrett at oracle.com, claes.redestad at oracle.com ! src/hotspot/share/opto/regmask.cpp ! src/hotspot/share/utilities/bitMap.cpp ! src/hotspot/share/utilities/bitMap.hpp ! src/hotspot/share/utilities/population_count.hpp ! test/hotspot/gtest/utilities/test_population_count.cpp Changeset: 184d94d22d72 Author: rkennke Date: 2019-12-11 16:43 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/184d94d22d72 8235729: Shenandoah: Remove useless casting to non-constant Reviewed-by: roland ! src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/opto/type.hpp Changeset: bb39b624948d Author: roland Date: 2019-12-06 16:21 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/bb39b624948d 8235636: gc/shenandoah/compiler/TestUnsafeOffheapSwap.java fails after JDK-8226411 Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Changeset: c6003f6b79af Author: erikj Date: 2019-12-11 08:22 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/c6003f6b79af 8233112: Exclude SVG files from build comparison Reviewed-by: tbell ! make/scripts/compare.sh Changeset: e2232c851cdb Author: eosterlund Date: 2019-12-11 16:45 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/e2232c851cdb 8235654: JFR leak profiler should not trace through the StringTable Reviewed-by: stefank, coleenp, kbarrett, egahlin ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/stringTable.hpp ! src/hotspot/share/jfr/leakprofiler/chains/rootSetClosure.cpp ! src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.cpp ! src/hotspot/share/jfr/leakprofiler/utilities/rootType.hpp Changeset: 29ca931d8f86 Author: herrick Date: 2019-12-11 11:52 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/29ca931d8f86 8235767: Compilation failure caused by JDK-8212780: Packaging Tool Implementation Reviewed-by: rkennke, asemenyuk ! src/jdk.incubator.jpackage/share/native/libapplauncher/IniFile.cpp Changeset: 915a7b8d17a7 Author: aeubanks Date: 2019-12-10 15:50 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/915a7b8d17a7 8235730: Incorrect javadoc in MatchKind Reviewed-by: martin, prappo Contributed-by: mingaleev at google.com ! src/java.base/share/classes/java/util/stream/MatchOps.java Changeset: 3ccdeba59e25 Author: never Date: 2019-12-11 09:47 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/3ccdeba59e25 8229961: Assert failure in compiler/graalunit/HotspotTest.java Reviewed-by: kvn ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/code/nmethod.hpp ! src/hotspot/share/jvmci/jniAccessMark.inline.hpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/jvmciEnv.cpp ! src/hotspot/share/jvmci/jvmciEnv.hpp ! test/hotspot/jtreg/compiler/jvmci/common/CTVMUtilities.java ! test/hotspot/jtreg/compiler/jvmci/common/patches/jdk.internal.vm.ci/jdk/vm/ci/hotspot/CompilerToVMHelper.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/AllocateCompileIdTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/AsResolvedJavaMethodTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/CompileCodeTestCase.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/DisassembleCodeBlobTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/DoNotInlineOrCompileTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetBytecodeTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetExceptionTableTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLineNumberTableTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLocalVariableTableTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetStackTraceElementTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetVtableIndexForInterfaceTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasCompiledCodeForOSRTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasNeverInlineDirectiveTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsCompilableTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsMatureVsReprofileTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/MethodIsIgnoredBySecurityStackWalkTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ResolveMethodTest.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/ShouldInlineMethodTest.java Changeset: d188996ea355 Author: almatvee Date: 2019-12-11 13:47 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/d188996ea355 8235767: Compilation failure caused by JDK-8212780: Packaging Tool Implementation Reviewed-by: rkennke, asemenyuk ! test/jdk/tools/jpackage/run_tests.sh Changeset: 28e6387d4a70 Author: zgu Date: 2019-12-11 14:01 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/28e6387d4a70 8235776: Shenandoah: Shenandoah root updater not always uses right code blob closure Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp Changeset: 8086ccbe445d Author: jjg Date: 2019-12-11 11:55 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/8086ccbe445d 8235457: Crash when reporting a message about an annotation on a module 8235458: Problem caused by imports in a module-info.java file Reviewed-by: jjg Contributed-by: Jeremy Kuhn ! src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacElements.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java + test/langtools/tools/javac/processing/ReportOnImportedModuleAnnotation/ReportOnImportedModuleAnnotation.java + test/langtools/tools/javac/processing/ReportOnImportedModuleAnnotation/ReportOnImportedModuleAnnotation.out + test/langtools/tools/javac/processing/ReportOnImportedModuleAnnotation/mods-src1/annotation/annotation/ModuleWarn.java + test/langtools/tools/javac/processing/ReportOnImportedModuleAnnotation/mods-src1/annotation/module-info.java + test/langtools/tools/javac/processing/ReportOnImportedModuleAnnotation/mods-src1/processor/module-info.java + test/langtools/tools/javac/processing/ReportOnImportedModuleAnnotation/mods-src1/processor/processor/ModuleWarnProcessor.java + test/langtools/tools/javac/processing/ReportOnImportedModuleAnnotation/mods-src2/mod/module-info.java Changeset: 0acd96e392e3 Author: vromero Date: 2019-12-11 15:31 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/0acd96e392e3 8234101: Compilation error thrown when repeating annotation is used on record component Reviewed-by: jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/SymbolMetadata.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 + test/langtools/tools/javac/processing/model/element/repeatingAnnotations/RepeatingAnnotationsOnRecords.java Changeset: 5b2f50117374 Author: herrick Date: 2019-12-11 15:01 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/5b2f50117374 8235788: Changeset for JDK-8235252 pushed with wrong bug ID Reviewed-by: prr ! test/jdk/tools/jpackage/run_tests.sh Changeset: 88dcda42b67a Author: almatvee Date: 2019-12-11 16:07 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/88dcda42b67a 8234284: [dmg] Change DMG background image to TIFF Reviewed-by: herrick, asemenyuk, erikj ! make/CompileJavaModules.gmk ! src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacDmgBundler.java ! src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/DMGsetup.scpt - src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/background_dmg.png + src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/background_dmg.tiff Changeset: e279627a68e4 Author: asemenyuk Date: 2019-12-11 16:16 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/e279627a68e4 8235728: JDK-8212780 breaks builds with a custom X11 include path Reviewed-by: prr, herrick ! make/lib/Lib-jdk.incubator.jpackage.gmk Changeset: b77aa95736c2 Author: hannesw Date: 2019-12-11 22:29 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/b77aa95736c2 8235414: Module level doc-files show "unnamed package" as holder Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java + test/langtools/jdk/javadoc/doclet/testIndexInDocFiles/TestIndexInDocFiles.java Changeset: edc6409771f7 Author: almatvee Date: 2019-12-11 16:37 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/edc6409771f7 8235252: Repair run_tests.sh by locating jtreg locally Reviewed-by: herrick, asemenyuk ! test/jdk/tools/jpackage/run_tests.sh Changeset: c5a6304b275a Author: mullan Date: 2019-12-11 17:17 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/c5a6304b275a 8234870: Deprecate the OracleUcrypto JCE Provider for removal Reviewed-by: alanb, rriggs ! src/java.base/share/conf/security/java.security ! src/jdk.crypto.ucrypto/solaris/classes/module-info.java Changeset: fd6d857ec82f Author: rfield Date: 2019-12-11 14:39 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/fd6d857ec82f 8210527: JShell: NullPointerException in jdk.jshell.Eval.translateExceptionStack 8232855: jshell missing word in /help help Reviewed-by: jlahoda ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n.properties ! src/jdk.jshell/share/classes/jdk/jshell/Eval.java ! test/langtools/jdk/jshell/ExceptionsTest.java Changeset: 241659594595 Author: iklam Date: 2019-12-11 15:25 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/241659594595 8235629: Remove unnecessary calls to Thread::current Reviewed-by: coleenp, ccheung, hseigel ! src/hotspot/share/classfile/classLoader.cpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/memory/metaspaceShared.cpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/klass.cpp ! src/hotspot/share/oops/klassVtable.cpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/runtime/mutex.cpp Changeset: d94a119b4413 Author: jjg Date: 2019-12-11 15:33 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/d94a119b4413 8214916: SourceLauncherTest fails on exploded image Reviewed-by: ksrini ! test/langtools/tools/javac/launcher/SourceLauncherTest.java ! test/langtools/tools/javac/plugin/AutostartPlugins.java Changeset: dda082a3bd93 Author: jjg Date: 2019-12-11 15:34 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/dda082a3bd93 Merge - src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/resources/background_dmg.png Changeset: ef6ede568b9b Author: mikael Date: 2019-12-11 16:17 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/ef6ede568b9b 8235789: AC_REQUIRE: 'PLATFORM_EXTRACT_TARGET_AND_BUILD' was expanded before it was required Reviewed-by: erikj ! make/autoconf/platform.m4 Changeset: 42bf28a4f258 Author: jjg Date: 2019-12-11 16:24 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/42bf28a4f258 8235621: Replace use of Function with ToIntFunction Reviewed-by: mcimadamore, jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java Changeset: f22d91b2d072 Author: jjg Date: 2019-12-11 16:32 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/f22d91b2d072 8235597: Extend support for -XDaccessInternalAPI to plugin modules Reviewed-by: mcimadamore, jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/BasicJavacTask.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java + test/langtools/tools/javac/plugin/InternalAPI.java Changeset: 56e1977e435a Author: never Date: 2019-12-11 17:17 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/56e1977e435a 8229377: [JVMCI] Improve InstalledCode.invalidate for large code caches Reviewed-by: kvn ! src/hotspot/share/jvmci/jvmciEnv.cpp ! src/hotspot/share/runtime/deoptimization.cpp ! src/hotspot/share/runtime/deoptimization.hpp Changeset: d3a661d0dc4e Author: serb Date: 2019-12-11 14:30 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/d3a661d0dc4e 8234522: [macos] Crash with use of native file dialog Reviewed-by: prr, dmarkov ! src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m + test/jdk/java/awt/FileDialog/MacOSGoToFolderCrash.java Changeset: 005e0c497a00 Author: serb Date: 2019-12-09 20:26 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/005e0c497a00 8235620: Broken merge between JDK-8006406 and JDK-8003559 Reviewed-by: prr ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformLWWindow.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CWarningWindow.java Changeset: 00d14aec6256 Author: jiefu Date: 2019-12-10 10:17 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/00d14aec6256 8235625: [TESTBUG] tools/jpackage/share/JavaOptionsEqualsTest.java fails with debug VMs Reviewed-by: asemenyuk, herrick ! test/jdk/tools/jpackage/share/JavaOptionsEqualsTest.java Changeset: c1f29b17de3e Author: epavlova Date: 2019-12-11 17:18 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/c1f29b17de3e 8235773: Tier3 fails because graalunit tests started to run with ZGC Reviewed-by: iignatyev ! test/hotspot/jtreg/TEST.groups ! test/hotspot/jtreg/compiler/graalunit/ApiDirectivesTest.java ! test/hotspot/jtreg/compiler/graalunit/ApiTest.java ! test/hotspot/jtreg/compiler/graalunit/AsmAarch64Test.java ! test/hotspot/jtreg/compiler/graalunit/AsmAmd64Test.java ! test/hotspot/jtreg/compiler/graalunit/AsmSparcTest.java ! test/hotspot/jtreg/compiler/graalunit/CollectionsTest.java ! test/hotspot/jtreg/compiler/graalunit/CoreAarch64Test.java ! test/hotspot/jtreg/compiler/graalunit/CoreAmd64Test.java ! test/hotspot/jtreg/compiler/graalunit/CoreJdk9Test.java ! test/hotspot/jtreg/compiler/graalunit/CoreTest.java ! test/hotspot/jtreg/compiler/graalunit/DebugTest.java ! test/hotspot/jtreg/compiler/graalunit/EATest.java ! test/hotspot/jtreg/compiler/graalunit/GraphTest.java ! test/hotspot/jtreg/compiler/graalunit/HotspotAarch64Test.java ! test/hotspot/jtreg/compiler/graalunit/HotspotAmd64Test.java ! test/hotspot/jtreg/compiler/graalunit/HotspotJdk9Test.java ! test/hotspot/jtreg/compiler/graalunit/HotspotLirTest.java ! test/hotspot/jtreg/compiler/graalunit/HotspotSparcTest.java ! test/hotspot/jtreg/compiler/graalunit/HotspotTest.java ! test/hotspot/jtreg/compiler/graalunit/Jtt.MicroTest.java ! test/hotspot/jtreg/compiler/graalunit/JttBackendTest.java ! test/hotspot/jtreg/compiler/graalunit/JttBytecodeTest.java ! test/hotspot/jtreg/compiler/graalunit/JttExceptTest.java ! test/hotspot/jtreg/compiler/graalunit/JttHotpathTest.java ! test/hotspot/jtreg/compiler/graalunit/JttHotspotTest.java ! test/hotspot/jtreg/compiler/graalunit/JttJdkTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLangALTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLangMathALTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLangMathMZTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLangNZTest.java ! test/hotspot/jtreg/compiler/graalunit/JttLoopTest.java ! test/hotspot/jtreg/compiler/graalunit/JttOptimizeTest.java ! test/hotspot/jtreg/compiler/graalunit/JttReflectAETest.java ! test/hotspot/jtreg/compiler/graalunit/JttReflectFieldGetTest.java ! test/hotspot/jtreg/compiler/graalunit/JttReflectFieldSetTest.java ! test/hotspot/jtreg/compiler/graalunit/JttReflectGZTest.java ! test/hotspot/jtreg/compiler/graalunit/JttThreadsTest.java ! test/hotspot/jtreg/compiler/graalunit/LirJttTest.java ! test/hotspot/jtreg/compiler/graalunit/LirTest.java ! test/hotspot/jtreg/compiler/graalunit/LoopTest.java ! test/hotspot/jtreg/compiler/graalunit/NodesTest.java ! test/hotspot/jtreg/compiler/graalunit/OptionsTest.java ! test/hotspot/jtreg/compiler/graalunit/PhasesCommonTest.java ! test/hotspot/jtreg/compiler/graalunit/Replacements12Test.java ! test/hotspot/jtreg/compiler/graalunit/Replacements9Test.java ! test/hotspot/jtreg/compiler/graalunit/ReplacementsTest.java ! test/hotspot/jtreg/compiler/graalunit/UtilTest.java ! test/hotspot/jtreg/compiler/graalunit/generateTests.sh Changeset: 899254bd233b Author: dtitov Date: 2019-12-11 19:20 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/899254bd233b 8226575: OperatingSystemMXBean should be made container aware Reviewed-by: dholmes, bobv, mchung, sspitsyn ! src/java.base/linux/classes/jdk/internal/platform/cgroupv1/Metrics.java ! src/java.base/linux/classes/jdk/internal/platform/cgroupv1/SubSystem.java ! src/java.base/share/classes/module-info.java ! src/jdk.jconsole/share/classes/sun/tools/jconsole/SummaryTab.java ! src/jdk.management/aix/native/libmanagement_ext/UnixOperatingSystem.c ! src/jdk.management/linux/native/libmanagement_ext/UnixOperatingSystem.c ! src/jdk.management/macosx/native/libmanagement_ext/UnixOperatingSystem.c ! src/jdk.management/share/classes/com/sun/management/OperatingSystemMXBean.java ! src/jdk.management/solaris/native/libmanagement_ext/UnixOperatingSystem.c ! src/jdk.management/unix/classes/com/sun/management/internal/OperatingSystemImpl.java ! src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c ! src/jdk.management/windows/classes/com/sun/management/internal/OperatingSystemImpl.java ! src/jdk.management/windows/native/libmanagement_ext/OperatingSystemImpl.c + test/hotspot/jtreg/containers/docker/CheckOperatingSystemMXBean.java ! test/hotspot/jtreg/containers/docker/TestCPUAwareness.java ! test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java Changeset: 7701d1b43304 Author: epavlova Date: 2019-12-11 21:15 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/7701d1b43304 8235808: Remove graalunit from tier1_compiler_not_xcomp Reviewed-by: iignatyev ! test/hotspot/jtreg/TEST.groups Changeset: dcedd441c7f2 Author: psadhukhan Date: 2019-12-12 12:04 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/dcedd441c7f2 8227607: Broken external links in java.desktop Reviewed-by: prr ! src/java.desktop/share/classes/javax/swing/Timer.java ! src/java.desktop/share/classes/javax/swing/text/Document.java + src/java.desktop/share/classes/javax/swing/text/doc-files/plain1.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain10.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain11.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain12.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain2.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain3.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain4.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain5.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain6.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain7.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain8.gif + src/java.desktop/share/classes/javax/swing/text/doc-files/plain9.gif Changeset: d226c74fd68f Author: rwestberg Date: 2019-12-12 07:48 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/d226c74fd68f 8232231: Remove invalid JFR thread CPU load test case Reviewed-by: mseledtsov, egahlin ! test/jdk/jdk/jfr/event/runtime/TestThreadCpuTimeEvent.java Changeset: ed442869a2fc Author: mbaesken Date: 2019-12-11 09:42 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/ed442869a2fc 8235489: handle return values of sscanf calls in hotspot Reviewed-by: clanger, kbarrett ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/share/compiler/compilerOracle.cpp Changeset: 9b157392afd6 Author: rwestberg Date: 2019-12-12 09:02 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/9b157392afd6 8235815: Revert 8227607: Broken external links in java.desktop Reviewed-by: psadhukhan ! src/java.desktop/share/classes/javax/swing/Timer.java ! src/java.desktop/share/classes/javax/swing/text/Document.java - src/java.desktop/share/classes/javax/swing/text/doc-files/plain1.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain10.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain11.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain12.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain2.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain3.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain4.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain5.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain6.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain7.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain8.gif - src/java.desktop/share/classes/javax/swing/text/doc-files/plain9.gif Changeset: c6e474ae266b Author: henryjen Date: 2019-12-12 08:40 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/c6e474ae266b 8234076: JVM crashes on Windows 10 using --module=NAME Reviewed-by: ksrini, henryjen Contributed-by: Nikola Grcevski ! src/java.base/share/native/libjli/args.c ! src/java.base/windows/native/libjli/java_md.c ! test/jdk/tools/launcher/ArgsEnvVar.java ! test/jdk/tools/launcher/TestHelper.java ! test/jdk/tools/launcher/TestSpecialArgs.java ! test/jdk/tools/launcher/modules/basic/BasicTest.java Changeset: 8c7facf81d01 Author: clanger Date: 2019-12-12 09:52 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/8c7facf81d01 8235750: [jpackage] Cleanup imports in WinMsiBundler.java Reviewed-by: herrick, asemenyuk ! src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WinMsiBundler.java Changeset: 4356d1581548 Author: jlahoda Date: 2019-12-09 09:40 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/4356d1581548 8235541: Extend javax.lang.model to cover binding variables Reviewed-by: darcy ! src/java.compiler/share/classes/javax/lang/model/element/ElementKind.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor6.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Kinds.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java ! test/langtools/tools/javac/api/TestGetElementReferenceData.java + test/langtools/tools/javac/processing/model/element/TestBindingVariable.java + test/langtools/tools/javac/processing/model/element/TestBindingVariableData.java Changeset: 9468dada3479 Author: pliden Date: 2019-12-12 10:10 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/9468dada3479 8235696: ZGC: assert(ZNMethod::is_armed(nm) == _should_disarm_nmethods) failed: Invalid state Reviewed-by: eosterlund, stefank ! src/hotspot/share/gc/shared/barrierSetNMethod.hpp ! src/hotspot/share/gc/z/zNMethod.cpp ! src/hotspot/share/gc/z/zNMethod.hpp ! src/hotspot/share/gc/z/zRootsIterator.cpp Changeset: 1edf6b0baec1 Author: pliden Date: 2019-12-12 10:10 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/1edf6b0baec1 8235748: ZGC: Remove ZAddress::address() Reviewed-by: eosterlund, stefank ! src/hotspot/cpu/aarch64/gc/z/zGlobals_aarch64.cpp ! src/hotspot/cpu/aarch64/gc/z/zGlobals_aarch64.hpp ! src/hotspot/cpu/x86/gc/z/zGlobals_x86.cpp ! src/hotspot/cpu/x86/gc/z/zGlobals_x86.hpp ! src/hotspot/share/gc/z/zAddress.cpp ! src/hotspot/share/gc/z/zAddress.inline.hpp ! src/hotspot/share/gc/z/zGlobals.cpp ! src/hotspot/share/gc/z/zGlobals.hpp Changeset: a67d541d3b07 Author: stefank Date: 2019-12-11 12:29 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/a67d541d3b07 8235757: Rename SupportedGC to IncludedGC Reviewed-by: pliden ! src/hotspot/share/gc/shared/gcConfig.cpp ! src/hotspot/share/gc/shared/gcConfig.hpp Changeset: bf401fb26e1b Author: stefank Date: 2019-12-11 12:29 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/bf401fb26e1b 8235759: Extend GCConfig::is_gc_supported to mean supported not only included in build Reviewed-by: pliden ! src/hotspot/share/gc/shared/gcArguments.hpp ! src/hotspot/share/gc/shared/gcConfig.cpp Changeset: 9ba00b589d9c Author: stefank Date: 2019-12-11 12:53 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/9ba00b589d9c 8235760: ZGC: Implement precise check for @require vm.gc.Z for Windows Reviewed-by: eosterlund, pliden + src/hotspot/os/posix/gc/z/zArguments_posix.cpp + src/hotspot/os/windows/gc/z/zArguments_windows.cpp ! src/hotspot/os/windows/gc/z/zSyscall_windows.cpp ! src/hotspot/os/windows/gc/z/zSyscall_windows.hpp ! src/hotspot/share/gc/z/zArguments.cpp ! src/hotspot/share/gc/z/zArguments.hpp ! test/lib/sun/hotspot/gc/GC.java Changeset: 611e595bc8a9 Author: jbhateja Date: 2019-12-12 13:09 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/611e595bc8a9 8234392: C2: Extend Matcher::match_rule_supported_vector() with element type information Reviewed-by: vlivanov, sviswanathan, kvn, jrose ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/arm/arm.ad ! src/hotspot/cpu/ppc/ppc.ad ! src/hotspot/cpu/s390/s390.ad ! src/hotspot/cpu/sparc/sparc.ad ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/share/opto/matcher.hpp ! src/hotspot/share/opto/vectornode.cpp Changeset: 8c16680c5b2e Author: jbhateja Date: 2019-12-12 13:09 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/8c16680c5b2e 8235405: C2: Merge AD instructions for different vector operations Reviewed-by: vlivanov, sviswanathan, kvn, jrose ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/x86.ad Changeset: 801ebec415e8 Author: jbhateja Date: 2019-12-12 13:09 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/801ebec415e8 8235688: C2: Merge AD instructions for AddV, SubV, and MulV nodes Reviewed-by: vlivanov, sviswanathan, kvn, jrose ! src/hotspot/cpu/x86/x86.ad Changeset: 8451a8bae345 Author: jbhateja Date: 2019-12-12 13:09 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/8451a8bae345 8235719: C2: Merge AD instructions for ShiftV, AbsV, and NegV nodes Reviewed-by: vlivanov, sviswanathan, kvn, jrose ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.hpp ! src/hotspot/cpu/x86/x86.ad Changeset: b3801d1ba963 Author: jbhateja Date: 2019-12-12 13:09 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/b3801d1ba963 8235756: C2: Merge AD instructions for DivV, SqrtV, and FmaV nodes Reviewed-by: vlivanov, sviswanathan, jrose, kvn ! src/hotspot/cpu/x86/x86.ad Changeset: c413a549dd57 Author: prappo Date: 2019-12-12 13:06 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/c413a549dd57 8215038: Add a page that lists all system properties Reviewed-by: hannesw, jjg Contributed-by: Priya Lakshmi Muthuswamy , Pavel Rappo ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDoclet.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/SearchIndexItem.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java + src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SystemPropertiesWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.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/Navigation.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocPaths.java ! test/langtools/jdk/javadoc/doclet/testMetadata/TestMetadata.java ! test/langtools/jdk/javadoc/doclet/testModules/TestModules.java ! test/langtools/jdk/javadoc/doclet/testPackagePage/TestPackagePage.java ! test/langtools/jdk/javadoc/doclet/testSearch/TestSearch.java ! test/langtools/jdk/javadoc/doclet/testStylesheet/TestStylesheet.java + test/langtools/jdk/javadoc/doclet/testSystemPropertyPage/TestSystemPropertyPage.java ! test/langtools/jdk/javadoc/doclet/testUnnamedPackage/TestUnnamedPackage.java ! test/langtools/jdk/javadoc/tool/api/basic/APITest.java Changeset: fe65e995a765 Author: redestad Date: 2019-12-12 14:22 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/fe65e995a765 8234328: VectorSet::clear can cause fragmentation Reviewed-by: neliasso ! src/hotspot/share/libadt/vectset.cpp ! src/hotspot/share/libadt/vectset.hpp Changeset: 2c724dba4c3c Author: stefank Date: 2019-12-12 16:23 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/2c724dba4c3c 8226797: serviceability/tmtools/jstat/GcCapacityTest.java fails with Exception: java.lang.RuntimeException: OGCMN > OGCMX (min generation capacity > max generation capacity) Reviewed-by: sjohanss, tschatzl ! src/hotspot/share/gc/shared/generationSpec.hpp ! test/hotspot/jtreg/serviceability/tmtools/jstat/utils/JstatGcCapacityResults.java Changeset: fa20258f2d71 Author: jwilhelm Date: 2019-12-12 17:06 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/fa20258f2d71 Added tag jdk-15+0 for changeset 2c724dba4c3c ! .hgtags Changeset: c655545b6b82 Author: rkennke Date: 2019-12-12 18:34 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/c655545b6b82 8234974: Shenandoah: Do concurrent roots even when no evacuation is necessary Reviewed-by: zgu ! src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp ! src/hotspot/share/gc/shenandoah/shenandoahClosures.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp ! src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahUnload.cpp Changeset: 27d52615ba1b Author: darcy Date: 2019-12-10 16:38 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/27d52615ba1b 8225361: Start of release updates for JDK 15 8235497: Add SourceVersion.RELEASE_15 8235528: Add source 15 and target 15 to javac Reviewed-by: erikj, jjg, jlahoda, dholmes, alanb, hseigel, mikael, chegar ! make/autoconf/version-numbers + make/data/symbols/java.base-E.sym.txt + make/data/symbols/java.compiler-E.sym.txt + make/data/symbols/java.desktop-E.sym.txt + make/data/symbols/java.xml-E.sym.txt + make/data/symbols/jdk.compiler-E.sym.txt + make/data/symbols/jdk.httpserver-E.sym.txt + make/data/symbols/jdk.jfr-E.sym.txt + make/data/symbols/jdk.jlink-E.sym.txt + make/data/symbols/jdk.jsobject-E.sym.txt + make/data/symbols/jdk.management-E.sym.txt ! make/data/symbols/symbols ! src/hotspot/share/classfile/classFileParser.cpp ! 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/AbstractAnnotationValueVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementScanner14.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor14.java ! src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor14.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/JavacProcessingEnvironment.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/gc/startup_warnings/TestParallelScavengeSerialOld.java ! test/hotspot/jtreg/runtime/CommandLine/VMDeprecatedOptions.java ! test/hotspot/jtreg/runtime/records/abstractRecord.jcod ! test/hotspot/jtreg/runtime/records/badRecordAttribute.jcod ! test/hotspot/jtreg/runtime/records/notFinalRecord.jcod ! test/hotspot/jtreg/runtime/records/oldRecordAttribute.jcod ! test/hotspot/jtreg/runtime/records/recordIgnoredVersion.jcod ! test/hotspot/jtreg/runtime/records/shortRecordAttribute.jcod ! test/hotspot/jtreg/runtime/records/superNotJLRecord.jcod ! test/hotspot/jtreg/runtime/records/twoRecordAttributes.jcod ! 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/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/records/RecordMemberTests.java ! test/langtools/tools/javac/versions/Versions.java Changeset: 63e17cf29bed Author: darcy Date: 2019-12-12 11:31 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/63e17cf29bed 8235514: Update record serialization tests to not use hard coded source versions Reviewed-by: lancea ! src/java.base/share/classes/java/lang/invoke/ConstantBootstraps.java ! src/java.base/share/classes/java/lang/reflect/Modifier.java ! src/jdk.rmic/share/classes/sun/tools/util/ModifierFilter.java Changeset: 642b562ed16e Author: darcy Date: 2019-12-12 11:39 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/642b562ed16e 8230771: Remove terminally deprecated constructors in java.base Summary: Additional review input from Victor Williams Stafusa da Silva Reviewed-by: lancea, chegar, mchung, smarks, dfuchs ! src/jdk.rmic/share/classes/sun/tools/util/ModifierFilter.java Changeset: 3d21573742c7 Author: zgu Date: 2019-12-12 15:20 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/3d21573742c7 8235842: Shenandoah: Implement native LRB for narrow oop Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp Changeset: 939e712d581b Author: prappo Date: 2019-12-12 21:11 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/939e712d581b 8235447: Remove (obsolete) @author info from javadoc tests Reviewed-by: ksrini, jjg ! test/langtools/jdk/javadoc/doclet/AuthorDD/AuthorDD.java ! test/langtools/jdk/javadoc/doclet/AuthorDD/p1/C1.java ! test/langtools/jdk/javadoc/doclet/testAnnotationOptional/pkg/AnnotationOptional.java ! test/langtools/jdk/javadoc/doclet/testAnnotationTypes/TestAnnotationTypes.java ! test/langtools/jdk/javadoc/doclet/testAnnotationTypes/pkg/AnnotationType.java ! test/langtools/jdk/javadoc/doclet/testBaseClass/BaseClass.java ! test/langtools/jdk/javadoc/doclet/testClassTree/pkg/AnnotationType.java ! test/langtools/jdk/javadoc/doclet/testClassTree/pkg/Coin.java ! test/langtools/jdk/javadoc/doclet/testCopyFiles/TestCopyFiles.java ! test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/doc-files/inpackage.html ! test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/package.html ! test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/doc-files/inpackage.html ! test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/package.html ! test/langtools/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/C1.java ! test/langtools/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/C2.java ! test/langtools/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/C3.java ! test/langtools/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/C5.java ! test/langtools/jdk/javadoc/doclet/testHtmlTableTags/pkg1/C1.java ! test/langtools/jdk/javadoc/doclet/testHtmlTableTags/pkg1/I1.java ! test/langtools/jdk/javadoc/doclet/testHtmlTableTags/pkg2/C2.java ! test/langtools/jdk/javadoc/doclet/testHtmlTableTags/pkg2/C3.java ! test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg/AnnotationType.java ! test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg/AnotherClass.java ! test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg1/NestedInnerClass.java ! test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg1/PrivateIncludeInnerClass.java ! test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg1/ProtectedInnerClass.java ! test/langtools/jdk/javadoc/doclet/testHtmlVersion/pkg1/PublicExcludeInnerClass.java ! test/langtools/jdk/javadoc/doclet/testIndex/pkg/AnnotationType.java ! test/langtools/jdk/javadoc/doclet/testIndex/pkg/Coin.java ! test/langtools/jdk/javadoc/doclet/testIndexFiles/TestIndexFiles.java ! test/langtools/jdk/javadoc/doclet/testLegacyTaglet/ToDoTaglet.java ! test/langtools/jdk/javadoc/doclet/testLegacyTaglet/UnderlineTaglet.java ! test/langtools/jdk/javadoc/doclet/testLinkOption/mylib/lang/StringBuilderChild.java ! test/langtools/jdk/javadoc/doclet/testModules/TestModules.java ! test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkg3mdlB/TestClassLinkOption.java ! test/langtools/jdk/javadoc/doclet/testModules/moduletags/module-info.java ! test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/AnnotationType.java ! test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/AnnotationTypeUndocumented.java ! test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/Coin.java ! test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/TypeParameters.java ! test/langtools/jdk/javadoc/doclet/testPackageDeprecation/C2.java ! test/langtools/jdk/javadoc/doclet/testProperty/pkg/MyClassT.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContaineeRegDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContaineeSynthDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContainerRegDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContainerRegNotDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContainerSynthDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/NonSynthDocContainer.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegArryDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegContaineeDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegContaineeNotDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegContainerDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegContainerNotDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContaineeNotDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContaineeSynthDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContainerSynthNotDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContainerValDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContainerValNotDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/RegContaineeDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/RegContaineeNotDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/RegContainerValDoc.java ! test/langtools/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/RegContainerValNotDoc.java ! test/langtools/jdk/javadoc/doclet/testSearch/TestSearch.java ! test/langtools/jdk/javadoc/doclet/testSearch/pkg/AnnotationType.java ! test/langtools/jdk/javadoc/doclet/testSearch/pkg/AnotherClass.java ! test/langtools/jdk/javadoc/doclet/testSearch/pkg1/NestedInnerClass.java ! test/langtools/jdk/javadoc/doclet/testSearch/pkg1/PrivateIncludeInnerClass.java ! test/langtools/jdk/javadoc/doclet/testSearch/pkg1/ProtectedInnerClass.java ! test/langtools/jdk/javadoc/doclet/testSearch/pkg1/PublicExcludeInnerClass.java ! test/langtools/jdk/javadoc/doclet/testSerializedForm/pkg1/NestedInnerClass.java ! test/langtools/jdk/javadoc/doclet/testSerializedForm/pkg1/PrivateIncludeInnerClass.java ! test/langtools/jdk/javadoc/doclet/testSerializedForm/pkg1/ProtectedInnerClass.java ! test/langtools/jdk/javadoc/doclet/testSerializedForm/pkg1/PublicExcludeInnerClass.java ! test/langtools/jdk/javadoc/doclet/testSerializedFormDeprecationInfo/pkg1/C1.java ! test/langtools/jdk/javadoc/doclet/testSerializedFormDeprecationInfo/pkg1/C2.java ! test/langtools/jdk/javadoc/doclet/testSerializedFormDeprecationInfo/pkg1/C3.java ! test/langtools/jdk/javadoc/doclet/testSinceTag/pkg1/C1.java ! test/langtools/jdk/javadoc/doclet/typeAnnotations/smoke/pkg/TargetTypes.java Changeset: 2b0185471185 Author: jwilhelm Date: 2019-12-13 02:49 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/2b0185471185 Added tag jdk-15+1 for changeset 63e17cf29bed ! .hgtags Changeset: a2b03207a7f9 Author: mbalao Date: 2019-12-11 15:43 -0300 URL: https://hg.openjdk.java.net/amber/amber/rev/a2b03207a7f9 8005819: Support cross-realm MSSFU Reviewed-by: weijun ! src/java.security.jgss/share/classes/sun/security/krb5/KrbTgsRep.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/CredentialsUtil.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/Krb5.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/PAForUserEnc.java + src/java.security.jgss/share/classes/sun/security/krb5/internal/PaPacOptions.java ! test/jdk/sun/security/krb5/auto/KDC.java ! test/jdk/sun/security/krb5/auto/ReferralsTest.java Changeset: d6a38e8f7389 Author: ssahoo Date: 2019-12-12 22:47 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/d6a38e8f7389 8234728: Some security tests should support TLSv1.3 Summary: Tests were updated to support TLSv1.3 and cipher suite order Reviewed-by: xuelei ! src/java.base/share/classes/sun/security/ssl/CipherSuite.java ! test/jdk/javax/net/ssl/sanity/ciphersuites/CipherSuitesInOrder.java + test/jdk/javax/net/ssl/sanity/ciphersuites/SystemPropCipherSuitesOrder.java + test/jdk/javax/net/ssl/sanity/ciphersuites/TLSCipherSuitesOrder.java ! test/jdk/sun/security/ssl/HandshakeHash/HandshakeHashCloneExhaustion.java ! test/jdk/sun/security/util/HostnameMatcher/NullHostnameCheck.java Changeset: 4a631f90648a Author: pchilanomate Date: 2019-12-13 14:28 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/4a631f90648a 8232733: Remove need to grab Threads_lock while processing handshakes Summary: Threads_lock is not acquired anymore while processing handshakes Reviewed-by: coleenp, rehn, dcubed, dholmes ! src/hotspot/share/runtime/handshake.cpp ! src/hotspot/share/runtime/handshake.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp ! src/hotspot/share/runtime/safepoint.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp Changeset: ac372709206e Author: naoto Date: 2019-12-13 08:17 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/ac372709206e 8235238: Parsing a time string ignores any custom TimeZoneNameProvider Reviewed-by: joehw, rriggs ! src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java + test/jdk/java/time/nontestng/java/time/zone/CustomZoneNameTest.java + test/jdk/java/time/nontestng/java/time/zone/zoneProvider/META-INF/services/java.time.zone.ZoneRulesProvider + test/jdk/java/time/nontestng/java/time/zone/zoneProvider/META-INF/services/java.util.spi.TimeZoneNameProvider + test/jdk/java/time/nontestng/java/time/zone/zoneProvider/custom/CustomTimeZoneNameProvider.java + test/jdk/java/time/nontestng/java/time/zone/zoneProvider/custom/CustomZoneRulesProvider.java Changeset: c97cf6fefbc1 Author: avoitylov Date: 2019-12-13 20:35 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/c97cf6fefbc1 8231612: 100% cpu on arm32 in Service Thread Reviewed-by: kbarrett, dsamersoff ! src/hotspot/share/runtime/atomic.hpp Changeset: cec148db7b55 Author: jjg Date: 2019-12-13 10:42 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/cec148db7b55 8235306: Support doc-comment tags that can be inline or block tags Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/doclet/Taglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/BasePropertyTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/BaseTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/CodeTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/DeprecatedTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/DocRootTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/IndexTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/InheritDocTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/LiteralTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ParamTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ReturnTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SeeTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SimpleTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SummaryTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SystemPropertyTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/Taglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ThrowsTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/UserTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ValueTaglet.java + test/langtools/jdk/javadoc/doclet/testBimodalTaglets/TestBimodalTaglets.java ! test/langtools/jdk/javadoc/doclet/testTaglets/TestTaglets.out Changeset: fdd1c4a2ec5b Author: hseigel Date: 2019-12-13 19:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/fdd1c4a2ec5b 8235922: [TESTBUG]TestRecordAttrGenericSig.java and TestRecordAttr.java are failing Summary: Replace hard-wired JDK version 14 with mechanisms that get the latest JDK version. Reviewed-by: dcubed ! test/jdk/java/lang/instrument/RedefineRecordAttr/TestRecordAttr.java ! test/jdk/java/lang/instrument/RedefineRecordAttrGenericSig/TestRecordAttrGenericSig.java Changeset: eefd0a71c160 Author: weijun Date: 2019-12-14 13:50 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/eefd0a71c160 8234697: Generate sun.security.util.math.intpoly classes during build Reviewed-by: erikj, mullan ! make/ToolsJdk.gmk ! make/gensrc/Gensrc-java.base.gmk + make/jdk/src/classes/build/tools/intpoly/FieldGen.java + make/jdk/src/classes/build/tools/intpoly/header.txt - src/java.base/share/classes/sun/security/util/math/intpoly/FieldGen.jsh - src/java.base/share/classes/sun/security/util/math/intpoly/IntegerPolynomialP256.java - src/java.base/share/classes/sun/security/util/math/intpoly/IntegerPolynomialP384.java - src/java.base/share/classes/sun/security/util/math/intpoly/IntegerPolynomialP521.java - src/java.base/share/classes/sun/security/util/math/intpoly/P256OrderField.java - src/java.base/share/classes/sun/security/util/math/intpoly/P384OrderField.java - src/java.base/share/classes/sun/security/util/math/intpoly/P521OrderField.java - src/java.base/share/classes/sun/security/util/math/intpoly/header.txt Changeset: 712c09c20824 Author: igerasim Date: 2019-12-15 09:33 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/712c09c20824 8235930: java.util.regex.PrintPattern does not print a link to the next node Reviewed-by: martin ! src/java.base/share/classes/java/util/regex/PrintPattern.java Changeset: 89bac05dac16 Author: dholmes Date: 2019-12-15 19:56 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/89bac05dac16 8231559: Remove expired flags in JDK 15 Reviewed-by: kbarrett, kvn ! src/hotspot/share/runtime/arguments.cpp Changeset: 81a62171f681 Author: dholmes Date: 2019-12-15 21:56 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/81a62171f681 8235965: Tests using ThreadLocalHandshakes need to stop using it as it no longer exists Reviewed-by: iignatyev, jiefu ! test/hotspot/jtreg/runtime/NMT/SafepointPollingPages.java - test/hotspot/jtreg/runtime/handshake/HandshakeWalkStackFallbackTest.java Changeset: b9a8f588e55a Author: mbaesken Date: 2019-11-29 08:00 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/b9a8f588e55a 8234968: check calloc rv in libinstrument InvocationAdapter Reviewed-by: clanger, stuefe, sspitsyn ! src/java.instrument/share/native/libinstrument/InvocationAdapter.c Changeset: de152e6a99a5 Author: redestad Date: 2019-12-16 13:40 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/de152e6a99a5 8235956: Remove javaClasses offset tests Reviewed-by: dholmes, coleenp ! src/hotspot/share/classfile/javaClasses.cpp Changeset: 7a1e6bd6a836 Author: erikj Date: 2019-12-12 19:35 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/7a1e6bd6a836 8235687: Contents/MacOS/libjli.dylib cannot be a symlink Reviewed-by: tbell ! make/MacBundles.gmk Changeset: 91a3f092682f Author: erikj Date: 2019-12-12 19:37 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/91a3f092682f 8235686: Add more custom hooks in Bundles.gmk Reviewed-by: tbell ! make/Bundles.gmk Changeset: 4b189ba2cb2f Author: mikael Date: 2019-12-12 12:45 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/4b189ba2cb2f 8235814: Add --enable-deprecated-ports=yes to all solaris and SPARC build profiles Reviewed-by: erikj ! make/conf/jib-profiles.js Changeset: de66d41b9486 Author: bpb Date: 2019-12-12 13:43 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/de66d41b9486 8235668: LineNumberReader#getLineNumber() returns wrong line number (one fewer) in Lucene test Reviewed-by: alanb, rriggs ! src/java.base/share/classes/java/io/BufferedReader.java ! src/java.base/share/classes/java/io/LineNumberReader.java ! test/jdk/java/io/LineNumberReader/Read.java Changeset: 9373d791b6bb Author: mcimadamore Date: 2019-12-12 22:59 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/9373d791b6bb 8234049: Implementation of Memory Access API (Incubator) Reviewed-by: alanb, psandoz, chegar, rriggs, plevart, briangoetz, jrose, adinn, vlivanov Contributed-by: jorn.vernee at oracle.com, vladimir.x.ivanov at oracle.com ! make/common/Modules.gmk ! make/gensrc/GensrcVarHandles.gmk ! src/hotspot/share/ci/ciField.cpp + src/java.base/share/classes/java/lang/invoke/AddressVarHandleGenerator.java ! src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java + src/java.base/share/classes/java/lang/invoke/VarHandleMemoryAddressBase.java ! src/java.base/share/classes/java/lang/invoke/VarHandles.java ! src/java.base/share/classes/java/lang/invoke/X-VarHandleByteArrayView.java.template + src/java.base/share/classes/java/lang/invoke/X-VarHandleMemoryAddressView.java.template ! src/java.base/share/classes/java/nio/Buffer.java ! src/java.base/share/classes/java/nio/ByteBufferAs-X-Buffer.java.template ! src/java.base/share/classes/java/nio/Direct-X-Buffer-bin.java.template ! src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template ! src/java.base/share/classes/java/nio/Heap-X-Buffer.java.template ! src/java.base/share/classes/java/nio/MappedByteBuffer.java ! src/java.base/share/classes/java/nio/StringCharBuffer.java ! src/java.base/share/classes/java/nio/X-Buffer.java.template ! src/java.base/share/classes/jdk/internal/access/JavaLangInvokeAccess.java ! src/java.base/share/classes/jdk/internal/access/JavaNioAccess.java + src/java.base/share/classes/jdk/internal/access/foreign/MemoryAddressProxy.java + src/java.base/share/classes/jdk/internal/access/foreign/MemorySegmentProxy.java + src/java.base/share/classes/jdk/internal/access/foreign/UnmapperProxy.java ! src/java.base/share/classes/module-info.java ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/Util.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/AbstractLayout.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/GroupLayout.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryAddress.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryHandles.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayouts.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemorySegment.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/PaddingLayout.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/SequenceLayout.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/ValueLayout.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/package-info.java + src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/unsafe/ForeignUnsafe.java + src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/LayoutPath.java + src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/MemoryAddressImpl.java + src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/MemoryScope.java + src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/MemorySegmentImpl.java + src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/Utils.java + src/jdk.incubator.foreign/share/classes/module-info.java ! test/jdk/TEST.groups + test/jdk/java/foreign/TEST.properties + test/jdk/java/foreign/TestArrays.java + test/jdk/java/foreign/TestByteBuffer.java + test/jdk/java/foreign/TestLayoutConstants.java + test/jdk/java/foreign/TestLayoutPaths.java + test/jdk/java/foreign/TestLayouts.java + test/jdk/java/foreign/TestMemoryAccess.java + test/jdk/java/foreign/TestMemoryAlignment.java + test/jdk/java/foreign/TestMemoryCopy.java + test/jdk/java/foreign/TestNative.java + test/jdk/java/foreign/TestSegments.java + test/jdk/java/foreign/TestSharedAccess.java + test/jdk/java/foreign/TestSlices.java + test/jdk/java/foreign/TestVarHandleCombinators.java + test/jdk/java/foreign/libNativeAccess.c Changeset: 06d0db76de0b Author: jwilhelm Date: 2019-12-13 02:45 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/06d0db76de0b Added tag jdk-14+27 for changeset 91a3f092682f ! .hgtags Changeset: ccdd7713f14a Author: pbansal Date: 2019-12-13 12:08 +0530 URL: https://hg.openjdk.java.net/amber/amber/rev/ccdd7713f14a 8235744: PIT: test/jdk/javax/swing/text/html/TestJLabelWithHTMLText.java times out in linux-x64 Reviewed-by: psadhukhan, prr ! test/jdk/javax/swing/text/html/TestJLabelWithHTMLText.java Changeset: fa82151f29c4 Author: ssahoo Date: 2019-12-13 01:43 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/fa82151f29c4 8234728: Some security tests should support TLSv1.3 Summary: Tests were updated to support TLSv1.3 and cipher suite order Reviewed-by: xuelei ! src/java.base/share/classes/sun/security/ssl/CipherSuite.java ! test/jdk/javax/net/ssl/sanity/ciphersuites/CipherSuitesInOrder.java + test/jdk/javax/net/ssl/sanity/ciphersuites/SystemPropCipherSuitesOrder.java + test/jdk/javax/net/ssl/sanity/ciphersuites/TLSCipherSuitesOrder.java ! test/jdk/sun/security/ssl/HandshakeHash/HandshakeHashCloneExhaustion.java ! test/jdk/sun/security/util/HostnameMatcher/NullHostnameCheck.java Changeset: b7c69d80b5c3 Author: iveresov Date: 2019-12-13 10:04 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/b7c69d80b5c3 8235634: Update Graal Reviewed-by: kvn ! src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/Main.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.api.directives/src/org/graalvm/compiler/api/directives/GraalDirectives.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.amd64/src/org/graalvm/compiler/asm/amd64/AMD64Assembler.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.amd64/src/org/graalvm/compiler/asm/amd64/AVXKind.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.sparc/src/org/graalvm/compiler/asm/sparc/SPARCAssembler.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64AddressNode.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64ArithmeticLIRGenerator.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64LIRGenerator.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/LIRKind.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/NumUtil.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/type/Stamp.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/HashMapGetTest.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ObjectSubstitutionsTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/DebugContext.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/ScopeImpl.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotBackendFactory.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64.test/src/org/graalvm/compiler/hotspot/amd64/test/NumberOfTrailingZeroings003.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotAddressLowering.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotBackendFactory.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotBackendFactory.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CompilationWrapperTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CompileTheWorld.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/MethodSubstitutionEffectTest.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/MethodSubstitutionForeignCallTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/WriteBarrierAdditionTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotBackendFactory.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalRuntime.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalRuntimeProvider.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotReplacementsImpl.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/SymbolicSnippetEncoder.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/DefaultHotSpotLoweringProvider.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotGCProvider.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotGraphBuilderPlugins.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotUnsafeSubstitutions.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/FastNotifyNode.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotG1WriteBarrierSnippets.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectSnippets.java - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectSubstitutions.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/UnsafeCopyMemoryNode.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/UnsafeSnippets.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.java/src/org/graalvm/compiler/java/BciBlockMapping.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.java/src/org/graalvm/compiler/java/BytecodeParser.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.java/src/org/graalvm/compiler/java/JsrScope.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.amd64/src/org/graalvm/compiler/lir/amd64/AMD64MathPowOp.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.amd64/src/org/graalvm/compiler/lir/amd64/vector/AVXBlendOp.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/gen/LIRGeneratorTool.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes.test/src/org/graalvm/compiler/nodes/test/StampToolTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/GraphDecoder.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/GuardedValueNode.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/FloatEqualsNode.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/IsNullNode.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/PointerEqualsNode.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/debug/SideEffectNode.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/gc/BarrierSet.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/gc/CardTableBarrierSet.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/gc/G1BarrierSet.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/gc/G1ReferentFieldReadBarrier.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/IntrinsicContext.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/LoopExplosionPlugin.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/HeapAccess.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/type/StampTool.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/ConditionalEliminationPhase.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/ConditionalEliminationUtil.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/DefaultJavaLoweringProvider.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/IntrinsicGraphBuilder.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/StandardGraphBuilderPlugins.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/gc/G1WriteBarrierSnippets.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/arithmetic/IntegerAddExactNode.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/arithmetic/IntegerAddExactOverflowNode.java Changeset: 9c993ce81fc8 Author: jjiang Date: 2019-12-16 16:19 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/9c993ce81fc8 8235813: System property fullCipherSuites is not used by javax/net/ssl/compatibility/Compatibility.java Reviewed-by: xuelei ! test/jdk/javax/net/ssl/compatibility/Cert.java - test/jdk/javax/net/ssl/compatibility/JdkRelease.java ! test/jdk/javax/net/ssl/compatibility/UseCase.java Changeset: d821eb811ca8 Author: ssahoo Date: 2019-12-16 00:23 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/d821eb811ca8 8235874: The ordering of Cipher Suites is not maintained provided through jdk.tls.client.cipherSuites and jdk.tls.server.cipherSuites system property. Summary: Corrected Cipher Suites ordering through system properties Reviewed-by: xuelei ! src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java ! test/jdk/javax/net/ssl/sanity/ciphersuites/SystemPropCipherSuitesOrder.java Changeset: bd15714926ec Author: chagedorn Date: 2019-12-16 09:19 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/bd15714926ec 8231501: VM crash in MethodData::clean_extra_data(CleanExtraDataClosure*): fatal error: unexpected tag 99 Summary: Snapshot MDO extra trap and argument data only after it is prepared. Reviewed-by: roland, thartmann ! src/hotspot/share/ci/ciMethodData.cpp ! src/hotspot/share/ci/ciMethodData.hpp ! src/hotspot/share/oops/methodData.hpp Changeset: a0b1a1c3cc5f Author: jwilhelm Date: 2019-12-16 17:43 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/a0b1a1c3cc5f Merge ! .hgtags - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectSubstitutions.java - test/jdk/javax/net/ssl/compatibility/JdkRelease.java Changeset: 5f91ab380656 Author: iklam Date: 2019-12-16 10:03 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/5f91ab380656 8199290: [TESTBUG] sun.hotspot.WhiteBox$WhiteBoxPermission is not copied Reviewed-by: iignatyev, dholmes ! test/hotspot/jtreg/runtime/cds/appcds/JarBuilder.java ! test/lib/ClassFileInstaller.java Changeset: b2e315938072 Author: iklam Date: 2019-12-16 10:04 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/b2e315938072 8235970: [TESTBUG] Remove dependency of sun.tools.jar from RedefineClassHelper Reviewed-by: alanb ! test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineBasicTest.java ! test/hotspot/jtreg/runtime/cds/appcds/redefineClass/RedefineRunningMethods_Shared.java ! test/hotspot/jtreg/runtime/logging/RedefineClasses.java ! test/hotspot/jtreg/testlibrary_tests/RedefineClassTest.java ! test/jdk/java/lang/instrument/RedefineAddDeleteMethod/DeleteMethodHandle/MethodHandleDeletedMethod.java ! test/jdk/java/lang/instrument/RedefineInterfaceMethods/RedefineInterfaceMethods.java ! test/jdk/java/lang/instrument/RedefineMathTesterMethods/RedefineMathTesterMethods.java ! test/jdk/java/lang/instrument/RedefineNestmateAttr/TestNestmateAttr.java ! test/jdk/java/lang/instrument/RedefineRecordAttr/TestRecordAttr.java ! test/jdk/java/lang/instrument/RedefineRecordAttrGenericSig/TestRecordAttrGenericSig.java ! test/lib/RedefineClassHelper.java Changeset: 255cae042245 Author: vromero Date: 2019-12-16 15:33 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/255cae042245 8235778: No compilation error reported when a record is declared in a local class Reviewed-by: mcimadamore ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! test/langtools/tools/javac/records/RecordCompilationTests.java Changeset: 673bf1230322 Author: tschatzl Date: 2019-12-16 23:07 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/673bf1230322 8235907: Fix tests referencing UseParallelOldGC Summary: Remove tests using the obsolete UseParallelOldGC flag. Reviewed-by: lkorinth, dlong ! test/hotspot/jtreg/gc/TestSystemGC.java ! test/hotspot/jtreg/gc/arguments/TestAlignmentToUseLargePages.java ! test/hotspot/jtreg/gc/arguments/TestParallelHeapSizeFlags.java ! test/hotspot/jtreg/gc/arguments/TestUseCompressedOopsErgo.java ! test/hotspot/jtreg/gc/metaspace/TestMetaspacePerfCounters.java ! test/hotspot/jtreg/gc/nvdimm/TestAllocateOldGenAt.java ! test/hotspot/jtreg/gc/nvdimm/TestAllocateOldGenAtError.java ! test/hotspot/jtreg/gc/nvdimm/TestOldObjectsOnNvdimm.java ! test/hotspot/jtreg/gc/nvdimm/TestYoungObjectsOnDram.java ! test/hotspot/jtreg/gc/stress/TestReclaimStringsLeaksMemory.java ! test/hotspot/jtreg/gc/stress/gcold/TestGCOldWithParallel.java ! test/hotspot/jtreg/runtime/CompressedOops/UseCompressedOops.java - test/jdk/jdk/jfr/event/gc/collection/TestGCCauseWithPSMarkSweep.java ! test/jdk/jdk/jfr/event/gc/collection/TestGCCauseWithParallelOld.java - test/jdk/jdk/jfr/event/gc/collection/TestGCEventMixedWithPSMarkSweep.java ! test/jdk/jdk/jfr/event/gc/collection/TestGCEventMixedWithParallelOld.java ! test/jdk/jdk/jfr/event/gc/collection/TestGCWithFasttime.java ! test/jdk/jdk/jfr/event/gc/configuration/TestGCConfigurationEvent.java ! test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWith32BitOops.java ! test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWithHeapBasedOops.java ! test/jdk/jdk/jfr/event/gc/configuration/TestGCHeapConfigurationEventWithZeroBasedOops.java ! test/jdk/jdk/jfr/event/gc/configuration/TestGCSurvivorConfigurationEvent.java ! test/jdk/jdk/jfr/event/gc/configuration/TestGCTLABConfigurationEvent.java ! test/jdk/jdk/jfr/event/gc/detailed/TestPromotionEventWithParallelScavenge.java - test/jdk/jdk/jfr/event/gc/heapsummary/TestHeapSummaryEventPSSerial.java - test/jdk/jdk/jfr/event/gc/objectcount/TestObjectCountAfterGCEventWithPSMarkSweep.java ! test/jdk/jdk/jfr/event/gc/objectcount/TestObjectCountAfterGCEventWithParallelOld.java - test/jdk/jdk/jfr/event/gc/refstat/TestRefStatEventWithPSMarkSweep.java ! test/jdk/jdk/jfr/event/gc/refstat/TestRefStatEventWithParallelOld.java - test/jdk/jdk/jfr/event/oldobject/TestParallelOld.java Changeset: 8af520f2976a Author: iklam Date: 2019-12-16 15:20 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/8af520f2976a 8236045: [TESTBUG] MismatchedWhiteBox test fails with missing WhiteBox$WhiteBoxPermission.class Reviewed-by: ccheung ! test/hotspot/jtreg/sanity/MismatchedWhiteBox/WhiteBox.java Changeset: 066bb54fba95 Author: weijun Date: 2019-12-17 09:38 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/066bb54fba95 8234465: Encoded elliptic curve private keys should include the public point Reviewed-by: xuelei ! src/jdk.crypto.ec/share/classes/sun/security/ec/ECKeyFactory.java ! src/jdk.crypto.ec/share/classes/sun/security/ec/ECKeyPairGenerator.java ! src/jdk.crypto.ec/share/classes/sun/security/ec/ECPrivateKeyImpl.java + test/jdk/sun/security/ec/PublicKeyInPrivateKey.java Changeset: 359553a04f66 Author: iklam Date: 2019-12-16 21:24 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/359553a04f66 8236028: [TESTBUG] Remove dependency of sun.tools.jar from appcds/JarBuilder Reviewed-by: ccheung ! test/hotspot/jtreg/runtime/cds/appcds/AppendClasspath.java ! test/hotspot/jtreg/runtime/cds/appcds/BootClassPathMismatch.java ! test/hotspot/jtreg/runtime/cds/appcds/CaseSensitiveClassPath.java ! test/hotspot/jtreg/runtime/cds/appcds/ClassLoaderTest.java ! test/hotspot/jtreg/runtime/cds/appcds/ClassPathAttr.java ! test/hotspot/jtreg/runtime/cds/appcds/CommandLineFlagCombo.java ! test/hotspot/jtreg/runtime/cds/appcds/CommandLineFlagComboNegative.java ! test/hotspot/jtreg/runtime/cds/appcds/DirClasspathTest.java ! test/hotspot/jtreg/runtime/cds/appcds/DumpClassList.java ! test/hotspot/jtreg/runtime/cds/appcds/ExtraSymbols.java ! test/hotspot/jtreg/runtime/cds/appcds/FieldAnnotationsTest.java ! test/hotspot/jtreg/runtime/cds/appcds/FreeUnusedMetadata.java ! test/hotspot/jtreg/runtime/cds/appcds/GraalWithLimitedMetaspace.java ! test/hotspot/jtreg/runtime/cds/appcds/HelloExtTest.java ! test/hotspot/jtreg/runtime/cds/appcds/HelloTest.java ! test/hotspot/jtreg/runtime/cds/appcds/IgnoreEmptyClassPaths.java ! test/hotspot/jtreg/runtime/cds/appcds/JarBuilder.java ! test/hotspot/jtreg/runtime/cds/appcds/JvmtiAddPath.java ! test/hotspot/jtreg/runtime/cds/appcds/LongClassListPath.java ! test/hotspot/jtreg/runtime/cds/appcds/MissingSuperTest.java ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java ! test/hotspot/jtreg/runtime/cds/appcds/MultiProcessSharing.java ! test/hotspot/jtreg/runtime/cds/appcds/MultiReleaseJars.java ! test/hotspot/jtreg/runtime/cds/appcds/NonExistClasspath.java ! test/hotspot/jtreg/runtime/cds/appcds/OldClassTest.java ! test/hotspot/jtreg/runtime/cds/appcds/PackageSealing.java ! test/hotspot/jtreg/runtime/cds/appcds/ParallelLoad2.java ! test/hotspot/jtreg/runtime/cds/appcds/ParallelLoadTest.java ! test/hotspot/jtreg/runtime/cds/appcds/PrintSharedArchiveAndExit.java ! test/hotspot/jtreg/runtime/cds/appcds/ProhibitedPackage.java ! test/hotspot/jtreg/runtime/cds/appcds/ProtectionDomain.java ! test/hotspot/jtreg/runtime/cds/appcds/RelativePath.java ! test/hotspot/jtreg/runtime/cds/appcds/RewriteBytecodesTest.java ! test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java ! test/hotspot/jtreg/runtime/cds/appcds/SharedBaseAddress.java ! test/hotspot/jtreg/runtime/cds/appcds/SharedPackages.java ! test/hotspot/jtreg/runtime/cds/appcds/SignedJar.java ! test/hotspot/jtreg/runtime/cds/appcds/SpecifySysLoaderProp.java ! test/hotspot/jtreg/runtime/cds/appcds/TestWithProfiler.java ! test/hotspot/jtreg/runtime/cds/appcds/TraceLongClasspath.java ! test/hotspot/jtreg/runtime/cds/appcds/UnusedCPDuringDump.java ! test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_0.java ! test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_1A.java ! test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_1B.java ! test/hotspot/jtreg/runtime/cds/appcds/VerifierTest_2.java ! test/hotspot/jtreg/runtime/cds/appcds/WideIloadTest.java ! test/hotspot/jtreg/runtime/cds/appcds/WrongClasspath.java ! test/hotspot/jtreg/runtime/cds/appcds/XShareAutoWithChangedJar.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DifferentHeapSizes.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/DumpTimeVerifyFailure.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/OpenArchiveRegion.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatA.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatB.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatC.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatD.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassListFormatE.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/LoaderSegregationTest.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/ParallelTestMultiFP.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/ParallelTestSingleFP.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/ProhibitedPackageNamesTest.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/ProtectionDomain.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/SameNameInTwoLoadersTest.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/UnintendedLoadersTest.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/UnloadUnregisteredLoaderTest.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/UnsupportedPlatforms.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/AppendClasspath.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicFlag.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/MainModuleOnly.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/RelativePath.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/UnsupportedBaseArchive.java ! test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/UnusedCPDuringDump.java ! test/hotspot/jtreg/runtime/cds/appcds/javaldr/ArrayTest.java ! test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCSharedStringsDuringDump.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/CheckUnsupportedDumpingOptions.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/JigsawOptionsCombo.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/AppClassInCP.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/CustomPackage.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/MismatchedPatchModule.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/PatchDir.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/PatchJavaBase.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/Simple.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/SubClassOfPatchedClass.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/PatchModule/TwoJars.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/BootAppendTests.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/ClassPathTests.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/DummyClassesInBootClassPath.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/AddModules.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/AddOpens.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/AddReads.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ExportModule.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/JvmtiAddPath.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/MainModuleOnly.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ModulePathAndCP.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ModulePathAndCP_JFR.java ! test/hotspot/jtreg/runtime/cds/appcds/jigsaw/overridetests/OverrideTests.java ! test/hotspot/jtreg/runtime/cds/appcds/jvmti/dumpingWithAgent/DumpingWithJvmtiAgent.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/ExerciseGC.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/FlagCombo.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/IncompatibleOptions.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternSharedString.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InvalidFileFormat.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LargePages.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockSharedStrings.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasic.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasicPlus.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsHumongous.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsStress.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWbTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SysDictCrash.java Changeset: 167aa1833ab2 Author: mbaesken Date: 2019-12-10 16:55 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/167aa1833ab2 8235671: enhance print_rlimit_info in os_posix Reviewed-by: clanger, mdoerr ! src/hotspot/os/posix/os_posix.cpp Changeset: 44ea394fd415 Author: tschatzl Date: 2019-12-17 10:12 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/44ea394fd415 8235996: Move obsolete flag G1RSetScanBlockSize in flags list Reviewed-by: sjohanss, lkorinth ! src/hotspot/share/gc/g1/g1_globals.hpp ! src/hotspot/share/runtime/arguments.cpp Changeset: ff7cd49f2aef Author: pliden Date: 2019-12-17 11:37 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/ff7cd49f2aef 8235905: ZGC: Rework how ZRootsIterator visits threads Reviewed-by: stefank ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp ! src/hotspot/share/runtime/threadSMR.hpp Changeset: 09a2449230db Author: weijun Date: 2019-12-17 20:56 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/09a2449230db 8236070: Backout fix for JDK-8234465 Reviewed-by: mullan ! src/jdk.crypto.ec/share/classes/sun/security/ec/ECKeyFactory.java ! src/jdk.crypto.ec/share/classes/sun/security/ec/ECKeyPairGenerator.java ! src/jdk.crypto.ec/share/classes/sun/security/ec/ECPrivateKeyImpl.java - test/jdk/sun/security/ec/PublicKeyInPrivateKey.java Changeset: 2de8425627fa Author: herrick Date: 2019-12-17 08:56 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/2de8425627fa 8235667: IOUtils.copyFile() problems. Reviewed-by: rriggs, asemenyuk, almatvee ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/IOUtils.java Changeset: b05a7ab7ba0c Author: redestad Date: 2019-12-17 15:09 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/b05a7ab7ba0c 8235997: JMH test runner should quote VM_OPTIONS and JAVA_OPTIONS sent to -jvmArgs Reviewed-by: erikj ! make/RunTests.gmk Changeset: 13ad712b3acd Author: herrick Date: 2019-12-17 09:02 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/13ad712b3acd 8235915: jpackage associations fail when there are spaces in file name or path Reviewed-by: prr, asemenyuk, almatvee ! src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WixSourcesBuilder.java Changeset: cb8148bd9f23 Author: dfuchs Date: 2019-12-17 16:11 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/cb8148bd9f23 8235925: java/net/Socket/HttpProxy.java fails on IPv4 only hosts and other small cleanups Summary: HttpProxy test is fixed to take into account the possibility that the host may be configured with IPv4 only Reviewed-by: chegar + test/jdk/java/net/MulticastSocket/NoSetNetworkInterface.java - test/jdk/java/net/NetworkInterface/NoSetNetworkInterface.java ! test/jdk/java/net/Socket/HttpProxy.java ! test/jdk/java/net/SocketOption/OptionsTest.java Changeset: f554e2d8a147 Author: michaelm Date: 2019-12-16 16:44 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/f554e2d8a147 8235976: Directives in WWW-Authenticate should be comma separated Reviewed-by: chegar ! src/jdk.httpserver/share/classes/com/sun/net/httpserver/BasicAuthenticator.java ! test/jdk/com/sun/net/httpserver/bugs/8199849/ParamTest.java Changeset: bce0cd152f61 Author: iignatyev Date: 2019-12-16 15:45 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/bce0cd152f61 8235866: bump jtreg requiredVersion to 4.2b16 Reviewed-by: dholmes, joehw ! test/hotspot/jtreg/TEST.ROOT ! test/jaxp/TEST.ROOT ! test/jdk/TEST.ROOT ! test/langtools/TEST.ROOT ! test/nashorn/TEST.ROOT Changeset: b8b54ebb450a Author: ysuenaga Date: 2019-12-17 10:00 +0900 URL: https://hg.openjdk.java.net/amber/amber/rev/b8b54ebb450a 8235819: -Wformat-overflow is reported from GCC 9 Reviewed-by: tschatzl, lkorinth ! src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp Changeset: bafc170a1d9d Author: jwilhelm Date: 2019-12-17 16:29 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/bafc170a1d9d Merge Changeset: 2baee52c6a1c Author: glaubitz Date: 2019-12-17 16:53 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/2baee52c6a1c 8235960: Zero should not trigger the deprecation warning for ports Reviewed-by: mikael ! make/autoconf/platform.m4 Changeset: 9b9c45d18a9c Author: mseledtsov Date: 2019-12-17 08:42 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/9b9c45d18a9c 8235454: [TESTBUG] Basic test for JFR event streaming for jdk_jfr_sanity Summary: Created basic test for JFR event streaming Reviewed-by: egahlin, iignatyev ! test/jdk/TEST.groups + test/jdk/jdk/jfr/api/consumer/recordingstream/TestBasics.java Changeset: cfaa2457a60a Author: rkennke Date: 2019-12-17 18:23 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/cfaa2457a60a 8236106: [TESTBUG] Shenandoah: Make TestThreadFailure more resilient Reviewed-by: zgu ! test/hotspot/jtreg/gc/shenandoah/oom/TestThreadFailure.java Changeset: 1b1a7893c78a Author: asemenyuk Date: 2019-12-17 13:56 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/1b1a7893c78a 8233270: Add support to jtreg helpers to unpack packages 8230933: Default icon is not set for additional launchers Reviewed-by: herrick, prr, almatvee ! src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/DesktopIntegration.java ! src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/LinuxAppImageBuilder.java ! src/jdk.incubator.jpackage/linux/classes/jdk/incubator/jpackage/internal/LinuxPackageBundler.java ! src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacAppBundler.java ! src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacDmgBundler.java ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/AbstractAppImageBuilder.java ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/AddLauncherArguments.java ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/OverridableResource.java ! src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WinAppBundler.java ! src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WindowsAppImageBuilder.java ! test/jdk/tools/jpackage/helpers/JPackageHelper.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Executor.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Functional.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JarBuilder.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LinuxHelper.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/MacHelper.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/PackageTest.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/PackageType.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TKit.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestBuilder.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestInstance.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/WindowsHelper.java ! test/jdk/tools/jpackage/linux/MaintainerTest.java ! test/jdk/tools/jpackage/linux/PackageDepsTest.java ! test/jdk/tools/jpackage/linux/ReleaseTest.java ! test/jdk/tools/jpackage/linux/ShortcutHintTest.java ! test/jdk/tools/jpackage/macosx/base/SigningBase.java ! test/jdk/tools/jpackage/resources/icon.png ! test/jdk/tools/jpackage/run_tests.sh ! test/jdk/tools/jpackage/share/AdditionalLaunchersTest.java ! test/jdk/tools/jpackage/share/AppImagePackageTest.java ! test/jdk/tools/jpackage/share/ArgumentsTest.java ! test/jdk/tools/jpackage/share/IconTest.java ! test/jdk/tools/jpackage/share/InstallDirTest.java ! test/jdk/tools/jpackage/share/LicenseTest.java ! test/jdk/tools/jpackage/share/jdk/jpackage/tests/BasicTest.java ! test/jdk/tools/jpackage/share/jdk/jpackage/tests/MainClassTest.java ! test/jdk/tools/jpackage/share/jdk/jpackage/tests/ModulePathTest.java ! test/jdk/tools/jpackage/test_jpackage.sh ! test/jdk/tools/jpackage/windows/WinConsoleTest.java ! test/jdk/tools/jpackage/windows/WinScriptTest.java ! test/jdk/tools/jpackage/windows/WinUpgradeUUIDTest.java Changeset: aaec84f8c400 Author: vromero Date: 2019-12-17 14:11 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/aaec84f8c400 8234971: Incorrect example in j.l.reflect.RecordComponent::toString Reviewed-by: jjg ! src/java.base/share/classes/java/lang/reflect/RecordComponent.java Changeset: a01c78b227e4 Author: dcubed Date: 2019-12-17 15:38 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/a01c78b227e4 8236130: ProblemList jdk/jfr/jmx/security/TestEnoughPermission.java Reviewed-by: mikael ! test/jdk/ProblemList.txt Changeset: 276b6ae15a0a Author: asemenyuk Date: 2019-12-17 15:52 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/276b6ae15a0a 8236134: files missing in putback to JDK-8233270 Reviewed-by: herrick, prr, almatvee - test/jdk/tools/jpackage/apps/com.other/com/other/Other.java - test/jdk/tools/jpackage/apps/com.other/module-info.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/AdditionalLauncher.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/LauncherIconVerifier.java + test/jdk/tools/jpackage/helpers/jdk/jpackage/test/RunnablePackageTest.java - test/jdk/tools/jpackage/manage_packages.sh + test/jdk/tools/jpackage/resources/icon2.icns + test/jdk/tools/jpackage/resources/icon2.ico + test/jdk/tools/jpackage/resources/icon2.png + test/jdk/tools/jpackage/resources/icon3.ico + test/jdk/tools/jpackage/resources/icon3.png + test/jdk/tools/jpackage/resources/icon4.ico + test/jdk/tools/jpackage/resources/icon4.png + test/jdk/tools/jpackage/resources/query-msi-property.js - test/jdk/tools/jpackage/share/AddLauncherBase.java - test/jdk/tools/jpackage/share/AddLauncherModuleTest.java - test/jdk/tools/jpackage/share/AddLauncherTest.java - test/jdk/tools/jpackage/share/AddLaunchersTest.java Changeset: 44af5bdb9e86 Author: jjg Date: 2019-12-17 13:07 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/44af5bdb9e86 8235926: Update @jls @jvms taglets to allow inline usage Reviewed-by: hannesw ! make/jdk/src/classes/build/tools/taglet/JSpec.java Changeset: a953933de622 Author: prappo Date: 2019-12-17 21:50 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/a953933de622 8236077: Clean up the use of modifiers and semicolons Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/doclet/Doclet.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/DocFilesHandlerImpl.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/IndexRedirectWriter.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/ModuleWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTag.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/package-info.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeFieldWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeOptionalMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeRequiredMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/BaseConfiguration.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ClassWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstantsSummaryWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstructorWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/DocletElement.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/MemberSummaryWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/MethodWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ModuleSummaryWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PackageSummaryWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PropertyWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/SerializedFormWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WriterFactory.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AbstractMemberBuilder.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/MemberSummaryBuilder.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/doclets.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/InheritDocTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/Taglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/UserTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ValueTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/package-info.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DeprecatedAPIListBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocFileIOException.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocFinder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Extern.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberTable.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkFactory.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkOutput.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ElementsTable.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocTool.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Main.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ToolOption.java ! src/jdk.javadoc/share/classes/module-info.java Changeset: 6b8a675f35e1 Author: ccheung Date: 2019-12-17 16:46 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/6b8a675f35e1 8235563: [TESTBUG] appcds/CommandLineFlagComboNegative.java does not handle archive mapping failure Summary: Use the assertAbnormalExit method of the CDSTestUtils.Result class to handle archive mapping failure. Reviewed-by: iklam ! test/hotspot/jtreg/runtime/cds/appcds/CommandLineFlagComboNegative.java Changeset: b2aca65cc099 Author: kravikumar Date: 2019-12-17 16:06 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/b2aca65cc099 5064980: URI compareTo inconsistent with equals for mixed-case escape sequences Reviewed-by: chegar, dfuchs ! src/java.base/share/classes/java/net/URI.java ! test/jdk/java/net/URI/Test.java Changeset: 798c0903fcd0 Author: lancea Date: 2019-12-18 12:03 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/798c0903fcd0 8229888: (zipfs) Updating an existing zip file does not preserve original permissions Reviewed-by: clanger, alanb, bpb ! src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java + test/jdk/jdk/nio/zipfs/ZipFSPermissionsTest.java + test/jdk/jdk/nio/zipfs/ZipFSPermissionsTest.policy Changeset: eb9e9e9269a9 Author: jbhateja Date: 2019-12-18 21:25 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/eb9e9e9269a9 8235824: C2: Merge AD instructions for AddReductionV and MulReductionV nodes Reviewed-by: vlivanov, sviswanathan, jrose, kvn ! src/hotspot/cpu/x86/x86.ad Changeset: 03b37033db9b Author: jbhateja Date: 2019-12-18 21:25 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/03b37033db9b 8235825: C2: Merge AD instructions for Replicate nodes Reviewed-by: vlivanov, sviswanathan, jrose, kvn ! src/hotspot/cpu/x86/x86.ad Changeset: 7bf6e052490f Author: jjg Date: 2019-12-18 11:57 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/7bf6e052490f 8235947: Cleanup/simplify Utils.getBlockTags Reviewed-by: prappo, hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/BaseTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/CodeTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/DeprecatedTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/DocRootTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/IndexTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/InheritDocTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/LiteralTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ParamTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ReturnTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SeeTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SimpleTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SummaryTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SystemPropertyTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ThrowsTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/UserTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ValueTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java Changeset: d0f45be4fbd8 Author: jjg Date: 2019-12-18 12:14 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/d0f45be4fbd8 8236030: Cleanup use of String.toCharArray Reviewed-by: ksrini, hannesw, igerasim ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java Changeset: 66ddad9cdd9d Author: shurailine Date: 2019-12-17 11:10 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/66ddad9cdd9d 8236044: Create jdk_accessibility test group Reviewed-by: prr ! test/jdk/TEST.groups Changeset: cc850fb10c2a Author: dcubed Date: 2019-12-17 15:38 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/cc850fb10c2a 8236130: ProblemList jdk/jfr/jmx/security/TestEnoughPermission.java Reviewed-by: mikael ! test/jdk/ProblemList.txt Changeset: 7a42c8914389 Author: cjplummer Date: 2019-12-17 20:19 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/7a42c8914389 8236062: Disable clhsdb initialization of SA javascript support since it will always fail, and will likely be removed soon Reviewed-by: amenkov, ysuenaga ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java Changeset: 5b4e75523380 Author: jbhateja Date: 2019-12-18 10:04 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/5b4e75523380 8230185: assert(is_Loop()) failed: invalid node class Summary: Adding missing check for a counted loop. Reviewed-by: kvn, thartmann ! src/hotspot/share/opto/loopopts.cpp + test/hotspot/jtreg/compiler/loopopts/TestIrreducibleLoopWithVNNI.java Changeset: 153bd98146fc Author: ngasson Date: 2019-12-18 11:20 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/153bd98146fc 8235982: AArch64: Insufficient memory barriers in shadow region algorithm Summary: The memory barriers used for synchronizing ParallelCompactData::RegionData::_shadow_state and ParallelCompactData::RegionData::shadow_region are insufficient to prevent reordering of loads. Reviewed-by: tschatzl, sjohanss ! src/hotspot/share/gc/parallel/psParallelCompact.hpp Changeset: 1c844398e041 Author: avoitylov Date: 2019-12-18 14:36 +0300 URL: https://hg.openjdk.java.net/amber/amber/rev/1c844398e041 8231612: 100% cpu on arm32 in Service Thread Reviewed-by: kbarrett, dsamersoff ! src/hotspot/share/runtime/atomic.hpp Changeset: 26bb0fe2270a Author: coleenp Date: 2019-12-18 11:51 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/26bb0fe2270a 8235829: graal crashes with Zombie.java test Summary: Start ServiceThread before compiler threads, and run nmethod barriers for zgc before adding to the service thread queues, or posting events from the java thread. Reviewed-by: pliden, dholmes, rehn ! src/hotspot/share/code/compiledMethod.cpp ! src/hotspot/share/code/compiledMethod.hpp ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/prims/jvmtiCodeBlobEvents.cpp ! src/hotspot/share/prims/jvmtiImpl.cpp ! src/hotspot/share/prims/jvmtiImpl.hpp ! src/hotspot/share/prims/jvmtiThreadState.cpp ! src/hotspot/share/prims/jvmtiThreadState.hpp ! src/hotspot/share/runtime/serviceThread.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/services/management.cpp ! test/hotspot/jtreg/serviceability/jvmti/CompiledMethodLoad/Zombie.java Changeset: 2069b4bfd23b Author: cjplummer Date: 2019-12-18 11:49 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/2069b4bfd23b 8234277: ClhsdbLauncher should enable verbose exceptions and do a better job of detecting SA failures Reviewed-by: sspitsyn, ysuenaga ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/serviceability/sa/ClhsdbLauncher.java Changeset: 169e9680821c Author: ascarpino Date: 2019-12-18 12:10 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/169e9680821c 8233228: Disable weak named curves by default in TLS, CertPath, and Signed JAR Reviewed-by: mullan, xuelei, weijun ! src/java.base/share/classes/sun/security/tools/keytool/Main.java ! src/java.base/share/classes/sun/security/util/AbstractAlgorithmConstraints.java ! src/java.base/share/classes/sun/security/util/ConstraintsParameters.java ! src/java.base/share/classes/sun/security/util/CurveDB.java ! src/java.base/share/classes/sun/security/util/DisabledAlgorithmConstraints.java ! src/java.base/share/classes/sun/security/util/LegacyAlgorithmConstraints.java ! src/java.base/share/conf/security/java.security Changeset: 5d4bf79ce2cb Author: kvn Date: 2019-12-18 12:32 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/5d4bf79ce2cb 8236000: VM build without C2 fails Summary: C2 flags should be checked only when C2 is present. Reviewed-by: kbarrett, thartmann ! src/hotspot/share/gc/shared/genCollectedHeap.cpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/jvmci/jvmci_globals.cpp ! src/hotspot/share/runtime/deoptimization.cpp Changeset: 87266ac324d7 Author: jwilhelm Date: 2019-12-18 23:46 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/87266ac324d7 Merge ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/runtime/thread.cpp ! test/jdk/TEST.groups Changeset: f33197adda9a Author: dcubed Date: 2019-12-18 18:22 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/f33197adda9a 8236226: fix merge error in src/hotspot/share/gc/z/zRootsIterator.cpp Reviewed-by: dholmes, kbarrett ! src/hotspot/share/gc/z/zRootsIterator.cpp Changeset: dd4b4f273274 Author: ngasson Date: 2019-12-19 09:47 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/dd4b4f273274 8234794: AArch64: runtime/memory/ReadFromNoaccessArea.java crashes Summary: try to map CDS shared space at 4G aligned address on AArch64 Reviewed-by: adinn, aph, jiangli, iklam ! src/hotspot/cpu/aarch64/globalDefinitions_aarch64.hpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp ! src/hotspot/cpu/ppc/globalDefinitions_ppc.hpp ! src/hotspot/share/memory/metaspace.cpp ! src/hotspot/share/memory/metaspace.hpp ! src/hotspot/share/memory/metaspaceShared.cpp ! test/hotspot/jtreg/runtime/cds/appcds/SharedBaseAddress.java Changeset: 9b5bc216e922 Author: jwilhelm Date: 2019-12-19 03:48 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/9b5bc216e922 Added tag jdk-15+2 for changeset f33197adda9a ! .hgtags Changeset: a5254fa10a51 Author: mbaesken Date: 2019-12-18 15:10 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/a5254fa10a51 8236183: cleanup Java_jdk_internal_reflect_Reflection_getCallerClass naming Reviewed-by: alanb, dholmes, redestad ! src/java.base/share/native/libjava/Reflection.c Changeset: 68adcd2fbc6b Author: alanb Date: 2019-12-19 08:36 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/68adcd2fbc6b 8236184: (dc) IP_MULTICAST_* and IP_TOS socket options not effective Reviewed-by: dfuchs ! src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/Net.java ! src/java.base/unix/native/libnio/ch/Net.c ! src/java.base/windows/native/libnio/ch/Net.c + test/jdk/java/nio/channels/DatagramChannel/Loopback.java Changeset: 10ca494c141f Author: qpzhang Date: 2019-08-12 16:22 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/10ca494c141f 8229351: AArch64: the const STUB_THRESHOLD in macroAssembler_aarch64.cpp needs to be tuned Summary: Optimize the stub thresholds of string_compare intrinsics Reviewed-by: adinn, aph, avoitylov ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp ! test/hotspot/jtreg/compiler/intrinsics/string/TestStringCompareToDifferentLength.java ! test/hotspot/jtreg/compiler/intrinsics/string/TestStringCompareToSameLength.java Changeset: 9b4336f9fa6d Author: qpzhang Date: 2019-11-15 17:02 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/9b4336f9fa6d 8234228: AArch64: Some temp vars in string_compare intrinsics for processing the last 4 chars (LU/UL) are no use Summary: Clean up redundant temp vars in generate_compare_long_string_different_encoding Reviewed-by: adinn ! src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp Changeset: aac4eebf5e92 Author: ngasson Date: 2019-12-19 17:18 +0800 URL: https://hg.openjdk.java.net/amber/amber/rev/aac4eebf5e92 8236242: Arm32: build broken after 8234794 Reviewed-by: aph ! src/hotspot/share/memory/metaspace.cpp Changeset: 624d4c33f234 Author: ysuenaga Date: 2019-12-19 20:13 +0900 URL: https://hg.openjdk.java.net/amber/amber/rev/624d4c33f234 8235833: PosixPlatform.cpp should not include sysctl.h Reviewed-by: aph, asemenyuk ! src/jdk.incubator.jpackage/unix/native/libapplauncher/PosixPlatform.cpp Changeset: 918546dce044 Author: rehn Date: 2019-12-19 16:47 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/918546dce044 8235912: JvmtiBreakpoint remove oops_do and metadata_do Reviewed-by: coleenp, sspitsyn ! src/hotspot/share/classfile/metadataOnStackMark.cpp ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/jvmtiImpl.cpp ! src/hotspot/share/prims/jvmtiImpl.hpp Changeset: 4b10f3b74fcc Author: rehn Date: 2019-12-19 17:02 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/4b10f3b74fcc 8235913: ThreadStop should be a handshake Reviewed-by: dholmes, mdoerr ! src/hotspot/share/code/icBuffer.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/vmOperations.cpp ! src/hotspot/share/runtime/vmOperations.hpp Changeset: 21dacaafdac5 Author: vromero Date: 2019-12-19 11:46 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/21dacaafdac5 8234445: spurious error message for record constructors with receiver parameters Reviewed-by: mcimadamore ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java ! test/langtools/tools/javac/records/RecordCompilationTests.java Changeset: 6803658b0051 Author: vromero Date: 2019-12-19 13:32 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/6803658b0051 8236266: change error message for the case when a class extends j.l.Record Reviewed-by: mcimadamore ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Changeset: b2f0ddaf781c Author: asemenyuk Date: 2019-12-19 13:39 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/b2f0ddaf781c 8236138: Add tests for jmod applications Reviewed-by: herrick, prr ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JPackageCommand.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaTool.java ! test/jdk/tools/jpackage/share/AdditionalLaunchersTest.java ! test/jdk/tools/jpackage/share/jdk/jpackage/tests/BasicTest.java ! test/jdk/tools/jpackage/share/jdk/jpackage/tests/MainClassTest.java ! test/jdk/tools/jpackage/share/jdk/jpackage/tests/ModulePathTest.java + test/jdk/tools/jpackage/share/jdk/jpackage/tests/ModulePathTest2.java Changeset: ce6662089667 Author: lancea Date: 2019-12-19 15:23 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/ce6662089667 8235961: SyncResolverImpl does not throw SQLException as expected Reviewed-by: joehw, bpb ! src/java.sql.rowset/share/classes/com/sun/rowset/CachedRowSetImpl.java ! src/java.sql.rowset/share/classes/com/sun/rowset/internal/SyncResolverImpl.java ! test/jdk/javax/sql/testng/test/rowset/spi/SyncProviderExceptionTests.java Changeset: 5dc3440be041 Author: gromero Date: 2019-11-21 17:10 -0300 URL: https://hg.openjdk.java.net/amber/amber/rev/5dc3440be041 8234599: PPC64: Add support on recent CPUs and Linux for JEP-352 Reviewed-by: mbaesken, mdoerr, adinn ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.hpp ! src/hotspot/cpu/ppc/ppc.ad ! src/hotspot/cpu/ppc/stubGenerator_ppc.cpp ! src/hotspot/cpu/ppc/vm_version_ppc.cpp ! src/java.base/unix/native/libnio/ch/FileChannelImpl.c ! test/jdk/java/nio/MappedByteBuffer/PmemTest.java Changeset: 75931341b227 Author: jwilhelm Date: 2019-12-19 03:46 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/75931341b227 Added tag jdk-14+28 for changeset 2069b4bfd23b ! .hgtags Changeset: ca3387704361 Author: stefank Date: 2019-12-19 14:19 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/ca3387704361 8236110: Windows (MSVC 2013) build failures after JDK-8233299 Reviewed-by: erikj ! make/autoconf/hotspot.m4 Changeset: fb606350b732 Author: almatvee Date: 2019-12-19 15:20 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/fb606350b732 8235738: [macos] tools/jpackage tests timeout on macOS Reviewed-by: herrick, asemenyuk ! src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacDmgBundler.java ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/Executor.java ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/IOUtils.java Changeset: 52485fd39fcb Author: epavlova Date: 2019-12-19 13:20 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/52485fd39fcb 8236139: [Graal] java/lang/RuntimeTests/exec/LotsOfOutput.java fails with JVMCI enabled Reviewed-by: kvn ! test/jdk/ProblemList-graal.txt Changeset: 7118b1a7d9fb Author: iveresov Date: 2019-12-19 15:13 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/7118b1a7d9fb 8235927: Update Graal Reviewed-by: kvn ! src/jdk.aot/share/classes/jdk.tools.jaotc.binformat/src/jdk/tools/jaotc/binformat/BinaryContainer.java ! src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/MarkProcessor.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.api.directives.test/src/org/graalvm/compiler/api/directives/test/BlackholeDirectiveTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.api.directives.test/src/org/graalvm/compiler/api/directives/test/ControlFlowAnchorDirectiveTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.api.directives.test/src/org/graalvm/compiler/api/directives/test/OpaqueDirectiveTest.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64.test/src/org/graalvm/compiler/asm/aarch64/test/AArch64LoadStoreMergingAssemblerTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64Assembler.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64.test/src/org/graalvm/compiler/core/aarch64/test/AArch64PairLoadStoreTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/util/UnsafeArrayTypeWriter.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CheckGraalInvariants.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationTestBase.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CountedLoopTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/MergeCanonicalizerTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/OptionsVerifierTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/SubprocessTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/VerifyDebugUsage.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ea/PEAAssertionsTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.debug/src/org/graalvm/compiler/debug/DebugContext.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotSafepointOp.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotSafepointOp.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.lir.test/src/org/graalvm/compiler/hotspot/lir/test/BenchmarkCounterOverflowTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.sparc.test/src/org/graalvm/compiler/hotspot/sparc/test/SPARCAllocatorTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotSafepointOp.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CompilationWrapperTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/ReservedStackAccessTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfigVersioned.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.jtt/src/org/graalvm/compiler/jtt/optimize/ConditionalElimination02.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64Move.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.aarch64/src/org/graalvm/compiler/lir/aarch64/AArch64Unary.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/asm/CompilationResultBuilder.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/GraphDecoder.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/classfile/RedefineIntrinsicTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/classfile/Classfile.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.test/src/org/graalvm/compiler/test/SubprocessUtil.java Changeset: 4d90b46f099c Author: jwilhelm Date: 2019-12-20 04:47 +0100 URL: https://hg.openjdk.java.net/amber/amber/rev/4d90b46f099c Merge ! .hgtags ! src/jdk.incubator.jpackage/macosx/classes/jdk/incubator/jpackage/internal/MacDmgBundler.java ! src/jdk.incubator.jpackage/share/classes/jdk/incubator/jpackage/internal/IOUtils.java Changeset: 2fbc66ef1a1d Author: iklam Date: 2019-12-19 23:04 -0800 URL: https://hg.openjdk.java.net/amber/amber/rev/2fbc66ef1a1d 8233826: Change CDS dumping tty->print_cr() to unified logging Reviewed-by: coleenp, dholmes, jiangli ! src/hotspot/share/memory/filemap.cpp ! src/hotspot/share/memory/heapShared.cpp ! src/hotspot/share/memory/metaspaceShared.cpp ! test/hotspot/jtreg/gc/g1/TestSharedArchiveWithPreTouch.java ! test/hotspot/jtreg/runtime/CDSCompressedKPtrs/CDSCompressedKPtrs.java ! test/hotspot/jtreg/runtime/CDSCompressedKPtrs/CDSCompressedKPtrsError.java ! test/hotspot/jtreg/runtime/CDSCompressedKPtrs/XShareAuto.java ! test/hotspot/jtreg/runtime/CompressedOops/CompressedClassPointers.java ! test/hotspot/jtreg/runtime/NMT/NMTWithCDS.java ! test/hotspot/jtreg/runtime/cds/SharedArchiveFile.java ! test/hotspot/jtreg/runtime/cds/SpaceUtilizationCheck.java ! test/hotspot/jtreg/runtime/cds/appcds/TestCommon.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleWithCustomImageTest.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/OpenArchiveRegion.java ! test/jdk/com/sun/jdi/cds/CDSJDITest.java Changeset: f93bd058a4ce Author: alanb Date: 2019-12-20 09:28 +0000 URL: https://hg.openjdk.java.net/amber/amber/rev/f93bd058a4ce 8236246: SelectorProvider support for creating a DatagramChannel that is not interruptible Reviewed-by: chegar ! src/java.base/aix/classes/sun/nio/ch/DefaultSelectorProvider.java ! src/java.base/linux/classes/sun/nio/ch/DefaultSelectorProvider.java ! src/java.base/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java ! src/java.base/share/classes/java/nio/channels/spi/SelectorProvider.java ! src/java.base/share/classes/sun/nio/ch/DatagramChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/SelectorProviderImpl.java ! src/java.base/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java ! src/java.base/windows/classes/sun/nio/ch/DefaultSelectorProvider.java + test/jdk/java/nio/channels/DatagramChannel/InterruptibleOrNot.java ! test/jdk/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java ! test/jdk/java/rmi/testlibrary/RMIDSelectorProvider.java From vicente.romero at oracle.com Sat Dec 21 00:56:45 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Sat, 21 Dec 2019 00:56:45 +0000 Subject: hg: amber/amber: rebasing sealed types branch, old records-and-sealed will be closed Message-ID: <201912210056.xBL0ukDG026715@aojmv0008.oracle.com> Changeset: fc50f84bdba0 Author: vromero Date: 2019-12-20 19:56 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/fc50f84bdba0 rebasing sealed types branch, old records-and-sealed will be closed From vicente.romero at oracle.com Sat Dec 21 00:57:30 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Sat, 21 Dec 2019 00:57:30 +0000 Subject: hg: amber/amber: imported patch sealed.patch Message-ID: <201912210057.xBL0vV0i027068@aojmv0008.oracle.com> Changeset: ccd7d4c3cea5 Author: vromero Date: 2019-12-20 19:56 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/ccd7d4c3cea5 imported patch sealed.patch ! make/autoconf/spec.gmk.in ! make/hotspot/symbols/symbols-unix ! src/hotspot/share/classfile/classFileParser.cpp ! src/hotspot/share/classfile/classFileParser.hpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/include/jvm.h ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/memory/heapInspection.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/oops/klassVtable.cpp ! src/hotspot/share/oops/klassVtable.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/method.hpp ! src/hotspot/share/prims/jvm.cpp ! 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.base/share/classes/java/lang/Class.java ! src/java.base/share/classes/jdk/internal/PreviewFeature.java ! src/java.base/share/native/libjava/Class.c ! src/java.compiler/share/classes/javax/lang/model/element/Modifier.java ! src/java.compiler/share/classes/javax/lang/model/element/TypeElement.java ! src/java.compiler/share/classes/javax/lang/model/util/Elements.java ! src/java.instrument/share/native/libinstrument/JavaExceptions.c ! 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/api/JavacTrees.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.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/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Type.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/Enter.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/jvm/Target.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacElements.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/tree/TreeScanner.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Dependencies.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/Names.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/LinkInfoImpl.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WorkArounds.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ClassBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java ! src/jdk.jdeps/share/classes/com/sun/tools/classfile/Attribute.java ! src/jdk.jdeps/share/classes/com/sun/tools/classfile/ClassWriter.java + src/jdk.jdeps/share/classes/com/sun/tools/classfile/PermittedSubtypes_attribute.java ! src/jdk.jdeps/share/classes/com/sun/tools/javap/AttributeWriter.java + 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/abstractSealedTest.java + test/hotspot/jtreg/runtime/sealedTypes/asteroids/Pluto.java + test/hotspot/jtreg/runtime/sealedTypes/getPermittedSubtypes.jcod + test/hotspot/jtreg/runtime/sealedTypes/getPermittedSubtypesTest.java + test/hotspot/jtreg/runtime/sealedTypes/otherPkg/wrongPackage.java + test/hotspot/jtreg/runtime/sealedTypes/overrideSealedTest.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 + test/langtools/jdk/javadoc/doclet/testSealedTypes/TestSealedTypes.java ! test/langtools/lib/annotations/annotations/classfile/ClassfileInspector.java ! test/langtools/tools/javac/MethodParameters/AttributeVisitor.java + test/langtools/tools/javac/diags/examples/CantInheritFromSealed.java ! test/langtools/tools/javac/processing/model/TestSourceVersion.java + test/langtools/tools/javac/processing/model/element/TestSealed.java + test/langtools/tools/javac/sealed/CheckSubtypesOfSealedTest.java + test/langtools/tools/javac/sealed/CheckingAttributeAtRuntimeTest.java + test/langtools/tools/javac/sealed/SealedCompilationTests.java + test/langtools/tools/javac/sealed/SealedDiffConfigurationsTest.java + test/langtools/tools/javac/sealed/annotations/AnnotationProcessorOnSealedTypesTest.java ! test/langtools/tools/jdeps/listdeps/ListModuleDeps.java From vicente.romero at oracle.com Sat Dec 21 00:58:52 2019 From: vicente.romero at oracle.com (vicente.romero at oracle.com) Date: Sat, 21 Dec 2019 00:58:52 +0000 Subject: hg: amber/amber: activity in this branch was moved to sealed-types Message-ID: <201912210058.xBL0wqcw028412@aojmv0008.oracle.com> Changeset: 0f0855006d4d Author: vromero Date: 2019-12-20 19:58 -0500 URL: https://hg.openjdk.java.net/amber/amber/rev/0f0855006d4d activity in this branch was moved to sealed-types From vicente.romero at oracle.com Sat Dec 21 01:03:54 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Fri, 20 Dec 2019 20:03:54 -0500 Subject: sealed types development moved to new branch sealed-types Message-ID: Hi all, I have closed branch records-and-sealed after cherry-picking the sealed code from there. Please continue any new development in the `sealed-types` branch. I have tried to get all the working bits, but if anyone notice something missing please chime in. The old records-and-sealed branch have some patterns code that could be useful in the future but that doesn't make sense for a sealed only repo so it was left behind. Thanks, Vicente From forax at univ-mlv.fr Sat Dec 21 21:38:57 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Sat, 21 Dec 2019 22:38:57 +0100 (CET) Subject: sealed types development moved to new branch sealed-types In-Reply-To: References: Message-ID: <1055478110.1079414.1576964337919.JavaMail.zimbra@u-pem.fr> basic tests seem to work :) R?mi ----- Mail original ----- > De: "Vicente Romero" > ?: "amber-dev" > Envoy?: Samedi 21 D?cembre 2019 02:03:54 > Objet: sealed types development moved to new branch sealed-types > Hi all, > > I have closed branch records-and-sealed after cherry-picking the sealed > code from there. Please continue any new development in the > `sealed-types` branch. I have tried to get all the working bits, but if > anyone notice something missing please chime in. The old > records-and-sealed branch have some patterns code that could be useful > in the future but that doesn't make sense for a sealed only repo so it > was left behind. > > Thanks, > Vicente From benjamin.john.evans at gmail.com Sun Dec 22 12:17:34 2019 From: benjamin.john.evans at gmail.com (Ben Evans) Date: Sun, 22 Dec 2019 13:17:34 +0100 Subject: =?UTF-8?Q?Re=3A_Records_=E2=80=94_Dealing_with_nullable_values?= In-Reply-To: References: <03bb0778-8f14-4af5-9d29-da8b3459d693@Spark> <0b724adb-6735-4c29-8f04-d10dc85730b3@Spark> <99b08edb-c6a0-01f5-e2c5-a80b2cd89cd3@oracle.com> Message-ID: This is also a good opportunity to examine your domain and ask yourself the question of why you need to record the gender of a person at all. Spoiler: In an overwhelming number of cases, you don't. This has been a Party Political Broadcast on behalf of the Stop Recording Data Points That You're Never Going To Use or Touch Again Party. Cheers, Ben On Sun, 15 Dec 2019 at 03:21, Tagir Valeev wrote: > > > But if you really want to treat "no > > gender" as a valid point in the domain, then just make a record with an > > Optional component, and push the `Optional.ofNullable()` to the > > caller (or, provide an overloaded constructor that does it for them.) > > > > A better solution, to my opinion, is to encode an unspecified gender as one > of the values within the Gender type and make it non-nullable. E.g. if > Gender is an enum, just add a new UNSPECIFIED constant. This is much better > for all clients. E. g. you may safely do person.gender().toString() to > display the gender in the UI without ugly things like > person.gender().map(Gender::toString).orElse(Messages.UNSPECIFIED_GENDER). > > With best regards, > Tagir Valeev. > > > But I would still use this pattern sparingly; the majority of uses I see > > of Optional in domain models are gratuitous. > > > > On 12/14/2019 5:31 PM, Arash Shahkar wrote: > > > In my example, gender can be left undefined, but not name. Dropping > > > requireNonNull(gender) from the compact constructor works, but leaves > > > the accessor for gender returning null (possibly). > > > > > > What I?d like to achieve is to have the accessor for gender return > > > Optional, to clearly communicate that it might be null. I have > > > found this pretty common, and using this pattern has helped a lot. > > > > > > I was wondering if my ?workaround? to be able to use records and drop > > > Lombok for these cases is a big no-no. > > > On Dec 14, 2019, 5:16 PM -0500, Brian Goetz , > > > wrote: > > >> No, that would not be a good idea. If you find yourself using Optional > > >> for a method parameter, or a field type, or a record component type, > > >> you've almost certainly gone Optional-crazy. It's a common, but > > >> curable, disease. > > >> > > >> What you want to do is this: > > >> > > >> record Foo(String name, Gender gender) { > > >> Foo { > > >> requireNonNull(name); > > >> requireNonNull(gender); > > >> } > > >> } > > >> > > >> The `Foo { ... }` is a _compact constructor_, which is a constructor > > >> whose signature is the same as that of the record, and which > > >> automatically handles the `this.x = x` boilerplate for you. This is > > >> where you put argument validation / normalization. > > >> > > >> > > >> On 12/14/2019 5:01 PM, Arash Shahkar wrote: > > >>> Hi, > > >>> > > >>> I?ve been using Lombok for quite a while now to automatically > > >>> generate boilerplate code for "data carrier" classes. However, a > > >>> pattern I really like and have found to work very well is to verify > > >>> non-nullity of all the fields that must not be null, and return an > > >>> Optional from the accessor of a field if it?s allowed to have > > >>> a null value. Consider: > > >>> > > >>> @lombok.Value > > >>> class Person { > > >>> > > >>> String name; > > >>> Gender gender; > > >>> > > >>> Person(String name, Gender gender) { ? } // customize the > > >>> constructor, verifying that name is defined and valid > > >>> > > >>> Optional getGender() { // customize the accessor for > > >>> gender, to make sure calling code deals with the possibility of > > >>> gender being null > > >>> return ofNullable(gender); > > >>> } > > >>> } > > >>> > > >>> Doing a similar thing with records is not possible, due to the fact > > >>> that the accessor for gender has to exactly return a Gender. With > > >>> the current specification for records, the only option is to do: > > >>> > > >>> record Person(String name, Optional gender) { > > >>> ? > > >>> } > > >>> > > >>> Is this considered good practice? Do you suggest any alternatives? > > >> > > > > From michael.hixson at gmail.com Sun Dec 22 17:32:58 2019 From: michael.hixson at gmail.com (Michael Hixson) Date: Sun, 22 Dec 2019 09:32:58 -0800 Subject: Records and type annotations Message-ID: Hello, I'm trying records with type annotations and I notice a couple of unexpected behaviors in terms of how the annotations are applied. I'm using build 14-ea+28-1366. 1. If I explicitly declare the canonical constructor but omit the parameter list, the parameters of that constructor don't inherit the type annotations of the components. I expected the type annotations to be inherited in the same way they would have been had I not declared the canonical constructor. 2. The type annotations of the components appear in the annotations of the accessor methods rather than in the annotated return types of those methods. I expected the type annotations to be in the annotated return types because that's what happens when I write out a regular non-record class with type annotations. I've inlined the source code I'm using and its output at the end of this email. The output for Record2's constructor shows issue #1 (its annotatedType is different than Record1's), and the output for the three classes' accessor methods shows issue #2 (the regular class's method is different from the two records'). Issue #1 seems like the more problematic of the two. It feels like my types are being mangled. "Hey, who said you could change the type from `@Nullable String` to `String`, which is a different and incompatible type? Not me." Issue #2 is just something that caught my eye while investigating #1. -Michael ------------------------------- package example; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.Arrays; public class RecordsTest { @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.TYPE_USE, ElementType.TYPE_PARAMETER }) @interface Nullable {} static class RegularClass { private final @Nullable String t; public RegularClass(@Nullable String t) { this.t = t; } public @Nullable String t() { return t; } } record Record1(@Nullable String t) {} record Record2(@Nullable String t) { public Record2 {} } public static void main(String[] args) { describeClass(RegularClass.class); describeClass(Record1.class); describeClass(Record2.class); } static void describeClass(Class clazz) { System.out.println(clazz); for (var field : clazz.getDeclaredFields()) { System.out.println( " field " + field); System.out.println( " annotatedType " + field.getAnnotatedType()); System.out.println( " annotations " + Arrays.toString(field.getAnnotations())); } for (var constructor : clazz.getConstructors()) { System.out.println( " constructor " + constructor); for (var parameter : constructor.getParameters()) { System.out.println( " parameter " + parameter); System.out.println( " annotatedType " + parameter.getAnnotatedType()); System.out.println( " annotations " + Arrays.toString(parameter.getAnnotations())); } } for (var method : clazz.getDeclaredMethods()) { var name = method.getName(); if (name.equals("equals") || name.equals("hashCode") || name.equals("toString")) continue; System.out.println( " method " + method); System.out.println( " annotatedReturnType " + method.getAnnotatedReturnType()); System.out.println( " annotations " + Arrays.toString(method.getAnnotations())); } System.out.println(); } } ------------------------------- class example.RecordsTest$RegularClass field private final java.lang.String example.RecordsTest$RegularClass.t annotatedType @example.RecordsTest$Nullable() java.lang.String annotations [] constructor public example.RecordsTest$RegularClass(java.lang.String) parameter java.lang.String arg0 annotatedType @example.RecordsTest$Nullable() java.lang.String annotations [] method public java.lang.String example.RecordsTest$RegularClass.t() annotatedReturnType @example.RecordsTest$Nullable() java.lang.String annotations [] class example.RecordsTest$Record1 field private final java.lang.String example.RecordsTest$Record1.t annotatedType @example.RecordsTest$Nullable() java.lang.String annotations [] constructor public example.RecordsTest$Record1(java.lang.String) parameter java.lang.String t annotatedType @example.RecordsTest$Nullable() java.lang.String annotations [] method public java.lang.String example.RecordsTest$Record1.t() annotatedReturnType java.lang.String annotations [@example.RecordsTest$Nullable()] class example.RecordsTest$Record2 field private final java.lang.String example.RecordsTest$Record2.t annotatedType @example.RecordsTest$Nullable() java.lang.String annotations [] constructor public example.RecordsTest$Record2(java.lang.String) parameter final java.lang.String t annotatedType java.lang.String annotations [] method public java.lang.String example.RecordsTest$Record2.t() annotatedReturnType java.lang.String annotations [@example.RecordsTest$Nullable()] From brian.goetz at oracle.com Sun Dec 22 23:26:33 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 22 Dec 2019 18:26:33 -0500 Subject: Records and type annotations In-Reply-To: References: Message-ID: > I'm trying records with type annotations and I notice a couple of > unexpected behaviors in terms of how the annotations are applied. I'm > using build 14-ea+28-1366. > > 1. If I explicitly declare the canonical constructor but omit the > parameter list, the parameters of that constructor don't inherit the > type annotations of the components. I expected the type annotations > to be inherited in the same way they would have been had I not > declared the canonical constructor. This seems a reasonable expectation.? We don't attempt to infer the annotations when there is an explicit parameter list, but with an implicit parameter list, it seems reasonable that the annotations would be pushed down.? Good catch! This should be the case for both declaration and type annotations. > 2. The type annotations of the components appear in the annotations of > the accessor methods rather than in the annotated return types of > those methods. I expected the type annotations to be in the annotated > return types because that's what happens when I write out a regular > non-record class with type annotations. Declaration annotations on the record components, if applicable to a type of METHOD, should be pushed down to the accessor methods.? But, for type annotations, they should be pushed down to type annotations on the return type, as you expect. > I've inlined the source code I'm using and its output at the end of > this email. The output for Record2's constructor shows issue #1 (its > annotatedType is different than Record1's), and the output for the > three classes' accessor methods shows issue #2 (the regular class's > method is different from the two records'). > > Issue #1 seems like the more problematic of the two. It feels like my > types are being mangled. "Hey, who said you could change the type > from `@Nullable String` to `String`, which is a different and > incompatible type? Not me." Issue #2 is just something that caught > my eye while investigating #1. Both good catches.? Thanks for the excellent testing and clear bug report! > > -Michael > > ------------------------------- > > package example; > > import java.lang.annotation.ElementType; > import java.lang.annotation.Retention; > import java.lang.annotation.RetentionPolicy; > import java.lang.annotation.Target; > import java.util.Arrays; > > public class RecordsTest { > > @Retention(RetentionPolicy.RUNTIME) > @Target({ ElementType.TYPE_USE, ElementType.TYPE_PARAMETER }) > @interface Nullable {} > > static class RegularClass { > private final @Nullable String t; > public RegularClass(@Nullable String t) { this.t = t; } > public @Nullable String t() { return t; } > } > > record Record1(@Nullable String t) {} > > record Record2(@Nullable String t) { > public Record2 {} > } > > public static void main(String[] args) { > describeClass(RegularClass.class); > describeClass(Record1.class); > describeClass(Record2.class); > } > > static void describeClass(Class clazz) { > System.out.println(clazz); > > for (var field : clazz.getDeclaredFields()) { > System.out.println( > " field " + field); > System.out.println( > " annotatedType " > + field.getAnnotatedType()); > System.out.println( > " annotations " > + Arrays.toString(field.getAnnotations())); > } > > for (var constructor : clazz.getConstructors()) { > System.out.println( > " constructor " + constructor); > for (var parameter : constructor.getParameters()) { > System.out.println( > " parameter " + parameter); > System.out.println( > " annotatedType " > + parameter.getAnnotatedType()); > System.out.println( > " annotations " > + Arrays.toString(parameter.getAnnotations())); > } > } > > for (var method : clazz.getDeclaredMethods()) { > var name = method.getName(); > if (name.equals("equals") > || name.equals("hashCode") > || name.equals("toString")) > continue; > > System.out.println( > " method " + method); > System.out.println( > " annotatedReturnType " > + method.getAnnotatedReturnType()); > System.out.println( > " annotations " > + Arrays.toString(method.getAnnotations())); > } > > System.out.println(); > } > } > > ------------------------------- > > class example.RecordsTest$RegularClass > field private final java.lang.String example.RecordsTest$RegularClass.t > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > constructor public example.RecordsTest$RegularClass(java.lang.String) > parameter java.lang.String arg0 > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > method public java.lang.String example.RecordsTest$RegularClass.t() > annotatedReturnType @example.RecordsTest$Nullable() java.lang.String > annotations [] > > class example.RecordsTest$Record1 > field private final java.lang.String example.RecordsTest$Record1.t > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > constructor public example.RecordsTest$Record1(java.lang.String) > parameter java.lang.String t > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > method public java.lang.String example.RecordsTest$Record1.t() > annotatedReturnType java.lang.String > annotations [@example.RecordsTest$Nullable()] > > class example.RecordsTest$Record2 > field private final java.lang.String example.RecordsTest$Record2.t > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > constructor public example.RecordsTest$Record2(java.lang.String) > parameter final java.lang.String t > annotatedType java.lang.String > annotations [] > method public java.lang.String example.RecordsTest$Record2.t() > annotatedReturnType java.lang.String > annotations [@example.RecordsTest$Nullable()] From amaembo at gmail.com Tue Dec 24 09:45:22 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Tue, 24 Dec 2019 16:45:22 +0700 Subject: Javac and local records capturing Message-ID: Hello! I'm playing with javac 14-ea+28-1366 and local records. Looks like it doesn't prevent capturing of outer context. E.g.: class X { public static void main(String[] args) { int x = 2; record Y() { void test() { System.out.println(x); } } new Y().test(); } } javac happily compiles this program and it prints 2. I think it should be rejected as it captures a local variable from the outer context. Also, it looks like capturing compile-time constant should be ok. E.g. if we add `final ` before `int x = 2`, then it should be accepted. Unfortunately spec draft is silent about whether it's ok to capture compile-time constant local variable in the record. Finally, this code breaks the compiler: class X { public static void main(String[] args) { int x = 2; record Y() { static final int y = x; } new Y(); } } Javac output is the following: Note: Test.java uses preview language features. Note: Recompile with -Xlint:preview for details. An exception has occurred in the compiler (14-ea). 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.NullPointerException at jdk.compiler/com.sun.tools.javac.jvm.Code.emitop0(Code.java:568) at jdk.compiler/com.sun.tools.javac.jvm.Items$SelfItem.load(Items.java:369) at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitIdent(Gen.java:2257) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2411) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:864) at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitAssign(Gen.java:1998) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1981) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:864) at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitExec(Gen.java:1723) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1524) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genDef(Gen.java:597) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStat(Gen.java:632) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStat(Gen.java:618) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStats(Gen.java:669) at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitBlock(Gen.java:1084) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1039) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genDef(Gen.java:597) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStat(Gen.java:632) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genMethod(Gen.java:954) at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitMethodDef(Gen.java:917) at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:885) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genDef(Gen.java:597) at jdk.compiler/com.sun.tools.javac.jvm.Gen.genClass(Gen.java:2395) at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:756) at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1646) at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1614) 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:316) 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) With best regards, Tagir Valeev From amaembo at gmail.com Tue Dec 24 10:42:56 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Tue, 24 Dec 2019 17:42:56 +0700 Subject: javac rejects record component with 'final' modifier Message-ID: Hello! javac 14-ea+28-1366 rejects the following record: record R(final int x) {} Displaying the following message: Test2.java:1: error: record components cannot have modifiers record R(final int x) {} ^ Note: Test2.java uses preview language features. Note: Recompile with -Xlint:preview for details. However, the spec draft for records explicitly allows this [1]: > It is permitted for a record component to redundantly specify the final modifier http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html#jls-8.10.1 With best regards, Tagir Valeev From amaembo at gmail.com Tue Dec 24 10:50:04 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Tue, 24 Dec 2019 17:50:04 +0700 Subject: javac rejects canonical constructor when formal parameter name doesn't match the record component name Message-ID: Hello! javac 14-ea+28-1366 rejects the following code: record R(int x) { public R(int _x) { this.x = _x; } } Test.java:2: error: invalid canonical constructor in record R public R(int _x) { this.x = _x; } ^ (invalid parameter names in canonical constructor) Note: Test.java uses preview language features. Note: Recompile with -Xlint:preview for details. However, the spec for the records [1] doesn't prohibit such a renaming. It says only that "The types of the formal parameters in the formal parameter list of the canonical constructor must be identical to the declared type of the corresponding record component." The formal parameter names are only mentioned in "derived constructor signature" definition. However, this definition doesn't prohibit anything, to my understanding. So either compiler should be updated to allow such a code or spec should be updated to explicitly prohibit it. With best regards, Tagir Valeev. [1] http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html#jls-8.10.4 From brian.goetz at oracle.com Tue Dec 24 17:53:11 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Tue, 24 Dec 2019 12:53:11 -0500 Subject: javac rejects canonical constructor when formal parameter name doesn't match the record component name In-Reply-To: References: Message-ID: On this one, I agree with the compiler and think the spec should be adjusted. The reasoning is that I am looking down he road at named parameter invocation, and if the record component names mismatch the canonical ctor param names, that will cause trouble for no benefit. Sent from my iPad > On Dec 24, 2019, at 5:50 AM, Tagir Valeev wrote: > > Hello! > > javac 14-ea+28-1366 rejects the following code: > > record R(int x) { > public R(int _x) { this.x = _x; } > } > > Test.java:2: error: invalid canonical constructor in record R > public R(int _x) { this.x = _x; } > ^ > (invalid parameter names in canonical constructor) > Note: Test.java uses preview language features. > Note: Recompile with -Xlint:preview for details. > > However, the spec for the records [1] doesn't prohibit such a > renaming. It says only that "The types of the formal parameters in the > formal parameter list of the canonical constructor must be identical > to the declared type of the corresponding record component." The > formal parameter names are only mentioned in "derived constructor > signature" definition. However, this definition doesn't prohibit > anything, to my understanding. So either compiler should be updated to > allow such a code or spec should be updated to explicitly prohibit it. > > With best regards, > Tagir Valeev. > > [1] http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html#jls-8.10.4 From michael.hixson at gmail.com Tue Dec 24 19:28:28 2019 From: michael.hixson at gmail.com (Michael Hixson) Date: Tue, 24 Dec 2019 11:28:28 -0800 Subject: Relative link tags in record javadoc don't resolve Message-ID: Hello, The javadoc tool in 14-ea+28-1366 doesn't resolve {@link} tags in records unless the link target is qualified with its class name. This seems like a bug because it's different than the behavior for non-record classes. Take this code for example: package example; public class JavadocTest { /** * {@link #foo()} * {@link Bar} */ public static class Foo { public void foo() {} } /** * {@link #bar()} * {@link Foo} */ public record Bar() { public void bar() {} } } The javadoc tool complains about both of the link tags in the "Bar" record class. It's fine with the similar-looking link tags in the "Foo" non-record class. javadoc --enable-preview --release 14 -d jdoc src/main/java/example/JavadocTest.java src\main\java\example\JavadocTest.java:13: error: reference not found * {@link #bar()} ^ src\main\java\example\JavadocTest.java:14: error: reference not found * {@link Foo} ^ If I qualify the link tags in the record class, then javadoc is happy. package example; public class JavadocTest { /** * {@link #foo()} * {@link Bar} */ public static class Foo { public void foo() {} } /** * {@link JavadocTest.Bar#bar()} * {@link JavadocTest.Foo} */ public record Bar() { public void bar() {} } } -Michael From jonathan.gibbons at oracle.com Tue Dec 24 19:54:35 2019 From: jonathan.gibbons at oracle.com (Jonathan Gibbons) Date: Tue, 24 Dec 2019 11:54:35 -0800 Subject: Relative link tags in record javadoc don't resolve In-Reply-To: References: Message-ID: Michael, Thanks for the report. I'll follow up and file a? bug if necessary. -- Jon On 12/24/19 11:28 AM, Michael Hixson wrote: > Hello, > > The javadoc tool in 14-ea+28-1366 doesn't resolve {@link} tags in > records unless the link target is qualified with its class name. This > seems like a bug because it's different than the behavior for > non-record classes. > > Take this code for example: > > package example; > > public class JavadocTest { > /** > * {@link #foo()} > * {@link Bar} > */ > public static class Foo { > public void foo() {} > } > > /** > * {@link #bar()} > * {@link Foo} > */ > public record Bar() { > public void bar() {} > } > } > > The javadoc tool complains about both of the link tags in the "Bar" > record class. It's fine with the similar-looking link tags in the > "Foo" non-record class. > > javadoc --enable-preview --release 14 -d jdoc > src/main/java/example/JavadocTest.java > > src\main\java\example\JavadocTest.java:13: error: reference not found > * {@link #bar()} > ^ > src\main\java\example\JavadocTest.java:14: error: reference not found > * {@link Foo} > ^ > > If I qualify the link tags in the record class, then javadoc is happy. > > package example; > > public class JavadocTest { > /** > * {@link #foo()} > * {@link Bar} > */ > public static class Foo { > public void foo() {} > } > > /** > * {@link JavadocTest.Bar#bar()} > * {@link JavadocTest.Foo} > */ > public record Bar() { > public void bar() {} > } > } > > -Michael From jonathan.gibbons at oracle.com Tue Dec 24 19:59:32 2019 From: jonathan.gibbons at oracle.com (Jonathan Gibbons) Date: Tue, 24 Dec 2019 11:59:32 -0800 Subject: Relative link tags in record javadoc don't resolve In-Reply-To: References: Message-ID: <0a2bd14a-ea89-2de4-636a-74e461b4293a@oracle.com> https://bugs.openjdk.java.net/browse/JDK-8236539 -- Jon On 12/24/19 11:54 AM, Jonathan Gibbons wrote: > Michael, > > Thanks for the report. > > I'll follow up and file a? bug if necessary. > > -- Jon > > On 12/24/19 11:28 AM, Michael Hixson wrote: >> Hello, >> >> The javadoc tool in 14-ea+28-1366 doesn't resolve {@link} tags in >> records unless the link target is qualified with its class name.? This >> seems like a bug because it's different than the behavior for >> non-record classes. >> >> Take this code for example: >> >> ???? package example; >> >> ???? public class JavadocTest { >> ?????? /** >> ??????? * {@link #foo()} >> ??????? * {@link Bar} >> ??????? */ >> ?????? public static class Foo { >> ???????? public void foo() {} >> ?????? } >> >> ?????? /** >> ??????? * {@link #bar()} >> ??????? * {@link Foo} >> ??????? */ >> ?????? public record Bar() { >> ???????? public void bar() {} >> ?????? } >> ???? } >> >> The javadoc tool complains about both of the link tags in the "Bar" >> record class.? It's fine with the similar-looking link tags in the >> "Foo" non-record class. >> >> ???? javadoc --enable-preview --release 14 -d jdoc >> src/main/java/example/JavadocTest.java >> >> ???? src\main\java\example\JavadocTest.java:13: error: reference not >> found >> ??????? * {@link #bar()} >> ???????????????? ^ >> ???? src\main\java\example\JavadocTest.java:14: error: reference not >> found >> ??????? * {@link Foo} >> ???????????????? ^ >> >> If I qualify the link tags in the record class, then javadoc is happy. >> >> ???? package example; >> >> ???? public class JavadocTest { >> ?????? /** >> ??????? * {@link #foo()} >> ??????? * {@link Bar} >> ??????? */ >> ?????? public static class Foo { >> ???????? public void foo() {} >> ?????? } >> >> ?????? /** >> ??????? * {@link JavadocTest.Bar#bar()} >> ??????? * {@link JavadocTest.Foo} >> ??????? */ >> ?????? public record Bar() { >> ???????? public void bar() {} >> ?????? } >> ???? } >> >> -Michael From brian.goetz at oracle.com Tue Dec 24 22:14:35 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Tue, 24 Dec 2019 17:14:35 -0500 Subject: Javac and local records capturing In-Reply-To: References: Message-ID: <66560311-482a-160f-780f-2895c695c708@oracle.com> I agree it should be rejected.? We found a similar example and are looking into how this should be specified, as "local static" constructs are a new thing. On 12/24/2019 4:45 AM, Tagir Valeev wrote: > Hello! > > I'm playing with javac 14-ea+28-1366 and local records. Looks like it > doesn't prevent capturing of outer context. E.g.: > > class X { > public static void main(String[] args) { > int x = 2; > record Y() { > void test() { > System.out.println(x); > } > } > new Y().test(); > } > } > > javac happily compiles this program and it prints 2. I think it should > be rejected as it captures a local variable from the outer context. > > Also, it looks like capturing compile-time constant should be ok. E.g. > if we add `final ` before `int x = 2`, then it should be accepted. > Unfortunately spec draft is silent about whether it's ok to capture > compile-time constant local variable in the record. > > Finally, this code breaks the compiler: > > class X { > public static void main(String[] args) { > int x = 2; > record Y() { > static final int y = x; > } > new Y(); > } > } > > Javac output is the following: > > Note: Test.java uses preview language features. > Note: Recompile with -Xlint:preview for details. > An exception has occurred in the compiler (14-ea). 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.NullPointerException > at jdk.compiler/com.sun.tools.javac.jvm.Code.emitop0(Code.java:568) > at jdk.compiler/com.sun.tools.javac.jvm.Items$SelfItem.load(Items.java:369) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitIdent(Gen.java:2257) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2411) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:864) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitAssign(Gen.java:1998) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1981) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:864) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitExec(Gen.java:1723) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1524) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genDef(Gen.java:597) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStat(Gen.java:632) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStat(Gen.java:618) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStats(Gen.java:669) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitBlock(Gen.java:1084) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1039) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genDef(Gen.java:597) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStat(Gen.java:632) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genMethod(Gen.java:954) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitMethodDef(Gen.java:917) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:885) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genDef(Gen.java:597) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genClass(Gen.java:2395) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:756) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1646) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1614) > 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:316) > 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) > > With best regards, > Tagir Valeev From amaembo at gmail.com Wed Dec 25 08:28:36 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Wed, 25 Dec 2019 15:28:36 +0700 Subject: javac rejects canonical constructor when formal parameter name doesn't match the record component name In-Reply-To: References: Message-ID: Well, one place where people might dislike it is the established code style. Some projects may always use prefixed field names as constructor parameters to avoid 'this.' qualifier in assignments. Being unable to follow the same style in the records might be irritating. On the other hand, this simplifies things for IDE developers. I'm thinking about "make canonical constructor compact" quick-fix (available if canonical constructor ends with explicit assignment of some record components and has no returns, no custom parameter annotations, etc.) I thought it should be quite a difficult problem in general as we would need to rename parameters, solve possible name conflicts, possibly qualify fields with 'this.', etc. Having the restriction that names must be equal, the quick-fix implementation will be much simpler. With best regards, Tagir Valeev. On Wed, Dec 25, 2019 at 12:53 AM Brian Goetz wrote: > > On this one, I agree with the compiler and think the spec should be adjusted. > > The reasoning is that I am looking down he road at named parameter invocation, and if the record component names mismatch the canonical ctor param names, that will cause trouble for no benefit. > > Sent from my iPad > > > On Dec 24, 2019, at 5:50 AM, Tagir Valeev wrote: > > > > Hello! > > > > javac 14-ea+28-1366 rejects the following code: > > > > record R(int x) { > > public R(int _x) { this.x = _x; } > > } > > > > Test.java:2: error: invalid canonical constructor in record R > > public R(int _x) { this.x = _x; } > > ^ > > (invalid parameter names in canonical constructor) > > Note: Test.java uses preview language features. > > Note: Recompile with -Xlint:preview for details. > > > > However, the spec for the records [1] doesn't prohibit such a > > renaming. It says only that "The types of the formal parameters in the > > formal parameter list of the canonical constructor must be identical > > to the declared type of the corresponding record component." The > > formal parameter names are only mentioned in "derived constructor > > signature" definition. However, this definition doesn't prohibit > > anything, to my understanding. So either compiler should be updated to > > allow such a code or spec should be updated to explicitly prohibit it. > > > > With best regards, > > Tagir Valeev. > > > > [1] http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html#jls-8.10.4 > From dmitry.bessonov at oracle.com Wed Dec 25 14:37:23 2019 From: dmitry.bessonov at oracle.com (Dmitry Bessonov) Date: Wed, 25 Dec 2019 14:37:23 +0000 Subject: [records] customized accessor returning subtype In-Reply-To: <1FA7F2D7-6990-44DF-92A0-8686948732E1@oracle.com> References: <1FA7F2D7-6990-44DF-92A0-8686948732E1@oracle.com> Message-ID: Thank you very much for all the feedback. Looks like compiler error message could be improved with a mention of the "identical to the declared type of the corresponding record component? requirement. Filed https://bugs.openjdk.java.net/browse/JDK-8236544 dmitry > On 9 Dec 2019, at 19:09, Dmitry Bessonov wrote: > > Is there any reason for not allowing a customized accessor to return rc subtype: > > record R(Number number) { > public Integer number() { > return 42; > } > } > > Error: java: invalid accessor method in record R > (return type of accessor method number() is not compatible with type of record component number) > > > dmitry > From dmitry.bessonov at oracle.com Wed Dec 25 15:32:12 2019 From: dmitry.bessonov at oracle.com (Dmitry Bessonov) Date: Wed, 25 Dec 2019 15:32:12 +0000 Subject: deprecating a record component and (not) discovering that via reflection Message-ID: It seems that currently record components could be @Deprecated but the fact of deprecation is not discoverable with RecordComponent::getAnnotation(s). j.l.Deprecated doesn?t have ElementType.RECORD_COMPONENT [1] (an ?essentialAPI' of the Records preview feature) among its @Targets [2]. The following code import java.lang.annotation.*; public class DeprecatingRC { @Target(ElementType.RECORD_COMPONENT) @Retention(RetentionPolicy.RUNTIME) @interface _Deprecated {} public static void main(String[] args) { record Rec(@Deprecated @_Deprecated int i) {} java.lang.reflect.RecordComponent rc = Rec.class.getRecordComponents()[0]; System.err.println(java.util.Arrays.toString(rc.getAnnotations())); } } when compiled and run with JDK14b28 prints out [@DeprecatingRC$_Deprecated()] dmitry [1] http://hg.openjdk.java.net/jdk/jdk/file/bb0a7975b31d/src/java.base/share/classes/java/lang/annotation/ElementType.java#l137 [2] http://hg.openjdk.java.net/jdk/jdk/file/bb0a7975b31d/src/java.base/share/classes/java/lang/Deprecated.java#l82 From amaembo at gmail.com Thu Dec 26 10:10:56 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Thu, 26 Dec 2019 17:10:56 +0700 Subject: [patterns] Redefinition of pattern variable is allowed by javac in some cases Message-ID: Hello! Playing with javac 14-ea+28-1366. This code can be successfully compiled: class Test { static void test(Object o1, Object o2) { boolean b = o1 instanceof String s && (!(o2 instanceof String s) || consume(s)); } static boolean consume(String s) { System.out.println(s); return true; } public static void main(String[] args) { test("x", "y"); // prints y } } Spec draft says for `a || b`: It is a compile-time error if any pattern variable introduced by a when false is already in scope at b. If I understand correctly, assuming a = !(o2 instanceof String s) and b = consume(s), we already have `s` (from `o1 instanceof String s`) in the scope at b, and a introduces new `s` when false, so this code should be rejected. Please correct me if I am wrong. With best regards, Tagir Valeev. From amaembo at gmail.com Thu Dec 26 10:34:47 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Thu, 26 Dec 2019 17:34:47 +0700 Subject: [patterns] Redefinition of pattern variable is allowed by javac in some cases In-Reply-To: References: Message-ID: Another shadowing case: class Test { static void test(Object o1, Object o2, Object o3) { boolean b1 = o1 instanceof String s ? o2 instanceof String s : o3 instanceof String s; } } Also happily compiled by javac. If I understand correctly the spec draft, 6.3.1.4 [1], this should be rejected: The following rules apply to a conditional expression a ? b : c: ... A pattern variable is introduced both by a when true, and by c when true. ... A pattern variable is introduced both by b when true, and by c when true. Am I missing something? With best regards, Tagir Valeev. [1] http://cr.openjdk.java.net/~gbierman/jep305/jep305-20191021/specs/patterns-instanceof-jls.html#jls-6.3.1.4 On Thu, Dec 26, 2019 at 5:10 PM Tagir Valeev wrote: > > Hello! > > Playing with javac 14-ea+28-1366. This code can be successfully compiled: > > class Test { > static void test(Object o1, Object o2) { > boolean b = o1 instanceof String s && (!(o2 instanceof String s) > || consume(s)); > } > > static boolean consume(String s) { > System.out.println(s); > return true; > } > > public static void main(String[] args) { > test("x", "y"); // prints y > } > } > > Spec draft says for `a || b`: > It is a compile-time error if any pattern variable introduced by a > when false is already in scope at b. > > If I understand correctly, assuming a = !(o2 instanceof String s) and > b = consume(s), we already have `s` (from `o1 instanceof String s`) in > the scope at b, and a introduces new `s` when false, so this code > should be rejected. Please correct me if I am wrong. > > With best regards, > Tagir Valeev. From forax at univ-mlv.fr Thu Dec 26 12:24:36 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Thu, 26 Dec 2019 13:24:36 +0100 (CET) Subject: jshell has trouble to register some records in the environment Message-ID: <1810593817.43607.1577363076142.JavaMail.zimbra@u-pem.fr> Hi all, converting some materials for undergraduates, i have uncover a weird bug. This snippet of code doesn't work in jshell (jshell --enable-preview). I get jshell> record Rectangle(int width, int height) { ...> double diagonal() { ...> return Math.hypot(with, height); ...> } ...> } ...> var rectangle2 = new Rectangle(4, 3); ...> System.out.println(rectangle2.diagonal()); | Error: | cannot find symbol | symbol: class Rectangle | var rectangle2 = new Rectangle(4, 3); | ^-------^ So the class/record Rectangle doesn't seem to be registered ? Changing it to record Rectangle(int width, int height) { double diagonal() { return 5; } } var rectangle2 = new Rectangle(4, 3); System.out.println(rectangle2.diagonal()); do work ?? R?mi From ali.ebrahimi1781 at gmail.com Thu Dec 26 16:48:35 2019 From: ali.ebrahimi1781 at gmail.com (Ali Ebrahimi) Date: Thu, 26 Dec 2019 20:18:35 +0330 Subject: jshell has trouble to register some records in the environment In-Reply-To: <1810593817.43607.1577363076142.JavaMail.zimbra@u-pem.fr> References: <1810593817.43607.1577363076142.JavaMail.zimbra@u-pem.fr> Message-ID: hi Remi, Is there typo in ...> return Math.hypot(*with*, height); // width On Thu, Dec 26, 2019 at 3:54 PM Remi Forax wrote: > Hi all, > converting some materials for undergraduates, i have uncover a weird bug. > > This snippet of code doesn't work in jshell > (jshell --enable-preview). > > I get > > jshell> record Rectangle(int width, int height) { > ...> double diagonal() { > ...> return Math.hypot(with, height); > ...> } > ...> } > ...> var rectangle2 = new Rectangle(4, 3); > ...> System.out.println(rectangle2.diagonal()); > | Error: > | cannot find symbol > | symbol: class Rectangle > | var rectangle2 = new Rectangle(4, 3); > | ^-------^ > > So the class/record Rectangle doesn't seem to be registered ? > Changing it to > > record Rectangle(int width, int height) { > double diagonal() { > return 5; > } > } > var rectangle2 = new Rectangle(4, 3); > System.out.println(rectangle2.diagonal()); > > do work ?? > > R?mi > -- Best Regards, Ali Ebrahimi From forax at univ-mlv.fr Thu Dec 26 17:45:48 2019 From: forax at univ-mlv.fr (forax at univ-mlv.fr) Date: Thu, 26 Dec 2019 18:45:48 +0100 (CET) Subject: jshell has trouble to register some records in the environment In-Reply-To: References: <1810593817.43607.1577363076142.JavaMail.zimbra@u-pem.fr> Message-ID: <1251047890.64526.1577382348691.JavaMail.zimbra@u-pem.fr> > De: "Ali Ebrahimi" > ?: "Remi Forax" > Cc: "amber-dev" > Envoy?: Jeudi 26 D?cembre 2019 17:48:35 > Objet: Re: jshell has trouble to register some records in the environment > hi Remi, > Is there typo in > ...> return Math.hypot( with , height); // width Thanks Ali ! Anyway, jshell should report this as an error. Is there an empty catch block somewhere ?? R?mi > On Thu, Dec 26, 2019 at 3:54 PM Remi Forax < [ mailto:forax at univ-mlv.fr | > forax at univ-mlv.fr ] > wrote: >> Hi all, >> converting some materials for undergraduates, i have uncover a weird bug. >> This snippet of code doesn't work in jshell >> (jshell --enable-preview). >> I get >> jshell> record Rectangle(int width, int height) { >> ...> double diagonal() { >> ...> return Math.hypot(with, height); >> ...> } >> ...> } >> ...> var rectangle2 = new Rectangle(4, 3); >> ...> System.out.println(rectangle2.diagonal()); >> | Error: >> | cannot find symbol >> | symbol: class Rectangle >> | var rectangle2 = new Rectangle(4, 3); >> | ^-------^ >> So the class/record Rectangle doesn't seem to be registered ? >> Changing it to >> record Rectangle(int width, int height) { >> double diagonal() { >> return 5; >> } >> } >> var rectangle2 = new Rectangle(4, 3); >> System.out.println(rectangle2.diagonal()); >> do work ?? >> R?mi > -- > Best Regards, > Ali Ebrahimi From forax at univ-mlv.fr Thu Dec 26 18:18:29 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Thu, 26 Dec 2019 19:18:29 +0100 (CET) Subject: jshell doesn't overwrite local variable type Message-ID: <230745798.65802.1577384309814.JavaMail.zimbra@u-pem.fr> Another bug, if you defines a variable and then defines it again, for whatever reason, the type is lost. $ jshell --enable-preview | Welcome to JShell -- Version 14-ea | For an introduction type: /help intro jshell> /set feedback verbose | Feedback mode: verbose jshell> record Square(int side) { ...> public double surface() { ...> return side * side; ...> } ...> } ...> record Rectangle(int width, int height) { ...> public double surface() { ...> return width * height; ...> } ...> } ...> jshell> var figures = List.of(new Square(2), new Rectangle(3, 4)); figures ==> [Square[side=2], Rectangle[width=3, height=4]] | created variable figures : List jshell> interface Figure { ...> public double surface(); ...> } ...> ...> record Square(int side) implements Figure { ...> public double surface() { ...> return side * side; ...> } ...> } ...> record Rectangle(int width, int height) implements Figure { ...> public double surface() { ...> return width * height; ...> } ...> } | created interface Figure jshell> figures figures ==> [Square[side=2], Rectangle[width=3, height=4]] | value of figures : List jshell> var figures = List.of(new Square(2), new Rectangle(3, 4)); figures ==> [Square[side=2], Rectangle[width=3, height=4]] | modified variable figures : List | update overwrote variable figures : List jshell> figures figures ==> [Square[side=2], Rectangle[width=3, height=4]] | value of figures : List why figures is not typed List ??? R?mi From reinier at zwitserloot.com Sat Dec 28 17:51:53 2019 From: reinier at zwitserloot.com (Reinier Zwitserloot) Date: Sat, 28 Dec 2019 18:51:53 +0100 Subject: [patterns] reconsidering how the created variable name binds Message-ID: An alternative proposal for how the variable declarations inherent in a pattern matching 'instanceof'/switch on expression's type bind: The local variable created by such a construct (so, the 's' in: 'x instanceof String s') exists only within the lexical context within which it is created _AND_ only if it is definitely assigned. >From what I can tell by reading amber-spec-experts and amber-dev, right now the 2 considered alternatives are those two aspects by themselves; not combined. So, either [A] as per lexical scoping rules of LocalDeclaration nodes, similar to where the 'i' exists when writing 'for (int i = ... ;;) ', or [B] everywhere that s would be 'definitively assigned', as in, anywhere where the compiler can guarantee that x was in fact instanceof String, even if that means it is _OUTSIDE_ the lexical scope where you do the instanceof check. The current draft spec chooses the [B] option. The [A] option seems to have been considered but disregarded (see amber-spec-experts, Gavin Bierman - https://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-December/001837.html ) I propose that both must be required instead. Here is the clear downside to the [B]-only option (the current draft spec), courtesy of Tagir Valeev ( https://twitter.com/tagir_valeev/status/1210431331332689920 ): static /*?final?*/ boolean FLAG = true; static String v = "field"; public void test() { String obj = "Pattern match"; if (!(obj instanceof String v)) { // This branch is never taken. while (FLAG) ; // endless } System.out.println(v); this will print 'field' if the FLAG variable isn't final, but it prints 'Pattern match' if it is. And that is correct according to the draft spec ? that's what the [B] choice means. I take it we can all agree this is unfortunate. The reason Gavin gave for not going with [A]-only is that it makes this code not compile: if (x instanceof Point p) { } else { if (y instanceof Point p) {} } Because the second instanceof is re-using the name of an existing and in-scope local variable declaration, and currently java doesn't let you shadow a local with a local, and Gavin feels (probably correctly) that allowing shadowing in such cases is itself confusing and a high-impact change. It really messes with switch too, forcing you to think up a different name for every case. But, combine the two requirements and you suffer neither downside. some examples: -- example 1 -- if (!(obj instanceof String newDecl)) { } else { // newDecl is in lexical scope here, and definitely assigned, thus, it exists. } -- example 2 -- if (!(obj instanceof String newDecl)) { while (true) ; } else { // newDecl in scope } // ... but newDecl does not exist here; this is a break from draft spec. It avoids the problem in Tagir's tweet. -- example 3 -- if (!(obj instanceof String newDecl)) { } newDecl exists nowhere. In fact, I propose that this code is a compiler error, for the same reason that for (;;) int x = 5; is a compiler error: local var decls that have zero locations where they exist aren't legal (this is currently implemented in the JLS by explicitly mentioning that the 'statement' part of an if/do/while/for cannot be a LocalDeclaration, separately for each such 'braces are optional' control construct. Thus, adding this 'can't make obviously pointless new variables this way' rule may take some effort in updating the JLS). -- example 4 -- String formatted = switch (obj) { case Integer i -> /* i is definitely assigned here, thus bound */ String.format(...); case String s -> /* it's not definitely assigned here, thus i doesn't exist here */ ""; case Index i -> /* thus making this legal */ String.format(...); }; -- example 5 -- if (x instanceof Point p) { // p exists here } else { // but not here ? lexically in scope but not DA. if (y instanceof Point p) { // thus, this is legal. } } Potential issues with this proposal: * Do I fully grasp the places where this construct is going to be used by the java community? So far I can imagine this being used in `switch` as per example 4, the straightforward: (if x instanceof Type t) { /* use t here */ }, and maybe in && chaining: return other instanceof Point p && p.x == this.x && p.y == this.y; and that's as far as I get. All such cases continue to work as intended with this proposal. * This presumably isn't where the planning around pattern matching is going to end; later java versions will bring more features here, such as destructing valhalla inline types, or even any type for which the compiler can ascertain how to destruct them. Does this proposal get in the way of such future features? * Is it bending over backwards to prevent an 'academic' java puzzler? Like many java puzzlers, the construct used in Tagir's FLAG puzzler is probably unlikely to commonly show up except in academic 'look what hoops I'm making the compiler jump through!' examples. Nevertheless, the puzzler in the tweet does suggest a plausible source of real confusion to me, and I'd like to investigate if it can be avoided entirely. --Reinier Zwitserloot From john.r.rose at oracle.com Sat Dec 28 20:47:12 2019 From: john.r.rose at oracle.com (John Rose) Date: Sat, 28 Dec 2019 12:47:12 -0800 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: References: Message-ID: > On Dec 28, 2019, at 9:52 AM, Reinier Zwitserloot wrote: > > static /*?final?*/ boolean FLAG = true; > static String v = "field"; > public void test() { > String obj = "Pattern match"; > if (!(obj instanceof String v)) { > // This branch is never taken. > while (FLAG) ; // endless > } > > System.out.println(v); Yes, DU and static final are both examples of action at a distance and they can be combined. Add inheritance of the final for an extra-good time. Such puzzlers do not usually drive the design of the language, as you surmise later on; at some point (including here IMO) we can agree to say, ?yeah, but that?s an academic point?. IIUC your proposal (which isn?t complete since it fails to define the [B] condition; it only suggests it AFAICS) makes pattern matching work less well with fall-through. Would the following example fail under your proposal? I think that would be a much larger downside than the academic one you cite. static String v = "field"; public void test(CharSequence obj) { if (!(obj instanceof String v)) { // Report error. Rarely taken. throw stuff(); } System.out.println(v); } Here the if statement has no else clause. The fall-through path is where you go when the pattern doesn?t match. I changed String obj to be CharSequence to make it more realistic. (Does that lose the point of your example?) This is also a prototype for a future syntax, a statement which binds one or more pattern variables and has an implicit exception path (if the pattern isn?t total). Still on the drawing board I think. static String v = "field"; public void test(CharSequence obj) { __LetPattern String v __Match obj System.out.println(v); } This looks more like a declaration but it piggybacks on the same innovation, that a pattern can export bindings to its control flow successors. If you repair the (indefinite) rule you propose to allow this case, and keep going, eventually your rule becomes moot, since it will (surprise) allow all the cases that the current proposal does. I?m pretty sure the core designers have anticipated all the relevant examples already. (Just in case someone was starting to object ?but coders should never code in that style anyway?: No. That is not how Java is designed, also. Whether you consent to eat some particular form of syntactic broccoli is up to you.) HTH ? John From john.r.rose at oracle.com Sat Dec 28 22:10:17 2019 From: john.r.rose at oracle.com (John Rose) Date: Sat, 28 Dec 2019 14:10:17 -0800 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: References: Message-ID: On Dec 28, 2019, at 12:47 PM, John Rose wrote: > > static String v = "field"; > public void test(CharSequence obj) { > if (!(obj instanceof String v)) { > // Report error. Rarely taken. > throw stuff(); > } > > System.out.println(v); > } > > Here the if statement has no else clause. The fall-through path is where you go when the pattern doesn?t match. I changed String obj to be CharSequence to make it more realistic. (Does that lose the point of your example?) P.S. Also, there are other ways to deal with field shadowing, without actually contracting the language to avoid puzzlers. (Making a rule narrower to avoid bad use cases contracts the language since it also rules out reasonable use cases, right?) Instead of making examples like yours and mine illegal, it?s reasonable to expect that IDEs or maybe the language compiler can add warnings, if there?s truly a problem. And that move also pushes the problem out of the JLS proper and into tooling, where the problem is easier to deal with, and induces fewer requirements on an already over-constrained design problem. In general, this is why we don?t make the language force people to eat their broccoli. From reinier at zwitserloot.com Sat Dec 28 22:16:10 2019 From: reinier at zwitserloot.com (Reinier Zwitserloot) Date: Sat, 28 Dec 2019 23:16:10 +0100 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: References: Message-ID: On Sat, 28 Dec 2019 at 21:49, John Rose wrote: > ... Would the following example fail under your proposal? static String v = "field"; > public void test(CharSequence obj) { > if (!(obj instanceof String v)) { > // Report error. Rarely taken. > throw stuff(); > } > > System.out.println(v); > } > > Yes, it would fail, for the same reason this fails: for (int i = 0; i < 10; i++) ; System.out.println(i); // i not in scope here. It's a fine example of the tradeoff between the wonky scoping, where the mere fact that I include a variable name someplace in some expression, even fairly deeply nested, still leads to the creation of a new local variable (which may be shadowing a field) beyond where I expected it to exist ? that's weird, but on the flip side, that is a nice pattern I hadn't thought of, and that'd be lost. I can see how saving this example, even if it is at the cost of introducing some puzzling interactions between DA rules and shadowing, is worth it. > This is also a prototype for a future syntax, a statement which binds one > or more pattern variables and has an implicit exception path (if the > pattern isn?t total). Still on the drawing board I think. > > static String v = "field"; > public void test(CharSequence obj) { > __LetPattern String v __Match obj > System.out.println(v); > } > This proposal would more or less obviate the need for the earlier example, and can be defined to act like a LocalDeclaration. Using v later on would be legal for the same reason: int i = 5; System.out.println(i); is legal. However, given that the 'if no match' path is implicit, the earlier example is still needed. For example, if returning a default value is desired instead of throwing an exception, if the expression is not instanceof the stated type. > ... I?m pretty sure the core designers have anticipated all the relevant > examples already. > Tagir's example with the DA rules and the compile time constant was anticipated? I'm hesitant to just wave away the ability of the java community to run into this situation (the interaction between compile time constants, DA rules, and shadowing) as 'academic; is going to be very rare') ? but your earlier example (if not instanceof, run some exceptional code, and the main tree continues with the created variable in scope) is also quite nice to have. I'll try to think of a solution that caters to all of these scenarios, but I doubt it's possible to do it without sacrificing one of them; Tagir's puzzler is probably the best one to sacrifice then (leaving it to linting tools and IDEs to hopefully catch), as you suggest. From john.r.rose at oracle.com Sat Dec 28 22:42:48 2019 From: john.r.rose at oracle.com (John Rose) Date: Sat, 28 Dec 2019 14:42:48 -0800 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: References: Message-ID: On Dec 28, 2019, at 2:16 PM, Reinier Zwitserloot wrote: > >> >> ... I?m pretty sure the core designers have anticipated all the relevant >> examples already. >> > > Tagir's example with the DA rules and the compile time constant was > anticipated? I don?t think so, but I happen to know that the ?throw stuff? example I proposed *was* anticipated. My claim applies to ?all relevant? not ?all possible? examples. You can falsify my claim it by proposing a really viciously bad use case that makes someone like Brian say, ?gee thanks, I didn?t think of that, this is a good reason to reduce expressiveness?. It?s can happen, but I think in this case the ground is pretty well covered. You are right on target when you note that these adjustments are on the table because of the odd innovation with pattern matches, which allows new variable bindings to ?pop out the side? of an expression, instead of being properly introduced by a nice solid declaration. We are accepting this new kind of ?surprise binding? because it seems to be intrinsic to the design of pattern matching, where the multiple outputs of a pattern expression appear syntactically in the position of inputs to an analogous construction expression. If you accept that patterns are (in part) deconstruction expressions, you end up with the requirement that their outputs come from their ?insides?, which is where the *inputs* naturally occur in the arrow-reversed construction expressions. Given all that, the problem becomes managing the surprise factor of the ?pop-out names?. The job of the language is to make such management *possible* and even *inexpensive*, but it?s usually the job of some other tool to *enforce* or *encourage* healthy practices (the ?broccoli? I was referring to earlier). Restricting the places where such pattern expressions occur, and/or (further) restricting the scope of the names that pop out, would contract the language without definitively solving the problem of puzzlers. And complex, discriminating, puzzler-averting rules typically *add* puzzlers, like ?why doesn?t my code compile?? ? John P.S. You have twice urged that the example of ?for (int v; )? be somehow transferred to ?if (x instanceof String v)?, but have supplied neither precise rules nor rationale for doing such a thing. That?s what I mean when I say that your proposal is incomplete. Allowing the moral equivalent of ?if (int v; ?)? has a pleasing symmetry in principle but I personally don?t think it shows much promise, after you pull on that thread for a while. If we did such a thing, I think we?d want to examine all of our structured control flow statements for similar extensions, and that would lead, probably, towards some sort of distinct let-statement, rather than adding let-bindings to all statements. Good old ?for (int v;)? is a one-off, I think. From forax at univ-mlv.fr Sat Dec 28 23:20:30 2019 From: forax at univ-mlv.fr (Remi Forax) Date: Sun, 29 Dec 2019 00:20:30 +0100 (CET) Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: References: Message-ID: <373661061.574655.1577575230239.JavaMail.zimbra@u-pem.fr> ----- Mail original ----- > De: "John Rose" > ?: "Reinier Zwitserloot" > Cc: "amber-dev" > Envoy?: Samedi 28 D?cembre 2019 21:47:12 > Objet: Re: [patterns] reconsidering how the created variable name binds >> On Dec 28, 2019, at 9:52 AM, Reinier Zwitserloot >> wrote: >> >> static /*?final?*/ boolean FLAG = true; >> static String v = "field"; >> public void test() { >> String obj = "Pattern match"; >> if (!(obj instanceof String v)) { >> // This branch is never taken. >> while (FLAG) ; // endless >> } >> >> System.out.println(v); > > Yes, DU and static final are both examples of action at a distance and they can > be combined. Add inheritance of the final for an extra-good time. Such puzzlers > do not usually drive the design of the language, as you surmise later on; at > some point (including here IMO) we can agree to say, ?yeah, but that?s an > academic point?. > > IIUC your proposal (which isn?t complete since it fails to define the [B] > condition; it only suggests it AFAICS) makes pattern matching work less well > with fall-through. Would the following example fail under your proposal? I > think that would be a much larger downside than the academic one you cite. > > static String v = "field"; > public void test(CharSequence obj) { > if (!(obj instanceof String v)) { > // Report error. Rarely taken. > throw stuff(); > } > > System.out.println(v); > } > > Here the if statement has no else clause. The fall-through path is where you go > when the pattern doesn?t match. I changed String obj to be CharSequence to make > it more realistic. (Does that lose the point of your example?) This use case is important, there is a lot code where equals() is written like this: @Override public boolean equals(Object obj) { if (!(obj instanceof Point)) { return false; } Point p = (Point) obj; return x == p.x && y == p.y; } and obviously you want to transform it to: @Override public boolean equals(Object obj) { if (!(obj instanceof Point p)) { return false; } return x == p.x && y == p.y; } [...] > > ? John R?mi From amaembo at gmail.com Sun Dec 29 02:27:08 2019 From: amaembo at gmail.com (Tagir Valeev) Date: Sun, 29 Dec 2019 09:27:08 +0700 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: References: Message-ID: Oh, c'mon, that's just a joke, it doesn't require any action. Well, from the IDE point of view, I think we will warn by default on every occurrence of pattern variable that shadows any field in the scope. Then we will see whether this is too noisy and probably adjust this somehow. With best regards, Tagir Valeev. On Sun, Dec 29, 2019 at 12:52 AM Reinier Zwitserloot wrote: > > An alternative proposal for how the variable declarations inherent in a > pattern matching 'instanceof'/switch on expression's type bind: > > The local variable created by such a construct (so, the 's' in: 'x > instanceof String s') exists only within the lexical context within which > it is created _AND_ only if it is definitely assigned. > > From what I can tell by reading amber-spec-experts and amber-dev, right now > the 2 considered alternatives are those two aspects by themselves; not > combined. > > So, either [A] as per lexical scoping rules of LocalDeclaration nodes, > similar to where the 'i' exists when writing 'for (int i = ... ;;) ', or > [B] everywhere that s would be 'definitively assigned', as in, anywhere > where the compiler can guarantee that x was in fact instanceof String, even > if that means it is _OUTSIDE_ the lexical scope where you do the instanceof > check. > > The current draft spec chooses the [B] option. The [A] option seems to have > been considered but disregarded (see amber-spec-experts, Gavin Bierman - > https://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-December/001837.html > ) > > I propose that both must be required instead. > > Here is the clear downside to the [B]-only option (the current draft spec), > courtesy of Tagir Valeev ( > https://twitter.com/tagir_valeev/status/1210431331332689920 ): > > static /*?final?*/ boolean FLAG = true; > static String v = "field"; > public void test() { > String obj = "Pattern match"; > if (!(obj instanceof String v)) { > // This branch is never taken. > while (FLAG) ; // endless > } > > System.out.println(v); > > this will print 'field' if the FLAG variable isn't final, but it prints > 'Pattern match' if it is. And that is correct according to the draft spec ? > that's what the [B] choice means. I take it we can all agree this is > unfortunate. > > The reason Gavin gave for not going with [A]-only is that it makes this > code not compile: > > if (x instanceof Point p) { > } else { > if (y instanceof Point p) {} > } > > Because the second instanceof is re-using the name of an existing and > in-scope local variable declaration, and currently java doesn't let you > shadow a local with a local, and Gavin feels (probably correctly) that > allowing shadowing in such cases is itself confusing and a high-impact > change. It really messes with switch too, forcing you to think up a > different name for every case. > > But, combine the two requirements and you suffer neither downside. > > some examples: > > -- example 1 -- > > if (!(obj instanceof String newDecl)) { > } else { > // newDecl is in lexical scope here, and definitely assigned, thus, > it exists. > } > > -- example 2 -- > > if (!(obj instanceof String newDecl)) { > while (true) ; > } else { > // newDecl in scope > } > > // ... but newDecl does not exist here; this is a break from draft spec. > It avoids the problem in Tagir's tweet. > > -- example 3 -- > > if (!(obj instanceof String newDecl)) { > } > > newDecl exists nowhere. In fact, I propose that this code is a compiler > error, for the same reason that for (;;) int x = 5; is a compiler error: > local var decls that have zero locations where they exist aren't legal > (this is currently implemented in the JLS by explicitly mentioning that the > 'statement' part of an if/do/while/for cannot be a LocalDeclaration, > separately for each such 'braces are optional' control construct. Thus, > adding this 'can't make obviously pointless new variables this way' rule > may take some effort in updating the JLS). > > -- example 4 -- > > String formatted = switch (obj) { > case Integer i -> /* i is definitely assigned here, thus bound */ > String.format(...); > case String s -> /* it's not definitely assigned here, thus i > doesn't exist here */ ""; > case Index i -> /* thus making this legal */ String.format(...); > }; > > -- example 5 -- > > if (x instanceof Point p) { > // p exists here > } else { > // but not here ? lexically in scope but not DA. > if (y instanceof Point p) { > // thus, this is legal. > } > } > > Potential issues with this proposal: > > * Do I fully grasp the places where this construct is going to be used by > the java community? So far I can imagine this being used in `switch` as per > example 4, the straightforward: (if x instanceof Type t) { /* use t here */ > }, and maybe in && chaining: return other instanceof Point p && p.x == > this.x && p.y == this.y; and that's as far as I get. All such cases > continue to work as intended with this proposal. > > * This presumably isn't where the planning around pattern matching is going > to end; later java versions will bring more features here, such as > destructing valhalla inline types, or even any type for which the compiler > can ascertain how to destruct them. Does this proposal get in the way of > such future features? > > * Is it bending over backwards to prevent an 'academic' java puzzler? Like > many java puzzlers, the construct used in Tagir's FLAG puzzler is probably > unlikely to commonly show up except in academic 'look what hoops I'm making > the compiler jump through!' examples. Nevertheless, the puzzler in the > tweet does suggest a plausible source of real confusion to me, and I'd like > to investigate if it can be avoided entirely. > > --Reinier Zwitserloot From reinier at zwitserloot.com Sun Dec 29 03:13:21 2019 From: reinier at zwitserloot.com (Reinier Zwitserloot) Date: Sun, 29 Dec 2019 04:13:21 +0100 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: <373661061.574655.1577575230239.JavaMail.zimbra@u-pem.fr> References: <373661061.574655.1577575230239.JavaMail.zimbra@u-pem.fr> Message-ID: On Sun, 29 Dec 2019 at 00:21, Remi Forax wrote: > > and obviously you want to transform it to: > > @Override > public boolean equals(Object obj) { > if (!(obj instanceof Point p)) { > return false; > } > return x == p.x && y == p.y; > } > > this works in any proposal as: return obj instanceof Point p && x == p.x && y == p.y; but more convoluted equals methods don't get the luxury of just mashing all the conditions into a single chain of boolean and expressions unless helper methods are involved ? but note that proper equals implementations usually use a construct similar to `if (obj.getClass() != this.getClass()) .... ? and are generated by IDEs or valhalla or lombok, and thus don't make for a compelling case in my book. The general example stands, however. (If some expression is NOT of some type, do some fairly simple code (return a default value or throw something usually), then continue on without an indent for the common case, where the expression is instanceof that type, and have a varName available of the appropriate type to avoid any casts). From brian.goetz at oracle.com Sun Dec 29 19:54:19 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 29 Dec 2019 14:54:19 -0500 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: <373661061.574655.1577575230239.JavaMail.zimbra@u-pem.fr> References: <373661061.574655.1577575230239.JavaMail.zimbra@u-pem.fr> Message-ID: <52edc851-7c6d-0744-25d6-cc339e1a19d1@oracle.com> On 12/28/2019 6:20 PM, Remi Forax wrote: > @Override > public boolean equals(Object obj) { > if (!(obj instanceof Point)) { > return false; > } > Point p = (Point) obj; > return x == p.x && y == p.y; > } > > and obviously you want to transform it to: > > @Override > public boolean equals(Object obj) { > if (!(obj instanceof Point p)) { > return false; > } > return x == p.x && y == p.y; > } > I would want to transform it further into @Override public boolean equals(Object obj) { return obj instanceof Point p && x == p.x && y == p.y; } But your "point" stands, that the above transformation is one people want to do all the time, and would be grumpy if they could not. From brian.goetz at oracle.com Sun Dec 29 19:54:32 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Sun, 29 Dec 2019 14:54:32 -0500 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: References: Message-ID: (late to the party, John said most of these things already) > An alternative proposal for how the variable declarations inherent in a > pattern matching 'instanceof'/switch on expression's type bind: In general, before we get into "proposals", it is generally good to back up and talk about what _problem_ we are trying to solve.? First we need to agree its a problem, then we need to agree it needs to be solved, then we need to game out possible solutions ... there's a lot of steps between here and there. > The local variable created by such a construct (so, the 's' in: 'x > instanceof String s') exists only within the lexical context within which > it is created _AND_ only if it is definitely assigned. > > From what I can tell by reading amber-spec-experts and amber-dev, right now > the 2 considered alternatives are those two aspects by themselves; not > combined. The intention is that a binding variable is in scope when it _would be_ definitely assigned.? The similarity between the rules for DA and pattern scoping are not accidental.? You might think "why not just appeal to DA, then?".? But unfortunately we would have a circularity; you cannot compute DA until you know what is in scope, so you don't want the definition of scope to appeal to DA, lest you vanish in a poof of self-reference. The notion of "within the lexical context in which it is created" is also problematic, as this is _too broad_ a scope; in the following, you wouldn't want `x` to be in scope at `A`: ??? if (A && foo instanceof String x) { ... } but it would be under the obvious interpretation of "within the lexical context of ...".?? But again, let's start with what problem you're trying to solve. > Here is the clear downside to the [B]-only option (the current draft spec), > courtesy of Tagir Valeev ( > https://twitter.com/tagir_valeev/status/1210431331332689920 ): > > static /*?final?*/ boolean FLAG = true; > static String v = "field"; > public void test() { > String obj = "Pattern match"; > if (!(obj instanceof String v)) { > // This branch is never taken. > while (FLAG) ; // endless > } > > System.out.println(v); > > this will print 'field' if the FLAG variable isn't final, but it prints > 'Pattern match' if it is. And that is correct according to the draft spec ? > that's what the [B] choice means. I take it we can all agree this is > unfortunate. OK, I'll agree on the unfortunate part.? But I'm not there on "so we have to change something" yet.? We should evaluate the design based on how small and obscure we can make the unfortunate parts (so far, we're doing great on the obscurity count!) > The reason Gavin gave for not going with [A]-only is that it makes this > code not compile: > > if (x instanceof Point p) { > } else { > if (y instanceof Point p) {} > } > > Because the second instanceof is re-using the name of an existing and > in-scope local variable declaration, and currently java doesn't let you > shadow a local with a local, and Gavin feels (probably correctly) that > allowing shadowing in such cases is itself confusing and a high-impact > change. It really messes with switch too, forcing you to think up a > different name for every case. Yes, I am absolutely sure users will hate us if they have to make up a new binding name for every single arm of an if-else chain / pattern switch.? Not subjecting users to this was a core design requirement. Not only will users hate it, but it will also be extremely common; I don't think its much of an exaggeration to say the case Gavin gave will inconvenience users in _every nearly single extended pattern switch chain_, whereas Tagir's case will come up about once in a billion times.? So we have to weight the thing that will annoy every user, ever time, much more strongly than the amazingly-clever-but-unlikely-to-happen-in-reality puzzler that Tagir gifted us with :) > But, combine the two requirements and you suffer neither downside. > > > -- example 3 -- > > if (!(obj instanceof String newDecl)) { > } > > newDecl exists nowhere. OK, here's where you collide with the current model.? In the current model, if the body of the `if` doesn't complete normally, `newDecl` is in scope after the `if`.? This is because we want to allow refactoring: ??? if (e) { ??????? throw ... ??? } ??? else { ??????? S ??? } to ??? if (e) { ??????? throw ... ??? } ??? S This case was also very important to us; these two forms should be interchangeable. > * Is it bending over backwards to prevent an 'academic' java puzzler? Pretty sure this is a yes :) All that said, your concern is also related to another common one, which is: is the complex flow-based scoping necessary, or couldn't we just hoist the bindings into some containing "rectangular" scope, and let DU do its job? We spent a lot of time on this question.? It came down to the variable-reuse thing; the current scoping of switch (unlike in C#) doesn't allow us to restrict the scope of a variable to an "arm" of a case block -- because the notion of "case" block doesn't really exist in the language.? The body of a switch statement is just one big scope. From reinier at zwitserloot.com Tue Dec 31 11:20:02 2019 From: reinier at zwitserloot.com (Reinier Zwitserloot) Date: Tue, 31 Dec 2019 12:20:02 +0100 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: References: Message-ID: On Sun, 29 Dec 2019 at 20:56, Brian Goetz wrote: > > In general, before we get into "proposals", it is generally good to back > up and talk about what _problem_ we are trying to solve. The problem is that the case I'm trying to avoid is extremely similar to a case that consensus seems to indicate should be catered to: if (!(x instanceof Point p)) return; // p should be available here whereas Tagir's case is the exact same thing, except instead of 'return' it's a bunch of code that is clearly an endless loop, but whether it is an endless loop specifically according to DA rules is unclear. Unless we're willing to make an exception and state that the DA endless loop rule does not apply here, OR try to solve it in a sideways fashion by disallowing shadowing, I don't think it can be fixed (and both of these solutions don't seem like a good idea). Nevermind, in other words. The notion of "within the lexical context in which it is created" is > also problematic, as this is _too broad_ a scope; in the following, you > wouldn't want `x` to be in scope at `A`: > > if (A && foo instanceof String x) { ... } > > Given that the current draft spec is catering to important use cases this is probably a moot point, but... Why not? This: int a = a; means that the second 'a' refers to the first 'a' (and does not compile because the usage of the second a is in a context where DA says it is not definitely assigned. In fact, 'int a = a = 5;' is legal and compiles). Seems like the same chicken-and-egg situation, solved in the same way: the variable is bound, but because it is not definitely assigned, cannot be used. OK, I'll agree on the unfortunate part. But I'm not there on "so we > have to change something" yet. I agree; I don't think this reaches the level of 'cant ship like this'. << refactoring robustness is a core part of the design >> > Should I be able to refactor this: if (!(z instanceof Integer i)) throw new IllegalStateException(); //use i here to this: switch (z) { case Integer i: break; default: throw new IllegalStateException(); } // use i here That obviously won't work, as switch introduces mandatory scope. Normally in refactor scripts, the refactor script will occasionally 'escape' the local variable declaration in order to make scoping rules work, i.e. some construct of the form of `int i = 10;` is broken apart by the refactor into `int i;`, showing up above some introduced scope, and `i = 10;` showing up inside it. I don't think that's possible with the pattern match construct. I guess that means it's just 'robust under refactorings that do not introduce new scopes', but presumably most refactorings fit that particular description, and catering to the few refactorings that do isn't worthwhile. From brian.goetz at oracle.com Tue Dec 31 15:29:02 2019 From: brian.goetz at oracle.com (Brian Goetz) Date: Tue, 31 Dec 2019 10:29:02 -0500 Subject: [patterns] reconsidering how the created variable name binds In-Reply-To: References: Message-ID: <5751c4b0-27be-46dc-d39a-9210132b798f@oracle.com> > << refactoring robustness is a core part of the design >> Of course, _which_ refactorings are important is a subjective matter, and its easy to forget one.? And, sometimes we are hampered by existing language choices.? For example, its possible to refactor an if-elsif chain of instanceof tests against the same target to a pattern switch, but not necessarily vice-versa -- because of fallthrough.? (It is possible, but it involves hoisting out a bunch of ugly booleans that pollute the control flow.)? Similarly, the fact that instanceof handles null more gracefully than switch also poses an impediment to some refactorings. > Should I be able to refactor this: > if (!(z instanceof Integer i)) throw new IllegalStateException(); > //use i here > > to this: > > switch (z) { > case Integer i: break; > default: throw new IllegalStateException(); > } > > // use i here > > That obviously won't work, as switch introduces mandatory scope. No.? The key is: the `i` in the second example is enclosed by the mandatory switch scope, as you surmise.? Going in the other direction, though, you could get the same effect as the switch by introducing an explicit scope, refactoring to: { if (!(z instanceof Integer i)) throw new IllegalStateException(); } // can't use i here > Normally in refactor scripts, the refactor script will occasionally > 'escape' the local variable declaration in order to make scoping rules > work, i.e. some construct of the form of `int i = 10;` is broken apart by > the refactor into `int i;`, showing up above some introduced scope, and `i > = 10;` showing up inside it. I don't think that's possible with the pattern > match construct. > > I guess that means it's just 'robust under refactorings that do not > introduce new scopes', but presumably most refactorings fit that particular > description, and catering to the few refactorings that do isn't worthwhile. Yep, there are limits imposed by quirks of the existing constructs (null, fallthrough, scoping.)? We try to do as well as we can. From vicente.romero at oracle.com Tue Dec 31 16:06:32 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Tue, 31 Dec 2019 11:06:32 -0500 Subject: sealed types development moved to new branch sealed-types In-Reply-To: <1055478110.1079414.1576964337919.JavaMail.zimbra@u-pem.fr> References: <1055478110.1079414.1576964337919.JavaMail.zimbra@u-pem.fr> Message-ID: <81cddcf2-0ff0-30e4-2afa-42858bc6ec9a@oracle.com> thanks for checking, Vicente On 12/21/19 4:38 PM, Remi Forax wrote: > basic tests seem to work :) > > R?mi > > ----- Mail original ----- >> De: "Vicente Romero" >> ?: "amber-dev" >> Envoy?: Samedi 21 D?cembre 2019 02:03:54 >> Objet: sealed types development moved to new branch sealed-types >> Hi all, >> >> I have closed branch records-and-sealed after cherry-picking the sealed >> code from there. Please continue any new development in the >> `sealed-types` branch. I have tried to get all the working bits, but if >> anyone notice something missing please chime in. The old >> records-and-sealed branch have some patterns code that could be useful >> in the future but that doesn't make sense for a sealed only repo so it >> was left behind. >> >> Thanks, >> Vicente From vicente.romero at oracle.com Tue Dec 31 17:01:44 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Tue, 31 Dec 2019 12:01:44 -0500 Subject: Records and type annotations In-Reply-To: References: Message-ID: <80c0faa9-5827-9336-6ba7-c3bd6e4584ff@oracle.com> Hi Michael, Thanks for the detailed report, I have created [1] to track it, Vicente [1] https://bugs.openjdk.java.net/browse/JDK-8236597 On 12/22/19 12:32 PM, Michael Hixson wrote: > Hello, > > I'm trying records with type annotations and I notice a couple of > unexpected behaviors in terms of how the annotations are applied. I'm > using build 14-ea+28-1366. > > 1. If I explicitly declare the canonical constructor but omit the > parameter list, the parameters of that constructor don't inherit the > type annotations of the components. I expected the type annotations > to be inherited in the same way they would have been had I not > declared the canonical constructor. > > 2. The type annotations of the components appear in the annotations of > the accessor methods rather than in the annotated return types of > those methods. I expected the type annotations to be in the annotated > return types because that's what happens when I write out a regular > non-record class with type annotations. > > I've inlined the source code I'm using and its output at the end of > this email. The output for Record2's constructor shows issue #1 (its > annotatedType is different than Record1's), and the output for the > three classes' accessor methods shows issue #2 (the regular class's > method is different from the two records'). > > Issue #1 seems like the more problematic of the two. It feels like my > types are being mangled. "Hey, who said you could change the type > from `@Nullable String` to `String`, which is a different and > incompatible type? Not me." Issue #2 is just something that caught > my eye while investigating #1. > > -Michael > > ------------------------------- > > package example; > > import java.lang.annotation.ElementType; > import java.lang.annotation.Retention; > import java.lang.annotation.RetentionPolicy; > import java.lang.annotation.Target; > import java.util.Arrays; > > public class RecordsTest { > > @Retention(RetentionPolicy.RUNTIME) > @Target({ ElementType.TYPE_USE, ElementType.TYPE_PARAMETER }) > @interface Nullable {} > > static class RegularClass { > private final @Nullable String t; > public RegularClass(@Nullable String t) { this.t = t; } > public @Nullable String t() { return t; } > } > > record Record1(@Nullable String t) {} > > record Record2(@Nullable String t) { > public Record2 {} > } > > public static void main(String[] args) { > describeClass(RegularClass.class); > describeClass(Record1.class); > describeClass(Record2.class); > } > > static void describeClass(Class clazz) { > System.out.println(clazz); > > for (var field : clazz.getDeclaredFields()) { > System.out.println( > " field " + field); > System.out.println( > " annotatedType " > + field.getAnnotatedType()); > System.out.println( > " annotations " > + Arrays.toString(field.getAnnotations())); > } > > for (var constructor : clazz.getConstructors()) { > System.out.println( > " constructor " + constructor); > for (var parameter : constructor.getParameters()) { > System.out.println( > " parameter " + parameter); > System.out.println( > " annotatedType " > + parameter.getAnnotatedType()); > System.out.println( > " annotations " > + Arrays.toString(parameter.getAnnotations())); > } > } > > for (var method : clazz.getDeclaredMethods()) { > var name = method.getName(); > if (name.equals("equals") > || name.equals("hashCode") > || name.equals("toString")) > continue; > > System.out.println( > " method " + method); > System.out.println( > " annotatedReturnType " > + method.getAnnotatedReturnType()); > System.out.println( > " annotations " > + Arrays.toString(method.getAnnotations())); > } > > System.out.println(); > } > } > > ------------------------------- > > class example.RecordsTest$RegularClass > field private final java.lang.String example.RecordsTest$RegularClass.t > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > constructor public example.RecordsTest$RegularClass(java.lang.String) > parameter java.lang.String arg0 > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > method public java.lang.String example.RecordsTest$RegularClass.t() > annotatedReturnType @example.RecordsTest$Nullable() java.lang.String > annotations [] > > class example.RecordsTest$Record1 > field private final java.lang.String example.RecordsTest$Record1.t > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > constructor public example.RecordsTest$Record1(java.lang.String) > parameter java.lang.String t > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > method public java.lang.String example.RecordsTest$Record1.t() > annotatedReturnType java.lang.String > annotations [@example.RecordsTest$Nullable()] > > class example.RecordsTest$Record2 > field private final java.lang.String example.RecordsTest$Record2.t > annotatedType @example.RecordsTest$Nullable() java.lang.String > annotations [] > constructor public example.RecordsTest$Record2(java.lang.String) > parameter final java.lang.String t > annotatedType java.lang.String > annotations [] > method public java.lang.String example.RecordsTest$Record2.t() > annotatedReturnType java.lang.String > annotations [@example.RecordsTest$Nullable()] From vicente.romero at oracle.com Tue Dec 31 17:08:36 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Tue, 31 Dec 2019 12:08:36 -0500 Subject: Javac and local records capturing In-Reply-To: References: Message-ID: <947751db-138c-6d69-c002-9e25062becae@oracle.com> there is an issue tracking this with a tentative solution see [1], as soon as we have agreed on the spec we should be able to fix this. I tried your example with the solution for this issue an javac rejects it, Thanks, Vicente [1] https://bugs.openjdk.java.net/browse/JDK-8236005 On 12/24/19 4:45 AM, Tagir Valeev wrote: > Hello! > > I'm playing with javac 14-ea+28-1366 and local records. Looks like it > doesn't prevent capturing of outer context. E.g.: > > class X { > public static void main(String[] args) { > int x = 2; > record Y() { > void test() { > System.out.println(x); > } > } > new Y().test(); > } > } > > javac happily compiles this program and it prints 2. I think it should > be rejected as it captures a local variable from the outer context. > > Also, it looks like capturing compile-time constant should be ok. E.g. > if we add `final ` before `int x = 2`, then it should be accepted. > Unfortunately spec draft is silent about whether it's ok to capture > compile-time constant local variable in the record. > > Finally, this code breaks the compiler: > > class X { > public static void main(String[] args) { > int x = 2; > record Y() { > static final int y = x; > } > new Y(); > } > } > > Javac output is the following: > > Note: Test.java uses preview language features. > Note: Recompile with -Xlint:preview for details. > An exception has occurred in the compiler (14-ea). 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.NullPointerException > at jdk.compiler/com.sun.tools.javac.jvm.Code.emitop0(Code.java:568) > at jdk.compiler/com.sun.tools.javac.jvm.Items$SelfItem.load(Items.java:369) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitIdent(Gen.java:2257) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIdent.accept(JCTree.java:2411) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:864) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitAssign(Gen.java:1998) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCAssign.accept(JCTree.java:1981) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:864) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitExec(Gen.java:1723) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1524) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genDef(Gen.java:597) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStat(Gen.java:632) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStat(Gen.java:618) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStats(Gen.java:669) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitBlock(Gen.java:1084) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1039) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genDef(Gen.java:597) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genStat(Gen.java:632) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genMethod(Gen.java:954) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.visitMethodDef(Gen.java:917) > at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:885) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genDef(Gen.java:597) > at jdk.compiler/com.sun.tools.javac.jvm.Gen.genClass(Gen.java:2395) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:756) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1646) > at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1614) > 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:316) > 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) > > With best regards, > Tagir Valeev From vicente.romero at oracle.com Tue Dec 31 17:15:27 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Tue, 31 Dec 2019 12:15:27 -0500 Subject: javac rejects record component with 'final' modifier In-Reply-To: References: Message-ID: <8aef928a-129c-28a4-22d7-b6c0e4017c95@oracle.com> thanks for the report, I have filed [1] to track this, Vicente [1] https://bugs.openjdk.java.net/browse/JDK-8236598 On 12/24/19 5:42 AM, Tagir Valeev wrote: > Hello! > > javac 14-ea+28-1366 rejects the following record: > > record R(final int x) {} > > Displaying the following message: > > Test2.java:1: error: record components cannot have modifiers > record R(final int x) {} > ^ > Note: Test2.java uses preview language features. > Note: Recompile with -Xlint:preview for details. > > However, the spec draft for records explicitly allows this [1]: > >> It is permitted for a record component to redundantly specify the final modifier > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html#jls-8.10.1 > > With best regards, > Tagir Valeev From vicente.romero at oracle.com Tue Dec 31 17:24:36 2019 From: vicente.romero at oracle.com (Vicente Romero) Date: Tue, 31 Dec 2019 12:24:36 -0500 Subject: javac rejects canonical constructor when formal parameter name doesn't match the record component name In-Reply-To: References: Message-ID: <791f98f5-3055-91c7-0d60-bdb3d851c2eb@oracle.com> I agree that the spec should be updated, I have created [1] to track this issue, Vicente [1] https://bugs.openjdk.java.net/browse/JDK-8236599 On 12/25/19 3:28 AM, Tagir Valeev wrote: > Well, one place where people might dislike it is the established code > style. Some projects may always use prefixed field names as > constructor parameters to avoid 'this.' qualifier in assignments. > Being unable to follow the same style in the records might be > irritating. > > On the other hand, this simplifies things for IDE developers. I'm > thinking about "make canonical constructor compact" quick-fix > (available if canonical constructor ends with explicit assignment of > some record components and has no returns, no custom parameter > annotations, etc.) I thought it should be quite a difficult problem in > general as we would need to rename parameters, solve possible name > conflicts, possibly qualify fields with 'this.', etc. Having the > restriction that names must be equal, the quick-fix implementation > will be much simpler. > > With best regards, > Tagir Valeev. > > On Wed, Dec 25, 2019 at 12:53 AM Brian Goetz wrote: >> On this one, I agree with the compiler and think the spec should be adjusted. >> >> The reasoning is that I am looking down he road at named parameter invocation, and if the record component names mismatch the canonical ctor param names, that will cause trouble for no benefit. >> >> Sent from my iPad >> >>> On Dec 24, 2019, at 5:50 AM, Tagir Valeev wrote: >>> >>> Hello! >>> >>> javac 14-ea+28-1366 rejects the following code: >>> >>> record R(int x) { >>> public R(int _x) { this.x = _x; } >>> } >>> >>> Test.java:2: error: invalid canonical constructor in record R >>> public R(int _x) { this.x = _x; } >>> ^ >>> (invalid parameter names in canonical constructor) >>> Note: Test.java uses preview language features. >>> Note: Recompile with -Xlint:preview for details. >>> >>> However, the spec for the records [1] doesn't prohibit such a >>> renaming. It says only that "The types of the formal parameters in the >>> formal parameter list of the canonical constructor must be identical >>> to the declared type of the corresponding record component." The >>> formal parameter names are only mentioned in "derived constructor >>> signature" definition. However, this definition doesn't prohibit >>> anything, to my understanding. So either compiler should be updated to >>> allow such a code or spec should be updated to explicitly prohibit it. >>> >>> With best regards, >>> Tagir Valeev. >>> >>> [1] http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html#jls-8.10.4