From srikanth.adayapalam at oracle.com Mon Oct 3 07:39:49 2016 From: srikanth.adayapalam at oracle.com (srikanth.adayapalam at oracle.com) Date: Mon, 03 Oct 2016 07:39:49 +0000 Subject: hg: valhalla/valhalla/langtools: Summary: Implement semantic checks for value capable classes when run with -XDenableMinimalValueTypes Message-ID: <201610030739.u937doFx011256@aojmv0008.oracle.com> Changeset: 30469b6d88b6 Author: sadayapalam Date: 2016-10-03 13:09 +0530 URL: http://hg.openjdk.java.net/valhalla/valhalla/langtools/rev/30469b6d88b6 Summary: Implement semantic checks for value capable classes when run with -XDenableMinimalValueTypes ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.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/ValueCapableClassAttr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! test/tools/javac/diags/CheckResourceKeys.java + test/tools/javac/valhalla/minimalvalues/CheckClone.java + test/tools/javac/valhalla/minimalvalues/CheckClone.out + test/tools/javac/valhalla/minimalvalues/CheckCyclicMembership.java + test/tools/javac/valhalla/minimalvalues/CheckCyclicMembership.out + test/tools/javac/valhalla/minimalvalues/CheckEquals.java + test/tools/javac/valhalla/minimalvalues/CheckEquals.out + test/tools/javac/valhalla/minimalvalues/CheckExtends.java + test/tools/javac/valhalla/minimalvalues/CheckExtends.out + test/tools/javac/valhalla/minimalvalues/CheckFinal.java + test/tools/javac/valhalla/minimalvalues/CheckFinal.out + test/tools/javac/valhalla/minimalvalues/CheckFinalize.java + test/tools/javac/valhalla/minimalvalues/CheckFinalize.out + test/tools/javac/valhalla/minimalvalues/CheckIdentityHash.java + test/tools/javac/valhalla/minimalvalues/CheckIdentityHash.out + test/tools/javac/valhalla/minimalvalues/CheckIdentityHash01.java + test/tools/javac/valhalla/minimalvalues/CheckIdentityHash01.out + test/tools/javac/valhalla/minimalvalues/CheckNullAssign.java + test/tools/javac/valhalla/minimalvalues/CheckNullAssign.out + test/tools/javac/valhalla/minimalvalues/CheckNullCastable.java + test/tools/javac/valhalla/minimalvalues/CheckNullCastable.out + test/tools/javac/valhalla/minimalvalues/CheckSync.java + test/tools/javac/valhalla/minimalvalues/CheckSync.out + test/tools/javac/valhalla/minimalvalues/CheckSynchronized.java + test/tools/javac/valhalla/minimalvalues/CheckSynchronized.out + test/tools/javac/valhalla/minimalvalues/ClassFileReaderTest.java + test/tools/javac/valhalla/minimalvalues/ClassFileReaderTest.out + test/tools/javac/valhalla/minimalvalues/Point.java From srikanth.adayapalam at oracle.com Mon Oct 3 08:00:17 2016 From: srikanth.adayapalam at oracle.com (Srikanth) Date: Mon, 3 Oct 2016 13:30:17 +0530 Subject: hg: valhalla/valhalla/langtools: Summary: Implement semantic checks for value capable classes when run with -XDenableMinimalValueTypes In-Reply-To: <201610030739.u937doFx011256@aojmv0008.oracle.com> References: <201610030739.u937doFx011256@aojmv0008.oracle.com> Message-ID: <57F21011.3090401@oracle.com> Some implementation notes on this commit: Mostly useful for langtools implementors, but could be of academic interest to others. In some sense, this commit takes the exact opposite approach to http://hg.openjdk.java.net/valhalla/valhalla/langtools/rev/5de3c2615ab6 which eliminated the separate phase named TransValues from the compiler pipeline and folded the semantic checks originally performed there into Attr and Enter. The present patch reintroduces a separate pipeline stage dedicated to attributing value capable classes. This attribution step and all the semantic checks there take place only when the compiler is invoked with -XDenableMinimalValueTypes. The main motivation for this phase is to consolidate all the checks that happen for value capable classes into one place - thereby making it easier to port it to some other branch or withdraw and garbage collect them all together when we move to full fledged value types. At the moment, I have felt it prudent to maintain the distinction between value classes and value capable classes. The annotation jvm.internal.value.DeriveValueType does not cause the flag com.sun.tools.javac.code.Flags#VALUE to be set for example. Instead the new flag com.sun.tools.javac.code.Flags#VALUE_CAPABLE is set. This is to avoid any and all unwanted side effects of treating (the minimal) value capable classes as full blown value types. This also allows to implement some relaxing of the semantic restrictions for minimal value types should the need arise. Much of this is subject to change. This should be seen as a quick and dirty implementation for now. Thanks. Srikanth On Monday 03 October 2016 01:09 PM, srikanth.adayapalam at oracle.com wrote: > Changeset: 30469b6d88b6 > Author: sadayapalam > Date: 2016-10-03 13:09 +0530 > URL: http://hg.openjdk.java.net/valhalla/valhalla/langtools/rev/30469b6d88b6 > > Summary: Implement semantic checks for value capable classes when run with -XDenableMinimalValueTypes > > ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java > ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.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/ValueCapableClassAttr.java > ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java > ! test/tools/javac/diags/CheckResourceKeys.java > + test/tools/javac/valhalla/minimalvalues/CheckClone.java > + test/tools/javac/valhalla/minimalvalues/CheckClone.out > + test/tools/javac/valhalla/minimalvalues/CheckCyclicMembership.java > + test/tools/javac/valhalla/minimalvalues/CheckCyclicMembership.out > + test/tools/javac/valhalla/minimalvalues/CheckEquals.java > + test/tools/javac/valhalla/minimalvalues/CheckEquals.out > + test/tools/javac/valhalla/minimalvalues/CheckExtends.java > + test/tools/javac/valhalla/minimalvalues/CheckExtends.out > + test/tools/javac/valhalla/minimalvalues/CheckFinal.java > + test/tools/javac/valhalla/minimalvalues/CheckFinal.out > + test/tools/javac/valhalla/minimalvalues/CheckFinalize.java > + test/tools/javac/valhalla/minimalvalues/CheckFinalize.out > + test/tools/javac/valhalla/minimalvalues/CheckIdentityHash.java > + test/tools/javac/valhalla/minimalvalues/CheckIdentityHash.out > + test/tools/javac/valhalla/minimalvalues/CheckIdentityHash01.java > + test/tools/javac/valhalla/minimalvalues/CheckIdentityHash01.out > + test/tools/javac/valhalla/minimalvalues/CheckNullAssign.java > + test/tools/javac/valhalla/minimalvalues/CheckNullAssign.out > + test/tools/javac/valhalla/minimalvalues/CheckNullCastable.java > + test/tools/javac/valhalla/minimalvalues/CheckNullCastable.out > + test/tools/javac/valhalla/minimalvalues/CheckSync.java > + test/tools/javac/valhalla/minimalvalues/CheckSync.out > + test/tools/javac/valhalla/minimalvalues/CheckSynchronized.java > + test/tools/javac/valhalla/minimalvalues/CheckSynchronized.out > + test/tools/javac/valhalla/minimalvalues/ClassFileReaderTest.java > + test/tools/javac/valhalla/minimalvalues/ClassFileReaderTest.out > + test/tools/javac/valhalla/minimalvalues/Point.java > From martijnverburg at gmail.com Mon Oct 3 09:10:24 2016 From: martijnverburg at gmail.com (Martijn Verburg) Date: Mon, 3 Oct 2016 10:10:24 +0100 Subject: Notice for new signups to Project Valhalla - How to Contribute Message-ID: Hi all, There have been a number of new signups post JVMLS, J1 etc - so here's the details on contributing (well a link the the details really). Valhalla is one of OpenJDK's more complex areas to get involved in. A guide to getting started with Valhalla and levels of suggested contribution can be found on the home page: http://openjdk.java.net/projects/valhalla/ Cheers, Martijn From srikanth.adayapalam at oracle.com Tue Oct 4 10:26:18 2016 From: srikanth.adayapalam at oracle.com (srikanth.adayapalam at oracle.com) Date: Tue, 04 Oct 2016 10:26:18 +0000 Subject: hg: valhalla/valhalla/langtools: Summary: Code generation for value capable classes should use typed prefix for local loads, stores and returns. Message-ID: <201610041026.u94AQIaE024189@aojmv0008.oracle.com> Changeset: a7d38b363cf5 Author: sadayapalam Date: 2016-10-04 15:56 +0530 URL: http://hg.openjdk.java.net/valhalla/valhalla/langtools/rev/a7d38b363cf5 Summary: Code generation for value capable classes should use typed prefix for local loads, stores and returns. ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Items.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/PoolWriter.java + test/tools/javac/valhalla/minimalvalues/TypedBytecodeTest.java + test/tools/javac/valhalla/minimalvalues/VBytecodeTest.java From srikanth.adayapalam at oracle.com Thu Oct 6 06:05:11 2016 From: srikanth.adayapalam at oracle.com (srikanth.adayapalam at oracle.com) Date: Thu, 06 Oct 2016 06:05:11 +0000 Subject: hg: valhalla/valhalla/langtools: Cleanup: Encapsulate the uses of the flag VALUE_CAPABLE Message-ID: <201610060605.u9665BSa017571@aojmv0008.oracle.com> Changeset: 54649cba25f1 Author: sadayapalam Date: 2016-10-06 11:34 +0530 URL: http://hg.openjdk.java.net/valhalla/valhalla/langtools/rev/54649cba25f1 Cleanup: Encapsulate the uses of the flag VALUE_CAPABLE ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ValueCapableClassAttr.java From tobias.hartmann at oracle.com Fri Oct 7 14:11:44 2016 From: tobias.hartmann at oracle.com (Tobias Hartmann) Date: Fri, 7 Oct 2016 16:11:44 +0200 Subject: First C2 prototype for value types Message-ID: <57F7AD20.80208@oracle.com> Hi, I implemented a first very basic C2 prototype implementation of value types: http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/ The changes mostly affect the C2 frontend and do not affect any non VT (byte-)code or other VM functionality. Here's a summary: - Introduced ciValueKlass to represent a valueKlass in C2 and provide access to the value type field layout. - Introduced a new Type TypeValueType and TypeValueTypePtr to represent a value type and a corresponding oop to the heap allocated value type in C2's type system. - Introduced a ValueTypeNode to represent a value type in the C2 IR. It's a TypeNode with type TypeValueType and has the oop and the field values as input nodes. - Support for vnew, vreturn, vgetfield, vload, vstore. - Support for passing value types from interpreter to C2 compiled code and vice versa. This is done via oops. - Other VT bytecodes are treated as corresponding Java object bytecodes (just for now, so we know where we need to make future changes) - No support for VT arrays and flattening yet. - No "real" optimizations. I implemented a jtreg test suite to ease testing of the C2 implementation: http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java.html It supports basic matching on the C2 IR. The tests under // ========== Test definitions ========== work and C2 generates code for them. The C2 IR is printed for each test. Please be aware that this implementation is *very* limited and the only thing that should work are the tests in the suite. There are sill lot's of TODOs and FIXMEs but I would like to push this early version to allow other team members to build upon. I need a sponsor for this since I'm not Valhalla author/committer. Best regards, Tobias From frederic.parain at oracle.com Fri Oct 7 14:43:43 2016 From: frederic.parain at oracle.com (Frederic Parain) Date: Fri, 7 Oct 2016 10:43:43 -0400 Subject: First C2 prototype for value types In-Reply-To: <57F7AD20.80208@oracle.com> References: <57F7AD20.80208@oracle.com> Message-ID: Hi Tobias, I can be the sponsor for your changes. Let we know when they are ready for pushing. Fred On 10/07/2016 10:11 AM, Tobias Hartmann wrote: > Hi, > > I implemented a first very basic C2 prototype implementation of value types: > http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/ > > The changes mostly affect the C2 frontend and do not affect any non VT (byte-)code or other VM functionality. > > Here's a summary: > - Introduced ciValueKlass to represent a valueKlass in C2 and provide access to the value type field layout. > - Introduced a new Type TypeValueType and TypeValueTypePtr to represent a value type and a corresponding oop to the heap allocated value type in C2's type system. > - Introduced a ValueTypeNode to represent a value type in the C2 IR. It's a TypeNode with type TypeValueType and has the oop and the field values as input nodes. > - Support for vnew, vreturn, vgetfield, vload, vstore. > - Support for passing value types from interpreter to C2 compiled code and vice versa. This is done via oops. > - Other VT bytecodes are treated as corresponding Java object bytecodes (just for now, so we know where we need to make future changes) > - No support for VT arrays and flattening yet. > - No "real" optimizations. > > I implemented a jtreg test suite to ease testing of the C2 implementation: > http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java.html > > It supports basic matching on the C2 IR. The tests under > // ========== Test definitions ========== > work and C2 generates code for them. The C2 IR is printed for each test. > > Please be aware that this implementation is *very* limited and the only thing that should work are the tests in the suite. There are sill lot's of TODOs and FIXMEs but I would like to push this early version to allow other team members to build upon. > > I need a sponsor for this since I'm not Valhalla author/committer. > > Best regards, > Tobias > From tobias.hartmann at oracle.com Fri Oct 7 16:20:51 2016 From: tobias.hartmann at oracle.com (Tobias Hartmann) Date: Fri, 7 Oct 2016 18:20:51 +0200 Subject: First C2 prototype for value types In-Reply-To: References: <57F7AD20.80208@oracle.com> Message-ID: <57F7CB63.9060902@oracle.com> Hi Frederic, On 07.10.2016 16:43, Frederic Parain wrote: > Hi Tobias, > > I can be the sponsor for your changes. > Let we know when they are ready for pushing. Thanks! In my opinion the changes are ready to push. As I mentioned, the implementation is experimental but shouldn't affect/break any existing code. Best regards, Tobias > Fred > > On 10/07/2016 10:11 AM, Tobias Hartmann wrote: >> Hi, >> >> I implemented a first very basic C2 prototype implementation of value types: >> http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/ >> >> The changes mostly affect the C2 frontend and do not affect any non VT (byte-)code or other VM functionality. >> >> Here's a summary: >> - Introduced ciValueKlass to represent a valueKlass in C2 and provide access to the value type field layout. >> - Introduced a new Type TypeValueType and TypeValueTypePtr to represent a value type and a corresponding oop to the heap allocated value type in C2's type system. >> - Introduced a ValueTypeNode to represent a value type in the C2 IR. It's a TypeNode with type TypeValueType and has the oop and the field values as input nodes. >> - Support for vnew, vreturn, vgetfield, vload, vstore. >> - Support for passing value types from interpreter to C2 compiled code and vice versa. This is done via oops. >> - Other VT bytecodes are treated as corresponding Java object bytecodes (just for now, so we know where we need to make future changes) >> - No support for VT arrays and flattening yet. >> - No "real" optimizations. >> >> I implemented a jtreg test suite to ease testing of the C2 implementation: >> http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java.html >> >> It supports basic matching on the C2 IR. The tests under >> // ========== Test definitions ========== >> work and C2 generates code for them. The C2 IR is printed for each test. >> >> Please be aware that this implementation is *very* limited and the only thing that should work are the tests in the suite. There are sill lot's of TODOs and FIXMEs but I would like to push this early version to allow other team members to build upon. >> >> I need a sponsor for this since I'm not Valhalla author/committer. >> >> Best regards, >> Tobias >> From maurizio.cimadamore at oracle.com Fri Oct 7 16:21:55 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Fri, 7 Oct 2016 17:21:55 +0100 Subject: CFV: New Valhalla Committer: Frederic Parain Message-ID: <1e545fc3-2e10-5533-acd3-5ef20b9a2242@oracle.com> I hereby nominate Tobias Hartmann (thartmann) to Valhalla Committer. Tobias is a member of Hotspot JVM Compiler group since April 2014 who's looking to join Project Valhalla. As seen in some previous emails, his efforts will be focused on designing/implementing C2 support for value types. Here's a list of his OpenJDK contributions. He also worked on the Segmented Code Cache [4] and JIT compiler support for Compact Strings [5]. For a full list of Tobias' commits, see [3]. Votes are due by October 21, 2016. Only current Valhalla Committers [1] are eligible to vote on this nomination. For Lazy Consensus voting instructions, see [2]. Thank you, Maurizio Cimadamore [1] - http://openjdk.java.net/census [2] - http://openjdk.java.net/projects/#committer-vote [3] http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/log?revcount=1000&rev=%28keyword%28%22tobi.hartmann%40gmail.com%22%29+or+keyword%28%22tobias.hartmann%40oracle.com%22%29+or+%28author%28thartmann%29+and+not+desc%28%22Contributed-by%3A%22%29%29%29+and+not+desc%28%22Merge%22%29 [4] http://openjdk.java.net/jeps/197 [5] http://openjdk.java.net/jeps/254 From maurizio.cimadamore at oracle.com Fri Oct 7 16:22:40 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Fri, 7 Oct 2016 17:22:40 +0100 Subject: CFV: New Valhalla Committer: Frederic Parain In-Reply-To: <1e545fc3-2e10-5533-acd3-5ef20b9a2242@oracle.com> References: <1e545fc3-2e10-5533-acd3-5ef20b9a2242@oracle.com> Message-ID: <25db0ca7-53a6-0fbd-79a6-400f93491d97@oracle.com> Please ignore - wrong subject :-) On 07/10/16 17:21, Maurizio Cimadamore wrote: > I hereby nominate Tobias Hartmann (thartmann) to Valhalla Committer. > > Tobias is a member of Hotspot JVM Compiler group since April 2014 > who's looking to join Project Valhalla. As seen in some previous > emails, his efforts will be focused on designing/implementing C2 > support for value types. Here's a list of his OpenJDK contributions. > > He also worked on the Segmented Code Cache [4] and JIT compiler > support for Compact Strings [5]. For a full list of Tobias' commits, > see [3]. > > Votes are due by October 21, 2016. > > Only current Valhalla Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Maurizio Cimadamore > > [1] - http://openjdk.java.net/census > [2] - http://openjdk.java.net/projects/#committer-vote > [3] > http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/log?revcount=1000&rev=%28keyword%28%22tobi.hartmann%40gmail.com%22%29+or+keyword%28%22tobias.hartmann%40oracle.com%22%29+or+%28author%28thartmann%29+and+not+desc%28%22Contributed-by%3A%22%29%29%29+and+not+desc%28%22Merge%22%29 > [4] http://openjdk.java.net/jeps/197 > [5] http://openjdk.java.net/jeps/254 > From maurizio.cimadamore at oracle.com Fri Oct 7 16:23:01 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Fri, 7 Oct 2016 17:23:01 +0100 Subject: CFV: New Valhalla Committer: Tobias Hartmann Message-ID: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> I hereby nominate Tobias Hartmann (thartmann) to Valhalla Committer. Tobias is a member of Hotspot JVM Compiler group since April 2014 who's looking to join Project Valhalla. As seen in some previous emails, his efforts will be focused on designing/implementing C2 support for value types. Here's a list of his OpenJDK contributions. He also worked on the Segmented Code Cache [4] and JIT compiler support for Compact Strings [5]. For a full list of Tobias' commits, see [3]. Votes are due by October 21, 2016. Only current Valhalla Committers [1] are eligible to vote on this nomination. For Lazy Consensus voting instructions, see [2]. Thank you, Maurizio Cimadamore [1] - http://openjdk.java.net/census [2] - http://openjdk.java.net/projects/#committer-vote [3] http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/log?revcount=1000&rev=%28keyword%28%22tobi.hartmann%40gmail.com%22%29+or+keyword%28%22tobias.hartmann%40oracle.com%22%29+or+%28author%28thartmann%29+and+not+desc%28%22Contributed-by%3A%22%29%29%29+and+not+desc%28%22Merge%22%29 [4] http://openjdk.java.net/jeps/197 [5] http://openjdk.java.net/jeps/254 From paul.sandoz at oracle.com Fri Oct 7 16:27:33 2016 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Fri, 7 Oct 2016 09:27:33 -0700 Subject: CFV: New Valhalla Committer: Tobias Hartmann In-Reply-To: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> References: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> Message-ID: Vote: yes Paul. From frederic.parain at oracle.com Fri Oct 7 16:29:15 2016 From: frederic.parain at oracle.com (Frederic Parain) Date: Fri, 7 Oct 2016 12:29:15 -0400 Subject: CFV: New Valhalla Committer: Tobias Hartmann In-Reply-To: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> References: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> Message-ID: <8c4f01bd-8f9b-19dc-3340-5c8ba43e8e59@oracle.com> Vote: yes Fred On 10/07/2016 12:23 PM, Maurizio Cimadamore wrote: > I hereby nominate Tobias Hartmann (thartmann) to Valhalla Committer. > > Tobias is a member of Hotspot JVM Compiler group since April 2014 who's > looking to join Project Valhalla. As seen in some previous emails, his > efforts will be focused on designing/implementing C2 support for value > types. Here's a list of his OpenJDK contributions. > > He also worked on the Segmented Code Cache [4] and JIT compiler support > for Compact Strings [5]. For a full list of Tobias' commits, see [3]. > > Votes are due by October 21, 2016. > > Only current Valhalla Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Maurizio Cimadamore > > [1] - http://openjdk.java.net/census > [2] - http://openjdk.java.net/projects/#committer-vote > [3] > http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/log?revcount=1000&rev=%28keyword%28%22tobi.hartmann%40gmail.com%22%29+or+keyword%28%22tobias.hartmann%40oracle.com%22%29+or+%28author%28thartmann%29+and+not+desc%28%22Contributed-by%3A%22%29%29%29+and+not+desc%28%22Merge%22%29 > > [4] http://openjdk.java.net/jeps/197 > [5] http://openjdk.java.net/jeps/254 > From vladimir.x.ivanov at oracle.com Fri Oct 7 16:31:17 2016 From: vladimir.x.ivanov at oracle.com (Vladimir Ivanov) Date: Fri, 7 Oct 2016 19:31:17 +0300 Subject: CFV: New Valhalla Committer: Tobias Hartmann In-Reply-To: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> References: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> Message-ID: Vote: yes Best regards, Vladimir Ivanov On 10/7/16 7:23 PM, Maurizio Cimadamore wrote: > I hereby nominate Tobias Hartmann (thartmann) to Valhalla Committer. From john.r.rose at oracle.com Fri Oct 7 17:39:43 2016 From: john.r.rose at oracle.com (John Rose) Date: Fri, 7 Oct 2016 10:39:43 -0700 Subject: CFV: New Valhalla Committer: Tobias Hartmann In-Reply-To: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> References: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> Message-ID: <472E6238-602C-4083-94AD-7AE2F805BF15@oracle.com> Vote: yes From frederic.parain at oracle.com Fri Oct 7 17:59:02 2016 From: frederic.parain at oracle.com (frederic.parain at oracle.com) Date: Fri, 07 Oct 2016 17:59:02 +0000 Subject: hg: valhalla/valhalla/hotspot: Summary: Message-ID: <201610071759.u97Hx2CT006260@aojmv0008.oracle.com> Changeset: 1e32d9847879 Author: fparain Date: 2016-10-07 13:54 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/1e32d9847879 Summary: - Introduced ciValueKlass to represent a valueKlass in C2 and provide access to the value type field layout. - Introduced a new Type TypeValueType and TypeValueTypePtr to represent a value type and a corresponding oop to the heap allocated value type in C2's type system. - Introduced a ValueTypeNode to represent a value type in the C2 IR. It's a TypeNode with type TypeValueType and has the oop and the field values as input nodes. - Support for vnew, vreturn, vgetfield, vload, vstore. - Support for passing value types from interpreter to C2 compiled code and vice versa. This is done via oops. - Other VT bytecodes are treated as corresponding Java object bytecodes (just for now, so we know where we need to make future changes) - No support for VT arrays and flattening yet. - No "real" optimizations. Contributed-by: tobias.hartmann at oracle.com ! src/share/vm/ci/bcEscapeAnalyzer.cpp ! src/share/vm/ci/ciClassList.hpp ! src/share/vm/ci/ciEnv.cpp ! src/share/vm/ci/ciField.cpp ! src/share/vm/ci/ciMetadata.hpp ! src/share/vm/ci/ciMethod.cpp ! src/share/vm/ci/ciMethodBlocks.cpp ! src/share/vm/ci/ciObjectFactory.cpp ! src/share/vm/ci/ciStreams.cpp ! src/share/vm/ci/ciType.cpp ! src/share/vm/ci/ciType.hpp ! src/share/vm/ci/ciTypeFlow.cpp ! src/share/vm/ci/ciTypeFlow.hpp + src/share/vm/ci/ciValueKlass.cpp + src/share/vm/ci/ciValueKlass.hpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/compiler/methodLiveness.cpp ! src/share/vm/interpreter/abstractInterpreter.cpp ! src/share/vm/interpreter/bytecodes.hpp ! src/share/vm/oops/cpCache.hpp ! src/share/vm/oops/methodData.cpp ! src/share/vm/opto/callGenerator.cpp ! src/share/vm/opto/classes.cpp ! src/share/vm/opto/classes.hpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/doCall.cpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/graphKit.hpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/node.hpp ! src/share/vm/opto/parse.hpp ! src/share/vm/opto/parse1.cpp ! src/share/vm/opto/parse2.cpp ! src/share/vm/opto/parse3.cpp ! src/share/vm/opto/parseHelper.cpp ! src/share/vm/opto/type.cpp ! src/share/vm/opto/type.hpp + src/share/vm/opto/valuetypenode.cpp + src/share/vm/opto/valuetypenode.hpp ! src/share/vm/runtime/deoptimization.cpp ! src/share/vm/runtime/signature.cpp + test/compiler/valhalla/valuetypes/ValueTypeTestBench.java From frederic.parain at oracle.com Fri Oct 7 18:01:10 2016 From: frederic.parain at oracle.com (Frederic Parain) Date: Fri, 7 Oct 2016 14:01:10 -0400 Subject: First C2 prototype for value types In-Reply-To: <57F7CB63.9060902@oracle.com> References: <57F7AD20.80208@oracle.com> <57F7CB63.9060902@oracle.com> Message-ID: <68bb9bac-8e22-3b2c-5bca-959eb7176e07@oracle.com> Done. Fred On 10/07/2016 12:20 PM, Tobias Hartmann wrote: > Hi Frederic, > > On 07.10.2016 16:43, Frederic Parain wrote: >> Hi Tobias, >> >> I can be the sponsor for your changes. >> Let we know when they are ready for pushing. > > Thanks! In my opinion the changes are ready to push. > As I mentioned, the implementation is experimental but shouldn't affect/break any existing code. > > Best regards, > Tobias > >> Fred >> >> On 10/07/2016 10:11 AM, Tobias Hartmann wrote: >>> Hi, >>> >>> I implemented a first very basic C2 prototype implementation of value types: >>> http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/ >>> >>> The changes mostly affect the C2 frontend and do not affect any non VT (byte-)code or other VM functionality. >>> >>> Here's a summary: >>> - Introduced ciValueKlass to represent a valueKlass in C2 and provide access to the value type field layout. >>> - Introduced a new Type TypeValueType and TypeValueTypePtr to represent a value type and a corresponding oop to the heap allocated value type in C2's type system. >>> - Introduced a ValueTypeNode to represent a value type in the C2 IR. It's a TypeNode with type TypeValueType and has the oop and the field values as input nodes. >>> - Support for vnew, vreturn, vgetfield, vload, vstore. >>> - Support for passing value types from interpreter to C2 compiled code and vice versa. This is done via oops. >>> - Other VT bytecodes are treated as corresponding Java object bytecodes (just for now, so we know where we need to make future changes) >>> - No support for VT arrays and flattening yet. >>> - No "real" optimizations. >>> >>> I implemented a jtreg test suite to ease testing of the C2 implementation: >>> http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java.html >>> >>> It supports basic matching on the C2 IR. The tests under >>> // ========== Test definitions ========== >>> work and C2 generates code for them. The C2 IR is printed for each test. >>> >>> Please be aware that this implementation is *very* limited and the only thing that should work are the tests in the suite. There are sill lot's of TODOs and FIXMEs but I would like to push this early version to allow other team members to build upon. >>> >>> I need a sponsor for this since I'm not Valhalla author/committer. >>> >>> Best regards, >>> Tobias >>> From tobias.hartmann at oracle.com Mon Oct 10 06:06:06 2016 From: tobias.hartmann at oracle.com (Tobias Hartmann) Date: Mon, 10 Oct 2016 08:06:06 +0200 Subject: First C2 prototype for value types In-Reply-To: <68bb9bac-8e22-3b2c-5bca-959eb7176e07@oracle.com> References: <57F7AD20.80208@oracle.com> <57F7CB63.9060902@oracle.com> <68bb9bac-8e22-3b2c-5bca-959eb7176e07@oracle.com> Message-ID: <57FB2FCE.2080609@oracle.com> Thanks, Fred! Best regards, Tobias On 07.10.2016 20:01, Frederic Parain wrote: > Done. > > Fred > > On 10/07/2016 12:20 PM, Tobias Hartmann wrote: >> Hi Frederic, >> >> On 07.10.2016 16:43, Frederic Parain wrote: >>> Hi Tobias, >>> >>> I can be the sponsor for your changes. >>> Let we know when they are ready for pushing. >> >> Thanks! In my opinion the changes are ready to push. >> As I mentioned, the implementation is experimental but shouldn't affect/break any existing code. >> >> Best regards, >> Tobias >> >>> Fred >>> >>> On 10/07/2016 10:11 AM, Tobias Hartmann wrote: >>>> Hi, >>>> >>>> I implemented a first very basic C2 prototype implementation of value types: >>>> http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/ >>>> >>>> The changes mostly affect the C2 frontend and do not affect any non VT (byte-)code or other VM functionality. >>>> >>>> Here's a summary: >>>> - Introduced ciValueKlass to represent a valueKlass in C2 and provide access to the value type field layout. >>>> - Introduced a new Type TypeValueType and TypeValueTypePtr to represent a value type and a corresponding oop to the heap allocated value type in C2's type system. >>>> - Introduced a ValueTypeNode to represent a value type in the C2 IR. It's a TypeNode with type TypeValueType and has the oop and the field values as input nodes. >>>> - Support for vnew, vreturn, vgetfield, vload, vstore. >>>> - Support for passing value types from interpreter to C2 compiled code and vice versa. This is done via oops. >>>> - Other VT bytecodes are treated as corresponding Java object bytecodes (just for now, so we know where we need to make future changes) >>>> - No support for VT arrays and flattening yet. >>>> - No "real" optimizations. >>>> >>>> I implemented a jtreg test suite to ease testing of the C2 implementation: >>>> http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.00/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java.html >>>> >>>> It supports basic matching on the C2 IR. The tests under >>>> // ========== Test definitions ========== >>>> work and C2 generates code for them. The C2 IR is printed for each test. >>>> >>>> Please be aware that this implementation is *very* limited and the only thing that should work are the tests in the suite. There are sill lot's of TODOs and FIXMEs but I would like to push this early version to allow other team members to build upon. >>>> >>>> I need a sponsor for this since I'm not Valhalla author/committer. >>>> >>>> Best regards, >>>> Tobias >>>> From david.simms at oracle.com Mon Oct 10 08:14:39 2016 From: david.simms at oracle.com (David Simms) Date: Mon, 10 Oct 2016 10:14:39 +0200 Subject: CFV: New Valhalla Committer: Tobias Hartmann In-Reply-To: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> References: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> Message-ID: <22af33b8-4911-044f-c128-d3d49dea9274@oracle.com> Vote: yes /Mr. Simms On 07/10/16 18:23, Maurizio Cimadamore wrote: > I hereby nominate Tobias Hartmann (thartmann) to Valhalla Committer. > > Tobias is a member of Hotspot JVM Compiler group since April 2014 > who's looking to join Project Valhalla. As seen in some previous > emails, his efforts will be focused on designing/implementing C2 > support for value types. Here's a list of his OpenJDK contributions. > > He also worked on the Segmented Code Cache [4] and JIT compiler > support for Compact Strings [5]. For a full list of Tobias' commits, > see [3]. > > Votes are due by October 21, 2016. > > Only current Valhalla Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Maurizio Cimadamore > > [1] - http://openjdk.java.net/census > [2] - http://openjdk.java.net/projects/#committer-vote > [3] > http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/log?revcount=1000&rev=%28keyword%28%22tobi.hartmann%40gmail.com%22%29+or+keyword%28%22tobias.hartmann%40oracle.com%22%29+or+%28author%28thartmann%29+and+not+desc%28%22Contributed-by%3A%22%29%29%29+and+not+desc%28%22Merge%22%29 > [4] http://openjdk.java.net/jeps/197 > [5] http://openjdk.java.net/jeps/254 > From frederic.parain at oracle.com Mon Oct 10 15:00:49 2016 From: frederic.parain at oracle.com (frederic.parain at oracle.com) Date: Mon, 10 Oct 2016 15:00:49 +0000 Subject: hg: valhalla/valhalla/hotspot: Summary: Fix initial C2 changes build issue for product targets Message-ID: <201610101500.u9AF0nbK006544@aojmv0008.oracle.com> Changeset: 8f3c016867ce Author: fparain Date: 2016-10-10 11:00 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/8f3c016867ce Summary: Fix initial C2 changes build issue for product targets Contributed-by: tobias.hartmann at oracle.com ! src/share/vm/opto/compile.cpp From karen.kinnear at oracle.com Mon Oct 10 15:40:25 2016 From: karen.kinnear at oracle.com (Karen Kinnear) Date: Mon, 10 Oct 2016 11:40:25 -0400 Subject: CFV: New Valhalla Committer: Tobias Hartmann In-Reply-To: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> References: <8d02fae3-32de-b4e2-760a-4ab808d6324f@oracle.com> Message-ID: <4C114D5B-B7CB-4DC1-AF80-1D82FD38B94D@oracle.com> Vote: yes thanks, Karen > On Oct 7, 2016, at 12:23 PM, Maurizio Cimadamore wrote: > > I hereby nominate Tobias Hartmann (thartmann) to Valhalla Committer. > > Tobias is a member of Hotspot JVM Compiler group since April 2014 who's looking to join Project Valhalla. As seen in some previous emails, his efforts will be focused on designing/implementing C2 support for value types. Here's a list of his OpenJDK contributions. > > He also worked on the Segmented Code Cache [4] and JIT compiler support for Compact Strings [5]. For a full list of Tobias' commits, see [3]. > > Votes are due by October 21, 2016. > > Only current Valhalla Committers [1] are eligible to vote on this > nomination. > > For Lazy Consensus voting instructions, see [2]. > > Thank you, > Maurizio Cimadamore > > [1] - http://openjdk.java.net/census > [2] - http://openjdk.java.net/projects/#committer-vote > [3] http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/log?revcount=1000&rev=%28keyword%28%22tobi.hartmann%40gmail.com%22%29+or+keyword%28%22tobias.hartmann%40oracle.com%22%29+or+%28author%28thartmann%29+and+not+desc%28%22Contributed-by%3A%22%29%29%29+and+not+desc%28%22Merge%22%29 > [4] http://openjdk.java.net/jeps/197 > [5] http://openjdk.java.net/jeps/254 > From frederic.parain at oracle.com Tue Oct 11 18:37:21 2016 From: frederic.parain at oracle.com (frederic.parain at oracle.com) Date: Tue, 11 Oct 2016 18:37:21 +0000 Subject: hg: valhalla/valhalla/hotspot: Summary: Basic C2 support for value types in loops. Message-ID: <201610111837.u9BIbLIR019549@aojmv0008.oracle.com> Changeset: c4ba202370a3 Author: fparain Date: 2016-10-11 14:37 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/c4ba202370a3 Summary: Basic C2 support for value types in loops. Contributed-by: tobias.hartmann at oracle.com ! src/share/vm/opto/parse1.cpp ! src/share/vm/opto/type.cpp ! src/share/vm/opto/type.hpp ! src/share/vm/opto/valuetypenode.cpp ! src/share/vm/opto/valuetypenode.hpp ! test/compiler/valhalla/valuetypes/ValueTypeTestBench.java From f.giacherio at gmail.com Fri Oct 21 12:48:15 2016 From: f.giacherio at gmail.com (GIACHERIO Fabien) Date: Fri, 21 Oct 2016 14:48:15 +0200 Subject: Value Types - Meet some issues during execution Message-ID: Hi everyone, I am currently working on value types and I am trying to execute an example. I can compile the class below but I meet some issues when I try to execute it even if I add these arguments : -noverify -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement -XX:CompileCommand=compileonly,Point::* -XX:+PrintCompilation Do you have any solution ? If so, would you tell me please. Here is my code : __ByValue final class Point{ final int x; final int y; private Point(int x, int y) { this.x = x; this.y = y; } public static void hello() { Point origin = __Make Point(1,2); } public static void main(String[] args) { hello(); } } Best Regards, Fabien GIACHERIO. From tobias.hartmann at oracle.com Fri Oct 21 12:58:25 2016 From: tobias.hartmann at oracle.com (Tobias Hartmann) Date: Fri, 21 Oct 2016 14:58:25 +0200 Subject: Value Types - Meet some issues during execution In-Reply-To: References: Message-ID: <580A10F1.7060401@oracle.com> Hi Fabien, the current value types prototype has still very limited JIT support (C2 only) and does not support all of the new vbytecodes and functionality yet. For an example of what already works, please have a look at these tests: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/file/tip/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java Especially calls on value types are not yet working. If you are experimenting with value types, it's best to disable compilation for now (-Xint). I'm actively working on this and will constantly update the tests if new functionality is added. I also plan to send a summary of the implementation at some point. Best regards, Tobias On 21.10.2016 14:48, GIACHERIO Fabien wrote: > Hi everyone, > > I am currently working on value types and I am trying to execute an example. > I can compile the class below but I meet some issues when I try to execute > it even if I add these arguments : > -noverify > -XX:-TieredCompilation > -XX:-BackgroundCompilation > -XX:-UseOnStackReplacement > -XX:CompileCommand=compileonly,Point::* > -XX:+PrintCompilation > > Do you have any solution ? If so, would you tell me please. > > Here is my code : > __ByValue final class Point{ > final int x; > final int y; > > private Point(int x, int y) { > this.x = x; > this.y = y; > } > > public static void hello() { > Point origin = __Make Point(1,2); > } > > public static void main(String[] args) { > hello(); > } > } > > Best Regards, > Fabien GIACHERIO. > From frederic.parain at oracle.com Fri Oct 21 15:03:21 2016 From: frederic.parain at oracle.com (frederic.parain at oracle.com) Date: Fri, 21 Oct 2016 15:03:21 +0000 Subject: hg: valhalla/valhalla/hotspot: Summary: More C2 optimization for value types Message-ID: <201610211503.u9LF3LDI010263@aojmv0008.oracle.com> Changeset: 111143e30e17 Author: fparain Date: 2016-10-21 11:00 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/111143e30e17 Summary: More C2 optimization for value types - "Lazy" allocation of value types at calls, returns and traps - Value types in loops (merging of value type branches) - Support for deoptimization through uncommon traps - Fixed some bugs and added more tests - Extended test bench to allow for more sophisticated IR matching - Lots of refactoring and more comments Contributed-by: tobias.hartmann at oracle.com ! src/share/vm/ci/ciValueKlass.cpp ! src/share/vm/ci/ciValueKlass.hpp ! src/share/vm/opto/callGenerator.cpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/graphKit.hpp ! src/share/vm/opto/parse1.cpp ! src/share/vm/opto/parse3.cpp ! src/share/vm/opto/parseHelper.cpp ! src/share/vm/opto/type.cpp ! src/share/vm/opto/type.hpp ! src/share/vm/opto/valuetypenode.cpp ! src/share/vm/opto/valuetypenode.hpp ! test/compiler/valhalla/valuetypes/ValueTypeTestBench.java From f.giacherio at gmail.com Mon Oct 24 13:56:21 2016 From: f.giacherio at gmail.com (GIACHERIO Fabien) Date: Mon, 24 Oct 2016 15:56:21 +0200 Subject: Value Types - Meet some issues during execution In-Reply-To: <580A10F1.7060401@oracle.com> References: <580A10F1.7060401@oracle.com> Message-ID: I tried to add the -Xint argument in order to disable compilation but it does not resolve the issue and the execution is still bugged. In the 'Minimal Value Types' document, It is say that : "Any use of any part of any feature of this prototype must originate from a class in a value-capable module". I guess my issue come from that. How can I add my class in a value-capable module ? Best regards, Fabien GIACHERIO. 2016-10-21 14:58 GMT+02:00 Tobias Hartmann : > Hi Fabien, > > the current value types prototype has still very limited JIT support (C2 > only) and does not support all of the new vbytecodes and functionality yet. > For an example of what already works, please have a look at these tests: > http://hg.openjdk.java.net/valhalla/valhalla/hotspot/ > file/tip/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java > Especially calls on value types are not yet working. > > If you are experimenting with value types, it's best to disable > compilation for now (-Xint). > > I'm actively working on this and will constantly update the tests if new > functionality is added. I also plan to send a summary of the implementation > at some point. > > Best regards, > Tobias > > On 21.10.2016 14:48, GIACHERIO Fabien wrote: > > Hi everyone, > > > > I am currently working on value types and I am trying to execute an > example. > > I can compile the class below but I meet some issues when I try to > execute > > it even if I add these arguments : > > -noverify > > -XX:-TieredCompilation > > -XX:-BackgroundCompilation > > -XX:-UseOnStackReplacement > > -XX:CompileCommand=compileonly,Point::* > > -XX:+PrintCompilation > > > > Do you have any solution ? If so, would you tell me please. > > > > Here is my code : > > __ByValue final class Point{ > > final int x; > > final int y; > > > > private Point(int x, int y) { > > this.x = x; > > this.y = y; > > } > > > > public static void hello() { > > Point origin = __Make Point(1,2); > > } > > > > public static void main(String[] args) { > > hello(); > > } > > } > > > > Best Regards, > > Fabien GIACHERIO. > > > From maurizio.cimadamore at oracle.com Mon Oct 24 14:16:36 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Mon, 24 Oct 2016 15:16:36 +0100 Subject: Value Types - Meet some issues during execution In-Reply-To: References: <580A10F1.7060401@oracle.com> Message-ID: <9704d928-e410-632b-417e-584f01e25fa2@oracle.com> I too get this: Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.ClassFormatError: Method "" in class Point has illegal signature "(II)QPoint;" at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:761) at java.lang.ClassLoader.defineClass(ClassLoader.java:837) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:184) at java.net.URLClassLoader.defineClass(URLClassLoader.java:531) at java.net.URLClassLoader.access$200(URLClassLoader.java:84) at java.net.URLClassLoader$1.run(URLClassLoader.java:413) at java.net.URLClassLoader$1.run(URLClassLoader.java:395) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:394) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:262) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:504) I don't think this has to do with the JIT. Making the constructor public didn't change the outcome. Maurizio On 24/10/16 14:56, GIACHERIO Fabien wrote: > I tried to add the -Xint argument in order to disable compilation but it > does not resolve the issue and the execution is still bugged. > > In the 'Minimal Value Types' document, It is say that : "Any use of any > part of any feature of this prototype must originate from a class in a > value-capable module". > I guess my issue come from that. How can I add my class in a value-capable > module ? > > Best regards, > Fabien GIACHERIO. > > 2016-10-21 14:58 GMT+02:00 Tobias Hartmann : > >> Hi Fabien, >> >> the current value types prototype has still very limited JIT support (C2 >> only) and does not support all of the new vbytecodes and functionality yet. >> For an example of what already works, please have a look at these tests: >> http://hg.openjdk.java.net/valhalla/valhalla/hotspot/ >> file/tip/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java >> Especially calls on value types are not yet working. >> >> If you are experimenting with value types, it's best to disable >> compilation for now (-Xint). >> >> I'm actively working on this and will constantly update the tests if new >> functionality is added. I also plan to send a summary of the implementation >> at some point. >> >> Best regards, >> Tobias >> >> On 21.10.2016 14:48, GIACHERIO Fabien wrote: >>> Hi everyone, >>> >>> I am currently working on value types and I am trying to execute an >> example. >>> I can compile the class below but I meet some issues when I try to >> execute >>> it even if I add these arguments : >>> -noverify >>> -XX:-TieredCompilation >>> -XX:-BackgroundCompilation >>> -XX:-UseOnStackReplacement >>> -XX:CompileCommand=compileonly,Point::* >>> -XX:+PrintCompilation >>> >>> Do you have any solution ? If so, would you tell me please. >>> >>> Here is my code : >>> __ByValue final class Point{ >>> final int x; >>> final int y; >>> >>> private Point(int x, int y) { >>> this.x = x; >>> this.y = y; >>> } >>> >>> public static void hello() { >>> Point origin = __Make Point(1,2); >>> } >>> >>> public static void main(String[] args) { >>> hello(); >>> } >>> } >>> >>> Best Regards, >>> Fabien GIACHERIO. >>> From forax at univ-mlv.fr Mon Oct 24 16:28:06 2016 From: forax at univ-mlv.fr (Remi Forax) Date: Mon, 24 Oct 2016 18:28:06 +0200 (CEST) Subject: Value Types - Meet some issues during execution In-Reply-To: <9704d928-e410-632b-417e-584f01e25fa2@oracle.com> References: <580A10F1.7060401@oracle.com> <9704d928-e410-632b-417e-584f01e25fa2@oracle.com> Message-ID: <162235691.402045.1477326486714.JavaMail.zimbra@u-pem.fr> Hi Maurizio, it seems the verifier has not been updated yet to cope with value type, in the example provided by Tobias, he is using -noverify to bypass the verifier, but it crashes we starting to run the interpreter. Maybe, there is a shiboleet [1] option to pass to the VM ? R?mi [1] https://xkcd.com/806/ ----- Mail original ----- > De: "Maurizio Cimadamore" > ?: "GIACHERIO Fabien" , "Tobias Hartmann" , > valhalla-dev at openjdk.java.net > Envoy?: Lundi 24 Octobre 2016 16:16:36 > Objet: Re: Value Types - Meet some issues during execution > I too get this: > > Error: A JNI error has occurred, please check your installation and try > again > Exception in thread "main" java.lang.ClassFormatError: Method "" > in class Point has illegal signature "(II)QPoint;" > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:761) > at java.lang.ClassLoader.defineClass(ClassLoader.java:837) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:184) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:531) > at java.net.URLClassLoader.access$200(URLClassLoader.java:84) > at java.net.URLClassLoader$1.run(URLClassLoader.java:413) > at java.net.URLClassLoader$1.run(URLClassLoader.java:395) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:394) > at java.lang.ClassLoader.loadClass(ClassLoader.java:425) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:262) > at java.lang.ClassLoader.loadClass(ClassLoader.java:358) > at > sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:504) > > > I don't think this has to do with the JIT. Making the constructor public > didn't change the outcome. > > Maurizio > > > > On 24/10/16 14:56, GIACHERIO Fabien wrote: >> I tried to add the -Xint argument in order to disable compilation but it >> does not resolve the issue and the execution is still bugged. >> >> In the 'Minimal Value Types' document, It is say that : "Any use of any >> part of any feature of this prototype must originate from a class in a >> value-capable module". >> I guess my issue come from that. How can I add my class in a value-capable >> module ? >> >> Best regards, >> Fabien GIACHERIO. >> >> 2016-10-21 14:58 GMT+02:00 Tobias Hartmann : >> >>> Hi Fabien, >>> >>> the current value types prototype has still very limited JIT support (C2 >>> only) and does not support all of the new vbytecodes and functionality yet. >>> For an example of what already works, please have a look at these tests: >>> http://hg.openjdk.java.net/valhalla/valhalla/hotspot/ >>> file/tip/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java >>> Especially calls on value types are not yet working. >>> >>> If you are experimenting with value types, it's best to disable >>> compilation for now (-Xint). >>> >>> I'm actively working on this and will constantly update the tests if new >>> functionality is added. I also plan to send a summary of the implementation >>> at some point. >>> >>> Best regards, >>> Tobias >>> >>> On 21.10.2016 14:48, GIACHERIO Fabien wrote: >>>> Hi everyone, >>>> >>>> I am currently working on value types and I am trying to execute an >>> example. >>>> I can compile the class below but I meet some issues when I try to >>> execute >>>> it even if I add these arguments : >>>> -noverify >>>> -XX:-TieredCompilation >>>> -XX:-BackgroundCompilation >>>> -XX:-UseOnStackReplacement >>>> -XX:CompileCommand=compileonly,Point::* >>>> -XX:+PrintCompilation >>>> >>>> Do you have any solution ? If so, would you tell me please. >>>> >>>> Here is my code : >>>> __ByValue final class Point{ >>>> final int x; >>>> final int y; >>>> >>>> private Point(int x, int y) { >>>> this.x = x; >>>> this.y = y; >>>> } >>>> >>>> public static void hello() { >>>> Point origin = __Make Point(1,2); >>>> } >>>> >>>> public static void main(String[] args) { >>>> hello(); >>>> } >>>> } >>>> >>>> Best Regards, >>>> Fabien GIACHERIO. From vladimir.x.ivanov at oracle.com Mon Oct 24 16:32:44 2016 From: vladimir.x.ivanov at oracle.com (Vladimir Ivanov) Date: Mon, 24 Oct 2016 19:32:44 +0300 Subject: CFV: New valhalla Committer: Roland Westrelin Message-ID: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> I hereby nominate Roland Westrelin (roland) to Committer role in Project Valhalla. Roland is a long-standing JIT-compiler engineer working at Red Hat (ex-Sun/Oracle) and a well-known C2 expert with impressive list of contributions [1]. He has been experimenting with value types support and "heisenboxes" in C2. Votes are due by October, 31, 2016. Only current Valhalla Committers [1] are eligible to vote on this nomination. Votes must be cast in the open by replying to this mailing list. For Lazy Consensus voting instructions, see [2]. Best regards, Vladimir Ivanov [1] http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28roland%29 [1] http://openjdk.java.net/census#valhalla [2] http://openjdk.java.net/projects#committer-vote From maurizio.cimadamore at oracle.com Mon Oct 24 16:32:52 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Mon, 24 Oct 2016 17:32:52 +0100 Subject: Value Types - Meet some issues during execution In-Reply-To: <162235691.402045.1477326486714.JavaMail.zimbra@u-pem.fr> References: <580A10F1.7060401@oracle.com> <9704d928-e410-632b-417e-584f01e25fa2@oracle.com> <162235691.402045.1477326486714.JavaMail.zimbra@u-pem.fr> Message-ID: Tried too with verify:none and got a dump. Frederic is looking into it. Maurizio On 24/10/16 17:28, Remi Forax wrote: > Hi Maurizio, > it seems the verifier has not been updated yet to cope with value type, > in the example provided by Tobias, he is using -noverify to bypass the verifier, > but it crashes we starting to run the interpreter. > > Maybe, there is a shiboleet [1] option to pass to the VM ? > > R?mi > [1] https://xkcd.com/806/ > > ----- Mail original ----- >> De: "Maurizio Cimadamore" >> ?: "GIACHERIO Fabien" , "Tobias Hartmann" , >> valhalla-dev at openjdk.java.net >> Envoy?: Lundi 24 Octobre 2016 16:16:36 >> Objet: Re: Value Types - Meet some issues during execution >> I too get this: >> >> Error: A JNI error has occurred, please check your installation and try >> again >> Exception in thread "main" java.lang.ClassFormatError: Method "" >> in class Point has illegal signature "(II)QPoint;" >> at java.lang.ClassLoader.defineClass1(Native Method) >> at java.lang.ClassLoader.defineClass(ClassLoader.java:761) >> at java.lang.ClassLoader.defineClass(ClassLoader.java:837) >> at >> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:184) >> at java.net.URLClassLoader.defineClass(URLClassLoader.java:531) >> at java.net.URLClassLoader.access$200(URLClassLoader.java:84) >> at java.net.URLClassLoader$1.run(URLClassLoader.java:413) >> at java.net.URLClassLoader$1.run(URLClassLoader.java:395) >> at java.security.AccessController.doPrivileged(Native Method) >> at java.net.URLClassLoader.findClass(URLClassLoader.java:394) >> at java.lang.ClassLoader.loadClass(ClassLoader.java:425) >> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:262) >> at java.lang.ClassLoader.loadClass(ClassLoader.java:358) >> at >> sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:504) >> >> >> I don't think this has to do with the JIT. Making the constructor public >> didn't change the outcome. >> >> Maurizio >> >> >> >> On 24/10/16 14:56, GIACHERIO Fabien wrote: >>> I tried to add the -Xint argument in order to disable compilation but it >>> does not resolve the issue and the execution is still bugged. >>> >>> In the 'Minimal Value Types' document, It is say that : "Any use of any >>> part of any feature of this prototype must originate from a class in a >>> value-capable module". >>> I guess my issue come from that. How can I add my class in a value-capable >>> module ? >>> >>> Best regards, >>> Fabien GIACHERIO. >>> >>> 2016-10-21 14:58 GMT+02:00 Tobias Hartmann : >>> >>>> Hi Fabien, >>>> >>>> the current value types prototype has still very limited JIT support (C2 >>>> only) and does not support all of the new vbytecodes and functionality yet. >>>> For an example of what already works, please have a look at these tests: >>>> http://hg.openjdk.java.net/valhalla/valhalla/hotspot/ >>>> file/tip/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java >>>> Especially calls on value types are not yet working. >>>> >>>> If you are experimenting with value types, it's best to disable >>>> compilation for now (-Xint). >>>> >>>> I'm actively working on this and will constantly update the tests if new >>>> functionality is added. I also plan to send a summary of the implementation >>>> at some point. >>>> >>>> Best regards, >>>> Tobias >>>> >>>> On 21.10.2016 14:48, GIACHERIO Fabien wrote: >>>>> Hi everyone, >>>>> >>>>> I am currently working on value types and I am trying to execute an >>>> example. >>>>> I can compile the class below but I meet some issues when I try to >>>> execute >>>>> it even if I add these arguments : >>>>> -noverify >>>>> -XX:-TieredCompilation >>>>> -XX:-BackgroundCompilation >>>>> -XX:-UseOnStackReplacement >>>>> -XX:CompileCommand=compileonly,Point::* >>>>> -XX:+PrintCompilation >>>>> >>>>> Do you have any solution ? If so, would you tell me please. >>>>> >>>>> Here is my code : >>>>> __ByValue final class Point{ >>>>> final int x; >>>>> final int y; >>>>> >>>>> private Point(int x, int y) { >>>>> this.x = x; >>>>> this.y = y; >>>>> } >>>>> >>>>> public static void hello() { >>>>> Point origin = __Make Point(1,2); >>>>> } >>>>> >>>>> public static void main(String[] args) { >>>>> hello(); >>>>> } >>>>> } >>>>> >>>>> Best Regards, >>>>> Fabien GIACHERIO. From vladimir.x.ivanov at oracle.com Mon Oct 24 16:33:28 2016 From: vladimir.x.ivanov at oracle.com (Vladimir Ivanov) Date: Mon, 24 Oct 2016 19:33:28 +0300 Subject: CFV: New valhalla Committer: Roland Westrelin In-Reply-To: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> References: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> Message-ID: <05972296-6802-ab6c-a430-047e91c9f7bb@oracle.com> Vote: yes Best regards, Vladimir Ivanov On 10/24/16 7:32 PM, Vladimir Ivanov wrote: > I hereby nominate Roland Westrelin > (roland) to Committer role in Project Valhalla. From brian.goetz at oracle.com Mon Oct 24 16:38:21 2016 From: brian.goetz at oracle.com (Brian Goetz) Date: Mon, 24 Oct 2016 12:38:21 -0400 Subject: CFV: New valhalla Committer: Roland Westrelin In-Reply-To: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> References: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> Message-ID: <8f38ab27-467d-107b-134b-fbd11b2631dc@oracle.com> Vote: yes On 10/24/2016 12:32 PM, Vladimir Ivanov wrote: > I hereby nominate Roland Westrelin > (roland) to Committer role in Project Valhalla. > > Roland is a long-standing JIT-compiler engineer working at Red Hat > (ex-Sun/Oracle) and a well-known C2 expert with impressive list of > contributions [1]. > > He has been experimenting with value types support and "heisenboxes" > in C2. > > Votes are due by October, 31, 2016. > > Only current Valhalla Committers [1] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [2]. > > Best regards, > Vladimir Ivanov > > [1] > http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28roland%29 > [1] http://openjdk.java.net/census#valhalla > [2] http://openjdk.java.net/projects#committer-vote From vladimir.x.ivanov at oracle.com Mon Oct 24 16:39:55 2016 From: vladimir.x.ivanov at oracle.com (Vladimir Ivanov) Date: Mon, 24 Oct 2016 19:39:55 +0300 Subject: CFV: New Valhalla Committer: Zoltan Majo Message-ID: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> I hereby nominate Zoltan Majo (zmajo) to Committer role in Project Valhalla. Zoltan is a member of Hotspot JVM Compiler group, contributing to C1/C2 since 2014. He is a Reviewer in JDK9 project. Zoltan participates in design & implementation of JIT-compiler support for value types. Votes are due by October, 31, 2016. Only current Valhalla Committers [2] are eligible to vote on this nomination. Votes must be cast in the open by replying to this mailing list. For Lazy Consensus voting instructions, see [3]. Best regards, Vladimir Ivanov [1] http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28zmajo%29 [2] http://openjdk.java.net/census#valhalla [3] http://openjdk.java.net/projects#committer-vote From vladimir.x.ivanov at oracle.com Mon Oct 24 16:40:30 2016 From: vladimir.x.ivanov at oracle.com (Vladimir Ivanov) Date: Mon, 24 Oct 2016 19:40:30 +0300 Subject: CFV: New Valhalla Committer: Zoltan Majo In-Reply-To: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> References: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> Message-ID: <308abb2f-40d5-bb52-24b6-efc909625b94@oracle.com> Vote: yes Best regards, Vladimir Ivanov On 10/24/16 7:39 PM, Vladimir Ivanov wrote: > I hereby nominate Zoltan Majo > (zmajo) to Committer role in Project Valhalla. From brian.goetz at oracle.com Mon Oct 24 16:40:44 2016 From: brian.goetz at oracle.com (Brian Goetz) Date: Mon, 24 Oct 2016 12:40:44 -0400 Subject: CFV: New Valhalla Committer: Zoltan Majo In-Reply-To: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> References: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> Message-ID: <63bd766f-a2d6-2bb8-c864-911b143c6a2b@oracle.com> Vote: Yes On 10/24/2016 12:39 PM, Vladimir Ivanov wrote: > I hereby nominate Zoltan Majo > (zmajo) to Committer role in Project Valhalla. > > Zoltan is a member of Hotspot JVM Compiler group, contributing to > C1/C2 since 2014. He is a Reviewer in JDK9 project. > > Zoltan participates in design & implementation of JIT-compiler support > for value types. > > Votes are due by October, 31, 2016. > > Only current Valhalla Committers [2] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [3]. > > Best regards, > Vladimir Ivanov > > [1] > http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28zmajo%29 > [2] http://openjdk.java.net/census#valhalla > [3] http://openjdk.java.net/projects#committer-vote From frederic.parain at oracle.com Mon Oct 24 17:26:11 2016 From: frederic.parain at oracle.com (Frederic Parain) Date: Mon, 24 Oct 2016 13:26:11 -0400 Subject: Value Types - Meet some issues during execution In-Reply-To: References: <580A10F1.7060401@oracle.com> <9704d928-e410-632b-417e-584f01e25fa2@oracle.com> <162235691.402045.1477326486714.JavaMail.zimbra@u-pem.fr> Message-ID: <6e848f82-bee8-5dc5-bf9c-f88deae572ba@oracle.com> The verifier has not been updated to take into account value types, and there's currently no plan to fix it until the syntax and the semantic of value types have been finalized. There's a bug in the interpreter that causes the crash seen by Maurizio (we used a different code pattern to generate value types in our tests, so we missed it). I'll push the fix for it today. Fred On 10/24/2016 12:32 PM, Maurizio Cimadamore wrote: > Tried too with verify:none and got a dump. Frederic is looking into it. > > Maurizio > > > On 24/10/16 17:28, Remi Forax wrote: >> Hi Maurizio, >> it seems the verifier has not been updated yet to cope with value type, >> in the example provided by Tobias, he is using -noverify to bypass the >> verifier, >> but it crashes we starting to run the interpreter. >> >> Maybe, there is a shiboleet [1] option to pass to the VM ? >> >> R?mi >> [1] https://xkcd.com/806/ >> >> ----- Mail original ----- >>> De: "Maurizio Cimadamore" >>> ?: "GIACHERIO Fabien" , "Tobias Hartmann" >>> , >>> valhalla-dev at openjdk.java.net >>> Envoy?: Lundi 24 Octobre 2016 16:16:36 >>> Objet: Re: Value Types - Meet some issues during execution >>> I too get this: >>> >>> Error: A JNI error has occurred, please check your installation and try >>> again >>> Exception in thread "main" java.lang.ClassFormatError: Method "" >>> in class Point has illegal signature "(II)QPoint;" >>> at java.lang.ClassLoader.defineClass1(Native Method) >>> at java.lang.ClassLoader.defineClass(ClassLoader.java:761) >>> at java.lang.ClassLoader.defineClass(ClassLoader.java:837) >>> at >>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:184) >>> at java.net.URLClassLoader.defineClass(URLClassLoader.java:531) >>> at java.net.URLClassLoader.access$200(URLClassLoader.java:84) >>> at java.net.URLClassLoader$1.run(URLClassLoader.java:413) >>> at java.net.URLClassLoader$1.run(URLClassLoader.java:395) >>> at java.security.AccessController.doPrivileged(Native Method) >>> at java.net.URLClassLoader.findClass(URLClassLoader.java:394) >>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425) >>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:262) >>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358) >>> at >>> sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:504) >>> >>> >>> I don't think this has to do with the JIT. Making the constructor public >>> didn't change the outcome. >>> >>> Maurizio >>> >>> >>> >>> On 24/10/16 14:56, GIACHERIO Fabien wrote: >>>> I tried to add the -Xint argument in order to disable compilation >>>> but it >>>> does not resolve the issue and the execution is still bugged. >>>> >>>> In the 'Minimal Value Types' document, It is say that : "Any use of any >>>> part of any feature of this prototype must originate from a class in a >>>> value-capable module". >>>> I guess my issue come from that. How can I add my class in a >>>> value-capable >>>> module ? >>>> >>>> Best regards, >>>> Fabien GIACHERIO. >>>> >>>> 2016-10-21 14:58 GMT+02:00 Tobias Hartmann >>>> : >>>> >>>>> Hi Fabien, >>>>> >>>>> the current value types prototype has still very limited JIT >>>>> support (C2 >>>>> only) and does not support all of the new vbytecodes and >>>>> functionality yet. >>>>> For an example of what already works, please have a look at these >>>>> tests: >>>>> http://hg.openjdk.java.net/valhalla/valhalla/hotspot/ >>>>> file/tip/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java >>>>> Especially calls on value types are not yet working. >>>>> >>>>> If you are experimenting with value types, it's best to disable >>>>> compilation for now (-Xint). >>>>> >>>>> I'm actively working on this and will constantly update the tests >>>>> if new >>>>> functionality is added. I also plan to send a summary of the >>>>> implementation >>>>> at some point. >>>>> >>>>> Best regards, >>>>> Tobias >>>>> >>>>> On 21.10.2016 14:48, GIACHERIO Fabien wrote: >>>>>> Hi everyone, >>>>>> >>>>>> I am currently working on value types and I am trying to execute an >>>>> example. >>>>>> I can compile the class below but I meet some issues when I try to >>>>> execute >>>>>> it even if I add these arguments : >>>>>> -noverify >>>>>> -XX:-TieredCompilation >>>>>> -XX:-BackgroundCompilation >>>>>> -XX:-UseOnStackReplacement >>>>>> -XX:CompileCommand=compileonly,Point::* >>>>>> -XX:+PrintCompilation >>>>>> >>>>>> Do you have any solution ? If so, would you tell me please. >>>>>> >>>>>> Here is my code : >>>>>> __ByValue final class Point{ >>>>>> final int x; >>>>>> final int y; >>>>>> >>>>>> private Point(int x, int y) { >>>>>> this.x = x; >>>>>> this.y = y; >>>>>> } >>>>>> >>>>>> public static void hello() { >>>>>> Point origin = __Make Point(1,2); >>>>>> } >>>>>> >>>>>> public static void main(String[] args) { >>>>>> hello(); >>>>>> } >>>>>> } >>>>>> >>>>>> Best Regards, >>>>>> Fabien GIACHERIO. > From frederic.parain at oracle.com Mon Oct 24 17:26:47 2016 From: frederic.parain at oracle.com (Frederic Parain) Date: Mon, 24 Oct 2016 13:26:47 -0400 Subject: CFV: New valhalla Committer: Roland Westrelin In-Reply-To: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> References: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> Message-ID: <9d996d7f-4ca9-7f07-6a38-253402ced151@oracle.com> Vote: yes Fred On 10/24/2016 12:32 PM, Vladimir Ivanov wrote: > I hereby nominate Roland Westrelin > (roland) to Committer role in Project Valhalla. > > Roland is a long-standing JIT-compiler engineer working at Red Hat > (ex-Sun/Oracle) and a well-known C2 expert with impressive list of > contributions [1]. > > He has been experimenting with value types support and "heisenboxes" in C2. > > Votes are due by October, 31, 2016. > > Only current Valhalla Committers [1] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [2]. > > Best regards, > Vladimir Ivanov > > [1] > http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28roland%29 > > [1] http://openjdk.java.net/census#valhalla > [2] http://openjdk.java.net/projects#committer-vote From frederic.parain at oracle.com Mon Oct 24 17:27:20 2016 From: frederic.parain at oracle.com (Frederic Parain) Date: Mon, 24 Oct 2016 13:27:20 -0400 Subject: CFV: New Valhalla Committer: Zoltan Majo In-Reply-To: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> References: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> Message-ID: <0f3fe951-ab7c-cf72-d8df-3491edc638eb@oracle.com> Vote: yes Fred On 10/24/2016 12:39 PM, Vladimir Ivanov wrote: > I hereby nominate Zoltan Majo > (zmajo) to Committer role in Project Valhalla. > > Zoltan is a member of Hotspot JVM Compiler group, contributing to C1/C2 > since 2014. He is a Reviewer in JDK9 project. > > Zoltan participates in design & implementation of JIT-compiler support > for value types. > > Votes are due by October, 31, 2016. > > Only current Valhalla Committers [2] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [3]. > > Best regards, > Vladimir Ivanov > > [1] > http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28zmajo%29 > > [2] http://openjdk.java.net/census#valhalla > [3] http://openjdk.java.net/projects#committer-vote From maurizio.cimadamore at oracle.com Mon Oct 24 17:27:26 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Mon, 24 Oct 2016 18:27:26 +0100 Subject: CFV: New valhalla Committer: Roland Westrelin In-Reply-To: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> References: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> Message-ID: <0fb82c32-9fc9-23af-f011-4013f9901b0b@oracle.com> Vote: yes Maurizio On 24/10/16 17:32, Vladimir Ivanov wrote: > I hereby nominate Roland Westrelin > (roland) to Committer role in Project Valhalla. > > Roland is a long-standing JIT-compiler engineer working at Red Hat > (ex-Sun/Oracle) and a well-known C2 expert with impressive list of > contributions [1]. > > He has been experimenting with value types support and "heisenboxes" > in C2. > > Votes are due by October, 31, 2016. > > Only current Valhalla Committers [1] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [2]. > > Best regards, > Vladimir Ivanov > > [1] > http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28roland%29 > [1] http://openjdk.java.net/census#valhalla > [2] http://openjdk.java.net/projects#committer-vote From maurizio.cimadamore at oracle.com Mon Oct 24 17:27:46 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Mon, 24 Oct 2016 18:27:46 +0100 Subject: CFV: New Valhalla Committer: Zoltan Majo In-Reply-To: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> References: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> Message-ID: <1080f720-b7f1-3a7c-a432-07e537b65480@oracle.com> Vote: yes Maurizio On 24/10/16 17:39, Vladimir Ivanov wrote: > I hereby nominate Zoltan Majo > (zmajo) to Committer role in Project Valhalla. > > Zoltan is a member of Hotspot JVM Compiler group, contributing to > C1/C2 since 2014. He is a Reviewer in JDK9 project. > > Zoltan participates in design & implementation of JIT-compiler support > for value types. > > Votes are due by October, 31, 2016. > > Only current Valhalla Committers [2] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [3]. > > Best regards, > Vladimir Ivanov > > [1] > http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28zmajo%29 > [2] http://openjdk.java.net/census#valhalla > [3] http://openjdk.java.net/projects#committer-vote From maurizio.cimadamore at oracle.com Mon Oct 24 17:31:03 2016 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Mon, 24 Oct 2016 18:31:03 +0100 Subject: Result: New Committer: Tobias Hartmann Message-ID: <61b37006-c5e6-89e6-9b54-ba1e57aece2c@oracle.com> Voting for Tobias Hartmann [1] is now closed. Yes: 6 Veto: 0 Abstain: 0 According to the Bylaws definition of Lazy Consensus, this is sufficient to approve the nomination. Maurizio [1] http://mail.openjdk.java.net/pipermail/valhalla-dev/2016-October/002014.html From karen.kinnear at oracle.com Mon Oct 24 17:31:13 2016 From: karen.kinnear at oracle.com (Karen Kinnear) Date: Mon, 24 Oct 2016 10:31:13 -0700 Subject: CFV: New valhalla Committer: Roland Westrelin In-Reply-To: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> References: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> Message-ID: Vote: yes Delighted to have you, Karen > On Oct 24, 2016, at 9:32 AM, Vladimir Ivanov wrote: > > I hereby nominate Roland Westrelin > (roland) to Committer role in Project Valhalla. > > Roland is a long-standing JIT-compiler engineer working at Red Hat (ex-Sun/Oracle) and a well-known C2 expert with impressive list of contributions [1]. > > He has been experimenting with value types support and "heisenboxes" in C2. > > Votes are due by October, 31, 2016. > > Only current Valhalla Committers [1] are eligible to vote on this nomination. Votes must be cast in the open by replying to this mailing list. > > For Lazy Consensus voting instructions, see [2]. > > Best regards, > Vladimir Ivanov > > [1] http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28roland%29 > [1] http://openjdk.java.net/census#valhalla > [2] http://openjdk.java.net/projects#committer-vote From karen.kinnear at oracle.com Mon Oct 24 17:31:48 2016 From: karen.kinnear at oracle.com (Karen Kinnear) Date: Mon, 24 Oct 2016 10:31:48 -0700 Subject: CFV: New Valhalla Committer: Zoltan Majo In-Reply-To: <63bd766f-a2d6-2bb8-c864-911b143c6a2b@oracle.com> References: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> <63bd766f-a2d6-2bb8-c864-911b143c6a2b@oracle.com> Message-ID: <21A1B2B0-0A80-4DB0-8208-4AD54BE129E7@oracle.com> Vote: yes Karen > On Oct 24, 2016, at 9:40 AM, Brian Goetz wrote: > > Vote: Yes > >> On 10/24/2016 12:39 PM, Vladimir Ivanov wrote: >> I hereby nominate Zoltan Majo >> (zmajo) to Committer role in Project Valhalla. >> >> Zoltan is a member of Hotspot JVM Compiler group, contributing to C1/C2 since 2014. He is a Reviewer in JDK9 project. >> >> Zoltan participates in design & implementation of JIT-compiler support for value types. >> >> Votes are due by October, 31, 2016. >> >> Only current Valhalla Committers [2] are eligible to vote on this nomination. Votes must be cast in the open by replying to this mailing list. >> >> For Lazy Consensus voting instructions, see [3]. >> >> Best regards, >> Vladimir Ivanov >> >> [1] http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28zmajo%29 >> [2] http://openjdk.java.net/census#valhalla >> [3] http://openjdk.java.net/projects#committer-vote > From frederic.parain at oracle.com Mon Oct 24 17:56:41 2016 From: frederic.parain at oracle.com (frederic.parain at oracle.com) Date: Mon, 24 Oct 2016 17:56:41 +0000 Subject: hg: valhalla/valhalla/hotspot: Summary: SP is passed incorrectly in vnew Message-ID: <201610241756.u9OHuf4W026525@aojmv0008.oracle.com> Changeset: 5c4a445e2687 Author: fparain Date: 2016-10-24 13:54 -0400 URL: http://hg.openjdk.java.net/valhalla/valhalla/hotspot/rev/5c4a445e2687 Summary: SP is passed incorrectly in vnew ! src/cpu/x86/vm/templateTable_x86.cpp ! src/share/vm/interpreter/interpreterRuntime.cpp From frederic.parain at oracle.com Mon Oct 24 17:58:32 2016 From: frederic.parain at oracle.com (Frederic Parain) Date: Mon, 24 Oct 2016 13:58:32 -0400 Subject: Value Types - Meet some issues during execution In-Reply-To: <6e848f82-bee8-5dc5-bf9c-f88deae572ba@oracle.com> References: <580A10F1.7060401@oracle.com> <9704d928-e410-632b-417e-584f01e25fa2@oracle.com> <162235691.402045.1477326486714.JavaMail.zimbra@u-pem.fr> <6e848f82-bee8-5dc5-bf9c-f88deae572ba@oracle.com> Message-ID: The fix has been pushed. Let me know if it doesn't fix your problem. Regards, Fred On 10/24/2016 01:26 PM, Frederic Parain wrote: > The verifier has not been updated to take into account value types, > and there's currently no plan to fix it until the syntax and the > semantic of value types have been finalized. > > There's a bug in the interpreter that causes the crash seen by Maurizio > (we used a different code pattern to generate value types in our tests, > so we missed it). I'll push the fix for it today. > > Fred > > On 10/24/2016 12:32 PM, Maurizio Cimadamore wrote: >> Tried too with verify:none and got a dump. Frederic is looking into it. >> >> Maurizio >> >> >> On 24/10/16 17:28, Remi Forax wrote: >>> Hi Maurizio, >>> it seems the verifier has not been updated yet to cope with value type, >>> in the example provided by Tobias, he is using -noverify to bypass the >>> verifier, >>> but it crashes we starting to run the interpreter. >>> >>> Maybe, there is a shiboleet [1] option to pass to the VM ? >>> >>> R?mi >>> [1] https://xkcd.com/806/ >>> >>> ----- Mail original ----- >>>> De: "Maurizio Cimadamore" >>>> ?: "GIACHERIO Fabien" , "Tobias Hartmann" >>>> , >>>> valhalla-dev at openjdk.java.net >>>> Envoy?: Lundi 24 Octobre 2016 16:16:36 >>>> Objet: Re: Value Types - Meet some issues during execution >>>> I too get this: >>>> >>>> Error: A JNI error has occurred, please check your installation and try >>>> again >>>> Exception in thread "main" java.lang.ClassFormatError: Method >>>> "" >>>> in class Point has illegal signature "(II)QPoint;" >>>> at java.lang.ClassLoader.defineClass1(Native Method) >>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:761) >>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:837) >>>> at >>>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:184) >>>> at java.net.URLClassLoader.defineClass(URLClassLoader.java:531) >>>> at java.net.URLClassLoader.access$200(URLClassLoader.java:84) >>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:413) >>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:395) >>>> at java.security.AccessController.doPrivileged(Native Method) >>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:394) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425) >>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:262) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:358) >>>> at >>>> sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:504) >>>> >>>> >>>> I don't think this has to do with the JIT. Making the constructor >>>> public >>>> didn't change the outcome. >>>> >>>> Maurizio >>>> >>>> >>>> >>>> On 24/10/16 14:56, GIACHERIO Fabien wrote: >>>>> I tried to add the -Xint argument in order to disable compilation >>>>> but it >>>>> does not resolve the issue and the execution is still bugged. >>>>> >>>>> In the 'Minimal Value Types' document, It is say that : "Any use of >>>>> any >>>>> part of any feature of this prototype must originate from a class in a >>>>> value-capable module". >>>>> I guess my issue come from that. How can I add my class in a >>>>> value-capable >>>>> module ? >>>>> >>>>> Best regards, >>>>> Fabien GIACHERIO. >>>>> >>>>> 2016-10-21 14:58 GMT+02:00 Tobias Hartmann >>>>> : >>>>> >>>>>> Hi Fabien, >>>>>> >>>>>> the current value types prototype has still very limited JIT >>>>>> support (C2 >>>>>> only) and does not support all of the new vbytecodes and >>>>>> functionality yet. >>>>>> For an example of what already works, please have a look at these >>>>>> tests: >>>>>> http://hg.openjdk.java.net/valhalla/valhalla/hotspot/ >>>>>> file/tip/test/compiler/valhalla/valuetypes/ValueTypeTestBench.java >>>>>> Especially calls on value types are not yet working. >>>>>> >>>>>> If you are experimenting with value types, it's best to disable >>>>>> compilation for now (-Xint). >>>>>> >>>>>> I'm actively working on this and will constantly update the tests >>>>>> if new >>>>>> functionality is added. I also plan to send a summary of the >>>>>> implementation >>>>>> at some point. >>>>>> >>>>>> Best regards, >>>>>> Tobias >>>>>> >>>>>> On 21.10.2016 14:48, GIACHERIO Fabien wrote: >>>>>>> Hi everyone, >>>>>>> >>>>>>> I am currently working on value types and I am trying to execute an >>>>>> example. >>>>>>> I can compile the class below but I meet some issues when I try to >>>>>> execute >>>>>>> it even if I add these arguments : >>>>>>> -noverify >>>>>>> -XX:-TieredCompilation >>>>>>> -XX:-BackgroundCompilation >>>>>>> -XX:-UseOnStackReplacement >>>>>>> -XX:CompileCommand=compileonly,Point::* >>>>>>> -XX:+PrintCompilation >>>>>>> >>>>>>> Do you have any solution ? If so, would you tell me please. >>>>>>> >>>>>>> Here is my code : >>>>>>> __ByValue final class Point{ >>>>>>> final int x; >>>>>>> final int y; >>>>>>> >>>>>>> private Point(int x, int y) { >>>>>>> this.x = x; >>>>>>> this.y = y; >>>>>>> } >>>>>>> >>>>>>> public static void hello() { >>>>>>> Point origin = __Make Point(1,2); >>>>>>> } >>>>>>> >>>>>>> public static void main(String[] args) { >>>>>>> hello(); >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> Best Regards, >>>>>>> Fabien GIACHERIO. >> From paul.sandoz at oracle.com Mon Oct 24 18:07:43 2016 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Mon, 24 Oct 2016 11:07:43 -0700 Subject: CFV: New valhalla Committer: Roland Westrelin In-Reply-To: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> References: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> Message-ID: <8B2634C7-98D8-471C-8752-AB27BFF4C831@oracle.com> Vote: yes Paul. From paul.sandoz at oracle.com Mon Oct 24 18:08:26 2016 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Mon, 24 Oct 2016 11:08:26 -0700 Subject: CFV: New Valhalla Committer: Zoltan Majo In-Reply-To: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> References: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> Message-ID: <80A464E0-A43F-46CE-96A0-3FBF536A1762@oracle.com> Vote: yes Paul. From john.r.rose at oracle.com Mon Oct 24 18:43:52 2016 From: john.r.rose at oracle.com (John Rose) Date: Mon, 24 Oct 2016 11:43:52 -0700 Subject: CFV: New valhalla Committer: Roland Westrelin In-Reply-To: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> References: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> Message-ID: <5A91A771-507F-4689-B2EF-166C5A143059@oracle.com> Vote: yes On Oct 24, 2016, at 9:32 AM, Vladimir Ivanov wrote: > > I hereby nominate Roland Westrelin > (roland) to Committer role in Project Valhalla. From john.r.rose at oracle.com Mon Oct 24 18:44:05 2016 From: john.r.rose at oracle.com (John Rose) Date: Mon, 24 Oct 2016 11:44:05 -0700 Subject: CFV: New Valhalla Committer: Zoltan Majo In-Reply-To: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> References: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> Message-ID: <09CCB83D-06B3-4AC1-8CAC-D6E52281D299@oracle.com> Vote: yes On Oct 24, 2016, at 9:39 AM, Vladimir Ivanov wrote: > > I hereby nominate Zoltan Majo > (zmajo) to Committer role in Project Valhalla. From tobias.hartmann at oracle.com Tue Oct 25 08:16:21 2016 From: tobias.hartmann at oracle.com (Tobias Hartmann) Date: Tue, 25 Oct 2016 10:16:21 +0200 Subject: CFV: New valhalla Committer: Roland Westrelin In-Reply-To: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> References: <06f7a5d2-fd15-a125-9728-30397ccaf4d1@oracle.com> Message-ID: <580F14D5.2050003@oracle.com> Vote: yes Best regards, Tobias On 24.10.2016 18:32, Vladimir Ivanov wrote: > I hereby nominate Roland Westrelin > (roland) to Committer role in Project Valhalla. > > Roland is a long-standing JIT-compiler engineer working at Red Hat (ex-Sun/Oracle) and a well-known C2 expert with impressive list of contributions [1]. > > He has been experimenting with value types support and "heisenboxes" in C2. > > Votes are due by October, 31, 2016. > > Only current Valhalla Committers [1] are eligible to vote on this nomination. Votes must be cast in the open by replying to this mailing list. > > For Lazy Consensus voting instructions, see [2]. > > Best regards, > Vladimir Ivanov > > [1] http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28roland%29 > [1] http://openjdk.java.net/census#valhalla > [2] http://openjdk.java.net/projects#committer-vote From tobias.hartmann at oracle.com Tue Oct 25 08:16:41 2016 From: tobias.hartmann at oracle.com (Tobias Hartmann) Date: Tue, 25 Oct 2016 10:16:41 +0200 Subject: CFV: New Valhalla Committer: Zoltan Majo In-Reply-To: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> References: <91b65e57-e139-586b-e62f-94ed65d066b1@oracle.com> Message-ID: <580F14E9.7070607@oracle.com> Vote: yes Best regards, Tobias On 24.10.2016 18:39, Vladimir Ivanov wrote: > I hereby nominate Zoltan Majo > (zmajo) to Committer role in Project Valhalla. > > Zoltan is a member of Hotspot JVM Compiler group, contributing to C1/C2 since 2014. He is a Reviewer in JDK9 project. > > Zoltan participates in design & implementation of JIT-compiler support for value types. > > Votes are due by October, 31, 2016. > > Only current Valhalla Committers [2] are eligible to vote on this nomination. Votes must be cast in the open by replying to this mailing list. > > For Lazy Consensus voting instructions, see [3]. > > Best regards, > Vladimir Ivanov > > [1] http://hg.openjdk.java.net/jdk9/jdk9/hotspot/log?revcount=1000&rev=author%28zmajo%29 > [2] http://openjdk.java.net/census#valhalla > [3] http://openjdk.java.net/projects#committer-vote From vladimir.x.ivanov at oracle.com Mon Oct 31 15:07:53 2016 From: vladimir.x.ivanov at oracle.com (Vladimir Ivanov) Date: Mon, 31 Oct 2016 18:07:53 +0300 Subject: Result: New Valhalla Committer: Zoltan Majo Message-ID: <21cdf07c-decc-76f8-5d3c-b81ceacc4934@oracle.com> Voting for Zoltan Majo [1] is now closed. Yes: 8 Veto: 0 Abstain: 0 According to the Bylaws definition of Lazy Consensus, this is sufficient to approve the nomination. Best regards, Vladimir Ivanov [1] http://mail.openjdk.java.net/pipermail/valhalla-dev/2016-October/002036.html From vladimir.x.ivanov at oracle.com Mon Oct 31 15:08:46 2016 From: vladimir.x.ivanov at oracle.com (Vladimir Ivanov) Date: Mon, 31 Oct 2016 18:08:46 +0300 Subject: Result: New Valhalla Committer: Roland Westrelin Message-ID: <759e7c02-dbf6-97fa-7601-24a260bbe346@oracle.com> Voting for Roland Westrelin [1] is now closed. Yes: 8 Veto: 0 Abstain: 0 According to the Bylaws definition of Lazy Consensus, this is sufficient to approve the nomination. Best regards, Vladimir Ivanov [1] http://mail.openjdk.java.net/pipermail/valhalla-dev/2016-October/002032.html