From stefan.karlsson at oracle.com Tue Jan 2 15:16:29 2018 From: stefan.karlsson at oracle.com (stefan.karlsson at oracle.com) Date: Tue, 02 Jan 2018 15:16:29 +0000 Subject: hg: zgc/zgc: ZGC: Clean up some platform dependent code in shared directories Message-ID: <201801021516.w02FGTrj028512@aojmv0008.oracle.com> Changeset: 59c07aef65ac Author: stefank Date: 2018-01-02 15:41 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/59c07aef65ac ZGC: Clean up some platform dependent code in shared directories Reviewed-by: pliden, eosterlund ! src/hotspot/cpu/x86/c1_Runtime1_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/share/gc/z/zLargePages.cpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/opto/memnode.cpp ! test/hotspot/gtest/gc/z/test_zPhysicalMemory.cpp From per.liden at oracle.com Mon Jan 8 14:58:37 2018 From: per.liden at oracle.com (Per Liden) Date: Mon, 8 Jan 2018 15:58:37 +0100 Subject: RFR: Avoid superfluous proactive GCs Message-ID: <888ae025-fc4c-7985-5c61-bd72bd9b08dd@oracle.com> When running applications with a very small live-set and very low allocation rate there's a tendency to do proactive GCs a little too often. An idling jshell instance is an example of an application where this can be seen, where we're doing GCs like every 5 second or so, which is just annoying. With this patch we only consider doing proactive GCs if the app has eaten some memory (at least 10%) or enough time has passed (5 min). http://cr.openjdk.java.net/~pliden/zgc/avoid_superfluous_proactive_gcs/webrev.0/ cheers, Per From erik.osterlund at oracle.com Tue Jan 9 09:29:41 2018 From: erik.osterlund at oracle.com (=?UTF-8?Q?Erik_=c3=96sterlund?=) Date: Tue, 9 Jan 2018 10:29:41 +0100 Subject: RFR: Avoid superfluous proactive GCs In-Reply-To: <888ae025-fc4c-7985-5c61-bd72bd9b08dd@oracle.com> References: <888ae025-fc4c-7985-5c61-bd72bd9b08dd@oracle.com> Message-ID: <5A548B85.10907@oracle.com> Hi Per, Looks good. /Erik On 2018-01-08 15:58, Per Liden wrote: > When running applications with a very small live-set and very low > allocation rate there's a tendency to do proactive GCs a little too > often. An idling jshell instance is an example of an application where > this can be seen, where we're doing GCs like every 5 second or so, > which is just annoying. With this patch we only consider doing > proactive GCs if the app has eaten some memory (at least 10%) or > enough time has passed (5 min). > > http://cr.openjdk.java.net/~pliden/zgc/avoid_superfluous_proactive_gcs/webrev.0/ > > > cheers, > Per From per.liden at oracle.com Tue Jan 9 09:33:01 2018 From: per.liden at oracle.com (Per Liden) Date: Tue, 9 Jan 2018 10:33:01 +0100 Subject: RFR: Avoid superfluous proactive GCs In-Reply-To: <5A548B85.10907@oracle.com> References: <888ae025-fc4c-7985-5c61-bd72bd9b08dd@oracle.com> <5A548B85.10907@oracle.com> Message-ID: <7054c840-15a9-2cc9-29dc-aa54c47a4b23@oracle.com> Thanks Erik! /Per On 2018-01-09 10:29, Erik ?sterlund wrote: > Hi Per, > > Looks good. > > /Erik > > On 2018-01-08 15:58, Per Liden wrote: >> When running applications with a very small live-set and very low >> allocation rate there's a tendency to do proactive GCs a little too >> often. An idling jshell instance is an example of an application where >> this can be seen, where we're doing GCs like every 5 second or so, >> which is just annoying. With this patch we only consider doing >> proactive GCs if the app has eaten some memory (at least 10%) or >> enough time has passed (5 min). >> >> http://cr.openjdk.java.net/~pliden/zgc/avoid_superfluous_proactive_gcs/webrev.0/ >> >> >> cheers, >> Per > From stefan.karlsson at oracle.com Tue Jan 9 09:36:35 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Tue, 9 Jan 2018 10:36:35 +0100 Subject: SA for ZGC In-Reply-To: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> Message-ID: Hi Yasumasa, Thanks for your contribution! I tested your patch together with jhsdb hsdb and immediately hit problems because of the lack of load barriers in the SA code. Let me try to create an initial prototype for load barriers in the SA case and see where this takes us. FYI i also found that compressed oops are not fully supported in the SA: https://bugs.openjdk.java.net/browse/JDK-8194737 Thanks, StefanK On 2017-12-21 23:38, Yasumasa Suenaga wrote: > Thanks Per! > > I'm waiting for comments and sponsorship. > > > Yasumasa > > > On 2017/12/22 4:33, Per Liden wrote: >> Hi Yasumasa, >> >> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>> Hi all, >>> >>> I checked SA implementation for ZGC, but it is not yet available. >>> For example, we can see WrongTypeException when CLHSDB `universe` >>> command is executed. >>> >>> As the first step, I propose to implement ZCollectedHeap and related >>> classes for >>> ? SA as this webrev: >>> >>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>> >>> After applying this patch, we can use `universe` command on CLHSDB. >>> (I followed `VM.info` jcmd output format) >> >> Thanks! Most of us working on ZGC are currently on vacation, but we'll >> have a closer look at the patch after the holidays. >> >> cheers, >> Per >> >>> >>> Of course, it is not all. We need to work more for it. >>> >>> >>> Thanks, >>> >>> Yasumasa >>> From per.liden at oracle.com Tue Jan 9 10:29:53 2018 From: per.liden at oracle.com (per.liden at oracle.com) Date: Tue, 09 Jan 2018 10:29:53 +0000 Subject: hg: zgc/zgc: ZGC: Avoid superfluous proactive GCs Message-ID: <201801091029.w09ATrNO007731@aojmv0008.oracle.com> Changeset: c0d0a974b743 Author: pliden Date: 2018-01-08 16:01 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c0d0a974b743 ZGC: Avoid superfluous proactive GCs ! src/hotspot/share/gc/z/zDirector.cpp From yasuenag at gmail.com Tue Jan 9 12:59:25 2018 From: yasuenag at gmail.com (Yasumasa Suenaga) Date: Tue, 9 Jan 2018 21:59:25 +0900 Subject: SA for ZGC In-Reply-To: References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> Message-ID: Hi Stefan, > Let me try to create an initial prototype for load barriers in the SA case and see where this takes us. Sure! > FYI i also found that compressed oops are not fully supported in the SA: > https://bugs.openjdk.java.net/browse/JDK-8194737 Thanks, I didn't know that. I hope this issue will be fixed soon :-) Yasumasa On 2018/01/09 18:36, Stefan Karlsson wrote: > Hi Yasumasa, > > Thanks for your contribution! > > I tested your patch together with jhsdb hsdb and immediately hit problems because of the lack of load barriers in the SA code. Let me try to create an initial prototype for load barriers in the SA case and see where this takes us. > > FYI i also found that compressed oops are not fully supported in the SA: > https://bugs.openjdk.java.net/browse/JDK-8194737 > > Thanks, > StefanK > > On 2017-12-21 23:38, Yasumasa Suenaga wrote: >> Thanks Per! >> >> I'm waiting for comments and sponsorship. >> >> >> Yasumasa >> >> >> On 2017/12/22 4:33, Per Liden wrote: >>> Hi Yasumasa, >>> >>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>> Hi all, >>>> >>>> I checked SA implementation for ZGC, but it is not yet available. >>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>> command is executed. >>>> >>>> As the first step, I propose to implement ZCollectedHeap and related classes for >>>> ? SA as this webrev: >>>> >>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>> >>>> After applying this patch, we can use `universe` command on CLHSDB. >>>> (I followed `VM.info` jcmd output format) >>> >>> Thanks! Most of us working on ZGC are currently on vacation, but we'll have a closer look at the patch after the holidays. >>> >>> cheers, >>> Per >>> >>>> >>>> Of course, it is not all. We need to work more for it. >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> From stefan.karlsson at oracle.com Wed Jan 10 16:01:36 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Wed, 10 Jan 2018 17:01:36 +0100 Subject: RFR: NMT: Don't record uncommits unconditionally Message-ID: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Hi all, Please review this patch to fix a bug in the recent NMT implementation for ZGC. http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 The uncommit path was executed even when NMT was turned off. Because of this we hit the following assertion when pages were detached: # Internal Error (.../services/memTracker.hpp:231), pid=12751, tid=2738 # assert(tracking_level() >= NMT_summary) failed: Check by caller Thanks, StefanK From stefan.karlsson at oracle.com Wed Jan 10 16:55:49 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Wed, 10 Jan 2018 17:55:49 +0100 Subject: SA for ZGC In-Reply-To: References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> Message-ID: Hi Yasumasa, Here's my first stab at adding the ZGC load barries to the SA: http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ I find it unfortunate that we have to duplicate the C++ code into Java, to get this to work. But it is what it is. Some comments about the code: 1) Some of the constants are Linux-specific and there's no platform abstraction in place. 2) ZOop.to_address subverts the type system so that we can get from OopHandles and longs to Addresses. This seems to be frowned upon if you read the SA code. Maybe there are more correct ways to implement this? 3) I use the ZGC weak barrier, since the SA agent only needs to be able to access the Objects, not mark them. Which is what the weak barriers provide. 4) I see that you used VMObjectFactory.newObject, I skipped that part, but we can think about unifying our patches. 5) I had to invent a way to read global variables from HotSpot. See the usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do this? I stress tested the thread dumping part that threw exceptions for me earlier by running SPECjbb2005: $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain and then continuously dumping the threads: $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb --pid=`jps | grep JBBmain | awk '{print $1}'`; done Cheers, StefanK On 2018-01-09 13:59, Yasumasa Suenaga wrote: > Hi Stefan, > > >> Let me try to create an initial prototype for load barriers in the SA >> case and see where this takes us. > > Sure! > > >> FYI i also found that compressed oops are not fully supported in the SA: >> https://bugs.openjdk.java.net/browse/JDK-8194737 > > Thanks, I didn't know that. > I hope this issue will be fixed soon :-) > > > Yasumasa > > > On 2018/01/09 18:36, Stefan Karlsson wrote: >> Hi Yasumasa, >> >> Thanks for your contribution! >> >> I tested your patch together with jhsdb hsdb and immediately hit >> problems because of the lack of load barriers in the SA code. Let me >> try to create an initial prototype for load barriers in the SA case >> and see where this takes us. >> >> FYI i also found that compressed oops are not fully supported in the SA: >> https://bugs.openjdk.java.net/browse/JDK-8194737 >> >> Thanks, >> StefanK >> >> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>> Thanks Per! >>> >>> I'm waiting for comments and sponsorship. >>> >>> >>> Yasumasa >>> >>> >>> On 2017/12/22 4:33, Per Liden wrote: >>>> Hi Yasumasa, >>>> >>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>> Hi all, >>>>> >>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>> command is executed. >>>>> >>>>> As the first step, I propose to implement ZCollectedHeap and >>>>> related classes for >>>>> ? SA as this webrev: >>>>> >>>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>> >>>>> After applying this patch, we can use `universe` command on CLHSDB. >>>>> (I followed `VM.info` jcmd output format) >>>> >>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>> we'll have a closer look at the patch after the holidays. >>>> >>>> cheers, >>>> Per >>>> >>>>> >>>>> Of course, it is not all. We need to work more for it. >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> From coleen.phillimore at oracle.com Wed Jan 10 16:56:09 2018 From: coleen.phillimore at oracle.com (coleen.phillimore at oracle.com) Date: Wed, 10 Jan 2018 11:56:09 -0500 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Message-ID: Seems good. Coleen On 1/10/18 11:01 AM, Stefan Karlsson wrote: > Hi all, > > Please review this patch to fix a bug in the recent NMT implementation > for ZGC. > > http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 > > The uncommit path was executed even when NMT was turned off. Because > of this we hit the following assertion when pages were detached: > > #? Internal Error (.../services/memTracker.hpp:231), pid=12751, tid=2738 > #? assert(tracking_level() >= NMT_summary) failed: Check by caller > > Thanks, > StefanK From erik.osterlund at oracle.com Thu Jan 11 00:35:10 2018 From: erik.osterlund at oracle.com (=?UTF-8?Q?Erik_=c3=96sterlund?=) Date: Thu, 11 Jan 2018 01:35:10 +0100 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Message-ID: <70c91937-e2ff-efb5-e7c0-af47350a6b76@oracle.com> Hi Stefan, Looks good. /Erik On 2018-01-10 17:01, Stefan Karlsson wrote: > Hi all, > > Please review this patch to fix a bug in the recent NMT implementation > for ZGC. > > http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 > > The uncommit path was executed even when NMT was turned off. Because > of this we hit the following assertion when pages were detached: > > #? Internal Error (.../services/memTracker.hpp:231), pid=12751, tid=2738 > #? assert(tracking_level() >= NMT_summary) failed: Check by caller > > Thanks, > StefanK From per.liden at oracle.com Thu Jan 11 06:56:48 2018 From: per.liden at oracle.com (Per Liden) Date: Thu, 11 Jan 2018 07:56:48 +0100 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Message-ID: Hi, On 01/10/2018 05:01 PM, Stefan Karlsson wrote: > Hi all, > > Please review this patch to fix a bug in the recent NMT implementation > for ZGC. > > http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 Change looks good, but the memTracker.cpp part should probably be split out into an upstream patch. Also, it feels like we should adjust the other user of this in os.cpp to use the new function. cheers, Per > > The uncommit path was executed even when NMT was turned off. Because of > this we hit the following assertion when pages were detached: > > #? Internal Error (.../services/memTracker.hpp:231), pid=12751, tid=2738 > #? assert(tracking_level() >= NMT_summary) failed: Check by caller > > Thanks, > StefanK From stefan.karlsson at oracle.com Thu Jan 11 09:09:02 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Thu, 11 Jan 2018 10:09:02 +0100 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Message-ID: [Looping in Zhengyu] Inlined: On 2018-01-11 07:56, Per Liden wrote: > Hi, > > On 01/10/2018 05:01 PM, Stefan Karlsson wrote: >> Hi all, >> >> Please review this patch to fix a bug in the recent NMT implementation >> for ZGC. >> >> http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 > > Change looks good, but the memTracker.cpp part should probably be split > out into an upstream patch. Also, it feels like we should adjust the > other user of this in os.cpp to use the new function. Looking at the os.cpp function: bool os::uncommit_memory(char* addr, size_t bytes) { bool res; if (MemTracker::tracking_level() > NMT_minimal) { Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); res = pd_uncommit_memory(addr, bytes); if (res) { tkr.record((address)addr, bytes); } } else { res = pd_uncommit_memory(addr, bytes); } return res; } Is there a reason why the Tracker object is created before the pd_uncommit_memory, while the record() and ~Tracker is called after? Could we change the code above to: bool os::uncommit_memory(char* addr, size_t bytes) { bool res = pd_uncommit_memory(addr, bytes); if (res && MemTracker::tracking_level() > NMT_minimal) { Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); tkr.record((address)addr, bytes); } return res; } or even: bool os::uncommit_memory(char* addr, size_t bytes) { bool res = pd_uncommit_memory(addr, bytes); if (res) { MemTracker::record_virtual_memory_uncommit(addr, bytes) } return res; } Then these functions would look very similar to the commit functions: bool os::commit_memory(char* addr, size_t size, size_t alignment_hint, bool executable) { bool res = os::pd_commit_memory(addr, size, alignment_hint, executable); if (res) { MemTracker::record_virtual_memory_commit((address)addr, size, CALLER_PC); } return res; } I see that Tracker() and ~Tracker() locks and unlocks ThreadCritical. Do we need to be in "thread critical" while unmapping memory? If we can do the change above, then I think we can get rid of get_virtual_memory_uncommit_tracker and get_virtual_memory_release_tracker. Thanks, StefanK > > cheers, > Per > >> >> The uncommit path was executed even when NMT was turned off. Because >> of this we hit the following assertion when pages were detached: >> >> #? Internal Error (.../services/memTracker.hpp:231), pid=12751, tid=2738 >> #? assert(tracking_level() >= NMT_summary) failed: Check by caller >> >> Thanks, >> StefanK From stefan.karlsson at oracle.com Thu Jan 11 10:28:06 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Thu, 11 Jan 2018 11:28:06 +0100 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Message-ID: If we decide that the below change is valid and an improvement, then I have a patch for this: http://cr.openjdk.java.net/~stefank/8194926/webrev.01/ https://bugs.openjdk.java.net/browse/JDK-8194926 8194926: NMT: Clean up usage of get_record_virtual_memory_uncommit/release While running the NMT jtreg tests with ZGC, I found that one of the tests used ints to parse size_t values. Here's and upstream patch for that. http://cr.openjdk.java.net/~stefank/8194925/webrev.01/ https://bugs.openjdk.java.net/browse/JDK-8194925 8194925: NMT: SummarySanityCheck test can't parse values > max_jint Thanks, StefanK On 2018-01-11 10:09, Stefan Karlsson wrote: > [Looping in Zhengyu] > > Inlined: > > On 2018-01-11 07:56, Per Liden wrote: >> Hi, >> >> On 01/10/2018 05:01 PM, Stefan Karlsson wrote: >>> Hi all, >>> >>> Please review this patch to fix a bug in the recent NMT >>> implementation for ZGC. >>> >>> http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 >> >> Change looks good, but the memTracker.cpp part should probably be >> split out into an upstream patch. Also, it feels like we should adjust >> the other user of this in os.cpp to use the new function. > > > Looking at the os.cpp function: > > bool os::uncommit_memory(char* addr, size_t bytes) { > ? bool res; > ? if (MemTracker::tracking_level() > NMT_minimal) { > ??? Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); > ??? res = pd_uncommit_memory(addr, bytes); > ??? if (res) { > ????? tkr.record((address)addr, bytes); > ??? } > ? } else { > ??? res = pd_uncommit_memory(addr, bytes); > ? } > ? return res; > } > > Is there a reason why the Tracker object is created before the > pd_uncommit_memory, while the record() and ~Tracker is called after? > > Could we change the code above to: > > bool os::uncommit_memory(char* addr, size_t bytes) { > ? bool res = pd_uncommit_memory(addr, bytes); > ? if (res && MemTracker::tracking_level() > NMT_minimal) { > ??? Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); > ??? tkr.record((address)addr, bytes); > ? } > ? return res; > } > > or even: > > bool os::uncommit_memory(char* addr, size_t bytes) { > ? bool res = pd_uncommit_memory(addr, bytes); > ? if (res) { > ??? MemTracker::record_virtual_memory_uncommit(addr, bytes) > ? } > ? return res; > } > > Then these functions would look very similar to the commit functions: > > bool os::commit_memory(char* addr, size_t size, size_t alignment_hint, > ????????????????????????????? bool executable) { > ? bool res = os::pd_commit_memory(addr, size, alignment_hint, executable); > ? if (res) { > ??? MemTracker::record_virtual_memory_commit((address)addr, size, > CALLER_PC); > ? } > ? return res; > } > > > I see that Tracker() and ~Tracker() locks and unlocks ThreadCritical. Do > we need to be in "thread critical" while unmapping memory? > > If we can do the change above, then I think we can get rid of > get_virtual_memory_uncommit_tracker and get_virtual_memory_release_tracker. > > Thanks, > StefanK > >> >> cheers, >> Per >> >>> >>> The uncommit path was executed even when NMT was turned off. Because >>> of this we hit the following assertion when pages were detached: >>> >>> #? Internal Error (.../services/memTracker.hpp:231), pid=12751, tid=2738 >>> #? assert(tracking_level() >= NMT_summary) failed: Check by caller >>> >>> Thanks, >>> StefanK From per.liden at oracle.com Thu Jan 11 12:40:30 2018 From: per.liden at oracle.com (Per Liden) Date: Thu, 11 Jan 2018 13:40:30 +0100 Subject: SA for ZGC In-Reply-To: References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> Message-ID: Hi, On 01/10/2018 05:55 PM, Stefan Karlsson wrote: > Hi Yasumasa, > > Here's my first stab at adding the ZGC load barries to the SA: > > http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ Just one comment, in ZPage.java: 91 // There's no relocate operation in the SA. Simply use the from address and hope for the best. 92 return from; we should return ZAddress.good(from) here. And then we can remove the last part of the comment. Maybe say something about in-place forwarding instead. cheers, Per > > I find it unfortunate that we have to duplicate the C++ code into Java, > to get this to work. But it is what it is. > > Some comments about the code: > > 1) Some of the constants are Linux-specific and there's no platform > abstraction in place. > > 2) ZOop.to_address subverts the type system so that we can get from > OopHandles and longs to Addresses. This seems to be frowned upon if you > read the SA code. Maybe there are more correct ways to implement this? > > 3) I use the ZGC weak barrier, since the SA agent only needs to be able > to access the Objects, not mark them. Which is what the weak barriers > provide. > > 4) I see that you used VMObjectFactory.newObject, I skipped that part, > but we can think about unifying our patches. > > 5) I had to invent a way to read global variables from HotSpot. See the > usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do this? > > I stress tested the thread dumping part that threw exceptions for me > earlier by running SPECjbb2005: > $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain > > and then continuously dumping the threads: > $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb > --pid=`jps | grep JBBmain | awk '{print $1}'`; done > > > Cheers, > StefanK > > On 2018-01-09 13:59, Yasumasa Suenaga wrote: >> Hi Stefan, >> >> >>> Let me try to create an initial prototype for load barriers in the SA >>> case and see where this takes us. >> >> Sure! >> >> >>> FYI i also found that compressed oops are not fully supported in the SA: >>> https://bugs.openjdk.java.net/browse/JDK-8194737 >> >> Thanks, I didn't know that. >> I hope this issue will be fixed soon :-) >> >> >> Yasumasa >> >> >> On 2018/01/09 18:36, Stefan Karlsson wrote: >>> Hi Yasumasa, >>> >>> Thanks for your contribution! >>> >>> I tested your patch together with jhsdb hsdb and immediately hit >>> problems because of the lack of load barriers in the SA code. Let me >>> try to create an initial prototype for load barriers in the SA case >>> and see where this takes us. >>> >>> FYI i also found that compressed oops are not fully supported in the SA: >>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>> >>> Thanks, >>> StefanK >>> >>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>> Thanks Per! >>>> >>>> I'm waiting for comments and sponsorship. >>>> >>>> >>>> Yasumasa >>>> >>>> >>>> On 2017/12/22 4:33, Per Liden wrote: >>>>> Hi Yasumasa, >>>>> >>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>> Hi all, >>>>>> >>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>> command is executed. >>>>>> >>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>> related classes for >>>>>> ? SA as this webrev: >>>>>> >>>>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>> >>>>>> After applying this patch, we can use `universe` command on CLHSDB. >>>>>> (I followed `VM.info` jcmd output format) >>>>> >>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>> we'll have a closer look at the patch after the holidays. >>>>> >>>>> cheers, >>>>> Per >>>>> >>>>>> >>>>>> Of course, it is not all. We need to work more for it. >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Yasumasa >>>>>> From zgu at redhat.com Thu Jan 11 13:27:52 2018 From: zgu at redhat.com (Zhengyu Gu) Date: Thu, 11 Jan 2018 08:27:52 -0500 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Message-ID: <875e2252-029f-794f-4d6b-4481a5ed26d1@redhat.com> Hi Stefan, > > > Looking at the os.cpp function: > > bool os::uncommit_memory(char* addr, size_t bytes) { > bool res; > if (MemTracker::tracking_level() > NMT_minimal) { > Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); > res = pd_uncommit_memory(addr, bytes); > if (res) { > tkr.record((address)addr, bytes); > } > } else { > res = pd_uncommit_memory(addr, bytes); > } > return res; > } > > Is there a reason why the Tracker object is created before the > pd_uncommit_memory, while the record() and ~Tracker is called after? > I can not recall why tracker is created before the pd_uncommit_memory, but I don't think it has to. > Could we change the code above to: > > bool os::uncommit_memory(char* addr, size_t bytes) { > bool res = pd_uncommit_memory(addr, bytes); > if (res && MemTracker::tracking_level() > NMT_minimal) { > Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); > tkr.record((address)addr, bytes); > } > return res; > } This version looks correct. > > or even: > > bool os::uncommit_memory(char* addr, size_t bytes) { > bool res = pd_uncommit_memory(addr, bytes); > if (res) { > MemTracker::record_virtual_memory_uncommit(addr, bytes) > } > return res; > } > Humm ... it does not seem to have MemTracker::record_virtual_memory_uncommit(addr, bytes). Tracker thingy seems to be bad, it locks and unlocks ThreadCritical twice. If you want to file a RFE, I am glad to clean it up. Thanks, -Zhengyu > Then these functions would look very similar to the commit functions: > > bool os::commit_memory(char* addr, size_t size, size_t alignment_hint, > bool executable) { > bool res = os::pd_commit_memory(addr, size, alignment_hint, executable); > if (res) { > MemTracker::record_virtual_memory_commit((address)addr, size, > CALLER_PC); > } > return res; > } > > > I see that Tracker() and ~Tracker() locks and unlocks ThreadCritical. Do > we need to be in "thread critical" while unmapping memory? > > If we can do the change above, then I think we can get rid of > get_virtual_memory_uncommit_tracker and get_virtual_memory_release_tracker. > > Thanks, > StefanK > >> >> cheers, >> Per >> >>> >>> The uncommit path was executed even when NMT was turned off. Because >>> of this we hit the following assertion when pages were detached: >>> >>> # Internal Error (.../services/memTracker.hpp:231), pid=12751, tid=2738 >>> # assert(tracking_level() >= NMT_summary) failed: Check by caller >>> >>> Thanks, >>> StefanK From zgu at redhat.com Thu Jan 11 13:33:53 2018 From: zgu at redhat.com (Zhengyu Gu) Date: Thu, 11 Jan 2018 08:33:53 -0500 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Message-ID: On 01/11/2018 05:28 AM, Stefan Karlsson wrote: > If we decide that the below change is valid and an improvement, then I > have a patch for this: > > http://cr.openjdk.java.net/~stefank/8194926/webrev.01/ > https://bugs.openjdk.java.net/browse/JDK-8194926 > 8194926: NMT: Clean up usage of get_record_virtual_memory_uncommit/release Thanks for the cleanup. Looks good to me. -Zhengyu > > While running the NMT jtreg tests with ZGC, I found that one of the > tests used ints to parse size_t values. Here's and upstream patch for that. > > http://cr.openjdk.java.net/~stefank/8194925/webrev.01/ > https://bugs.openjdk.java.net/browse/JDK-8194925 > 8194925: NMT: SummarySanityCheck test can't parse values > max_jint > > Thanks, > StefanK > > On 2018-01-11 10:09, Stefan Karlsson wrote: >> [Looping in Zhengyu] >> >> Inlined: >> >> On 2018-01-11 07:56, Per Liden wrote: >>> Hi, >>> >>> On 01/10/2018 05:01 PM, Stefan Karlsson wrote: >>>> Hi all, >>>> >>>> Please review this patch to fix a bug in the recent NMT >>>> implementation for ZGC. >>>> >>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 >>> >>> Change looks good, but the memTracker.cpp part should probably be >>> split out into an upstream patch. Also, it feels like we should >>> adjust the other user of this in os.cpp to use the new function. >> >> >> Looking at the os.cpp function: >> >> bool os::uncommit_memory(char* addr, size_t bytes) { >> bool res; >> if (MemTracker::tracking_level() > NMT_minimal) { >> Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >> res = pd_uncommit_memory(addr, bytes); >> if (res) { >> tkr.record((address)addr, bytes); >> } >> } else { >> res = pd_uncommit_memory(addr, bytes); >> } >> return res; >> } >> >> Is there a reason why the Tracker object is created before the >> pd_uncommit_memory, while the record() and ~Tracker is called after? >> >> Could we change the code above to: >> >> bool os::uncommit_memory(char* addr, size_t bytes) { >> bool res = pd_uncommit_memory(addr, bytes); >> if (res && MemTracker::tracking_level() > NMT_minimal) { >> Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >> tkr.record((address)addr, bytes); >> } >> return res; >> } >> >> or even: >> >> bool os::uncommit_memory(char* addr, size_t bytes) { >> bool res = pd_uncommit_memory(addr, bytes); >> if (res) { >> MemTracker::record_virtual_memory_uncommit(addr, bytes) >> } >> return res; >> } >> >> Then these functions would look very similar to the commit functions: >> >> bool os::commit_memory(char* addr, size_t size, size_t alignment_hint, >> bool executable) { >> bool res = os::pd_commit_memory(addr, size, alignment_hint, >> executable); >> if (res) { >> MemTracker::record_virtual_memory_commit((address)addr, size, >> CALLER_PC); >> } >> return res; >> } >> >> >> I see that Tracker() and ~Tracker() locks and unlocks ThreadCritical. >> Do we need to be in "thread critical" while unmapping memory? >> >> If we can do the change above, then I think we can get rid of >> get_virtual_memory_uncommit_tracker and >> get_virtual_memory_release_tracker. >> >> Thanks, >> StefanK >> >>> >>> cheers, >>> Per >>> >>>> >>>> The uncommit path was executed even when NMT was turned off. Because >>>> of this we hit the following assertion when pages were detached: >>>> >>>> # Internal Error (.../services/memTracker.hpp:231), pid=12751, >>>> tid=2738 >>>> # assert(tracking_level() >= NMT_summary) failed: Check by caller >>>> >>>> Thanks, >>>> StefanK From zgu at redhat.com Thu Jan 11 13:38:59 2018 From: zgu at redhat.com (Zhengyu Gu) Date: Thu, 11 Jan 2018 08:38:59 -0500 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Message-ID: On 01/11/2018 08:33 AM, Zhengyu Gu wrote: > On 01/11/2018 05:28 AM, Stefan Karlsson wrote: >> If we decide that the below change is valid and an improvement, then I >> have a patch for this: >> >> http://cr.openjdk.java.net/~stefank/8194926/webrev.01/ >> https://bugs.openjdk.java.net/browse/JDK-8194926 >> 8194926: NMT: Clean up usage of >> get_record_virtual_memory_uncommit/release > > Thanks for the cleanup. Looks good to me. Oops. You do need static inline void record_virtual_memory_uncommit(void* addr, size_t size) { } 235 static inline void record_virtual_memory_release(void* addr, size_t size) { } in #if !INCLUDE_NMT section. Thanks, -Zhengyu > > -Zhengyu > >> >> While running the NMT jtreg tests with ZGC, I found that one of the >> tests used ints to parse size_t values. Here's and upstream patch for >> that. >> >> http://cr.openjdk.java.net/~stefank/8194925/webrev.01/ >> https://bugs.openjdk.java.net/browse/JDK-8194925 >> 8194925: NMT: SummarySanityCheck test can't parse values > max_jint >> >> Thanks, >> StefanK >> >> On 2018-01-11 10:09, Stefan Karlsson wrote: >>> [Looping in Zhengyu] >>> >>> Inlined: >>> >>> On 2018-01-11 07:56, Per Liden wrote: >>>> Hi, >>>> >>>> On 01/10/2018 05:01 PM, Stefan Karlsson wrote: >>>>> Hi all, >>>>> >>>>> Please review this patch to fix a bug in the recent NMT >>>>> implementation for ZGC. >>>>> >>>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 >>>> >>>> Change looks good, but the memTracker.cpp part should probably be >>>> split out into an upstream patch. Also, it feels like we should >>>> adjust the other user of this in os.cpp to use the new function. >>> >>> >>> Looking at the os.cpp function: >>> >>> bool os::uncommit_memory(char* addr, size_t bytes) { >>> bool res; >>> if (MemTracker::tracking_level() > NMT_minimal) { >>> Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>> res = pd_uncommit_memory(addr, bytes); >>> if (res) { >>> tkr.record((address)addr, bytes); >>> } >>> } else { >>> res = pd_uncommit_memory(addr, bytes); >>> } >>> return res; >>> } >>> >>> Is there a reason why the Tracker object is created before the >>> pd_uncommit_memory, while the record() and ~Tracker is called after? >>> >>> Could we change the code above to: >>> >>> bool os::uncommit_memory(char* addr, size_t bytes) { >>> bool res = pd_uncommit_memory(addr, bytes); >>> if (res && MemTracker::tracking_level() > NMT_minimal) { >>> Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>> tkr.record((address)addr, bytes); >>> } >>> return res; >>> } >>> >>> or even: >>> >>> bool os::uncommit_memory(char* addr, size_t bytes) { >>> bool res = pd_uncommit_memory(addr, bytes); >>> if (res) { >>> MemTracker::record_virtual_memory_uncommit(addr, bytes) >>> } >>> return res; >>> } >>> >>> Then these functions would look very similar to the commit functions: >>> >>> bool os::commit_memory(char* addr, size_t size, size_t alignment_hint, >>> bool executable) { >>> bool res = os::pd_commit_memory(addr, size, alignment_hint, >>> executable); >>> if (res) { >>> MemTracker::record_virtual_memory_commit((address)addr, size, >>> CALLER_PC); >>> } >>> return res; >>> } >>> >>> >>> I see that Tracker() and ~Tracker() locks and unlocks ThreadCritical. >>> Do we need to be in "thread critical" while unmapping memory? >>> >>> If we can do the change above, then I think we can get rid of >>> get_virtual_memory_uncommit_tracker and >>> get_virtual_memory_release_tracker. >>> >>> Thanks, >>> StefanK >>> >>>> >>>> cheers, >>>> Per >>>> >>>>> >>>>> The uncommit path was executed even when NMT was turned off. >>>>> Because of this we hit the following assertion when pages were >>>>> detached: >>>>> >>>>> # Internal Error (.../services/memTracker.hpp:231), pid=12751, >>>>> tid=2738 >>>>> # assert(tracking_level() >= NMT_summary) failed: Check by caller >>>>> >>>>> Thanks, >>>>> StefanK From stefan.karlsson at oracle.com Thu Jan 11 13:51:36 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Thu, 11 Jan 2018 14:51:36 +0100 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> Message-ID: <5aca7e3a-ebfa-e39d-9e56-8c9094901022@oracle.com> Hi Zhengyu, I think I found the reason why this uses the Tracker like this: // Tracker is used for guarding 'release' semantics of virtual memory operation, to avoid // the other thread obtains and records the same region that is just 'released' by current // thread but before it can record the operation. So, my proposed patch would undo that. I'll throw away that upstream patch and only create a proper ZGC change. Thanks, StefanK On 2018-01-11 14:38, Zhengyu Gu wrote: > > > On 01/11/2018 08:33 AM, Zhengyu Gu wrote: >> On 01/11/2018 05:28 AM, Stefan Karlsson wrote: >>> If we decide that the below change is valid and an improvement, then >>> I have a patch for this: >>> >>> http://cr.openjdk.java.net/~stefank/8194926/webrev.01/ >>> https://bugs.openjdk.java.net/browse/JDK-8194926 >>> 8194926: NMT: Clean up usage of >>> get_record_virtual_memory_uncommit/release >> >> Thanks for the cleanup. Looks good to me. > > Oops. > > You do need > > ?? static inline void record_virtual_memory_uncommit(void* addr, size_t > size) { } > ?235?? static inline void record_virtual_memory_release(void* addr, > size_t size) { } > > in #if !INCLUDE_NMT section. > > Thanks, > > -Zhengyu > >> >> -Zhengyu >> >>> >>> While running the NMT jtreg tests with ZGC, I found that one of the >>> tests used ints to parse size_t values. Here's and upstream patch for >>> that. >>> >>> http://cr.openjdk.java.net/~stefank/8194925/webrev.01/ >>> https://bugs.openjdk.java.net/browse/JDK-8194925 >>> 8194925: NMT: SummarySanityCheck test can't parse values > max_jint >>> >>> Thanks, >>> StefanK >>> >>> On 2018-01-11 10:09, Stefan Karlsson wrote: >>>> [Looping in Zhengyu] >>>> >>>> Inlined: >>>> >>>> On 2018-01-11 07:56, Per Liden wrote: >>>>> Hi, >>>>> >>>>> On 01/10/2018 05:01 PM, Stefan Karlsson wrote: >>>>>> Hi all, >>>>>> >>>>>> Please review this patch to fix a bug in the recent NMT >>>>>> implementation for ZGC. >>>>>> >>>>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 >>>>> >>>>> Change looks good, but the memTracker.cpp part should probably be >>>>> split out into an upstream patch. Also, it feels like we should >>>>> adjust the other user of this in os.cpp to use the new function. >>>> >>>> >>>> Looking at the os.cpp function: >>>> >>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>> ?? bool res; >>>> ?? if (MemTracker::tracking_level() > NMT_minimal) { >>>> ???? Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>>> ???? res = pd_uncommit_memory(addr, bytes); >>>> ???? if (res) { >>>> ?????? tkr.record((address)addr, bytes); >>>> ???? } >>>> ?? } else { >>>> ???? res = pd_uncommit_memory(addr, bytes); >>>> ?? } >>>> ?? return res; >>>> } >>>> >>>> Is there a reason why the Tracker object is created before the >>>> pd_uncommit_memory, while the record() and ~Tracker is called after? >>>> >>>> Could we change the code above to: >>>> >>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>> ?? bool res = pd_uncommit_memory(addr, bytes); >>>> ?? if (res && MemTracker::tracking_level() > NMT_minimal) { >>>> ???? Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>>> ???? tkr.record((address)addr, bytes); >>>> ?? } >>>> ?? return res; >>>> } >>>> >>>> or even: >>>> >>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>> ?? bool res = pd_uncommit_memory(addr, bytes); >>>> ?? if (res) { >>>> ???? MemTracker::record_virtual_memory_uncommit(addr, bytes) >>>> ?? } >>>> ?? return res; >>>> } >>>> >>>> Then these functions would look very similar to the commit functions: >>>> >>>> bool os::commit_memory(char* addr, size_t size, size_t alignment_hint, >>>> ?????????????????????????????? bool executable) { >>>> ?? bool res = os::pd_commit_memory(addr, size, alignment_hint, >>>> executable); >>>> ?? if (res) { >>>> ???? MemTracker::record_virtual_memory_commit((address)addr, size, >>>> CALLER_PC); >>>> ?? } >>>> ?? return res; >>>> } >>>> >>>> >>>> I see that Tracker() and ~Tracker() locks and unlocks >>>> ThreadCritical. Do we need to be in "thread critical" while >>>> unmapping memory? >>>> >>>> If we can do the change above, then I think we can get rid of >>>> get_virtual_memory_uncommit_tracker and >>>> get_virtual_memory_release_tracker. >>>> >>>> Thanks, >>>> StefanK >>>> >>>>> >>>>> cheers, >>>>> Per >>>>> >>>>>> >>>>>> The uncommit path was executed even when NMT was turned off. >>>>>> Because of this we hit the following assertion when pages were >>>>>> detached: >>>>>> >>>>>> #? Internal Error (.../services/memTracker.hpp:231), pid=12751, >>>>>> tid=2738 >>>>>> #? assert(tracking_level() >= NMT_summary) failed: Check by caller >>>>>> >>>>>> Thanks, >>>>>> StefanK From zgu at redhat.com Thu Jan 11 14:15:18 2018 From: zgu at redhat.com (Zhengyu Gu) Date: Thu, 11 Jan 2018 09:15:18 -0500 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: <5aca7e3a-ebfa-e39d-9e56-8c9094901022@oracle.com> References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> <5aca7e3a-ebfa-e39d-9e56-8c9094901022@oracle.com> Message-ID: <704335c8-6c1d-4cca-d620-79725f188b57@redhat.com> On 01/11/2018 08:51 AM, Stefan Karlsson wrote: > Hi Zhengyu, > > I think I found the reason why this uses the Tracker like this: > > // Tracker is used for guarding 'release' semantics of virtual memory > operation, to avoid > // the other thread obtains and records the same region that is just > 'released' by current > // thread but before it can record the operation. Ah, Thanks! But I still want to throw away MemTracker::get_virtual_memory_uncommit_tracker() and create Tracker in place. -Zhengyu > > So, my proposed patch would undo that. I'll throw away that upstream > patch and only create a proper ZGC change. > > Thanks, > StefanK > > On 2018-01-11 14:38, Zhengyu Gu wrote: >> >> >> On 01/11/2018 08:33 AM, Zhengyu Gu wrote: >>> On 01/11/2018 05:28 AM, Stefan Karlsson wrote: >>>> If we decide that the below change is valid and an improvement, then >>>> I have a patch for this: >>>> >>>> http://cr.openjdk.java.net/~stefank/8194926/webrev.01/ >>>> https://bugs.openjdk.java.net/browse/JDK-8194926 >>>> 8194926: NMT: Clean up usage of >>>> get_record_virtual_memory_uncommit/release >>> >>> Thanks for the cleanup. Looks good to me. >> >> Oops. >> >> You do need >> >> static inline void record_virtual_memory_uncommit(void* addr, >> size_t size) { } >> 235 static inline void record_virtual_memory_release(void* addr, >> size_t size) { } >> >> in #if !INCLUDE_NMT section. >> >> Thanks, >> >> -Zhengyu >> >>> >>> -Zhengyu >>> >>>> >>>> While running the NMT jtreg tests with ZGC, I found that one of the >>>> tests used ints to parse size_t values. Here's and upstream patch >>>> for that. >>>> >>>> http://cr.openjdk.java.net/~stefank/8194925/webrev.01/ >>>> https://bugs.openjdk.java.net/browse/JDK-8194925 >>>> 8194925: NMT: SummarySanityCheck test can't parse values > max_jint >>>> >>>> Thanks, >>>> StefanK >>>> >>>> On 2018-01-11 10:09, Stefan Karlsson wrote: >>>>> [Looping in Zhengyu] >>>>> >>>>> Inlined: >>>>> >>>>> On 2018-01-11 07:56, Per Liden wrote: >>>>>> Hi, >>>>>> >>>>>> On 01/10/2018 05:01 PM, Stefan Karlsson wrote: >>>>>>> Hi all, >>>>>>> >>>>>>> Please review this patch to fix a bug in the recent NMT >>>>>>> implementation for ZGC. >>>>>>> >>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 >>>>>> >>>>>> Change looks good, but the memTracker.cpp part should probably be >>>>>> split out into an upstream patch. Also, it feels like we should >>>>>> adjust the other user of this in os.cpp to use the new function. >>>>> >>>>> >>>>> Looking at the os.cpp function: >>>>> >>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>> bool res; >>>>> if (MemTracker::tracking_level() > NMT_minimal) { >>>>> Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>>>> res = pd_uncommit_memory(addr, bytes); >>>>> if (res) { >>>>> tkr.record((address)addr, bytes); >>>>> } >>>>> } else { >>>>> res = pd_uncommit_memory(addr, bytes); >>>>> } >>>>> return res; >>>>> } >>>>> >>>>> Is there a reason why the Tracker object is created before the >>>>> pd_uncommit_memory, while the record() and ~Tracker is called after? >>>>> >>>>> Could we change the code above to: >>>>> >>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>> bool res = pd_uncommit_memory(addr, bytes); >>>>> if (res && MemTracker::tracking_level() > NMT_minimal) { >>>>> Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>>>> tkr.record((address)addr, bytes); >>>>> } >>>>> return res; >>>>> } >>>>> >>>>> or even: >>>>> >>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>> bool res = pd_uncommit_memory(addr, bytes); >>>>> if (res) { >>>>> MemTracker::record_virtual_memory_uncommit(addr, bytes) >>>>> } >>>>> return res; >>>>> } >>>>> >>>>> Then these functions would look very similar to the commit functions: >>>>> >>>>> bool os::commit_memory(char* addr, size_t size, size_t alignment_hint, >>>>> bool executable) { >>>>> bool res = os::pd_commit_memory(addr, size, alignment_hint, >>>>> executable); >>>>> if (res) { >>>>> MemTracker::record_virtual_memory_commit((address)addr, size, >>>>> CALLER_PC); >>>>> } >>>>> return res; >>>>> } >>>>> >>>>> >>>>> I see that Tracker() and ~Tracker() locks and unlocks >>>>> ThreadCritical. Do we need to be in "thread critical" while >>>>> unmapping memory? >>>>> >>>>> If we can do the change above, then I think we can get rid of >>>>> get_virtual_memory_uncommit_tracker and >>>>> get_virtual_memory_release_tracker. >>>>> >>>>> Thanks, >>>>> StefanK >>>>> >>>>>> >>>>>> cheers, >>>>>> Per >>>>>> >>>>>>> >>>>>>> The uncommit path was executed even when NMT was turned off. >>>>>>> Because of this we hit the following assertion when pages were >>>>>>> detached: >>>>>>> >>>>>>> # Internal Error (.../services/memTracker.hpp:231), pid=12751, >>>>>>> tid=2738 >>>>>>> # assert(tracking_level() >= NMT_summary) failed: Check by caller >>>>>>> >>>>>>> Thanks, >>>>>>> StefanK From stefan.karlsson at oracle.com Thu Jan 11 15:31:22 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Thu, 11 Jan 2018 16:31:22 +0100 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: <704335c8-6c1d-4cca-d620-79725f188b57@redhat.com> References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> <5aca7e3a-ebfa-e39d-9e56-8c9094901022@oracle.com> <704335c8-6c1d-4cca-d620-79725f188b57@redhat.com> Message-ID: On 2018-01-11 15:15, Zhengyu Gu wrote: > > > On 01/11/2018 08:51 AM, Stefan Karlsson wrote: >> Hi Zhengyu, >> >> I think I found the reason why this uses the Tracker like this: >> >> // Tracker is used for guarding 'release' semantics of virtual memory >> operation, to avoid >> // the other thread obtains and records the same region that is just >> 'released' by current >> // thread but before it can record the operation. > Ah, Thanks! > > But I still want to throw away > MemTracker::get_virtual_memory_uncommit_tracker() and create Tracker in > place. OK. Will you take care of it? If you want, you can take over this RFE: https://bugs.openjdk.java.net/browse/JDK-8194926 Here's the updated ZGC patch. http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.02 The move of the nmt_uncommit call is not strictly necessary, because both the "unmap" and the "alloc" of the physical memory is protected by the same lock, but it makes the the code a bit more future proof. Thanks, StefanK > > -Zhengyu > >> >> So, my proposed patch would undo that. I'll throw away that upstream >> patch and only create a proper ZGC change. >> >> Thanks, >> StefanK >> >> On 2018-01-11 14:38, Zhengyu Gu wrote: >>> >>> >>> On 01/11/2018 08:33 AM, Zhengyu Gu wrote: >>>> On 01/11/2018 05:28 AM, Stefan Karlsson wrote: >>>>> If we decide that the below change is valid and an improvement, >>>>> then I have a patch for this: >>>>> >>>>> http://cr.openjdk.java.net/~stefank/8194926/webrev.01/ >>>>> https://bugs.openjdk.java.net/browse/JDK-8194926 >>>>> 8194926: NMT: Clean up usage of >>>>> get_record_virtual_memory_uncommit/release >>>> >>>> Thanks for the cleanup. Looks good to me. >>> >>> Oops. >>> >>> You do need >>> >>> ??? static inline void record_virtual_memory_uncommit(void* addr, >>> size_t size) { } >>> ? 235?? static inline void record_virtual_memory_release(void* addr, >>> size_t size) { } >>> >>> in #if !INCLUDE_NMT section. >>> >>> Thanks, >>> >>> -Zhengyu >>> >>>> >>>> -Zhengyu >>>> >>>>> >>>>> While running the NMT jtreg tests with ZGC, I found that one of the >>>>> tests used ints to parse size_t values. Here's and upstream patch >>>>> for that. >>>>> >>>>> http://cr.openjdk.java.net/~stefank/8194925/webrev.01/ >>>>> https://bugs.openjdk.java.net/browse/JDK-8194925 >>>>> 8194925: NMT: SummarySanityCheck test can't parse values > max_jint >>>>> >>>>> Thanks, >>>>> StefanK >>>>> >>>>> On 2018-01-11 10:09, Stefan Karlsson wrote: >>>>>> [Looping in Zhengyu] >>>>>> >>>>>> Inlined: >>>>>> >>>>>> On 2018-01-11 07:56, Per Liden wrote: >>>>>>> Hi, >>>>>>> >>>>>>> On 01/10/2018 05:01 PM, Stefan Karlsson wrote: >>>>>>>> Hi all, >>>>>>>> >>>>>>>> Please review this patch to fix a bug in the recent NMT >>>>>>>> implementation for ZGC. >>>>>>>> >>>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 >>>>>>> >>>>>>> Change looks good, but the memTracker.cpp part should probably be >>>>>>> split out into an upstream patch. Also, it feels like we should >>>>>>> adjust the other user of this in os.cpp to use the new function. >>>>>> >>>>>> >>>>>> Looking at the os.cpp function: >>>>>> >>>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>>> ?? bool res; >>>>>> ?? if (MemTracker::tracking_level() > NMT_minimal) { >>>>>> ???? Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>>>>> ???? res = pd_uncommit_memory(addr, bytes); >>>>>> ???? if (res) { >>>>>> ?????? tkr.record((address)addr, bytes); >>>>>> ???? } >>>>>> ?? } else { >>>>>> ???? res = pd_uncommit_memory(addr, bytes); >>>>>> ?? } >>>>>> ?? return res; >>>>>> } >>>>>> >>>>>> Is there a reason why the Tracker object is created before the >>>>>> pd_uncommit_memory, while the record() and ~Tracker is called after? >>>>>> >>>>>> Could we change the code above to: >>>>>> >>>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>>> ?? bool res = pd_uncommit_memory(addr, bytes); >>>>>> ?? if (res && MemTracker::tracking_level() > NMT_minimal) { >>>>>> ???? Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>>>>> ???? tkr.record((address)addr, bytes); >>>>>> ?? } >>>>>> ?? return res; >>>>>> } >>>>>> >>>>>> or even: >>>>>> >>>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>>> ?? bool res = pd_uncommit_memory(addr, bytes); >>>>>> ?? if (res) { >>>>>> ???? MemTracker::record_virtual_memory_uncommit(addr, bytes) >>>>>> ?? } >>>>>> ?? return res; >>>>>> } >>>>>> >>>>>> Then these functions would look very similar to the commit functions: >>>>>> >>>>>> bool os::commit_memory(char* addr, size_t size, size_t >>>>>> alignment_hint, >>>>>> ?????????????????????????????? bool executable) { >>>>>> ?? bool res = os::pd_commit_memory(addr, size, alignment_hint, >>>>>> executable); >>>>>> ?? if (res) { >>>>>> ???? MemTracker::record_virtual_memory_commit((address)addr, size, >>>>>> CALLER_PC); >>>>>> ?? } >>>>>> ?? return res; >>>>>> } >>>>>> >>>>>> >>>>>> I see that Tracker() and ~Tracker() locks and unlocks >>>>>> ThreadCritical. Do we need to be in "thread critical" while >>>>>> unmapping memory? >>>>>> >>>>>> If we can do the change above, then I think we can get rid of >>>>>> get_virtual_memory_uncommit_tracker and >>>>>> get_virtual_memory_release_tracker. >>>>>> >>>>>> Thanks, >>>>>> StefanK >>>>>> >>>>>>> >>>>>>> cheers, >>>>>>> Per >>>>>>> >>>>>>>> >>>>>>>> The uncommit path was executed even when NMT was turned off. >>>>>>>> Because of this we hit the following assertion when pages were >>>>>>>> detached: >>>>>>>> >>>>>>>> #? Internal Error (.../services/memTracker.hpp:231), pid=12751, >>>>>>>> tid=2738 >>>>>>>> #? assert(tracking_level() >= NMT_summary) failed: Check by caller >>>>>>>> >>>>>>>> Thanks, >>>>>>>> StefanK From zgu at redhat.com Thu Jan 11 15:37:23 2018 From: zgu at redhat.com (Zhengyu Gu) Date: Thu, 11 Jan 2018 10:37:23 -0500 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> <5aca7e3a-ebfa-e39d-9e56-8c9094901022@oracle.com> <704335c8-6c1d-4cca-d620-79725f188b57@redhat.com> Message-ID: <39742b5a-4377-fab8-eb1f-1143f792777d@redhat.com> On 01/11/2018 10:31 AM, Stefan Karlsson wrote: > On 2018-01-11 15:15, Zhengyu Gu wrote: >> >> >> On 01/11/2018 08:51 AM, Stefan Karlsson wrote: >>> Hi Zhengyu, >>> >>> I think I found the reason why this uses the Tracker like this: >>> >>> // Tracker is used for guarding 'release' semantics of virtual memory >>> operation, to avoid >>> // the other thread obtains and records the same region that is just >>> 'released' by current >>> // thread but before it can record the operation. >> Ah, Thanks! >> >> But I still want to throw away >> MemTracker::get_virtual_memory_uncommit_tracker() and create Tracker >> in place. > > OK. Will you take care of it? > Yes. https://bugs.openjdk.java.net/browse/JDK-8194934 Thanks, -Zhengyu > If you want, you can take over this RFE: > https://bugs.openjdk.java.net/browse/JDK-8194926 > > Here's the updated ZGC patch. > > http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.02 > > The move of the nmt_uncommit call is not strictly necessary, because > both the "unmap" and the "alloc" of the physical memory is protected by > the same lock, but it makes the the code a bit more future proof. > > Thanks, > StefanK > >> >> -Zhengyu >> >>> >>> So, my proposed patch would undo that. I'll throw away that upstream >>> patch and only create a proper ZGC change. >>> >>> Thanks, >>> StefanK >>> >>> On 2018-01-11 14:38, Zhengyu Gu wrote: >>>> >>>> >>>> On 01/11/2018 08:33 AM, Zhengyu Gu wrote: >>>>> On 01/11/2018 05:28 AM, Stefan Karlsson wrote: >>>>>> If we decide that the below change is valid and an improvement, >>>>>> then I have a patch for this: >>>>>> >>>>>> http://cr.openjdk.java.net/~stefank/8194926/webrev.01/ >>>>>> https://bugs.openjdk.java.net/browse/JDK-8194926 >>>>>> 8194926: NMT: Clean up usage of >>>>>> get_record_virtual_memory_uncommit/release >>>>> >>>>> Thanks for the cleanup. Looks good to me. >>>> >>>> Oops. >>>> >>>> You do need >>>> >>>> static inline void record_virtual_memory_uncommit(void* addr, >>>> size_t size) { } >>>> 235 static inline void record_virtual_memory_release(void* addr, >>>> size_t size) { } >>>> >>>> in #if !INCLUDE_NMT section. >>>> >>>> Thanks, >>>> >>>> -Zhengyu >>>> >>>>> >>>>> -Zhengyu >>>>> >>>>>> >>>>>> While running the NMT jtreg tests with ZGC, I found that one of >>>>>> the tests used ints to parse size_t values. Here's and upstream >>>>>> patch for that. >>>>>> >>>>>> http://cr.openjdk.java.net/~stefank/8194925/webrev.01/ >>>>>> https://bugs.openjdk.java.net/browse/JDK-8194925 >>>>>> 8194925: NMT: SummarySanityCheck test can't parse values > max_jint >>>>>> >>>>>> Thanks, >>>>>> StefanK >>>>>> >>>>>> On 2018-01-11 10:09, Stefan Karlsson wrote: >>>>>>> [Looping in Zhengyu] >>>>>>> >>>>>>> Inlined: >>>>>>> >>>>>>> On 2018-01-11 07:56, Per Liden wrote: >>>>>>>> Hi, >>>>>>>> >>>>>>>> On 01/10/2018 05:01 PM, Stefan Karlsson wrote: >>>>>>>>> Hi all, >>>>>>>>> >>>>>>>>> Please review this patch to fix a bug in the recent NMT >>>>>>>>> implementation for ZGC. >>>>>>>>> >>>>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 >>>>>>>> >>>>>>>> Change looks good, but the memTracker.cpp part should probably >>>>>>>> be split out into an upstream patch. Also, it feels like we >>>>>>>> should adjust the other user of this in os.cpp to use the new >>>>>>>> function. >>>>>>> >>>>>>> >>>>>>> Looking at the os.cpp function: >>>>>>> >>>>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>>>> bool res; >>>>>>> if (MemTracker::tracking_level() > NMT_minimal) { >>>>>>> Tracker tkr = >>>>>>> MemTracker::get_virtual_memory_uncommit_tracker(); >>>>>>> res = pd_uncommit_memory(addr, bytes); >>>>>>> if (res) { >>>>>>> tkr.record((address)addr, bytes); >>>>>>> } >>>>>>> } else { >>>>>>> res = pd_uncommit_memory(addr, bytes); >>>>>>> } >>>>>>> return res; >>>>>>> } >>>>>>> >>>>>>> Is there a reason why the Tracker object is created before the >>>>>>> pd_uncommit_memory, while the record() and ~Tracker is called after? >>>>>>> >>>>>>> Could we change the code above to: >>>>>>> >>>>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>>>> bool res = pd_uncommit_memory(addr, bytes); >>>>>>> if (res && MemTracker::tracking_level() > NMT_minimal) { >>>>>>> Tracker tkr = >>>>>>> MemTracker::get_virtual_memory_uncommit_tracker(); >>>>>>> tkr.record((address)addr, bytes); >>>>>>> } >>>>>>> return res; >>>>>>> } >>>>>>> >>>>>>> or even: >>>>>>> >>>>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>>>> bool res = pd_uncommit_memory(addr, bytes); >>>>>>> if (res) { >>>>>>> MemTracker::record_virtual_memory_uncommit(addr, bytes) >>>>>>> } >>>>>>> return res; >>>>>>> } >>>>>>> >>>>>>> Then these functions would look very similar to the commit >>>>>>> functions: >>>>>>> >>>>>>> bool os::commit_memory(char* addr, size_t size, size_t >>>>>>> alignment_hint, >>>>>>> bool executable) { >>>>>>> bool res = os::pd_commit_memory(addr, size, alignment_hint, >>>>>>> executable); >>>>>>> if (res) { >>>>>>> MemTracker::record_virtual_memory_commit((address)addr, >>>>>>> size, CALLER_PC); >>>>>>> } >>>>>>> return res; >>>>>>> } >>>>>>> >>>>>>> >>>>>>> I see that Tracker() and ~Tracker() locks and unlocks >>>>>>> ThreadCritical. Do we need to be in "thread critical" while >>>>>>> unmapping memory? >>>>>>> >>>>>>> If we can do the change above, then I think we can get rid of >>>>>>> get_virtual_memory_uncommit_tracker and >>>>>>> get_virtual_memory_release_tracker. >>>>>>> >>>>>>> Thanks, >>>>>>> StefanK >>>>>>> >>>>>>>> >>>>>>>> cheers, >>>>>>>> Per >>>>>>>> >>>>>>>>> >>>>>>>>> The uncommit path was executed even when NMT was turned off. >>>>>>>>> Because of this we hit the following assertion when pages were >>>>>>>>> detached: >>>>>>>>> >>>>>>>>> # Internal Error (.../services/memTracker.hpp:231), pid=12751, >>>>>>>>> tid=2738 >>>>>>>>> # assert(tracking_level() >= NMT_summary) failed: Check by caller >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> StefanK From per.liden at oracle.com Thu Jan 11 15:53:57 2018 From: per.liden at oracle.com (=?utf-8?Q?Per_Lid=C3=A9n?=) Date: Thu, 11 Jan 2018 16:53:57 +0100 Subject: RFR: NMT: Don't record uncommits unconditionally In-Reply-To: References: <8e4d8cf2-09f8-99c5-85b0-d613983fe441@oracle.com> <5aca7e3a-ebfa-e39d-9e56-8c9094901022@oracle.com> <704335c8-6c1d-4cca-d620-79725f188b57@redhat.com> Message-ID: <8D7580BF-EEC3-4052-BEDA-0679079A1B9F@oracle.com> > On 11 Jan 2018, at 16:31, Stefan Karlsson wrote: > >> On 2018-01-11 15:15, Zhengyu Gu wrote: >>> On 01/11/2018 08:51 AM, Stefan Karlsson wrote: >>> Hi Zhengyu, >>> >>> I think I found the reason why this uses the Tracker like this: >>> >>> // Tracker is used for guarding 'release' semantics of virtual memory operation, to avoid >>> // the other thread obtains and records the same region that is just 'released' by current >>> // thread but before it can record the operation. >> Ah, Thanks! >> But I still want to throw away MemTracker::get_virtual_memory_uncommit_tracker() and create Tracker in place. > > OK. Will you take care of it? > > If you want, you can take over this RFE: > https://bugs.openjdk.java.net/browse/JDK-8194926 > > Here's the updated ZGC patch. > > http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.02 Looks good! /Per > > The move of the nmt_uncommit call is not strictly necessary, because both the "unmap" and the "alloc" of the physical memory is protected by the same lock, but it makes the the code a bit more future proof. > > Thanks, > StefanK > >> -Zhengyu >>> >>> So, my proposed patch would undo that. I'll throw away that upstream patch and only create a proper ZGC change. >>> >>> Thanks, >>> StefanK >>> >>>> On 2018-01-11 14:38, Zhengyu Gu wrote: >>>> >>>> >>>>> On 01/11/2018 08:33 AM, Zhengyu Gu wrote: >>>>>> On 01/11/2018 05:28 AM, Stefan Karlsson wrote: >>>>>> If we decide that the below change is valid and an improvement, then I have a patch for this: >>>>>> >>>>>> http://cr.openjdk.java.net/~stefank/8194926/webrev.01/ >>>>>> https://bugs.openjdk.java.net/browse/JDK-8194926 >>>>>> 8194926: NMT: Clean up usage of get_record_virtual_memory_uncommit/release >>>>> >>>>> Thanks for the cleanup. Looks good to me. >>>> >>>> Oops. >>>> >>>> You do need >>>> >>>> static inline void record_virtual_memory_uncommit(void* addr, size_t size) { } >>>> 235 static inline void record_virtual_memory_release(void* addr, size_t size) { } >>>> >>>> in #if !INCLUDE_NMT section. >>>> >>>> Thanks, >>>> >>>> -Zhengyu >>>> >>>>> >>>>> -Zhengyu >>>>> >>>>>> >>>>>> While running the NMT jtreg tests with ZGC, I found that one of the tests used ints to parse size_t values. Here's and upstream patch for that. >>>>>> >>>>>> http://cr.openjdk.java.net/~stefank/8194925/webrev.01/ >>>>>> https://bugs.openjdk.java.net/browse/JDK-8194925 >>>>>> 8194925: NMT: SummarySanityCheck test can't parse values > max_jint >>>>>> >>>>>> Thanks, >>>>>> StefanK >>>>>> >>>>>>> On 2018-01-11 10:09, Stefan Karlsson wrote: >>>>>>> [Looping in Zhengyu] >>>>>>> >>>>>>> Inlined: >>>>>>> >>>>>>>> On 2018-01-11 07:56, Per Liden wrote: >>>>>>>> Hi, >>>>>>>> >>>>>>>>> On 01/10/2018 05:01 PM, Stefan Karlsson wrote: >>>>>>>>> Hi all, >>>>>>>>> >>>>>>>>> Please review this patch to fix a bug in the recent NMT implementation for ZGC. >>>>>>>>> >>>>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTBugFix/webrev.01 >>>>>>>> >>>>>>>> Change looks good, but the memTracker.cpp part should probably be split out into an upstream patch. Also, it feels like we should adjust the other user of this in os.cpp to use the new function. >>>>>>> >>>>>>> >>>>>>> Looking at the os.cpp function: >>>>>>> >>>>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>>>> bool res; >>>>>>> if (MemTracker::tracking_level() > NMT_minimal) { >>>>>>> Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>>>>>> res = pd_uncommit_memory(addr, bytes); >>>>>>> if (res) { >>>>>>> tkr.record((address)addr, bytes); >>>>>>> } >>>>>>> } else { >>>>>>> res = pd_uncommit_memory(addr, bytes); >>>>>>> } >>>>>>> return res; >>>>>>> } >>>>>>> >>>>>>> Is there a reason why the Tracker object is created before the pd_uncommit_memory, while the record() and ~Tracker is called after? >>>>>>> >>>>>>> Could we change the code above to: >>>>>>> >>>>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>>>> bool res = pd_uncommit_memory(addr, bytes); >>>>>>> if (res && MemTracker::tracking_level() > NMT_minimal) { >>>>>>> Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); >>>>>>> tkr.record((address)addr, bytes); >>>>>>> } >>>>>>> return res; >>>>>>> } >>>>>>> >>>>>>> or even: >>>>>>> >>>>>>> bool os::uncommit_memory(char* addr, size_t bytes) { >>>>>>> bool res = pd_uncommit_memory(addr, bytes); >>>>>>> if (res) { >>>>>>> MemTracker::record_virtual_memory_uncommit(addr, bytes) >>>>>>> } >>>>>>> return res; >>>>>>> } >>>>>>> >>>>>>> Then these functions would look very similar to the commit functions: >>>>>>> >>>>>>> bool os::commit_memory(char* addr, size_t size, size_t alignment_hint, >>>>>>> bool executable) { >>>>>>> bool res = os::pd_commit_memory(addr, size, alignment_hint, executable); >>>>>>> if (res) { >>>>>>> MemTracker::record_virtual_memory_commit((address)addr, size, CALLER_PC); >>>>>>> } >>>>>>> return res; >>>>>>> } >>>>>>> >>>>>>> >>>>>>> I see that Tracker() and ~Tracker() locks and unlocks ThreadCritical. Do we need to be in "thread critical" while unmapping memory? >>>>>>> >>>>>>> If we can do the change above, then I think we can get rid of get_virtual_memory_uncommit_tracker and get_virtual_memory_release_tracker. >>>>>>> >>>>>>> Thanks, >>>>>>> StefanK >>>>>>> >>>>>>>> >>>>>>>> cheers, >>>>>>>> Per >>>>>>>> >>>>>>>>> >>>>>>>>> The uncommit path was executed even when NMT was turned off. Because of this we hit the following assertion when pages were detached: >>>>>>>>> >>>>>>>>> # Internal Error (.../services/memTracker.hpp:231), pid=12751, tid=2738 >>>>>>>>> # assert(tracking_level() >= NMT_summary) failed: Check by caller >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> StefanK From stefan.karlsson at oracle.com Fri Jan 12 08:05:51 2018 From: stefan.karlsson at oracle.com (stefan.karlsson at oracle.com) Date: Fri, 12 Jan 2018 08:05:51 +0000 Subject: hg: zgc/zgc: ZGC: Fix nmt_uncommit bug Message-ID: <201801120805.w0C85psx002577@aojmv0008.oracle.com> Changeset: 89d447cff6c5 Author: stefank Date: 2018-01-12 08:56 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/89d447cff6c5 ZGC: Fix nmt_uncommit bug ! src/hotspot/share/gc/z/zPhysicalMemory.cpp From yasuenag at gmail.com Sat Jan 13 03:39:16 2018 From: yasuenag at gmail.com (Yasumasa Suenaga) Date: Sat, 13 Jan 2018 12:39:16 +0900 Subject: SA for ZGC In-Reply-To: References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> Message-ID: Hi Stefan, Per, Thank you for your comments and patches! I uploaded new webrev: all: http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ diff from Stefan's patch: http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ Stefan's patch seems to have resolved JDK-8194737. Should we resolve this JDK-8194737 in upstream repo and merge it to zgc at first? > Just one comment, in ZPage.java: > > 91 // There's no relocate operation in the SA. Simply use the from address and hope for the best. > 92 return from; > > we should return ZAddress.good(from) here. And then we can remove the last part of the comment. Maybe say something about in-place forwarding instead. I've fixed. >> 1) Some of the constants are Linux-specific and there's no platform abstraction in place. I added some constant values to vmStructs_z.hpp . So we can remove Linux-specific values from SA Java sources. But I've not remove address() from ZAddress.java because I'm not sure why this method is needed. >> 2) ZOop.to_address subverts the type system so that we can get from OopHandles and longs to Addresses. This seems to be frowned upon if you read the SA code. Maybe there are more correct ways to implement this? I changed ZOop#to_address() which have one argument which type is Address. I guess this change is type-safe. >> 4) I see that you used VMObjectFactory.newObject, I skipped that part, but we can think about unifying our patches. I think the classes which extends VMObject should be instantiated via VMObjectFactory#newObject() because other SA codes seems to be so. I changed to use this factory method as possible. >> 5) I had to invent a way to read global variables from HotSpot. See the usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do this? I added these values to constant values in VMStructs. Thus I removed ZGlobalsForVMStructs. >> I stress tested the thread dumping part that threw exceptions for me earlier by running SPECjbb2005: >> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >> >> and then continuously dumping the threads: >> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb --pid=`jps | grep JBBmain | awk '{print $1}'`; done Sorry, I do not have SPECjbb. Can you share the result? I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple Java app. This change works fine on my Linux x64 box. Thanks, Yasumasa On 2018/01/11 21:40, Per Liden wrote: > Hi, > > On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >> Hi Yasumasa, >> >> Here's my first stab at adding the ZGC load barries to the SA: >> >> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ > > Just one comment, in ZPage.java: > > ? 91???????? // There's no relocate operation in the SA. Simply use the from address and hope for the best. > ? 92???????? return from; > > we should return ZAddress.good(from) here. And then we can remove the last part of the comment. Maybe say something about in-place forwarding instead. > > cheers, > Per > >> >> I find it unfortunate that we have to duplicate the C++ code into Java, to get this to work. But it is what it is. >> >> Some comments about the code: >> >> 1) Some of the constants are Linux-specific and there's no platform abstraction in place. >> >> 2) ZOop.to_address subverts the type system so that we can get from OopHandles and longs to Addresses. This seems to be frowned upon if you read the SA code. Maybe there are more correct ways to implement this? >> >> 3) I use the ZGC weak barrier, since the SA agent only needs to be able to access the Objects, not mark them. Which is what the weak barriers provide. >> >> 4) I see that you used VMObjectFactory.newObject, I skipped that part, but we can think about unifying our patches. >> >> 5) I had to invent a way to read global variables from HotSpot. See the usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do this? >> >> I stress tested the thread dumping part that threw exceptions for me earlier by running SPECjbb2005: >> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >> >> and then continuously dumping the threads: >> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb --pid=`jps | grep JBBmain | awk '{print $1}'`; done >> >> >> Cheers, >> StefanK >> >> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>> Hi Stefan, >>> >>> >>>> Let me try to create an initial prototype for load barriers in the SA case and see where this takes us. >>> >>> Sure! >>> >>> >>>> FYI i also found that compressed oops are not fully supported in the SA: >>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>> >>> Thanks, I didn't know that. >>> I hope this issue will be fixed soon :-) >>> >>> >>> Yasumasa >>> >>> >>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>> Hi Yasumasa, >>>> >>>> Thanks for your contribution! >>>> >>>> I tested your patch together with jhsdb hsdb and immediately hit problems because of the lack of load barriers in the SA code. Let me try to create an initial prototype for load barriers in the SA case and see where this takes us. >>>> >>>> FYI i also found that compressed oops are not fully supported in the SA: >>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>> >>>> Thanks, >>>> StefanK >>>> >>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>> Thanks Per! >>>>> >>>>> I'm waiting for comments and sponsorship. >>>>> >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>> Hi Yasumasa, >>>>>> >>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>> Hi all, >>>>>>> >>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>> command is executed. >>>>>>> >>>>>>> As the first step, I propose to implement ZCollectedHeap and related classes for >>>>>>> ? SA as this webrev: >>>>>>> >>>>>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>> >>>>>>> After applying this patch, we can use `universe` command on CLHSDB. >>>>>>> (I followed `VM.info` jcmd output format) >>>>>> >>>>>> Thanks! Most of us working on ZGC are currently on vacation, but we'll have a closer look at the patch after the holidays. >>>>>> >>>>>> cheers, >>>>>> Per >>>>>> >>>>>>> >>>>>>> Of course, it is not all. We need to work more for it. >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Yasumasa >>>>>>> From stefan.karlsson at oracle.com Mon Jan 15 08:48:48 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Mon, 15 Jan 2018 09:48:48 +0100 Subject: SA for ZGC In-Reply-To: References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> Message-ID: <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> Hi Yasumasa, On 2018-01-13 04:39, Yasumasa Suenaga wrote: > Hi Stefan, Per, > > Thank you for your comments and patches! > I uploaded new webrev: > > ? all: > ??? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ > > ? diff from Stefan's patch: > ??? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ > > > Stefan's patch seems to have resolved JDK-8194737. > Should we resolve this JDK-8194737 in upstream repo and merge it to zgc > at first? I'll let Jini handle that bug. > > >> Just one comment, in ZPage.java: >> >> ?? 91???????? // There's no relocate operation in the SA. Simply use >> the from address and hope for the best. >> ?? 92???????? return from; >> >> we should return ZAddress.good(from) here. And then we can remove the >> last part of the comment. Maybe say something about in-place >> forwarding instead. > > I've fixed. > > >>> 1) Some of the constants are Linux-specific and there's no platform >>> abstraction in place. > > I added some constant values to vmStructs_z.hpp . So we can remove > Linux-specific values from SA Java sources. OK. Sounds like the right thing to do for true constants. More about this later. > But I've not remove address() from ZAddress.java because I'm not sure > why this method is needed. On SPARC we add a heap base when converting from "offsets" to "objects". See: http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp > > >>> 2) ZOop.to_address subverts the type system so that we can get from >>> OopHandles and longs to Addresses. This seems to be frowned upon if >>> you read the SA code. Maybe there are more correct ways to implement >>> this? > > I changed ZOop#to_address() which have one argument which type is Address. > I guess this change is type-safe. My version of ZOop.to_address converted a OopHandle into an non-OopHandle Address. Without it you get an UnsupportedOperationException when you try to do bit-manipulation on the OopHandle. From LinuxOopHandle: public Address addOffsetTo (long offset) throws UnsupportedOperationException { throw new UnsupportedOperationException("addOffsetTo not applicable to OopHandles (interior object pointers not allowed)"); } My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to ZBarrier.weak_barrier, but I changed that, so my implementation of ZOop.to_address isn't needed there. However, it is still needed for ZCollectedHeap.oopAddressDescription: public String oopAddressDescription(OopHandle handle) { Address origOop = ZOop.to_address(handle); Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); We either need to restore the previous implementation, or we need to fix oopAddressDescription. My version of ZOop.to_address performed bit manipulations just to ensure that we never got a all-zero value. You have left the andWithMask(REMOVE_MSB_MASK), which isn't necessary when you didn't add the bit in the first place. > > >>> 4) I see that you used VMObjectFactory.newObject, I skipped that >>> part, but we can think about unifying our patches. > > I think the classes which extends VMObject should be instantiated via > VMObjectFactory#newObject() because other SA codes seems to be so. > I changed to use this factory method as possible. OK. > > >>> 5) I had to invent a way to read global variables from HotSpot. See >>> the usage of ZGlobalsForVMStructs. Maybe there's a more correct way >>> to do this? > > I added these values to constant values in VMStructs. > Thus I removed ZGlobalsForVMStructs. This is a bug, and causes my test to fail. The constants values in VMStructs are for constants in the C++ code. Some of the values you changed are initialized during the VM initializations, and some are changed throughout the run of the VM. > > >>> I stress tested the thread dumping part that threw exceptions for me >>> earlier by running SPECjbb2005: >>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>> >>> and then continuously dumping the threads: >>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done > > Sorry, I do not have SPECjbb. > Can you share the result? You can use any program that starts a number of threads an continuously run GCs. > > I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple > Java app. > This change works fine on my Linux x64 box. Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers faster with that flag. This reproduces the problem: public class HelloSleep { public static void main(String... args) throws Exception { Thread.sleep(100000000000000L); } } DIR=~/hg/z/build/release/jdk $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & $DIR/bin/jcmd $! GC.run echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ Thanks, StefanK > > > Thanks, > > Yasumasa > > > On 2018/01/11 21:40, Per Liden wrote: >> Hi, >> >> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>> Hi Yasumasa, >>> >>> Here's my first stab at adding the ZGC load barries to the SA: >>> >>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >> >> Just one comment, in ZPage.java: >> >> ?? 91???????? // There's no relocate operation in the SA. Simply use >> the from address and hope for the best. >> ?? 92???????? return from; >> >> we should return ZAddress.good(from) here. And then we can remove the >> last part of the comment. Maybe say something about in-place >> forwarding instead. >> >> cheers, >> Per >> >>> >>> I find it unfortunate that we have to duplicate the C++ code into >>> Java, to get this to work. But it is what it is. >>> >>> Some comments about the code: >>> >>> 1) Some of the constants are Linux-specific and there's no platform >>> abstraction in place. >>> >>> 2) ZOop.to_address subverts the type system so that we can get from >>> OopHandles and longs to Addresses. This seems to be frowned upon if >>> you read the SA code. Maybe there are more correct ways to implement >>> this? >>> >>> 3) I use the ZGC weak barrier, since the SA agent only needs to be >>> able to access the Objects, not mark them. Which is what the weak >>> barriers provide. >>> >>> 4) I see that you used VMObjectFactory.newObject, I skipped that >>> part, but we can think about unifying our patches. >>> >>> 5) I had to invent a way to read global variables from HotSpot. See >>> the usage of ZGlobalsForVMStructs. Maybe there's a more correct way >>> to do this? >>> >>> I stress tested the thread dumping part that threw exceptions for me >>> earlier by running SPECjbb2005: >>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>> >>> and then continuously dumping the threads: >>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>> >>> >>> Cheers, >>> StefanK >>> >>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>> Hi Stefan, >>>> >>>> >>>>> Let me try to create an initial prototype for load barriers in the >>>>> SA case and see where this takes us. >>>> >>>> Sure! >>>> >>>> >>>>> FYI i also found that compressed oops are not fully supported in >>>>> the SA: >>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>> >>>> Thanks, I didn't know that. >>>> I hope this issue will be fixed soon :-) >>>> >>>> >>>> Yasumasa >>>> >>>> >>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>> Hi Yasumasa, >>>>> >>>>> Thanks for your contribution! >>>>> >>>>> I tested your patch together with jhsdb hsdb and immediately hit >>>>> problems because of the lack of load barriers in the SA code. Let >>>>> me try to create an initial prototype for load barriers in the SA >>>>> case and see where this takes us. >>>>> >>>>> FYI i also found that compressed oops are not fully supported in >>>>> the SA: >>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>> >>>>> Thanks, >>>>> StefanK >>>>> >>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>> Thanks Per! >>>>>> >>>>>> I'm waiting for comments and sponsorship. >>>>>> >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>> Hi Yasumasa, >>>>>>> >>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>> Hi all, >>>>>>>> >>>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>>> command is executed. >>>>>>>> >>>>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>>>> related classes for >>>>>>>> ? SA as this webrev: >>>>>>>> >>>>>>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>> >>>>>>>> After applying this patch, we can use `universe` command on CLHSDB. >>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>> >>>>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>> >>>>>>> cheers, >>>>>>> Per >>>>>>> >>>>>>>> >>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> From yasuenag at gmail.com Tue Jan 16 07:14:48 2018 From: yasuenag at gmail.com (Yasumasa Suenaga) Date: Tue, 16 Jan 2018 16:14:48 +0900 Subject: SA for ZGC In-Reply-To: <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> Message-ID: Hi Stefan, >> Stefan's patch seems to have resolved JDK-8194737. >> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc at >> first? > > > I'll let Jini handle that bug. Thanks! I watch this bug. > On SPARC we add a heap base when converting from "offsets" to "objects". > See: > http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp I think we can use getOS() and getCPU() in VM class: http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 > My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to > ZBarrier.weak_barrier, but I changed that, so my implementation of > ZOop.to_address isn't needed there. However, it is still needed for > ZCollectedHeap.oopAddressDescription: > > public String oopAddressDescription(OopHandle handle) { > Address origOop = ZOop.to_address(handle); > Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); > > We either need to restore the previous implementation, or we need to fix > oopAddressDescription. OK, I will keep your original ZOop.java and related implementation. >> I added these values to constant values in VMStructs. >> Thus I removed ZGlobalsForVMStructs. > > > > This is a bug, and causes my test to fail. > > The constants values in VMStructs are for constants in the C++ code. Some of > the values you changed are initialized during the VM initializations, and > some are changed throughout the run of the VM. I guess we can use HotSpotVMAddress as JVMCI: http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 However this symbol is not exported. We need to add `gHotSpotVMAddress` to vmStructs.hpp . BTW, do ZGC team have a plan to refactor zGlobals.hpp? AFAICS HotSpot does not have global variables (not `const` value). IMHO we can refactor zGlobals to the C++ class which extends AllStatic. We can use VMStructs directly if we do so. > Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers faster > with that flag. Thanks! After all concerns in above is resolved, I will test it. Yasumasa 2018-01-15 17:48 GMT+09:00 Stefan Karlsson : > Hi Yasumasa, > > On 2018-01-13 04:39, Yasumasa Suenaga wrote: >> >> Hi Stefan, Per, >> >> Thank you for your comments and patches! >> I uploaded new webrev: >> >> all: >> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >> >> diff from Stefan's patch: >> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >> >> >> Stefan's patch seems to have resolved JDK-8194737. >> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc at >> first? > > > I'll let Jini handle that bug. > >> >> >>> Just one comment, in ZPage.java: >>> >>> 91 // There's no relocate operation in the SA. Simply use the >>> from address and hope for the best. >>> 92 return from; >>> >>> we should return ZAddress.good(from) here. And then we can remove the >>> last part of the comment. Maybe say something about in-place forwarding >>> instead. >> >> >> I've fixed. >> >> >>>> 1) Some of the constants are Linux-specific and there's no platform >>>> abstraction in place. >> >> >> I added some constant values to vmStructs_z.hpp . So we can remove >> Linux-specific values from SA Java sources. > > > OK. Sounds like the right thing to do for true constants. More about this > later. > >> But I've not remove address() from ZAddress.java because I'm not sure why >> this method is needed. > > > On SPARC we add a heap base when converting from "offsets" to "objects". > See: > http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp > > >> >> >>>> 2) ZOop.to_address subverts the type system so that we can get from >>>> OopHandles and longs to Addresses. This seems to be frowned upon if you read >>>> the SA code. Maybe there are more correct ways to implement this? >> >> >> I changed ZOop#to_address() which have one argument which type is Address. >> I guess this change is type-safe. > > > My version of ZOop.to_address converted a OopHandle into an non-OopHandle > Address. Without it you get an UnsupportedOperationException when you try to > do bit-manipulation on the OopHandle. From LinuxOopHandle: > public Address addOffsetTo (long offset) throws > UnsupportedOperationException { > throw new UnsupportedOperationException("addOffsetTo not applicable to > OopHandles (interior object pointers not allowed)"); > } > > > My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to > ZBarrier.weak_barrier, but I changed that, so my implementation of > ZOop.to_address isn't needed there. However, it is still needed for > ZCollectedHeap.oopAddressDescription: > > public String oopAddressDescription(OopHandle handle) { > Address origOop = ZOop.to_address(handle); > Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); > > We either need to restore the previous implementation, or we need to fix > oopAddressDescription. > > My version of ZOop.to_address performed bit manipulations just to ensure > that we never got a all-zero value. You have left the > andWithMask(REMOVE_MSB_MASK), which isn't necessary when you didn't add the > bit in the first place. > > >> >> >>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>> but we can think about unifying our patches. >> >> >> I think the classes which extends VMObject should be instantiated via >> VMObjectFactory#newObject() because other SA codes seems to be so. >> I changed to use this factory method as possible. > > > OK. > >> >> >>>> 5) I had to invent a way to read global variables from HotSpot. See the >>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do this? >> >> >> I added these values to constant values in VMStructs. >> Thus I removed ZGlobalsForVMStructs. > > > > This is a bug, and causes my test to fail. > > The constants values in VMStructs are for constants in the C++ code. Some of > the values you changed are initialized during the VM initializations, and > some are changed throughout the run of the VM. > >> >> >>>> I stress tested the thread dumping part that threw exceptions for me >>>> earlier by running SPECjbb2005: >>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>> >>>> and then continuously dumping the threads: >>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >> >> >> Sorry, I do not have SPECjbb. >> Can you share the result? > > > > You can use any program that starts a number of threads an continuously run > GCs. > >> >> I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple >> Java app. >> This change works fine on my Linux x64 box. > > > Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers faster > with that flag. > > This reproduces the problem: > > public class HelloSleep { > public static void main(String... args) throws Exception { > Thread.sleep(100000000000000L); > } > } > > DIR=~/hg/z/build/release/jdk > $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & > $DIR/bin/jcmd $! GC.run > echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ > > Thanks, > StefanK > > >> >> >> Thanks, >> >> Yasumasa >> >> >> On 2018/01/11 21:40, Per Liden wrote: >>> >>> Hi, >>> >>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>> >>>> Hi Yasumasa, >>>> >>>> Here's my first stab at adding the ZGC load barries to the SA: >>>> >>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>> >>> >>> Just one comment, in ZPage.java: >>> >>> 91 // There's no relocate operation in the SA. Simply use the >>> from address and hope for the best. >>> 92 return from; >>> >>> we should return ZAddress.good(from) here. And then we can remove the >>> last part of the comment. Maybe say something about in-place forwarding >>> instead. >>> >>> cheers, >>> Per >>> >>>> >>>> I find it unfortunate that we have to duplicate the C++ code into Java, >>>> to get this to work. But it is what it is. >>>> >>>> Some comments about the code: >>>> >>>> 1) Some of the constants are Linux-specific and there's no platform >>>> abstraction in place. >>>> >>>> 2) ZOop.to_address subverts the type system so that we can get from >>>> OopHandles and longs to Addresses. This seems to be frowned upon if you read >>>> the SA code. Maybe there are more correct ways to implement this? >>>> >>>> 3) I use the ZGC weak barrier, since the SA agent only needs to be able >>>> to access the Objects, not mark them. Which is what the weak barriers >>>> provide. >>>> >>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>> but we can think about unifying our patches. >>>> >>>> 5) I had to invent a way to read global variables from HotSpot. See the >>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do this? >>>> >>>> I stress tested the thread dumping part that threw exceptions for me >>>> earlier by running SPECjbb2005: >>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>> >>>> and then continuously dumping the threads: >>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>> >>>> >>>> Cheers, >>>> StefanK >>>> >>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>> >>>>> Hi Stefan, >>>>> >>>>> >>>>>> Let me try to create an initial prototype for load barriers in the SA >>>>>> case and see where this takes us. >>>>> >>>>> >>>>> Sure! >>>>> >>>>> >>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>> SA: >>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>> >>>>> >>>>> Thanks, I didn't know that. >>>>> I hope this issue will be fixed soon :-) >>>>> >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>> >>>>>> Hi Yasumasa, >>>>>> >>>>>> Thanks for your contribution! >>>>>> >>>>>> I tested your patch together with jhsdb hsdb and immediately hit >>>>>> problems because of the lack of load barriers in the SA code. Let me try to >>>>>> create an initial prototype for load barriers in the SA case and see where >>>>>> this takes us. >>>>>> >>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>> SA: >>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>> >>>>>> Thanks, >>>>>> StefanK >>>>>> >>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>> >>>>>>> Thanks Per! >>>>>>> >>>>>>> I'm waiting for comments and sponsorship. >>>>>>> >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>> >>>>>>>> Hi Yasumasa, >>>>>>>> >>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>> >>>>>>>>> Hi all, >>>>>>>>> >>>>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>>>> command is executed. >>>>>>>>> >>>>>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>>>>> related classes for >>>>>>>>> SA as this webrev: >>>>>>>>> >>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>> >>>>>>>>> After applying this patch, we can use `universe` command on CLHSDB. >>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>> >>>>>>>> >>>>>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>> >>>>>>>> cheers, >>>>>>>> Per >>>>>>>> >>>>>>>>> >>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> > From stefan.karlsson at oracle.com Tue Jan 16 09:26:10 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Tue, 16 Jan 2018 10:26:10 +0100 Subject: SA for ZGC In-Reply-To: References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> Message-ID: <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> Hi Yasumas, On 2018-01-16 08:14, Yasumasa Suenaga wrote: > Hi Stefan, > >>> Stefan's patch seems to have resolved JDK-8194737. >>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc at >>> first? >> >> >> I'll let Jini handle that bug. > > Thanks! > I watch this bug. > > >> On SPARC we add a heap base when converting from "offsets" to "objects". >> See: >> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp > > I think we can use getOS() and getCPU() in VM class: > http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 > > >> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >> ZBarrier.weak_barrier, but I changed that, so my implementation of >> ZOop.to_address isn't needed there. However, it is still needed for >> ZCollectedHeap.oopAddressDescription: >> >> public String oopAddressDescription(OopHandle handle) { >> Address origOop = ZOop.to_address(handle); >> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >> >> We either need to restore the previous implementation, or we need to fix >> oopAddressDescription. > > OK, I will keep your original ZOop.java and related implementation. OK. We can revisit this later if we do decide to clean this up. > > >>> I added these values to constant values in VMStructs. >>> Thus I removed ZGlobalsForVMStructs. >> >> >> >> This is a bug, and causes my test to fail. >> >> The constants values in VMStructs are for constants in the C++ code. Some of >> the values you changed are initialized during the VM initializations, and >> some are changed throughout the run of the VM. > > I guess we can use HotSpotVMAddress as JVMCI: > http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 > > However this symbol is not exported. > We need to add `gHotSpotVMAddress` to vmStructs.hpp . > > BTW, do ZGC team have a plan to refactor zGlobals.hpp? Currently, we don't have any plans to do that. > AFAICS HotSpot does not have global variables (not `const` value). > IMHO we can refactor zGlobals to the C++ class which extends AllStatic. > We can use VMStructs directly if we do so. HotSpot actually does have global variables. You'll find some of them in globalDefinitions.hpp. For example: heapOopSize, MinObjAlignment, and OopEncodingHeapMax. The SA seems to duplicate the calculations of these values instead of reading the actual values from the process/core. I'm a bit reluctant to change the ZGC code style just to adapt to the SA agent. Currently, I think it's fine to have an extra layer in vmStructs_z until the SA agent gets support for global variables. Thanks, StefanK > > >> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers faster >> with that flag. > > Thanks! > After all concerns in above is resolved, I will test it. > > > Yasumasa > > > 2018-01-15 17:48 GMT+09:00 Stefan Karlsson : >> Hi Yasumasa, >> >> On 2018-01-13 04:39, Yasumasa Suenaga wrote: >>> >>> Hi Stefan, Per, >>> >>> Thank you for your comments and patches! >>> I uploaded new webrev: >>> >>> all: >>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >>> >>> diff from Stefan's patch: >>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >>> >>> >>> Stefan's patch seems to have resolved JDK-8194737. >>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc at >>> first? >> >> >> I'll let Jini handle that bug. >> >>> >>> >>>> Just one comment, in ZPage.java: >>>> >>>> 91 // There's no relocate operation in the SA. Simply use the >>>> from address and hope for the best. >>>> 92 return from; >>>> >>>> we should return ZAddress.good(from) here. And then we can remove the >>>> last part of the comment. Maybe say something about in-place forwarding >>>> instead. >>> >>> >>> I've fixed. >>> >>> >>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>> abstraction in place. >>> >>> >>> I added some constant values to vmStructs_z.hpp . So we can remove >>> Linux-specific values from SA Java sources. >> >> >> OK. Sounds like the right thing to do for true constants. More about this >> later. >> >>> But I've not remove address() from ZAddress.java because I'm not sure why >>> this method is needed. >> >> >> On SPARC we add a heap base when converting from "offsets" to "objects". >> See: >> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >> >> >>> >>> >>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>> OopHandles and longs to Addresses. This seems to be frowned upon if you read >>>>> the SA code. Maybe there are more correct ways to implement this? >>> >>> >>> I changed ZOop#to_address() which have one argument which type is Address. >>> I guess this change is type-safe. >> >> >> My version of ZOop.to_address converted a OopHandle into an non-OopHandle >> Address. Without it you get an UnsupportedOperationException when you try to >> do bit-manipulation on the OopHandle. From LinuxOopHandle: >> public Address addOffsetTo (long offset) throws >> UnsupportedOperationException { >> throw new UnsupportedOperationException("addOffsetTo not applicable to >> OopHandles (interior object pointers not allowed)"); >> } >> >> >> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >> ZBarrier.weak_barrier, but I changed that, so my implementation of >> ZOop.to_address isn't needed there. However, it is still needed for >> ZCollectedHeap.oopAddressDescription: >> >> public String oopAddressDescription(OopHandle handle) { >> Address origOop = ZOop.to_address(handle); >> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >> >> We either need to restore the previous implementation, or we need to fix >> oopAddressDescription. >> >> My version of ZOop.to_address performed bit manipulations just to ensure >> that we never got a all-zero value. You have left the >> andWithMask(REMOVE_MSB_MASK), which isn't necessary when you didn't add the >> bit in the first place. >> >> >>> >>> >>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>> but we can think about unifying our patches. >>> >>> >>> I think the classes which extends VMObject should be instantiated via >>> VMObjectFactory#newObject() because other SA codes seems to be so. >>> I changed to use this factory method as possible. >> >> >> OK. >> >>> >>> >>>>> 5) I had to invent a way to read global variables from HotSpot. See the >>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do this? >>> >>> >>> I added these values to constant values in VMStructs. >>> Thus I removed ZGlobalsForVMStructs. >> >> >> >> This is a bug, and causes my test to fail. >> >> The constants values in VMStructs are for constants in the C++ code. Some of >> the values you changed are initialized during the VM initializations, and >> some are changed throughout the run of the VM. >> >>> >>> >>>>> I stress tested the thread dumping part that threw exceptions for me >>>>> earlier by running SPECjbb2005: >>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>> >>>>> and then continuously dumping the threads: >>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>> >>> >>> Sorry, I do not have SPECjbb. >>> Can you share the result? >> >> >> >> You can use any program that starts a number of threads an continuously run >> GCs. >> >>> >>> I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple >>> Java app. >>> This change works fine on my Linux x64 box. >> >> >> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers faster >> with that flag. >> >> This reproduces the problem: >> >> public class HelloSleep { >> public static void main(String... args) throws Exception { >> Thread.sleep(100000000000000L); >> } >> } >> >> DIR=~/hg/z/build/release/jdk >> $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & >> $DIR/bin/jcmd $! GC.run >> echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ >> >> Thanks, >> StefanK >> >> >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>> On 2018/01/11 21:40, Per Liden wrote: >>>> >>>> Hi, >>>> >>>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>>> >>>>> Hi Yasumasa, >>>>> >>>>> Here's my first stab at adding the ZGC load barries to the SA: >>>>> >>>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>>> >>>> >>>> Just one comment, in ZPage.java: >>>> >>>> 91 // There's no relocate operation in the SA. Simply use the >>>> from address and hope for the best. >>>> 92 return from; >>>> >>>> we should return ZAddress.good(from) here. And then we can remove the >>>> last part of the comment. Maybe say something about in-place forwarding >>>> instead. >>>> >>>> cheers, >>>> Per >>>> >>>>> >>>>> I find it unfortunate that we have to duplicate the C++ code into Java, >>>>> to get this to work. But it is what it is. >>>>> >>>>> Some comments about the code: >>>>> >>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>> abstraction in place. >>>>> >>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>> OopHandles and longs to Addresses. This seems to be frowned upon if you read >>>>> the SA code. Maybe there are more correct ways to implement this? >>>>> >>>>> 3) I use the ZGC weak barrier, since the SA agent only needs to be able >>>>> to access the Objects, not mark them. Which is what the weak barriers >>>>> provide. >>>>> >>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>> but we can think about unifying our patches. >>>>> >>>>> 5) I had to invent a way to read global variables from HotSpot. See the >>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do this? >>>>> >>>>> I stress tested the thread dumping part that threw exceptions for me >>>>> earlier by running SPECjbb2005: >>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>> >>>>> and then continuously dumping the threads: >>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>> >>>>> >>>>> Cheers, >>>>> StefanK >>>>> >>>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>>> >>>>>> Hi Stefan, >>>>>> >>>>>> >>>>>>> Let me try to create an initial prototype for load barriers in the SA >>>>>>> case and see where this takes us. >>>>>> >>>>>> >>>>>> Sure! >>>>>> >>>>>> >>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>> SA: >>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>> >>>>>> >>>>>> Thanks, I didn't know that. >>>>>> I hope this issue will be fixed soon :-) >>>>>> >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>>> >>>>>>> Hi Yasumasa, >>>>>>> >>>>>>> Thanks for your contribution! >>>>>>> >>>>>>> I tested your patch together with jhsdb hsdb and immediately hit >>>>>>> problems because of the lack of load barriers in the SA code. Let me try to >>>>>>> create an initial prototype for load barriers in the SA case and see where >>>>>>> this takes us. >>>>>>> >>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>> SA: >>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>> >>>>>>> Thanks, >>>>>>> StefanK >>>>>>> >>>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>>> >>>>>>>> Thanks Per! >>>>>>>> >>>>>>>> I'm waiting for comments and sponsorship. >>>>>>>> >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>>> >>>>>>>>> Hi Yasumasa, >>>>>>>>> >>>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>>> >>>>>>>>>> Hi all, >>>>>>>>>> >>>>>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>>>>> command is executed. >>>>>>>>>> >>>>>>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>>>>>> related classes for >>>>>>>>>> SA as this webrev: >>>>>>>>>> >>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>>> >>>>>>>>>> After applying this patch, we can use `universe` command on CLHSDB. >>>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>>> >>>>>>>>> cheers, >>>>>>>>> Per >>>>>>>>> >>>>>>>>>> >>>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >> From yasuenag at gmail.com Tue Jan 16 10:57:40 2018 From: yasuenag at gmail.com (Yasumasa Suenaga) Date: Tue, 16 Jan 2018 19:57:40 +0900 Subject: SA for ZGC In-Reply-To: <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> Message-ID: Hi Stefan, I've restored your change and use VM.getOS() and getCPU() in new webrev: http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.02/ I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. Thanks, Yasumasa 2018-01-16 18:26 GMT+09:00 Stefan Karlsson : > Hi Yasumas, > > On 2018-01-16 08:14, Yasumasa Suenaga wrote: >> >> Hi Stefan, >> >>>> Stefan's patch seems to have resolved JDK-8194737. >>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>> at >>>> first? >>> >>> >>> >>> I'll let Jini handle that bug. >> >> >> Thanks! >> I watch this bug. >> >> >>> On SPARC we add a heap base when converting from "offsets" to "objects". >>> See: >>> >>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >> >> >> I think we can use getOS() and getCPU() in VM class: >> >> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 >> >> >>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>> ZOop.to_address isn't needed there. However, it is still needed for >>> ZCollectedHeap.oopAddressDescription: >>> >>> public String oopAddressDescription(OopHandle handle) { >>> Address origOop = ZOop.to_address(handle); >>> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>> >>> We either need to restore the previous implementation, or we need to fix >>> oopAddressDescription. >> >> >> OK, I will keep your original ZOop.java and related implementation. > > > OK. We can revisit this later if we do decide to clean this up. > >> >> >>>> I added these values to constant values in VMStructs. >>>> Thus I removed ZGlobalsForVMStructs. >>> >>> >>> >>> >>> This is a bug, and causes my test to fail. >>> >>> The constants values in VMStructs are for constants in the C++ code. Some >>> of >>> the values you changed are initialized during the VM initializations, and >>> some are changed throughout the run of the VM. >> >> >> I guess we can use HotSpotVMAddress as JVMCI: >> >> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 >> >> However this symbol is not exported. >> We need to add `gHotSpotVMAddress` to vmStructs.hpp . >> >> BTW, do ZGC team have a plan to refactor zGlobals.hpp? > > > > Currently, we don't have any plans to do that. > >> AFAICS HotSpot does not have global variables (not `const` value). >> IMHO we can refactor zGlobals to the C++ class which extends AllStatic. >> We can use VMStructs directly if we do so. > > > HotSpot actually does have global variables. You'll find some of them in > globalDefinitions.hpp. For example: heapOopSize, MinObjAlignment, and > OopEncodingHeapMax. > > The SA seems to duplicate the calculations of these values instead of > reading the actual values from the process/core. > > I'm a bit reluctant to change the ZGC code style just to adapt to the SA > agent. Currently, I think it's fine to have an extra layer in vmStructs_z > until the SA agent gets support for global variables. > > Thanks, > StefanK > > >> >> >>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>> faster >>> with that flag. >> >> >> Thanks! >> After all concerns in above is resolved, I will test it. >> >> >> Yasumasa >> >> >> 2018-01-15 17:48 GMT+09:00 Stefan Karlsson : >>> >>> Hi Yasumasa, >>> >>> On 2018-01-13 04:39, Yasumasa Suenaga wrote: >>>> >>>> >>>> Hi Stefan, Per, >>>> >>>> Thank you for your comments and patches! >>>> I uploaded new webrev: >>>> >>>> all: >>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >>>> >>>> diff from Stefan's patch: >>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >>>> >>>> >>>> Stefan's patch seems to have resolved JDK-8194737. >>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>> at >>>> first? >>> >>> >>> >>> I'll let Jini handle that bug. >>> >>>> >>>> >>>>> Just one comment, in ZPage.java: >>>>> >>>>> 91 // There's no relocate operation in the SA. Simply use >>>>> the >>>>> from address and hope for the best. >>>>> 92 return from; >>>>> >>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>> last part of the comment. Maybe say something about in-place forwarding >>>>> instead. >>>> >>>> >>>> >>>> I've fixed. >>>> >>>> >>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>> abstraction in place. >>>> >>>> >>>> >>>> I added some constant values to vmStructs_z.hpp . So we can remove >>>> Linux-specific values from SA Java sources. >>> >>> >>> >>> OK. Sounds like the right thing to do for true constants. More about this >>> later. >>> >>>> But I've not remove address() from ZAddress.java because I'm not sure >>>> why >>>> this method is needed. >>> >>> >>> >>> On SPARC we add a heap base when converting from "offsets" to "objects". >>> See: >>> >>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>> >>> >>>> >>>> >>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>> you read >>>>>> the SA code. Maybe there are more correct ways to implement this? >>>> >>>> >>>> >>>> I changed ZOop#to_address() which have one argument which type is >>>> Address. >>>> I guess this change is type-safe. >>> >>> >>> >>> My version of ZOop.to_address converted a OopHandle into an non-OopHandle >>> Address. Without it you get an UnsupportedOperationException when you try >>> to >>> do bit-manipulation on the OopHandle. From LinuxOopHandle: >>> public Address addOffsetTo (long offset) throws >>> UnsupportedOperationException { >>> throw new UnsupportedOperationException("addOffsetTo not applicable >>> to >>> OopHandles (interior object pointers not allowed)"); >>> } >>> >>> >>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>> ZOop.to_address isn't needed there. However, it is still needed for >>> ZCollectedHeap.oopAddressDescription: >>> >>> public String oopAddressDescription(OopHandle handle) { >>> Address origOop = ZOop.to_address(handle); >>> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>> >>> We either need to restore the previous implementation, or we need to fix >>> oopAddressDescription. >>> >>> My version of ZOop.to_address performed bit manipulations just to ensure >>> that we never got a all-zero value. You have left the >>> andWithMask(REMOVE_MSB_MASK), which isn't necessary when you didn't add >>> the >>> bit in the first place. >>> >>> >>>> >>>> >>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>> but we can think about unifying our patches. >>>> >>>> >>>> >>>> I think the classes which extends VMObject should be instantiated via >>>> VMObjectFactory#newObject() because other SA codes seems to be so. >>>> I changed to use this factory method as possible. >>> >>> >>> >>> OK. >>> >>>> >>>> >>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>> the >>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>> this? >>>> >>>> >>>> >>>> I added these values to constant values in VMStructs. >>>> Thus I removed ZGlobalsForVMStructs. >>> >>> >>> >>> >>> This is a bug, and causes my test to fail. >>> >>> The constants values in VMStructs are for constants in the C++ code. Some >>> of >>> the values you changed are initialized during the VM initializations, and >>> some are changed throughout the run of the VM. >>> >>>> >>>> >>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>> earlier by running SPECjbb2005: >>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>> >>>>>> and then continuously dumping the threads: >>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>> >>>> >>>> >>>> Sorry, I do not have SPECjbb. >>>> Can you share the result? >>> >>> >>> >>> >>> You can use any program that starts a number of threads an continuously >>> run >>> GCs. >>> >>>> >>>> I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple >>>> Java app. >>>> This change works fine on my Linux x64 box. >>> >>> >>> >>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>> faster >>> with that flag. >>> >>> This reproduces the problem: >>> >>> public class HelloSleep { >>> public static void main(String... args) throws Exception { >>> Thread.sleep(100000000000000L); >>> } >>> } >>> >>> DIR=~/hg/z/build/release/jdk >>> $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & >>> $DIR/bin/jcmd $! GC.run >>> echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ >>> >>> Thanks, >>> StefanK >>> >>> >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> >>>> >>>> On 2018/01/11 21:40, Per Liden wrote: >>>>> >>>>> >>>>> Hi, >>>>> >>>>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>>>> >>>>>> >>>>>> Hi Yasumasa, >>>>>> >>>>>> Here's my first stab at adding the ZGC load barries to the SA: >>>>>> >>>>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>>>> >>>>> >>>>> >>>>> Just one comment, in ZPage.java: >>>>> >>>>> 91 // There's no relocate operation in the SA. Simply use >>>>> the >>>>> from address and hope for the best. >>>>> 92 return from; >>>>> >>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>> last part of the comment. Maybe say something about in-place forwarding >>>>> instead. >>>>> >>>>> cheers, >>>>> Per >>>>> >>>>>> >>>>>> I find it unfortunate that we have to duplicate the C++ code into >>>>>> Java, >>>>>> to get this to work. But it is what it is. >>>>>> >>>>>> Some comments about the code: >>>>>> >>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>> abstraction in place. >>>>>> >>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>> you read >>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>> >>>>>> 3) I use the ZGC weak barrier, since the SA agent only needs to be >>>>>> able >>>>>> to access the Objects, not mark them. Which is what the weak barriers >>>>>> provide. >>>>>> >>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>> but we can think about unifying our patches. >>>>>> >>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>> the >>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>> this? >>>>>> >>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>> earlier by running SPECjbb2005: >>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>> >>>>>> and then continuously dumping the threads: >>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>> >>>>>> >>>>>> Cheers, >>>>>> StefanK >>>>>> >>>>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>>>> >>>>>>> >>>>>>> Hi Stefan, >>>>>>> >>>>>>> >>>>>>>> Let me try to create an initial prototype for load barriers in the >>>>>>>> SA >>>>>>>> case and see where this takes us. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Sure! >>>>>>> >>>>>>> >>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>> SA: >>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>> >>>>>>> >>>>>>> >>>>>>> Thanks, I didn't know that. >>>>>>> I hope this issue will be fixed soon :-) >>>>>>> >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>>>> >>>>>>>> >>>>>>>> Hi Yasumasa, >>>>>>>> >>>>>>>> Thanks for your contribution! >>>>>>>> >>>>>>>> I tested your patch together with jhsdb hsdb and immediately hit >>>>>>>> problems because of the lack of load barriers in the SA code. Let me >>>>>>>> try to >>>>>>>> create an initial prototype for load barriers in the SA case and see >>>>>>>> where >>>>>>>> this takes us. >>>>>>>> >>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>> SA: >>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>> >>>>>>>> Thanks, >>>>>>>> StefanK >>>>>>>> >>>>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks Per! >>>>>>>>> >>>>>>>>> I'm waiting for comments and sponsorship. >>>>>>>>> >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> >>>>>>>>> >>>>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hi Yasumasa, >>>>>>>>>> >>>>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hi all, >>>>>>>>>>> >>>>>>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>>>>>> command is executed. >>>>>>>>>>> >>>>>>>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>>>>>>> related classes for >>>>>>>>>>> SA as this webrev: >>>>>>>>>>> >>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>>>> >>>>>>>>>>> After applying this patch, we can use `universe` command on >>>>>>>>>>> CLHSDB. >>>>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>>>> >>>>>>>>>> cheers, >>>>>>>>>> Per >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>> > From yasuenag at gmail.com Tue Jan 16 11:00:22 2018 From: yasuenag at gmail.com (Yasumasa Suenaga) Date: Tue, 16 Jan 2018 20:00:22 +0900 Subject: SA for ZGC In-Reply-To: References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> Message-ID: > I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. Sorry, I forgot to run GC.run jcmd. I had a error. I will look it later. Yasumasa 2018-01-16 19:57 GMT+09:00 Yasumasa Suenaga : > Hi Stefan, > > I've restored your change and use VM.getOS() and getCPU() in new webrev: > http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.02/ > > I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. > > > Thanks, > > Yasumasa > > > > > 2018-01-16 18:26 GMT+09:00 Stefan Karlsson : >> Hi Yasumas, >> >> On 2018-01-16 08:14, Yasumasa Suenaga wrote: >>> >>> Hi Stefan, >>> >>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>> at >>>>> first? >>>> >>>> >>>> >>>> I'll let Jini handle that bug. >>> >>> >>> Thanks! >>> I watch this bug. >>> >>> >>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>> See: >>>> >>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>> >>> >>> I think we can use getOS() and getCPU() in VM class: >>> >>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 >>> >>> >>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>> ZOop.to_address isn't needed there. However, it is still needed for >>>> ZCollectedHeap.oopAddressDescription: >>>> >>>> public String oopAddressDescription(OopHandle handle) { >>>> Address origOop = ZOop.to_address(handle); >>>> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>> >>>> We either need to restore the previous implementation, or we need to fix >>>> oopAddressDescription. >>> >>> >>> OK, I will keep your original ZOop.java and related implementation. >> >> >> OK. We can revisit this later if we do decide to clean this up. >> >>> >>> >>>>> I added these values to constant values in VMStructs. >>>>> Thus I removed ZGlobalsForVMStructs. >>>> >>>> >>>> >>>> >>>> This is a bug, and causes my test to fail. >>>> >>>> The constants values in VMStructs are for constants in the C++ code. Some >>>> of >>>> the values you changed are initialized during the VM initializations, and >>>> some are changed throughout the run of the VM. >>> >>> >>> I guess we can use HotSpotVMAddress as JVMCI: >>> >>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 >>> >>> However this symbol is not exported. >>> We need to add `gHotSpotVMAddress` to vmStructs.hpp . >>> >>> BTW, do ZGC team have a plan to refactor zGlobals.hpp? >> >> >> >> Currently, we don't have any plans to do that. >> >>> AFAICS HotSpot does not have global variables (not `const` value). >>> IMHO we can refactor zGlobals to the C++ class which extends AllStatic. >>> We can use VMStructs directly if we do so. >> >> >> HotSpot actually does have global variables. You'll find some of them in >> globalDefinitions.hpp. For example: heapOopSize, MinObjAlignment, and >> OopEncodingHeapMax. >> >> The SA seems to duplicate the calculations of these values instead of >> reading the actual values from the process/core. >> >> I'm a bit reluctant to change the ZGC code style just to adapt to the SA >> agent. Currently, I think it's fine to have an extra layer in vmStructs_z >> until the SA agent gets support for global variables. >> >> Thanks, >> StefanK >> >> >>> >>> >>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>> faster >>>> with that flag. >>> >>> >>> Thanks! >>> After all concerns in above is resolved, I will test it. >>> >>> >>> Yasumasa >>> >>> >>> 2018-01-15 17:48 GMT+09:00 Stefan Karlsson : >>>> >>>> Hi Yasumasa, >>>> >>>> On 2018-01-13 04:39, Yasumasa Suenaga wrote: >>>>> >>>>> >>>>> Hi Stefan, Per, >>>>> >>>>> Thank you for your comments and patches! >>>>> I uploaded new webrev: >>>>> >>>>> all: >>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >>>>> >>>>> diff from Stefan's patch: >>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >>>>> >>>>> >>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>> at >>>>> first? >>>> >>>> >>>> >>>> I'll let Jini handle that bug. >>>> >>>>> >>>>> >>>>>> Just one comment, in ZPage.java: >>>>>> >>>>>> 91 // There's no relocate operation in the SA. Simply use >>>>>> the >>>>>> from address and hope for the best. >>>>>> 92 return from; >>>>>> >>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>> instead. >>>>> >>>>> >>>>> >>>>> I've fixed. >>>>> >>>>> >>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>> abstraction in place. >>>>> >>>>> >>>>> >>>>> I added some constant values to vmStructs_z.hpp . So we can remove >>>>> Linux-specific values from SA Java sources. >>>> >>>> >>>> >>>> OK. Sounds like the right thing to do for true constants. More about this >>>> later. >>>> >>>>> But I've not remove address() from ZAddress.java because I'm not sure >>>>> why >>>>> this method is needed. >>>> >>>> >>>> >>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>> See: >>>> >>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>> >>>> >>>>> >>>>> >>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>> you read >>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>> >>>>> >>>>> >>>>> I changed ZOop#to_address() which have one argument which type is >>>>> Address. >>>>> I guess this change is type-safe. >>>> >>>> >>>> >>>> My version of ZOop.to_address converted a OopHandle into an non-OopHandle >>>> Address. Without it you get an UnsupportedOperationException when you try >>>> to >>>> do bit-manipulation on the OopHandle. From LinuxOopHandle: >>>> public Address addOffsetTo (long offset) throws >>>> UnsupportedOperationException { >>>> throw new UnsupportedOperationException("addOffsetTo not applicable >>>> to >>>> OopHandles (interior object pointers not allowed)"); >>>> } >>>> >>>> >>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>> ZOop.to_address isn't needed there. However, it is still needed for >>>> ZCollectedHeap.oopAddressDescription: >>>> >>>> public String oopAddressDescription(OopHandle handle) { >>>> Address origOop = ZOop.to_address(handle); >>>> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>> >>>> We either need to restore the previous implementation, or we need to fix >>>> oopAddressDescription. >>>> >>>> My version of ZOop.to_address performed bit manipulations just to ensure >>>> that we never got a all-zero value. You have left the >>>> andWithMask(REMOVE_MSB_MASK), which isn't necessary when you didn't add >>>> the >>>> bit in the first place. >>>> >>>> >>>>> >>>>> >>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>> but we can think about unifying our patches. >>>>> >>>>> >>>>> >>>>> I think the classes which extends VMObject should be instantiated via >>>>> VMObjectFactory#newObject() because other SA codes seems to be so. >>>>> I changed to use this factory method as possible. >>>> >>>> >>>> >>>> OK. >>>> >>>>> >>>>> >>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>> the >>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>> this? >>>>> >>>>> >>>>> >>>>> I added these values to constant values in VMStructs. >>>>> Thus I removed ZGlobalsForVMStructs. >>>> >>>> >>>> >>>> >>>> This is a bug, and causes my test to fail. >>>> >>>> The constants values in VMStructs are for constants in the C++ code. Some >>>> of >>>> the values you changed are initialized during the VM initializations, and >>>> some are changed throughout the run of the VM. >>>> >>>>> >>>>> >>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>> earlier by running SPECjbb2005: >>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>> >>>>>>> and then continuously dumping the threads: >>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>> >>>>> >>>>> >>>>> Sorry, I do not have SPECjbb. >>>>> Can you share the result? >>>> >>>> >>>> >>>> >>>> You can use any program that starts a number of threads an continuously >>>> run >>>> GCs. >>>> >>>>> >>>>> I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple >>>>> Java app. >>>>> This change works fine on my Linux x64 box. >>>> >>>> >>>> >>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>> faster >>>> with that flag. >>>> >>>> This reproduces the problem: >>>> >>>> public class HelloSleep { >>>> public static void main(String... args) throws Exception { >>>> Thread.sleep(100000000000000L); >>>> } >>>> } >>>> >>>> DIR=~/hg/z/build/release/jdk >>>> $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & >>>> $DIR/bin/jcmd $! GC.run >>>> echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ >>>> >>>> Thanks, >>>> StefanK >>>> >>>> >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> On 2018/01/11 21:40, Per Liden wrote: >>>>>> >>>>>> >>>>>> Hi, >>>>>> >>>>>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>>>>> >>>>>>> >>>>>>> Hi Yasumasa, >>>>>>> >>>>>>> Here's my first stab at adding the ZGC load barries to the SA: >>>>>>> >>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>>>>> >>>>>> >>>>>> >>>>>> Just one comment, in ZPage.java: >>>>>> >>>>>> 91 // There's no relocate operation in the SA. Simply use >>>>>> the >>>>>> from address and hope for the best. >>>>>> 92 return from; >>>>>> >>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>> instead. >>>>>> >>>>>> cheers, >>>>>> Per >>>>>> >>>>>>> >>>>>>> I find it unfortunate that we have to duplicate the C++ code into >>>>>>> Java, >>>>>>> to get this to work. But it is what it is. >>>>>>> >>>>>>> Some comments about the code: >>>>>>> >>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>> abstraction in place. >>>>>>> >>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>> you read >>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>>> >>>>>>> 3) I use the ZGC weak barrier, since the SA agent only needs to be >>>>>>> able >>>>>>> to access the Objects, not mark them. Which is what the weak barriers >>>>>>> provide. >>>>>>> >>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>> but we can think about unifying our patches. >>>>>>> >>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>> the >>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>> this? >>>>>>> >>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>> earlier by running SPECjbb2005: >>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>> >>>>>>> and then continuously dumping the threads: >>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>> >>>>>>> >>>>>>> Cheers, >>>>>>> StefanK >>>>>>> >>>>>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>>>>> >>>>>>>> >>>>>>>> Hi Stefan, >>>>>>>> >>>>>>>> >>>>>>>>> Let me try to create an initial prototype for load barriers in the >>>>>>>>> SA >>>>>>>>> case and see where this takes us. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Sure! >>>>>>>> >>>>>>>> >>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>> SA: >>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Thanks, I didn't know that. >>>>>>>> I hope this issue will be fixed soon :-) >>>>>>>> >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> Hi Yasumasa, >>>>>>>>> >>>>>>>>> Thanks for your contribution! >>>>>>>>> >>>>>>>>> I tested your patch together with jhsdb hsdb and immediately hit >>>>>>>>> problems because of the lack of load barriers in the SA code. Let me >>>>>>>>> try to >>>>>>>>> create an initial prototype for load barriers in the SA case and see >>>>>>>>> where >>>>>>>>> this takes us. >>>>>>>>> >>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>> SA: >>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> StefanK >>>>>>>>> >>>>>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks Per! >>>>>>>>>> >>>>>>>>>> I'm waiting for comments and sponsorship. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>> >>>>>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Hi all, >>>>>>>>>>>> >>>>>>>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>>>>>>> command is executed. >>>>>>>>>>>> >>>>>>>>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>>>>>>>> related classes for >>>>>>>>>>>> SA as this webrev: >>>>>>>>>>>> >>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>>>>> >>>>>>>>>>>> After applying this patch, we can use `universe` command on >>>>>>>>>>>> CLHSDB. >>>>>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>>>>> >>>>>>>>>>> cheers, >>>>>>>>>>> Per >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> >>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>> >> From yasuenag at gmail.com Wed Jan 17 02:51:30 2018 From: yasuenag at gmail.com (Yasumasa Suenaga) Date: Wed, 17 Jan 2018 11:51:30 +0900 Subject: SA for ZGC In-Reply-To: References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> Message-ID: Hi Stefan, I uploaded new webrev: http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.03/ I removed dependencies to Linux specific code in it. Thanks, Yasumasa 2018-01-16 20:00 GMT+09:00 Yasumasa Suenaga : >> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. > > Sorry, I forgot to run GC.run jcmd. I had a error. > I will look it later. > > > Yasumasa > > > 2018-01-16 19:57 GMT+09:00 Yasumasa Suenaga : >> Hi Stefan, >> >> I've restored your change and use VM.getOS() and getCPU() in new webrev: >> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.02/ >> >> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. >> >> >> Thanks, >> >> Yasumasa >> >> >> >> >> 2018-01-16 18:26 GMT+09:00 Stefan Karlsson : >>> Hi Yasumas, >>> >>> On 2018-01-16 08:14, Yasumasa Suenaga wrote: >>>> >>>> Hi Stefan, >>>> >>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>>> at >>>>>> first? >>>>> >>>>> >>>>> >>>>> I'll let Jini handle that bug. >>>> >>>> >>>> Thanks! >>>> I watch this bug. >>>> >>>> >>>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>>> See: >>>>> >>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>> >>>> >>>> I think we can use getOS() and getCPU() in VM class: >>>> >>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 >>>> >>>> >>>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>> ZCollectedHeap.oopAddressDescription: >>>>> >>>>> public String oopAddressDescription(OopHandle handle) { >>>>> Address origOop = ZOop.to_address(handle); >>>>> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>>> >>>>> We either need to restore the previous implementation, or we need to fix >>>>> oopAddressDescription. >>>> >>>> >>>> OK, I will keep your original ZOop.java and related implementation. >>> >>> >>> OK. We can revisit this later if we do decide to clean this up. >>> >>>> >>>> >>>>>> I added these values to constant values in VMStructs. >>>>>> Thus I removed ZGlobalsForVMStructs. >>>>> >>>>> >>>>> >>>>> >>>>> This is a bug, and causes my test to fail. >>>>> >>>>> The constants values in VMStructs are for constants in the C++ code. Some >>>>> of >>>>> the values you changed are initialized during the VM initializations, and >>>>> some are changed throughout the run of the VM. >>>> >>>> >>>> I guess we can use HotSpotVMAddress as JVMCI: >>>> >>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 >>>> >>>> However this symbol is not exported. >>>> We need to add `gHotSpotVMAddress` to vmStructs.hpp . >>>> >>>> BTW, do ZGC team have a plan to refactor zGlobals.hpp? >>> >>> >>> >>> Currently, we don't have any plans to do that. >>> >>>> AFAICS HotSpot does not have global variables (not `const` value). >>>> IMHO we can refactor zGlobals to the C++ class which extends AllStatic. >>>> We can use VMStructs directly if we do so. >>> >>> >>> HotSpot actually does have global variables. You'll find some of them in >>> globalDefinitions.hpp. For example: heapOopSize, MinObjAlignment, and >>> OopEncodingHeapMax. >>> >>> The SA seems to duplicate the calculations of these values instead of >>> reading the actual values from the process/core. >>> >>> I'm a bit reluctant to change the ZGC code style just to adapt to the SA >>> agent. Currently, I think it's fine to have an extra layer in vmStructs_z >>> until the SA agent gets support for global variables. >>> >>> Thanks, >>> StefanK >>> >>> >>>> >>>> >>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>>> faster >>>>> with that flag. >>>> >>>> >>>> Thanks! >>>> After all concerns in above is resolved, I will test it. >>>> >>>> >>>> Yasumasa >>>> >>>> >>>> 2018-01-15 17:48 GMT+09:00 Stefan Karlsson : >>>>> >>>>> Hi Yasumasa, >>>>> >>>>> On 2018-01-13 04:39, Yasumasa Suenaga wrote: >>>>>> >>>>>> >>>>>> Hi Stefan, Per, >>>>>> >>>>>> Thank you for your comments and patches! >>>>>> I uploaded new webrev: >>>>>> >>>>>> all: >>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >>>>>> >>>>>> diff from Stefan's patch: >>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >>>>>> >>>>>> >>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>>> at >>>>>> first? >>>>> >>>>> >>>>> >>>>> I'll let Jini handle that bug. >>>>> >>>>>> >>>>>> >>>>>>> Just one comment, in ZPage.java: >>>>>>> >>>>>>> 91 // There's no relocate operation in the SA. Simply use >>>>>>> the >>>>>>> from address and hope for the best. >>>>>>> 92 return from; >>>>>>> >>>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>>> instead. >>>>>> >>>>>> >>>>>> >>>>>> I've fixed. >>>>>> >>>>>> >>>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>>> abstraction in place. >>>>>> >>>>>> >>>>>> >>>>>> I added some constant values to vmStructs_z.hpp . So we can remove >>>>>> Linux-specific values from SA Java sources. >>>>> >>>>> >>>>> >>>>> OK. Sounds like the right thing to do for true constants. More about this >>>>> later. >>>>> >>>>>> But I've not remove address() from ZAddress.java because I'm not sure >>>>>> why >>>>>> this method is needed. >>>>> >>>>> >>>>> >>>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>>> See: >>>>> >>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>> >>>>> >>>>>> >>>>>> >>>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>>> you read >>>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>> >>>>>> >>>>>> >>>>>> I changed ZOop#to_address() which have one argument which type is >>>>>> Address. >>>>>> I guess this change is type-safe. >>>>> >>>>> >>>>> >>>>> My version of ZOop.to_address converted a OopHandle into an non-OopHandle >>>>> Address. Without it you get an UnsupportedOperationException when you try >>>>> to >>>>> do bit-manipulation on the OopHandle. From LinuxOopHandle: >>>>> public Address addOffsetTo (long offset) throws >>>>> UnsupportedOperationException { >>>>> throw new UnsupportedOperationException("addOffsetTo not applicable >>>>> to >>>>> OopHandles (interior object pointers not allowed)"); >>>>> } >>>>> >>>>> >>>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>> ZCollectedHeap.oopAddressDescription: >>>>> >>>>> public String oopAddressDescription(OopHandle handle) { >>>>> Address origOop = ZOop.to_address(handle); >>>>> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>>> >>>>> We either need to restore the previous implementation, or we need to fix >>>>> oopAddressDescription. >>>>> >>>>> My version of ZOop.to_address performed bit manipulations just to ensure >>>>> that we never got a all-zero value. You have left the >>>>> andWithMask(REMOVE_MSB_MASK), which isn't necessary when you didn't add >>>>> the >>>>> bit in the first place. >>>>> >>>>> >>>>>> >>>>>> >>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>>> but we can think about unifying our patches. >>>>>> >>>>>> >>>>>> >>>>>> I think the classes which extends VMObject should be instantiated via >>>>>> VMObjectFactory#newObject() because other SA codes seems to be so. >>>>>> I changed to use this factory method as possible. >>>>> >>>>> >>>>> >>>>> OK. >>>>> >>>>>> >>>>>> >>>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>>> the >>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>>> this? >>>>>> >>>>>> >>>>>> >>>>>> I added these values to constant values in VMStructs. >>>>>> Thus I removed ZGlobalsForVMStructs. >>>>> >>>>> >>>>> >>>>> >>>>> This is a bug, and causes my test to fail. >>>>> >>>>> The constants values in VMStructs are for constants in the C++ code. Some >>>>> of >>>>> the values you changed are initialized during the VM initializations, and >>>>> some are changed throughout the run of the VM. >>>>> >>>>>> >>>>>> >>>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>>> earlier by running SPECjbb2005: >>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>>> >>>>>>>> and then continuously dumping the threads: >>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>> >>>>>> >>>>>> >>>>>> Sorry, I do not have SPECjbb. >>>>>> Can you share the result? >>>>> >>>>> >>>>> >>>>> >>>>> You can use any program that starts a number of threads an continuously >>>>> run >>>>> GCs. >>>>> >>>>>> >>>>>> I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple >>>>>> Java app. >>>>>> This change works fine on my Linux x64 box. >>>>> >>>>> >>>>> >>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>>> faster >>>>> with that flag. >>>>> >>>>> This reproduces the problem: >>>>> >>>>> public class HelloSleep { >>>>> public static void main(String... args) throws Exception { >>>>> Thread.sleep(100000000000000L); >>>>> } >>>>> } >>>>> >>>>> DIR=~/hg/z/build/release/jdk >>>>> $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & >>>>> $DIR/bin/jcmd $! GC.run >>>>> echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ >>>>> >>>>> Thanks, >>>>> StefanK >>>>> >>>>> >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> On 2018/01/11 21:40, Per Liden wrote: >>>>>>> >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>>>>>> >>>>>>>> >>>>>>>> Hi Yasumasa, >>>>>>>> >>>>>>>> Here's my first stab at adding the ZGC load barries to the SA: >>>>>>>> >>>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>>>>>> >>>>>>> >>>>>>> >>>>>>> Just one comment, in ZPage.java: >>>>>>> >>>>>>> 91 // There's no relocate operation in the SA. Simply use >>>>>>> the >>>>>>> from address and hope for the best. >>>>>>> 92 return from; >>>>>>> >>>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>>> instead. >>>>>>> >>>>>>> cheers, >>>>>>> Per >>>>>>> >>>>>>>> >>>>>>>> I find it unfortunate that we have to duplicate the C++ code into >>>>>>>> Java, >>>>>>>> to get this to work. But it is what it is. >>>>>>>> >>>>>>>> Some comments about the code: >>>>>>>> >>>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>>> abstraction in place. >>>>>>>> >>>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>>> you read >>>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>>>> >>>>>>>> 3) I use the ZGC weak barrier, since the SA agent only needs to be >>>>>>>> able >>>>>>>> to access the Objects, not mark them. Which is what the weak barriers >>>>>>>> provide. >>>>>>>> >>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>>> but we can think about unifying our patches. >>>>>>>> >>>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>>> the >>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>>> this? >>>>>>>> >>>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>>> earlier by running SPECjbb2005: >>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>>> >>>>>>>> and then continuously dumping the threads: >>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>> >>>>>>>> >>>>>>>> Cheers, >>>>>>>> StefanK >>>>>>>> >>>>>>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> Hi Stefan, >>>>>>>>> >>>>>>>>> >>>>>>>>>> Let me try to create an initial prototype for load barriers in the >>>>>>>>>> SA >>>>>>>>>> case and see where this takes us. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Sure! >>>>>>>>> >>>>>>>>> >>>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>>> SA: >>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, I didn't know that. >>>>>>>>> I hope this issue will be fixed soon :-) >>>>>>>>> >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> >>>>>>>>> >>>>>>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hi Yasumasa, >>>>>>>>>> >>>>>>>>>> Thanks for your contribution! >>>>>>>>>> >>>>>>>>>> I tested your patch together with jhsdb hsdb and immediately hit >>>>>>>>>> problems because of the lack of load barriers in the SA code. Let me >>>>>>>>>> try to >>>>>>>>>> create an initial prototype for load barriers in the SA case and see >>>>>>>>>> where >>>>>>>>>> this takes us. >>>>>>>>>> >>>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>>> SA: >>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> StefanK >>>>>>>>>> >>>>>>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks Per! >>>>>>>>>>> >>>>>>>>>>> I'm waiting for comments and sponsorship. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>> >>>>>>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Hi all, >>>>>>>>>>>>> >>>>>>>>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>>>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>>>>>>>> command is executed. >>>>>>>>>>>>> >>>>>>>>>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>>>>>>>>> related classes for >>>>>>>>>>>>> SA as this webrev: >>>>>>>>>>>>> >>>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>>>>>> >>>>>>>>>>>>> After applying this patch, we can use `universe` command on >>>>>>>>>>>>> CLHSDB. >>>>>>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>>>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>>>>>> >>>>>>>>>>>> cheers, >>>>>>>>>>>> Per >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>> >>> From per.liden at oracle.com Wed Jan 17 09:28:25 2018 From: per.liden at oracle.com (per.liden at oracle.com) Date: Wed, 17 Jan 2018 09:28:25 +0000 Subject: hg: zgc/zgc: 323 new changesets Message-ID: <201801170928.w0H9SpxK021227@aojmv0008.oracle.com> Changeset: 0997d6959851 Author: dcubed Date: 2017-12-08 15:24 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0997d6959851 8193135: get rid of redundant _smr_ prefix/infix in ThreadSMRSupport stuff Reviewed-by: stefank, gtriantafill, coleenp ! src/hotspot/share/runtime/java.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threadSMR.cpp ! src/hotspot/share/runtime/threadSMR.hpp ! src/hotspot/share/runtime/threadSMR.inline.hpp ! test/hotspot/jtreg/runtime/ErrorHandling/NestedThreadsListHandleInErrorHandlingTest.java ! test/hotspot/jtreg/runtime/Thread/TestThreadDumpSMRInfo.java Changeset: d6388b652504 Author: ccheung Date: 2017-12-08 15:14 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d6388b652504 8192989: runtime/appcds/javaldr/ArrayTest.java crashes with assert(k->is_instance_klass()) Summary: disable loading array classes from the class list Reviewed-by: iklam, jiangli ! src/hotspot/share/classfile/classListParser.cpp ! src/hotspot/share/classfile/classListParser.hpp ! src/hotspot/share/memory/metaspaceShared.cpp ! test/hotspot/jtreg/runtime/appcds/javaldr/ArrayTest.java Changeset: 4fd79561f38f Author: alanb Date: 2017-12-07 16:45 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4fd79561f38f 8191867: Module attribute in 54.0+ class file cannot contains a requires java.base with ACC_TRANSITIVE or ACC_STATIC_PHASE Reviewed-by: psandoz, mchung ! src/java.base/share/classes/jdk/internal/module/ModuleInfo.java ! src/java.base/share/classes/jdk/internal/module/ModuleInfoWriter.java + test/jdk/java/lang/module/ClassFileVersionsTest.java Changeset: b27d2f69e552 Author: bpb Date: 2017-12-07 08:56 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b27d2f69e552 8191872: (fs) UnixNativeDispatcher conditionally compiles in support for high precision timestamps Summary: Remove POSIX conditional compilation and correct stat64 times for macOS Reviewed-by: alanb, simonis ! src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c ! test/jdk/java/nio/file/Files/SetLastModifiedTime.java Changeset: 6cd25cd7df81 Author: mchung Date: 2017-12-07 09:22 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/6cd25cd7df81 8193159: Reduce the number of classes loaded due to NativeLibrary Reviewed-by: alanb, redestad, martin ! src/java.base/share/classes/java/lang/ClassLoader.java Changeset: 8b967e200e35 Author: mchung Date: 2017-12-07 09:23 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8b967e200e35 8192945: Need stable sort for MODULES entry in the release file Reviewed-by: alanb, redestad ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ModuleSorter.java ! test/jdk/tools/jlink/ModuleNamesOrderTest.java Changeset: acfac57f4c35 Author: igerasim Date: 2017-12-07 10:18 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/acfac57f4c35 8193156: Need to backout fixes for JDK-8058547, JDK-8055753, JDK-8085903 Reviewed-by: mullan ! src/java.base/share/classes/java/security/ProtectionDomain.java Changeset: 0a8db756a7e7 Author: jlahoda Date: 2017-12-07 19:24 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0a8db756a7e7 8189248: Jshell: error with mutually dependent snippets, when one must be replaced Summary: Ensuring proper imports are generated for mutually dependent snippets if one of them is replaced. Reviewed-by: rfield ! src/jdk.jshell/share/classes/jdk/jshell/Eval.java ! test/langtools/jdk/jshell/ClassesTest.java Changeset: 5fb7750f22cd Author: darcy Date: 2017-12-07 11:00 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/5fb7750f22cd 8193191: Update JavacTestingAbstractProcessor for JDK 10 Reviewed-by: jjg ! test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java Changeset: 0310d6fe7a88 Author: lana Date: 2017-12-07 21:04 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0310d6fe7a88 Added tag jdk-10+35 for changeset d8c634b016c6 ! .hgtags Changeset: c75b179b6add Author: lana Date: 2017-12-07 21:06 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c75b179b6add Merge Changeset: 6a8ab8d1fb8b Author: erikj Date: 2017-12-07 22:37 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/6a8ab8d1fb8b 8188789: Update JDK 9.0.1 and Future OpenJDK bundle names Reviewed-by: tbell ! make/conf/jib-profiles.js Changeset: 59696a3595bd Author: ksrini Date: 2017-12-07 14:15 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/59696a3595bd 8191030: @value Tags are not resolved by javadoc 9. Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ValueTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java ! test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/TestDeprecatedDocs.java ! test/langtools/jdk/javadoc/doclet/testValueTag/TestValueTag.java + test/langtools/jdk/javadoc/doclet/testValueTag/pkg3/RT.java Changeset: c3bf1ae9c51d Author: smarks Date: 2017-12-07 14:23 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c3bf1ae9c51d 8177681: Remove methods Runtime.getLocalized{Input,Output}Stream Reviewed-by: rriggs, bpb, mr ! src/java.base/share/classes/java/lang/Runtime.java Changeset: b8b124236073 Author: ksrini Date: 2017-12-07 14:21 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b8b124236073 8149402: "-group" option issue for classes from default package Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Group.java - test/langtools/jdk/javadoc/doclet/testGroupOption/C.java + test/langtools/jdk/javadoc/doclet/testGroupOption/InUnnamedPackage.java ! test/langtools/jdk/javadoc/doclet/testGroupOption/TestGroupOption.java Changeset: e3b6cb90d7ce Author: weijun Date: 2017-12-08 09:40 +0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e3b6cb90d7ce 8192987: keytool should remember real storetype if it is not provided Reviewed-by: mullan ! src/java.base/share/classes/sun/security/tools/KeyStoreUtil.java ! src/java.base/share/classes/sun/security/tools/keytool/Main.java + test/jdk/sun/security/tools/keytool/RealType.java Changeset: 7a83c7afb383 Author: ksrini Date: 2017-12-07 21:07 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7a83c7afb383 8034254: Don't use binary testing files broken.jar Reviewed-by: jjg ! test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/TestBadPackageFileInJar.java - test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/badPackageFileInJar.jar - test/langtools/tools/javac/T5090006/AssertionFailureTest.java - test/langtools/tools/javac/T5090006/broken.jar Changeset: 8ad12da0cbc7 Author: clanger Date: 2017-12-08 09:48 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8ad12da0cbc7 8193183: Fix format string in libdt_shmem/shmemBase.c Reviewed-by: cjplummer, sspitsyn ! src/jdk.jdi/share/native/libdt_shmem/shmemBase.c Changeset: f3b561b13ddf Author: attila Date: 2017-12-08 11:48 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f3b561b13ddf 8192970: Element getters/setters with fixed key fail to link properly Reviewed-by: hannesw, sundar ! src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java ! test/nashorn/src/jdk/dynalink/beans/test/BeanLinkerTest.java Changeset: ef5199ed52f0 Author: hannesw Date: 2017-12-08 12:02 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ef5199ed52f0 8193137: Nashorn crashes when given an empty script file Reviewed-by: hannesw, sundar Contributed-by: priya.lakshmi.muthuswamy at oracle.com ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/Shell.java + test/nashorn/script/nosecurity/JDK-8193137.js Changeset: 0ba2a82e4755 Author: dfuchs Date: 2017-12-08 11:50 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0ba2a82e4755 8191033: Regression in logging.properties: specifying .handlers= for root logger (instead of handlers=) no longer works Summary: The behavior observed for Java 8 is restored Reviewed-by: martin, mchung ! src/java.logging/share/classes/java/util/logging/LogManager.java + test/jdk/java/util/logging/LogManager/Configuration/rootLoggerHandlers/RootLoggerHandlers.java + test/jdk/java/util/logging/LogManager/Configuration/rootLoggerHandlers/custom/DotHandler.java + test/jdk/java/util/logging/LogManager/Configuration/rootLoggerHandlers/custom/Handler.java + test/jdk/java/util/logging/LogManager/Configuration/rootLoggerHandlers/logging.properties Changeset: ecff0c7bfb4d Author: jwilhelm Date: 2017-12-08 23:43 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ecff0c7bfb4d Merge - test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/badPackageFileInJar.jar - test/langtools/jdk/javadoc/doclet/testGroupOption/C.java - test/langtools/tools/javac/T5090006/AssertionFailureTest.java - test/langtools/tools/javac/T5090006/broken.jar Changeset: 589a6f1d86e9 Author: cjplummer Date: 2017-12-09 07:50 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/589a6f1d86e9 8191229: serviceability/jvmti/GetOwnedMonitorInfo/GetOwnedMonitorInfoTest.java fails with NoClassDefFoundError Summary: call FindClass() when we are in the proper classloader context Reviewed-by: sspitsyn, dholmes, amenkov ! test/hotspot/jtreg/serviceability/jvmti/GetOwnedMonitorInfo/libGetOwnedMonitorInfoTest.c Changeset: ed1bb7743b3e Author: thartmann Date: 2017-12-12 19:05 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ed1bb7743b3e 8193363: TestDumpReplay.java fails with product builds Summary: Added missing -XX:+IgnoreUnrecognizedVMOptions Reviewed-by: kvn ! test/hotspot/jtreg/compiler/ciReplay/TestDumpReplay.java Changeset: 7daebcef2e0d Author: coleenp Date: 2017-12-12 11:55 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7daebcef2e0d 8193386: CompressedClassSize too large with MaxMetaspace Reviewed-by: ysuenaga, coleenp Contributed-by: manc at google.com ! src/hotspot/share/memory/metaspace.cpp Changeset: a576e1b6784d Author: coleenp Date: 2017-12-12 14:14 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a576e1b6784d Merge Changeset: 7b1a9b267a94 Author: dcubed Date: 2017-12-12 21:27 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7b1a9b267a94 8193407: jdk/hs fails Solaris slowdebug test-image build Summary: Add a missing '-lc' option for libCNLookUp. Reviewed-by: dholmes, kvn ! make/test/JtregNativeHotspot.gmk Changeset: fe6fb69336b5 Author: dholmes Date: 2017-12-12 19:06 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/fe6fb69336b5 8193222: EnsureLocalCapacity() should maintain capacity requests through multiple calls Reviewed-by: coleenp, dcubed ! make/test/JtregNativeHotspot.gmk ! src/hotspot/share/prims/jniCheck.cpp + test/hotspot/jtreg/runtime/jni/checked/TestCheckedEnsureLocalCapacity.java + test/hotspot/jtreg/runtime/jni/checked/libTestCheckedEnsureLocalCapacity.c Changeset: d3b6470a6dec Author: dholmes Date: 2017-12-12 21:43 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d3b6470a6dec Merge ! make/test/JtregNativeHotspot.gmk Changeset: 10ec0c43cf1d Author: bchristi Date: 2017-12-08 13:04 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/10ec0c43cf1d 8193271: ProblemList tools/launcher/TestXcheckJNIWarnings.java Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: 993b004ab38f Author: bchristi Date: 2017-12-12 21:46 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/993b004ab38f 8190984: tools/launcher/TestXcheckJNIWarnings.java WARNING was found in the output Reviewed-by: dholmes, mchung ! src/java.base/share/native/libjava/System.c ! test/jdk/ProblemList.txt Changeset: 39a84de6afd6 Author: neliasso Date: 2017-12-13 10:21 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/39a84de6afd6 8192971: LockCompilationTest fails intermittently Summary: Remove all unnecessary compilations Reviewed-by: kvn, thartmann ! test/hotspot/jtreg/compiler/whitebox/LockCompilationTest.java Changeset: 919780ab7acc Author: coleenp Date: 2017-12-13 07:14 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/919780ab7acc 8193053: jvm crash by G1CMBitMapClosure::do_addr Summary: We were adding an unloaded mirror to the SATB collection set in remove_handle. Reviewed-by: hseigel, kbarrett ! src/hotspot/share/classfile/classLoaderData.cpp ! src/hotspot/share/classfile/classLoaderData.hpp Changeset: 3c9975e46464 Author: vlivanov Date: 2017-12-13 19:32 +0300 URL: http://hg.openjdk.java.net/zgc/zgc/rev/3c9975e46464 8190869: C2: missing strength reduction of Math.pow(x, 2.0D) to x*x Reviewed-by: kvn ! src/hotspot/cpu/x86/macroAssembler_x86_pow.cpp ! src/hotspot/share/opto/library_call.cpp Changeset: ead47ddf5844 Author: kvn Date: 2017-12-13 11:59 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ead47ddf5844 8191788: add jdk.internal.vm.compiler to --limit-modules if -Djvmci.Compiler=graal is in the command line Summary: skip tests which use --limit-modules when Graal is used as JIT compiler. Reviewed-by: alanb, mchung, dholmes, ccheung, dnsimon ! .hgignore ! test/hotspot/jtreg/runtime/SharedArchiveFile/BootAppendTests.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/JigsawOptionsCombo.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/BootAppendTests.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/ClassPathTests.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/limitmods/LimitModsTests.java ! test/jdk/TEST.ROOT ! test/jdk/com/sun/tools/attach/modules/Driver.java ! test/jdk/java/lang/String/concat/WithSecurityManager.java ! test/jdk/java/lang/System/LoggerFinder/LoggerFinderAPI/LoggerFinderAPI.java ! test/jdk/java/lang/instrument/TestAgentWithLimitMods.java ! test/jdk/java/lang/management/ManagementFactory/DefaultManagementProviderTest.java ! test/jdk/java/net/SocketOption/OptionsTest.java ! test/jdk/java/net/SocketOption/UnsupportedOptionsTest.java ! test/jdk/java/nio/channels/DatagramChannel/SocketOptionTests.java ! test/jdk/java/nio/channels/ServerSocketChannel/SocketOptionTests.java ! test/jdk/java/nio/channels/SocketChannel/SocketOptionTests.java ! test/jdk/tools/launcher/modules/limitmods/LimitModsTest.java ! test/jdk/tools/launcher/modules/listmods/ListModsTest.java ! test/jdk/tools/launcher/modules/showmoduleresolution/ShowModuleResolutionTest.java Changeset: 79afa4c434f6 Author: iveresov Date: 2017-12-13 12:28 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/79afa4c434f6 8193439: Update Graal Reviewed-by: kvn ! src/jdk.internal.vm.compiler/.mx.graal/suite.py ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.aarch64/src/org/graalvm/compiler/core/aarch64/AArch64LIRKindTool.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/util/CompilationAlarm.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.sparc/src/org/graalvm/compiler/core/sparc/SPARCLIRKindTool.java - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CooperativePhaseTest.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.debug/src/org/graalvm/compiler/debug/Assertions.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.graph/src/org/graalvm/compiler/graph/Graph.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotForeignCallsProvider.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.aarch64/src/org/graalvm/compiler/hotspot/aarch64/AArch64HotSpotLIRGenerator.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotForeignCallsProvider.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.amd64/src/org/graalvm/compiler/hotspot/amd64/AMD64HotSpotLIRKindTool.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotForeignCallsProvider.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.sparc/src/org/graalvm/compiler/hotspot/sparc/SPARCHotSpotLIRGenerator.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CRC32CSubstitutionsTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CheckGraalIntrinsics.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/JVMCIInfopointErrorTest.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/HotSpotHostBackend.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotReferenceMapBuilder.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/replacements/CRC32CSubstitutions.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.jtt/src/org/graalvm/compiler/jtt/bytecode/BC_idiv_overflow.java + src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.jtt/src/org/graalvm/compiler/jtt/bytecode/BC_ldiv_overflow.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/IfNode.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/IntegerDivRemNode.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/ProfileCompiledMethodsPhase.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.printer/src/org/graalvm/compiler/printer/GraphPrinter.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/classfile/Classfile.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/GraphEffectList.java Changeset: 37d3e1a80c3b Author: alanb Date: 2017-12-08 14:28 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/37d3e1a80c3b 8193256: Configuration and ModuleLayer findModule cleanup Reviewed-by: redestad, alanb Contributed-by: andrej.golovnin at gmail.com ! src/java.base/share/classes/java/lang/ModuleLayer.java ! src/java.base/share/classes/java/lang/module/Configuration.java Changeset: 962b4324320c Author: sundar Date: 2017-12-08 20:46 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/962b4324320c 8192986: Inconsistent handling of exploded modules in jlink Reviewed-by: redestad, jlaskey ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/DefaultImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/DirArchive.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties + test/jdk/tools/jlink/ExplodedModuleNameTest.java ! test/jdk/tools/lib/tests/Helper.java ! test/jdk/tools/lib/tests/JImageGenerator.java Changeset: be0df5ab3093 Author: rriggs Date: 2017-12-01 16:40 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/be0df5ab3093 8080225: FileInput/OutputStream/FileChannel cleanup should be improved Reviewed-by: mchung, plevart, bpb ! make/mapfiles/libjava/mapfile-vers ! src/java.base/share/classes/java/io/FileInputStream.java ! src/java.base/share/classes/java/io/FileOutputStream.java ! src/java.base/share/classes/java/io/RandomAccessFile.java ! src/java.base/share/classes/java/net/SocketInputStream.java ! src/java.base/share/classes/java/net/SocketOutputStream.java ! src/java.base/share/classes/jdk/internal/misc/JavaIOFileDescriptorAccess.java ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java ! src/java.base/unix/classes/java/io/FileDescriptor.java ! src/java.base/unix/native/libjava/FileDescriptor_md.c ! src/java.base/unix/native/libjava/io_util_md.c ! src/java.base/windows/classes/java/io/FileDescriptor.java ! src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java ! src/java.base/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java ! src/java.base/windows/classes/sun/nio/fs/WindowsChannelFactory.java ! src/java.base/windows/native/libjava/FileDescriptor_md.c ! src/java.base/windows/native/libnio/ch/WindowsAsynchronousFileChannelImpl.c - test/jdk/java/io/FileInputStream/FinalizeShdCallClose.java + test/jdk/java/io/FileInputStream/UnreferencedFISClosesFd.java - test/jdk/java/io/FileOutputStream/FinalizeShdCallClose.java + test/jdk/java/io/FileOutputStream/UnreferencedFOSClosesFd.java + test/jdk/java/io/RandomAccessFile/UnreferencedRAFClosesFd.java ! test/jdk/sun/security/provider/FileInputStreamPool/FileInputStreamPoolTest.java Changeset: 718669e6b375 Author: xuelei Date: 2017-12-08 16:41 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/718669e6b375 8148421: Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension Reviewed-by: jnimeh, ahgross, rhalade, wetmore Contributed-by: Martin Balao , Xuelei Fan ! src/java.base/share/classes/com/sun/crypto/provider/SunJCE.java ! src/java.base/share/classes/com/sun/crypto/provider/TlsMasterSecretGenerator.java ! src/java.base/share/classes/com/sun/crypto/provider/TlsPrfGenerator.java ! src/java.base/share/classes/sun/security/internal/spec/TlsMasterSecretParameterSpec.java ! src/java.base/share/classes/sun/security/ssl/ClientHandshaker.java + src/java.base/share/classes/sun/security/ssl/ExtendedMasterSecretExtension.java ! src/java.base/share/classes/sun/security/ssl/ExtensionType.java ! src/java.base/share/classes/sun/security/ssl/HandshakeMessage.java ! src/java.base/share/classes/sun/security/ssl/Handshaker.java ! src/java.base/share/classes/sun/security/ssl/HelloExtensions.java ! src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java ! src/java.base/share/classes/sun/security/ssl/ServerHandshaker.java ! test/jdk/javax/net/ssl/DTLS/NoMacInitialClientHello.java ! test/jdk/sun/security/ssl/DHKeyExchange/DHEKeySizing.java ! test/jdk/sun/security/ssl/ExtensionType/OptimalListSize.java Changeset: ea47055160ef Author: dfuchs Date: 2017-12-08 17:40 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ea47055160ef 8187073: The java.util.logging.Level.findLevel() will not correctly find a Level by it's int value Reviewed-by: rriggs ! src/java.logging/share/classes/java/util/logging/Level.java ! test/jdk/java/util/logging/Level/CustomLevel.java Changeset: 584a3ba42176 Author: darcy Date: 2017-12-08 11:05 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/584a3ba42176 8193194: Update javax.lang.model.util visitors for 10 Reviewed-by: jjg ! src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/ElementScanner9.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor9.java ! src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor9.java Changeset: 703732bb4a32 Author: iignatyev Date: 2017-12-08 11:03 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/703732bb4a32 8181118: update java/time tests to use RandomFactory from the top level testlibrary Reviewed-by: rriggs ! test/jdk/TEST.ROOT ! test/jdk/java/time/tck/TEST.properties ! test/jdk/java/time/test/TEST.properties ! test/jdk/java/time/test/java/time/format/TestZoneTextPrinterParser.java - test/jdk/lib/testlibrary/jdk/testlibrary/RandomFactory.java Changeset: b9a19d1e61f2 Author: bchristi Date: 2017-12-08 13:04 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b9a19d1e61f2 8193271: ProblemList tools/launcher/TestXcheckJNIWarnings.java Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: d0e8542ef650 Author: martin Date: 2017-12-03 13:06 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d0e8542ef650 8192935: Fix EnumSet's SerializationProxy javadoc Reviewed-by: smarks, rriggs ! src/java.base/share/classes/java/util/EnumSet.java ! test/jdk/java/util/EnumSet/BogusEnumSet.java Changeset: 8a6970acf8ad Author: dl Date: 2017-12-08 15:22 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8a6970acf8ad 8193174: SubmissionPublisher invokes the Subscriber's onComplete before all of its submitted items have been published Reviewed-by: martin, psandoz, chegar ! src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java Changeset: bf476235671a Author: dl Date: 2017-12-08 15:26 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/bf476235671a 8192943: Optimize atomic accumulators using VarHandle getAndSet Reviewed-by: martin, psandoz, chegar ! src/java.base/share/classes/java/util/concurrent/atomic/DoubleAccumulator.java ! src/java.base/share/classes/java/util/concurrent/atomic/DoubleAdder.java ! src/java.base/share/classes/java/util/concurrent/atomic/LongAccumulator.java ! src/java.base/share/classes/java/util/concurrent/atomic/LongAdder.java ! src/java.base/share/classes/java/util/concurrent/atomic/Striped64.java Changeset: dd5157f363ab Author: dl Date: 2017-12-08 15:30 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/dd5157f363ab 8192944: Miscellaneous changes imported from jsr166 CVS 2017-12-08 Reviewed-by: martin, psandoz, chegar ! src/java.base/share/classes/java/util/concurrent/CountedCompleter.java ! src/java.base/share/classes/java/util/concurrent/ForkJoinTask.java ! test/jdk/java/util/concurrent/tck/ExecutorCompletionServiceTest.java Changeset: e7342e1becb4 Author: sadayapalam Date: 2017-12-11 06:58 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e7342e1becb4 8182401: Verification error for enclosing instance capture inside super constructor invocation Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java + test/langtools/tools/javac/lambda/ImplicitEnclosingInstanceTest.java + test/langtools/tools/javac/lambda/InnerInstanceCreationTest.java + test/langtools/tools/javac/lambda/methodReference/ImplicitEnclosingInstanceTest.java Changeset: 8db54e2c453b Author: clanger Date: 2017-12-11 08:20 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8db54e2c453b 8192978: Missing checks and small fixes in jdwp library Reviewed-by: cjplummer, sspitsyn ! src/jdk.jdwp.agent/share/native/libjdwp/VirtualMachineImpl.c ! src/jdk.jdwp.agent/share/native/libjdwp/error_messages.c ! src/jdk.jdwp.agent/share/native/libjdwp/error_messages.h ! src/jdk.jdwp.agent/share/native/libjdwp/eventHandler.c ! src/jdk.jdwp.agent/share/native/libjdwp/invoker.c ! src/jdk.jdwp.agent/share/native/libjdwp/log_messages.c Changeset: 31febb3f66f7 Author: jlahoda Date: 2017-12-08 16:28 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/31febb3f66f7 8189782: com.sun.tools.javac.api.JavacTool.isSupportedOption misreports number of arguments consumed Summary: Returning the number of standalone arguments from com.sun.tools.javac.api.JavacTool.isSupportedOption. Reviewed-by: jjg ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTool.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java + test/langtools/tools/javac/options/IsSupportedOptionTest.java Changeset: ee130cca69e6 Author: jlahoda Date: 2017-12-11 18:33 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ee130cca69e6 8189778: Jshell crash on tab for StringBuilder.append( Summary: Fixing handling of {@inheritDoc} in JShell's documentation. Reviewed-by: jjg, ksrini ! src/jdk.compiler/share/classes/jdk/internal/shellsupport/doc/JavadocHelper.java ! test/langtools/jdk/internal/shellsupport/doc/JavadocHelperTest.java Changeset: 9f225d4387e2 Author: sherman Date: 2017-12-11 11:45 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/9f225d4387e2 8185582: Update Zip implementation to use Cleaner, not finalizers Reviewed-by: plevart, rriggs, mchung ! src/java.base/share/classes/java/util/zip/Deflater.java ! src/java.base/share/classes/java/util/zip/Inflater.java ! src/java.base/share/classes/java/util/zip/ZStreamRef.java ! src/java.base/share/classes/java/util/zip/ZipFile.java ! test/jdk/java/util/zip/ZipFile/FinalizeZipFile.java + test/jdk/java/util/zip/ZipFile/TestCleaner.java Changeset: 8067e9cba973 Author: plevart Date: 2017-12-12 00:30 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8067e9cba973 8191216: SimpleTimeZone.clone() has a data race on cache fields Reviewed-by: alanb, naoto ! src/java.base/share/classes/java/util/SimpleTimeZone.java + test/jdk/java/util/TimeZone/SimpleTimeZoneCloneRaceTest.java Changeset: e9ad230ea455 Author: ysuenaga Date: 2017-12-04 10:23 +0900 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e9ad230ea455 8192897: NPE occurs on clhsdb jstack Reviewed-by: dholmes, sspitsyn, jgeorge, sballal ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/CompiledVFrame.java ! test/hotspot/jtreg/serviceability/sa/ClhsdbJstack.java Changeset: 18d487a1f933 Author: joehw Date: 2017-12-11 19:56 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/18d487a1f933 8190823: Broken link in org/w3c/dom/ls/ Reviewed-by: lancea ! src/java.xml/share/classes/org/w3c/dom/ls/DOMImplementationLS.java ! src/java.xml/share/classes/org/w3c/dom/ls/LSParser.java ! src/java.xml/share/classes/org/w3c/dom/ls/LSParserFilter.java ! src/java.xml/share/classes/org/w3c/dom/ls/LSSerializer.java Changeset: 61e60548c0cf Author: clanger Date: 2017-12-12 09:16 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/61e60548c0cf 8193258: Better usage of JDWP HEADER SIZE Reviewed-by: sspitsyn, cjplummer ! src/jdk.jdi/share/native/libdt_shmem/SharedMemoryConnection.c ! src/jdk.jdi/share/native/libdt_shmem/shmemBack.c ! src/jdk.jdi/share/native/libdt_shmem/shmemBase.c ! src/jdk.jdwp.agent/share/native/include/jdwpTransport.h ! src/jdk.jdwp.agent/share/native/libdt_socket/socketTransport.c ! src/jdk.jdwp.agent/share/native/libjdwp/inStream.c ! src/jdk.jdwp.agent/share/native/libjdwp/inStream.h ! src/jdk.jdwp.agent/share/native/libjdwp/outStream.c Changeset: ddba406af760 Author: attila Date: 2017-12-12 14:04 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ddba406af760 8193298: Don't run javadoc with test.single Reviewed-by: hannesw, sundar ! make/nashorn/build.xml Changeset: 2bf9071e8dce Author: attila Date: 2017-12-12 14:04 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2bf9071e8dce 8191905: Add a REMOVE StandardOperation to Dynalink Reviewed-by: hannesw, sundar ! src/jdk.dynalink/share/classes/jdk/dynalink/StandardOperation.java ! src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java ! src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeansLinker.java ! test/nashorn/src/jdk/dynalink/beans/test/BeanLinkerTest.java Changeset: be39de5f0315 Author: chegar Date: 2017-12-12 13:08 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/be39de5f0315 8185027: Typo in java.net.URLClassLoader.findResources(String) method documentation Reviewed-by: alanb ! src/java.base/share/classes/java/net/URLClassLoader.java Changeset: aadc02050d3b Author: sadayapalam Date: 2017-12-12 18:40 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/aadc02050d3b 8193142: Regression: ClassCastException: Type$ErrorType cannot be cast to Type$ArrayType Reviewed-by: mcimadamore ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java + test/langtools/tools/javac/varargs/ElementTypeMissingTest.java + test/langtools/tools/javac/varargs/ElementTypeMissingTest.out Changeset: fa5a47cad0c9 Author: hannesw Date: 2017-12-12 15:38 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/fa5a47cad0c9 8069338: Implement sharedScopeCall for optimistic types Reviewed-by: attila, sundar ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGeneratorLexicalContext.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/MethodEmitter.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/SharedScopeCall.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptObject.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/UnwarrantedOptimismException.java + test/nashorn/script/basic/JDK-8069338.js Changeset: 55b9b1e184c6 Author: weijun Date: 2017-12-13 01:29 +0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/55b9b1e184c6 8165996: PKCS11 using NSS throws an error regarding secmod.db when NSS uses sqlite Reviewed-by: weijun Contributed-by: Martin Balao ! src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Secmod.java ! test/jdk/sun/security/pkcs11/PKCS11Test.java + test/jdk/sun/security/pkcs11/Secmod/README-SQLITE + test/jdk/sun/security/pkcs11/Secmod/TestNssDbSqlite.java + test/jdk/sun/security/pkcs11/Secmod/cert9.db + test/jdk/sun/security/pkcs11/Secmod/key4.db + test/jdk/sun/security/pkcs11/Secmod/nss-sqlite.cfg ! test/jdk/sun/security/pkcs11/SecmodTest.java Changeset: c21740de9431 Author: psandoz Date: 2017-12-12 09:33 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c21740de9431 8171826: Comparator.reverseOrder(c) mishandles singleton comparators Reviewed-by: rriggs ! src/java.base/share/classes/java/util/Collections.java ! test/jdk/java/util/Comparator/BasicTest.java Changeset: 739aa297c260 Author: psandoz Date: 2017-12-12 09:33 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/739aa297c260 8187254: MethodType allows unvalidated parameter types Reviewed-by: mchung, jrose ! src/java.base/share/classes/java/lang/invoke/MethodType.java Changeset: 57148c79bd75 Author: naoto Date: 2017-12-12 10:21 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/57148c79bd75 8176841: Additional Unicode Language-Tag Extensions 8189134: New system properties for the default Locale extensions 8190918: Retrieve the region specific data regardless of language in locale 8191349: Add a new method in j.t.f.DateTimeFormatter to reflect Unicode extensions Reviewed-by: scolebourne, lancea, rriggs, rgoel, nishjain ! 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/NumberingSystemsParseHandler.java ! make/jdk/src/classes/build/tools/cldrconverter/ResourceBundleGenerator.java ! make/jdk/src/classes/build/tools/cldrconverter/SupplementDataParseHandler.java + make/jdk/src/classes/build/tools/cldrconverter/TimeZoneParseHandler.java ! src/java.base/share/classes/java/text/DateFormat.java ! src/java.base/share/classes/java/text/DateFormatSymbols.java ! src/java.base/share/classes/java/text/DecimalFormatSymbols.java ! src/java.base/share/classes/java/text/NumberFormat.java ! src/java.base/share/classes/java/text/SimpleDateFormat.java ! src/java.base/share/classes/java/time/format/DateTimeFormatter.java ! src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java ! src/java.base/share/classes/java/time/format/DateTimeTextProvider.java ! src/java.base/share/classes/java/time/format/DecimalStyle.java ! src/java.base/share/classes/java/time/temporal/ChronoField.java ! src/java.base/share/classes/java/time/temporal/IsoFields.java ! src/java.base/share/classes/java/time/temporal/WeekFields.java ! src/java.base/share/classes/java/util/Calendar.java ! src/java.base/share/classes/java/util/Currency.java ! src/java.base/share/classes/java/util/Locale.java ! src/java.base/share/classes/java/util/spi/LocaleNameProvider.java ! src/java.base/share/classes/sun/launcher/LauncherHelper.java + src/java.base/share/classes/sun/util/cldr/CLDRCalendarDataProviderImpl.java ! src/java.base/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java ! src/java.base/share/classes/sun/util/locale/provider/CalendarDataProviderImpl.java ! src/java.base/share/classes/sun/util/locale/provider/CalendarDataUtility.java ! src/java.base/share/classes/sun/util/locale/provider/DateFormatProviderImpl.java ! src/java.base/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java ! src/java.base/share/classes/sun/util/locale/provider/LocaleDataMetaInfo.java ! src/java.base/share/classes/sun/util/locale/provider/LocaleNameProviderImpl.java ! src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java ! src/java.base/share/classes/sun/util/locale/provider/NumberFormatProviderImpl.java ! src/java.base/share/classes/sun/util/locale/provider/SPILocaleProviderAdapter.java ! src/java.base/share/classes/sun/util/locale/provider/TimeZoneNameUtility.java ! src/java.base/share/classes/sun/util/resources/LocaleNames.properties + src/jdk.localedata/share/classes/sun/util/cldr/resources/common/bcp47/timezone.xml + src/jdk.localedata/share/classes/sun/util/cldr/resources/common/dtd/ldmlBCP47.dtd - test/java/util/Calendar/Bug8185841.java + test/jdk/java/time/test/java/time/format/TestUnicodeExtension.java ! test/jdk/java/util/Calendar/Bug4302966.java + test/jdk/java/util/Calendar/CalendarDataTest.java + test/jdk/java/util/Locale/bcp47u/CalendarTests.java + test/jdk/java/util/Locale/bcp47u/CurrencyTests.java + test/jdk/java/util/Locale/bcp47u/DefaultLocaleTest.java + test/jdk/java/util/Locale/bcp47u/DisplayNameTests.java + test/jdk/java/util/Locale/bcp47u/FormatTests.java + test/jdk/java/util/Locale/bcp47u/SymbolsTests.java + test/jdk/java/util/Locale/bcp47u/SystemPropertyTests.java + test/jdk/java/util/Locale/bcp47u/spi/LocaleNameProviderTests.java + test/jdk/java/util/Locale/bcp47u/spi/provider/foo/LocaleNameProviderImpl.java + test/jdk/java/util/Locale/bcp47u/spi/provider/module-info.java ! test/jdk/sun/text/resources/LocaleData.cldr ! test/jdk/sun/text/resources/LocaleDataTest.java ! test/jdk/tools/jlink/plugins/IncludeLocalesPluginTest.java Changeset: 77b88d8f8380 Author: joehw Date: 2017-12-12 11:10 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/77b88d8f8380 8183743: Umbrella: add overloads that take a Charset parameter Reviewed-by: alanb, rriggs ! src/java.base/share/classes/java/io/ByteArrayOutputStream.java ! src/java.base/share/classes/java/io/PrintStream.java ! src/java.base/share/classes/java/io/PrintWriter.java ! src/java.base/share/classes/java/net/URLDecoder.java ! src/java.base/share/classes/java/net/URLEncoder.java ! src/java.base/share/classes/java/nio/channels/Channels.java ! src/java.base/share/classes/java/util/Formatter.java ! src/java.base/share/classes/java/util/Properties.java ! src/java.base/share/classes/java/util/Scanner.java ! src/java.base/share/classes/jdk/internal/util/xml/PropertiesDefaultHandler.java ! src/java.base/share/classes/jdk/internal/util/xml/XMLStreamWriter.java ! src/java.base/share/classes/jdk/internal/util/xml/impl/XMLStreamWriterImpl.java + test/jdk/java/io/ByteArrayOutputStream/EncodingTest.java + test/jdk/java/io/PrintStream/EncodingTest.java ! test/jdk/java/io/PrintStream/FailingConstructors.java + test/jdk/java/io/PrintWriter/EncodingTest.java ! test/jdk/java/io/PrintWriter/FailingConstructors.java + test/jdk/java/net/URLDecoder/EncodingTest.java ! test/jdk/java/net/URLDecoder/URLDecoderArgs.java + test/jdk/java/net/URLEncoder/EncodingTest.java ! test/jdk/java/net/URLEncoder/URLEncoderEncodeArgs.java ! test/jdk/java/nio/channels/Channels/Basic.java + test/jdk/java/nio/channels/Channels/EncodingTest.java ! test/jdk/java/util/Formatter/Constructors.java + test/jdk/java/util/Formatter/EncodingTest.java + test/jdk/java/util/Properties/EncodingTest.java + test/jdk/java/util/Scanner/EncodingTest.java ! test/jdk/java/util/Scanner/FailingConstructors.java Changeset: 82767203606e Author: mchung Date: 2017-12-12 11:31 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/82767203606e 8193192: jdeps --generate-module-info does not look at module path Reviewed-by: dfuchs ! src/jdk.jdeps/share/classes/com/sun/tools/jdeps/Graph.java ! src/jdk.jdeps/share/classes/com/sun/tools/jdeps/JdepsConfiguration.java ! src/jdk.jdeps/share/classes/com/sun/tools/jdeps/JdepsTask.java ! src/jdk.jdeps/share/classes/com/sun/tools/jdeps/Profile.java ! test/langtools/tools/jdeps/lib/JdepsUtil.java ! test/langtools/tools/jdeps/modules/GenModuleInfo.java ! test/langtools/tools/jdeps/modules/GenOpenModule.java + test/langtools/tools/jdeps/modules/src/test/jdk/test/Main.java + test/langtools/tools/jdeps/modules/src/test/module-info.java Changeset: 111104f1e033 Author: ksrini Date: 2017-12-12 14:16 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/111104f1e033 8193107: javadoc complains about empty module Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDoclet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AbstractDoclet.java + test/langtools/jdk/javadoc/doclet/testModules/TestEmptyModule.java Changeset: 971d83666b23 Author: bpb Date: 2017-12-12 15:43 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/971d83666b23 8170495: JNI primitive type mismatch in SocketDispatcher.c:187 Summary: Cast DWORD 'written' to a jint before adding to 'count' Reviewed-by: alanb, rriggs ! src/java.base/windows/native/libnio/ch/SocketDispatcher.c Changeset: 472f74fb6c6b Author: rhalade Date: 2017-12-12 19:20 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/472f74fb6c6b 8189131: Open-source the Oracle JDK Root Certificates Summary: Integration for JEP 319: Root Certificates Reviewed-by: mullan, simonis, jnimeh, alanb ! src/java.base/share/lib/security/cacerts ! test/jdk/TEST.groups + test/jdk/lib/security/cacerts/VerifyCACerts.java + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/ActalisCA.java + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/ComodoCA.java + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/DTrustCA.java + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/LetsEncryptCA.java + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java + test/jdk/security/infra/java/security/cert/CertPathValidator/certification/ValidatePathWithParams.java Changeset: 125716343184 Author: ksrini Date: 2017-12-12 20:18 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/125716343184 8192850: method summary tables of inherited methods improperly list static interface methods Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/TestMemberInheritance.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/diamond/A.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/diamond/B.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/diamond/C.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/diamond/X.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/diamond/Z.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/inheritDist/A.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/inheritDist/B.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/inheritDist/C.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/pkg/BaseClass.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/pkg/BaseInterface.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/pkg/SubClass.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/pkg1/Implementer.java + test/langtools/jdk/javadoc/doclet/testMemberInheritance/pkg1/Interface.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/TestMemberInheritence.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/A.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/B.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/C.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/X.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/Z.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/inheritDist/A.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/inheritDist/B.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/inheritDist/C.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg/BaseClass.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg/BaseInterface.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg/SubClass.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg1/Implementer.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg1/Interface.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/TestBadOverride.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/testOverriddenMethods/TestOverrideMethods.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg1/BaseClass.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg1/SubClass.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg2/SubClass.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg3/I0.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg3/I1.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg3/I2.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg3/I3.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg3/I4.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg4/Foo.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg5/Classes.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg5/Interfaces.java + test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg5/TestEnum.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestBadOverride.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestMultiInheritence.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverrideMethods.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenMethodDocCopy.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethods.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg1/BaseClass.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg1/SubClass.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg2/SubClass.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I0.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I1.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I2.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I3.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I4.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg4/Foo.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg5/Classes.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg5/Interfaces.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg5/TestEnum.java Changeset: 1925dbd47e28 Author: nishjain Date: 2017-12-13 12:43 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/1925dbd47e28 8190278: ClassCastException is thrown by java.util.Scanner when a NumberFormatProvider is used. Reviewed-by: naoto, rriggs Contributed-by: nishit.jain at oracle.com ! src/java.base/share/classes/java/util/Scanner.java + test/jdk/java/util/Scanner/spi/UseLocaleWithProvider.java + test/jdk/java/util/Scanner/spi/provider/module-info.java + test/jdk/java/util/Scanner/spi/provider/test/NumberFormatImpl.java + test/jdk/java/util/Scanner/spi/provider/test/NumberFormatProviderImpl.java Changeset: c0bf7d8af037 Author: jlahoda Date: 2017-12-13 11:27 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c0bf7d8af037 8191636: [Windows] jshell tool: Wrong character in /env class-path command crashes jshell Summary: Fixing handling of invalid paths. Reviewed-by: rfield ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java ! test/langtools/jdk/jshell/ToolSimpleTest.java Changeset: 8ca86cfb126f Author: martin Date: 2017-12-06 15:51 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8ca86cfb126f 8193034: Optimize URL.toExternalForm Reviewed-by: chegar, alanb, clanger ! src/java.base/share/classes/java/net/URLStreamHandler.java Changeset: 43edfde828ab Author: alanb Date: 2017-12-13 15:32 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/43edfde828ab 8193454: ModuleDescriptor.{Requires,Exports,Open} toString should use toLowerCase(Local.ROOT) Reviewed-by: alanb Contributed-by: andrej.golovnin at gmail.com ! src/java.base/share/classes/java/lang/module/ModuleDescriptor.java Changeset: daf3b49f4839 Author: sherman Date: 2017-12-13 07:51 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/daf3b49f4839 8184947: ZipCoder performance improvements Reviewed-by: martin, redestad ! src/java.base/share/classes/java/lang/String.java ! src/java.base/share/classes/java/lang/StringCoding.java - src/java.base/share/classes/java/lang/StringDecoderUTF8.java ! src/java.base/share/classes/java/lang/System.java ! src/java.base/share/classes/java/util/zip/ZipCoder.java ! src/java.base/share/classes/jdk/internal/misc/JavaLangAccess.java ! src/java.base/share/classes/sun/nio/cs/ISO_8859_1.java ! src/java.base/share/classes/sun/nio/cs/US_ASCII.java ! src/java.base/share/classes/sun/nio/cs/UTF_8.java Changeset: a559b7cd1dea Author: dfuchs Date: 2017-12-13 16:16 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a559b7cd1dea 8193370: Provide more user friendly defaults for HTTP/2 client settings Reviewed-by: chegar ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http2ClientImpl.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http2Connection.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/HttpClientImpl.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/PlainHttpConnection.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/WindowUpdateSender.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/frame/SettingsFrame.java ! test/jdk/java/net/httpclient/security/filePerms/httpclient.policy ! test/jdk/java/net/httpclient/websocket/security/httpclient.policy Changeset: efda6932a433 Author: serb Date: 2017-11-29 15:11 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/efda6932a433 8182410: missing 'title' in api/javax/swing/plaf/synth/doc-files/componentProperties.html 8183508: multi_tsc.html should be updated 8181289: Invalid HTML 5 in AWT/Swing docs Reviewed-by: prr, jjg ! src/java.desktop/share/classes/java/awt/doc-files/AWTThreadIssues.html ! src/java.desktop/share/classes/java/awt/doc-files/DesktopProperties.html ! src/java.desktop/share/classes/java/awt/doc-files/FocusSpec.html ! src/java.desktop/share/classes/java/awt/doc-files/Modality.html ! src/java.desktop/share/classes/javax/imageio/metadata/doc-files/bmp_metadata.html ! src/java.desktop/share/classes/javax/imageio/metadata/doc-files/gif_metadata.html ! src/java.desktop/share/classes/javax/imageio/metadata/doc-files/jpeg_metadata.html ! src/java.desktop/share/classes/javax/imageio/metadata/doc-files/png_metadata.html ! src/java.desktop/share/classes/javax/imageio/metadata/doc-files/standard_metadata.html ! src/java.desktop/share/classes/javax/imageio/metadata/doc-files/tiff_metadata.html ! src/java.desktop/share/classes/javax/imageio/metadata/doc-files/wbmp_metadata.html ! src/java.desktop/share/classes/javax/imageio/package-info.java ! src/java.desktop/share/classes/javax/print/attribute/package-info.java ! src/java.desktop/share/classes/javax/swing/package-info.java ! src/java.desktop/share/classes/javax/swing/plaf/multi/doc-files/multi_tsc.html ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/doc-files/properties.html ! src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/componentProperties.html ! src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/synthFileFormat.html Changeset: 6e407f9da5fb Author: prr Date: 2017-12-01 10:30 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/6e407f9da5fb 8191767: Memory leak in JabSwitch Reviewed-by: serb, ssadetsky ! src/jdk.accessibility/windows/native/jabswitch/jabswitch.cpp Changeset: 195b82f9f7d1 Author: prr Date: 2017-12-01 10:35 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/195b82f9f7d1 Merge - src/hotspot/share/classfile/jimage.hpp - src/java.base/share/classes/jdk/internal/util/jar/VersionedStream.java - src/jdk.charsets/share/classes/sun/nio/cs/ext/MS950_HKSCS.java - test/jdk/java/lang/SecurityManager/NoAWT.java - test/jdk/jdk/internal/util/jar/TestVersionedStream.java - test/langtools/tools/javac/doctree/dcapi/OverviewTest.java Changeset: 2469e21060a0 Author: serb Date: 2017-12-01 17:44 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2469e21060a0 8183518: Premature deprecation of Event/InputEvent/KeyEvent in Java 9 Reviewed-by: prr, psadhukhan ! src/java.desktop/macosx/classes/sun/lwawt/macosx/LWCToolkit.java ! src/java.desktop/share/classes/java/awt/MenuBar.java ! src/java.desktop/share/classes/java/awt/MenuShortcut.java ! src/java.desktop/share/classes/java/awt/Toolkit.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboPopup.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicGraphicsUtils.java ! src/java.desktop/share/classes/sun/awt/HToolkit.java ! src/java.desktop/share/classes/sun/awt/HeadlessToolkit.java ! test/jdk/java/awt/Toolkit/Headless/HeadlessToolkit.java Changeset: baad9dc0eab1 Author: alitvinov Date: 2017-12-03 13:21 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/baad9dc0eab1 8181659: Create an alternative fix for JDK-8167102, whose fix was backed out Reviewed-by: prr, serb ! src/java.desktop/share/classes/sun/print/RasterPrinterJob.java ! test/jdk/java/awt/print/PageFormat/WrongPaperPrintingTest.java Changeset: 40afd72303e9 Author: prr Date: 2017-12-04 09:38 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/40afd72303e9 8182610: Update specification of service providers for IIORegistry and ServiceRegistry Reviewed-by: serb, psandoz ! src/java.desktop/share/classes/javax/imageio/spi/IIORegistry.java ! src/java.desktop/share/classes/javax/imageio/spi/ServiceRegistry.java Changeset: f27aad5782da Author: prr Date: 2017-12-04 10:12 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f27aad5782da Merge - test/langtools/tools/javac/6302184/T6302184.java - test/langtools/tools/javac/6302184/T6302184.out Changeset: 95f173494fe9 Author: serb Date: 2017-12-04 16:14 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/95f173494fe9 8189656: The Windows L&F should be moved out from the shared folder Reviewed-by: prr, psadhukhan, erikj - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/AnimationController.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/TMSchema.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsBorders.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsButtonListener.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsButtonUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsCheckBoxMenuItemUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsCheckBoxUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopIconUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopPaneUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsDesktopProperty.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsEditorPaneUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsGraphicsUtils.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsIconFactory.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLabelUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsMenuBarUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsMenuItemUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsMenuItemUIAccessor.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsMenuUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsOptionPaneUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsPasswordFieldUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsPopupMenuSeparatorUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsPopupMenuUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsPopupWindow.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsProgressBarUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsRadioButtonMenuItemUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsRadioButtonUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsRootPaneUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsScrollPaneUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsSeparatorUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsSliderUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsSpinnerUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsSplitPaneDivider.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsSplitPaneUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsTextAreaUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsTextFieldUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsTextPaneUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsTextUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsToggleButtonUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsToolBarSeparatorUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsToolBarUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/XPStyle.java - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/Computer.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/DetailsView.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/Directory.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/Error.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/File.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/FloppyDrive.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/HardDrive.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/HomeFolder.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/Inform.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/JavaCup32.png - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/ListView.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/NewFolder.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/Question.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/TreeClosed.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/TreeLeaf.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/TreeOpen.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/UpFolder.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/Warn.gif - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/image-delayed.png - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/icons/image-failed.png - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties - src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties ! src/java.desktop/share/classes/module-info.java - src/java.desktop/share/classes/sun/swing/plaf/windows/ClassicSortArrowIcon.java - src/java.desktop/unix/classes/sun/awt/windows/ThemeReader.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/AnimationController.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/TMSchema.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsBorders.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsButtonListener.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsButtonUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsCheckBoxMenuItemUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsCheckBoxUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsDesktopIconUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsDesktopManager.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsDesktopPaneUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsDesktopProperty.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsEditorPaneUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsGraphicsUtils.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsIconFactory.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameTitlePane.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsInternalFrameUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLabelUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsMenuBarUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsMenuItemUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsMenuItemUIAccessor.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsMenuUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsOptionPaneUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsPasswordFieldUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsPopupMenuSeparatorUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsPopupMenuUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsPopupWindow.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsProgressBarUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsRadioButtonMenuItemUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsRadioButtonUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsRootPaneUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsScrollBarUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsScrollPaneUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsSeparatorUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsSliderUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsSpinnerUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsSplitPaneDivider.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsSplitPaneUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsTextAreaUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsTextFieldUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsTextPaneUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsTextUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsToggleButtonUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsToolBarSeparatorUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsToolBarUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/WindowsTreeUI.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/XPStyle.java + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/Computer.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/DetailsView.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/Directory.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/Error.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/File.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/FloppyDrive.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/HardDrive.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/HomeFolder.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/Inform.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/JavaCup32.png + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/ListView.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/NewFolder.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/Question.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/TreeClosed.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/TreeLeaf.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/TreeOpen.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/UpFolder.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/Warn.gif + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/image-delayed.png + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/icons/image-failed.png + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_de.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_es.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_it.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_ja.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_pt_BR.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_CN.properties + src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources/windows_zh_TW.properties + src/java.desktop/windows/classes/module-info.java.extra + src/java.desktop/windows/classes/sun/swing/plaf/windows/ClassicSortArrowIcon.java ! test/jdk/com/sun/java/swing/plaf/windows/Test8173145.java ! test/jdk/javax/swing/JButton/4796987/bug4796987.java ! test/jdk/javax/swing/JComboBox/4199622/bug4199622.java ! test/jdk/javax/swing/JComboBox/8015300/Test8015300.java ! test/jdk/javax/swing/JFileChooser/4847375/bug4847375.java ! test/jdk/javax/swing/JFileChooser/8046391/bug8046391.java ! test/jdk/javax/swing/JInternalFrame/6725409/bug6725409.java ! test/jdk/javax/swing/JProgressBar/7141573/bug7141573.java ! test/jdk/javax/swing/JSlider/6524424/bug6524424.java ! test/jdk/javax/swing/JSlider/6579827/bug6579827.java ! test/jdk/javax/swing/JTree/8004298/bug8004298.java ! test/jdk/javax/swing/border/Test4856008.java ! test/jdk/javax/swing/border/Test6978482.java Changeset: 128de6a38f8e Author: rfield Date: 2017-12-04 17:15 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/128de6a38f8e 8191455: jdk/jshell/StartOptionTest.java and jdk/jshell/ToolProviderTest.java failed after changeset e0f08a 8191456: jdk/jshell/ExternalEditorTest.java testStatementMush() failure Reviewed-by: jlahoda ! test/langtools/ProblemList.txt ! test/langtools/jdk/jshell/EditorTestBase.java ! test/langtools/jdk/jshell/ExternalEditorTest.java ! test/langtools/jdk/jshell/StartOptionTest.java Changeset: e2065f7505eb Author: rfield Date: 2017-12-05 11:04 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e2065f7505eb 8192979: jshell tool: Online help text for commands is confusing Reviewed-by: jlahoda ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java ! test/langtools/jdk/jshell/ToolSimpleTest.java Changeset: 51772bf1fb0c Author: prr Date: 2017-12-07 11:55 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/51772bf1fb0c 8188836: Upgrade to Harfbuzz 1.7.1 in JDK 10 Reviewed-by: serb ! make/lib/Awt2dLibraries.gmk ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-deserialize-json.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-deserialize-text.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-serialize.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.h - src/java.desktop/share/native/libfontmanager/harfbuzz/hb-cache-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.h ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-coretext.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-coretext.h + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-debug.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-deprecated.h + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-dsalgs.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.h ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-fallback-shape.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.h ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ft.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ft.h ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-mutex-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-object-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-file-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-open-type-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cbdt-table.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-cmap-table.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-font.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-hmtx-table.hh + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-kern-table.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-common-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gdef-table.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gpos-table.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gsub-table.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-gsubgpos-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-jstf-table.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-map-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-map.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-name-table.hh + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-post-macroman.hh + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-post-table.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-table.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-default.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hangul.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hebrew.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-machine.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-table.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar-machine.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-thai.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-tibetan.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-machine.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-table.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-fallback.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-normalize.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag.cc + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-avar-table.hh + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-fvar-table.hh + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-hvar-table.hh + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var-mvar-table.hh + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var.cc + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-var.h ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot.h ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-private.hh + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set-digest-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.h ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.h ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper.cc + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-string-array.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.c ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.h + src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn_db.h - src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/unicodedata_db.h ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.cc ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-utf-private.hh ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-version.h Changeset: b2190c70a1ac Author: rfield Date: 2017-12-07 13:23 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b2190c70a1ac 8192863: jshell tool: / gives "No such command" Reviewed-by: jlahoda ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/ConsoleIOContext.java ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java ! test/langtools/jdk/jshell/HistoryUITest.java ! test/langtools/jdk/jshell/PasteAndMeasurementsUITest.java ! test/langtools/jdk/jshell/ToolShiftTabTest.java ! test/langtools/jdk/jshell/ToolTabCommandTest.java ! test/langtools/jdk/jshell/ToolTabSnippetTest.java ! test/langtools/jdk/jshell/UITesting.java Changeset: 34f0232538f6 Author: psadhukhan Date: 2017-12-08 10:03 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/34f0232538f6 8191639: NPE from BasicListUI.Actions.getNextPageIndex Reviewed-by: serb, ssadetsky ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicListUI.java + test/jdk/javax/swing/JList/BasicListTest.java Changeset: dbfd916af279 Author: pbansal Date: 2017-12-08 15:57 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/dbfd916af279 8191436: ListSelectionModel.setSelectionMode() underspecified Reviewed-by: serb, ssadetsky ! src/java.desktop/share/classes/javax/swing/DefaultListSelectionModel.java + test/jdk/javax/swing/JList/ListSelectionModelTest.java Changeset: f3860ee5c026 Author: ssadetsky Date: 2017-12-08 12:55 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f3860ee5c026 8177758: Regression in java.awt.FileDialog Reviewed-by: sveerabhadra, serb ! src/java.desktop/windows/native/libawt/windows/awt_FileDialog.cpp + test/jdk/java/awt/FileDialog/FileDialogMemoryLeak/FileDialogLeakTest.java Changeset: c40a1a907c74 Author: prr Date: 2017-12-08 13:15 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c40a1a907c74 8193211: Update jtreg TEST.groups and ProblemList for client-libs Reviewed-by: psadhukhan ! test/jdk/ProblemList.txt ! test/jdk/TEST.groups Changeset: 791d551bcdb8 Author: prr Date: 2017-12-09 11:40 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/791d551bcdb8 8183960: Upgrade to libpng 1.6.34 Reviewed-by: serb ! src/java.desktop/share/native/libsplashscreen/libpng/CHANGES ! src/java.desktop/share/native/libsplashscreen/libpng/LICENSE ! src/java.desktop/share/native/libsplashscreen/libpng/README ! src/java.desktop/share/native/libsplashscreen/libpng/png.c ! src/java.desktop/share/native/libsplashscreen/libpng/png.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngconf.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngerror.c ! src/java.desktop/share/native/libsplashscreen/libpng/pngget.c ! src/java.desktop/share/native/libsplashscreen/libpng/pnginfo.h ! src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngpread.c ! src/java.desktop/share/native/libsplashscreen/libpng/pngpriv.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngread.c ! src/java.desktop/share/native/libsplashscreen/libpng/pngrtran.c ! src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c ! src/java.desktop/share/native/libsplashscreen/libpng/pngset.c ! src/java.desktop/share/native/libsplashscreen/libpng/pngstruct.h ! src/java.desktop/share/native/libsplashscreen/libpng/pngtrans.c Changeset: 1a6c071312a3 Author: serb Date: 2017-12-09 20:40 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/1a6c071312a3 8193012: Small cleanup of AWTEvent class Reviewed-by: psadhukhan ! src/java.desktop/share/classes/java/awt/AWTEvent.java Changeset: 4483880d8811 Author: serb Date: 2017-12-10 00:08 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4483880d8811 8178401: Various audio files writers do not close file streams properly Reviewed-by: prr ! src/java.desktop/share/classes/com/sun/media/sound/AiffFileWriter.java ! src/java.desktop/share/classes/com/sun/media/sound/AuFileWriter.java ! src/java.desktop/share/classes/com/sun/media/sound/WaveFileWriter.java ! src/java.desktop/share/classes/com/sun/media/sound/WaveFloatFileWriter.java ! test/jdk/ProblemList.txt ! test/jdk/javax/sound/sampled/AudioInputStream/FrameLengthAfterConversion.java Changeset: da1b57b17101 Author: prr Date: 2017-12-11 10:08 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/da1b57b17101 Merge - src/hotspot/share/classfile/vmSymbols_ext.hpp - src/hotspot/share/gc/g1/hSpaceCounters.cpp - src/hotspot/share/gc/g1/hSpaceCounters.hpp - src/hotspot/share/services/g1MemoryPool.cpp - src/hotspot/share/services/g1MemoryPool.hpp - src/hotspot/share/services/jmm.h - src/hotspot/share/services/psMemoryPool.cpp - src/hotspot/share/services/psMemoryPool.hpp - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIA64.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/ia64/IA64ThreadContext.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/ia64/LinuxIA64ThreadContext.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/windbg/ia64/WindbgIA64Thread.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/windbg/ia64/WindbgIA64ThreadContext.java - src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/windbg/ia64/WindbgIA64ThreadFactory.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/AbstractPushPublisher.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/AsyncConnection.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/AsyncSSLDelegate.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/BlockingPushPublisher.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/DefaultPublisher.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/ExecutorWrapper.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/PseudoPublisher.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/PushPublisher.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/RequestProcessors.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/ResponseHeaders.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/ResponseProcessors.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/SSLConnection.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/SSLTunnelConnection.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/AsyncDataReadQueue.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/AsyncWriteQueue.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/BufferHandler.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/ExceptionallyCloseable.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/Queue.java - src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/websocket/CooperativeHandler.java - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/memory/address/RawAddressNode.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/BasicLogEvent.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/CallSite.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/Compilation.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/Constants.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/LogCleanupReader.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/LogCompilation.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/LogEvent.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/LogParser.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/MakeNotEntrantEvent.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/Method.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/NMethod.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/Phase.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/UncommonTrap.java - src/utils/LogCompilation/src/com/sun/hotspot/tools/compiler/UncommonTrapEvent.java - test/hotspot/jtreg/gc/metaspace/PerfCounter.java - test/hotspot/jtreg/gc/metaspace/PerfCounters.java ! test/jdk/ProblemList.txt ! test/jdk/TEST.groups - test/jdk/java/io/FileInputStream/FinalizeShdCallClose.java - test/jdk/java/io/FileOutputStream/FinalizeShdCallClose.java - test/jdk/java/net/httpclient/APIErrors.java - test/jdk/java/net/httpclient/Server.java - test/jdk/java/net/httpclient/http2/HpackDriver.java - test/jdk/java/net/httpclient/http2/HpackDriverHeaderTable.java - test/jdk/java/net/httpclient/http2/NoBody.java - test/jdk/java/net/httpclient/http2/server/RedirectHandler.java - test/jdk/java/net/httpclient/websocket/LoggingHelper.java - test/jdk/java/net/httpclient/websocket/WSDriver.java - test/jdk/java/net/httpclient/websocket/jdk.incubator.httpclient/jdk/incubator/http/internal/websocket/CloseTest.java - test/jdk/java/net/httpclient/websocket/jdk.incubator.httpclient/jdk/incubator/http/internal/websocket/DataProviders.java - test/jdk/java/net/httpclient/websocket/jdk.incubator.httpclient/jdk/incubator/http/internal/websocket/MockChannel.java - test/jdk/java/net/httpclient/websocket/jdk.incubator.httpclient/jdk/incubator/http/internal/websocket/MockChannelTest.java - test/jdk/java/net/httpclient/websocket/jdk.incubator.httpclient/jdk/incubator/http/internal/websocket/MockListenerTest.java - test/jdk/java/net/httpclient/websocket/jdk.incubator.httpclient/jdk/incubator/http/internal/websocket/PingTest.java - test/jdk/java/net/httpclient/whitebox/jdk.incubator.httpclient/jdk/incubator/http/ResponseHeadersTest.java - test/jdk/jdk/internal/misc/JavaLangAccess/NewUnsafeString.java - test/jdk/lib/testlibrary/jdk/testlibrary/RandomFactory.java - test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/badPackageFileInJar.jar - test/langtools/jdk/javadoc/doclet/testGroupOption/C.java - test/langtools/tools/javac/T5090006/AssertionFailureTest.java - test/langtools/tools/javac/T5090006/broken.jar Changeset: fd7fbc929001 Author: lbourges Date: 2017-12-11 21:14 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/fd7fbc929001 8191814: Marlin rasterizer spends time computing geometry for stroked segments that do not intersect the clip Summary: upgrade to Marlin 0.8.2 providing efficient path clipping (Stroker and Filler) Reviewed-by: prr, serb ! src/java.desktop/share/classes/sun/java2d/marlin/Curve.java ! src/java.desktop/share/classes/sun/java2d/marlin/DCurve.java ! src/java.desktop/share/classes/sun/java2d/marlin/DDasher.java ! src/java.desktop/share/classes/sun/java2d/marlin/DHelpers.java ! src/java.desktop/share/classes/sun/java2d/marlin/DMarlinRenderingEngine.java ! src/java.desktop/share/classes/sun/java2d/marlin/DRenderer.java ! src/java.desktop/share/classes/sun/java2d/marlin/DRendererContext.java ! src/java.desktop/share/classes/sun/java2d/marlin/DStroker.java ! src/java.desktop/share/classes/sun/java2d/marlin/DTransformingPathConsumer2D.java ! src/java.desktop/share/classes/sun/java2d/marlin/Dasher.java ! src/java.desktop/share/classes/sun/java2d/marlin/Helpers.java ! src/java.desktop/share/classes/sun/java2d/marlin/MarlinCache.java ! src/java.desktop/share/classes/sun/java2d/marlin/MarlinConst.java ! src/java.desktop/share/classes/sun/java2d/marlin/MarlinProperties.java ! src/java.desktop/share/classes/sun/java2d/marlin/MarlinRenderingEngine.java ! src/java.desktop/share/classes/sun/java2d/marlin/Renderer.java ! src/java.desktop/share/classes/sun/java2d/marlin/RendererContext.java ! src/java.desktop/share/classes/sun/java2d/marlin/RendererStats.java ! src/java.desktop/share/classes/sun/java2d/marlin/Stroker.java ! src/java.desktop/share/classes/sun/java2d/marlin/TransformingPathConsumer2D.java ! src/java.desktop/share/classes/sun/java2d/marlin/Version.java + test/jdk/sun/java2d/marlin/ClipShapeTest.java Changeset: 7e8a0c4ee95e Author: prr Date: 2017-12-11 15:17 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7e8a0c4ee95e 8189809: Large performance regression in Swing text layout Reviewed-by: serb, pnarayanan ! src/java.desktop/share/classes/java/awt/Font.java ! src/java.desktop/share/classes/sun/font/FontDesignMetrics.java ! src/java.desktop/share/classes/sun/swing/SwingUtilities2.java Changeset: 745ea7d5039a Author: rfield Date: 2017-12-11 21:56 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/745ea7d5039a 8162989: jshell tool: /edit with external editor leaks files in /tmp Reviewed-by: jlahoda ! src/jdk.internal.ed/share/classes/jdk/internal/editor/external/ExternalEditor.java ! test/langtools/jdk/jshell/CustomEditor.java ! test/langtools/jdk/jshell/ExternalEditorTest.java Changeset: e53948132278 Author: sveerabhadra Date: 2017-12-12 12:31 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e53948132278 8190515: java.awt.Desktop.moveToTrash(File) prompts on Windows 7 but not on Mac Reviewed-by: serb, prr ! src/java.desktop/windows/native/libawt/windows/awt_Desktop.cpp + test/jdk/java/awt/FileDialog/MoveToTrashTest.java Changeset: 752f0e49c3f0 Author: sveerabhadra Date: 2017-12-12 12:43 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/752f0e49c3f0 8146537: TrayIcon Action Listener doesnt work in WIndows 10 Reviewed-by: serb, ssadetsky ! src/java.desktop/windows/native/libawt/windows/awt_TrayIcon.cpp + test/jdk/java/awt/TrayIcon/TrayIconPopup/TrayIconPopupClickTest.java Changeset: 054fecf0c1d2 Author: pnarayanan Date: 2017-12-12 14:05 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/054fecf0c1d2 8188083: NullPointerExcpn-java.awt.image.FilteredImageSource.startProduction JDK-8079607 Reviewed-by: serb, prr, jdv Contributed-by: prahalad.kumar.narayanan at oracle.com ! src/java.desktop/share/classes/java/awt/image/FilteredImageSource.java + test/jdk/java/awt/image/FilteredImageSourceTest.java Changeset: dbfe141b1271 Author: kaddepalli Date: 2017-12-12 15:47 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/dbfe141b1271 8187936: Automatically selecting a new JTree node in a model listener can cause unusual behavior Reviewed-by: serb, prr ! src/java.desktop/share/classes/javax/swing/package-info.java Changeset: 093027a037cf Author: akolarkunnu Date: 2017-12-13 13:27 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/093027a037cf 8191803: [TEST_BUG] : sanity/client/SwingSet/src/ProgressBarDemoTest.java failed with "Wait "greater then 1349" state to be reached Reviewed-by: serb, psadhukhan Contributed-by: abdul.kolarkunnu at oracle.com ! test/jdk/sanity/client/SwingSet/src/ProgressBarDemoTest.java Changeset: 191ae61bd1e9 Author: prr Date: 2017-12-13 10:25 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/191ae61bd1e9 Merge - src/java.base/share/classes/java/lang/StringDecoderUTF8.java ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java - test/java/util/Calendar/Bug8185841.java ! test/jdk/TEST.groups - test/langtools/jdk/javadoc/doclet/testMemberInheritence/TestMemberInheritence.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/A.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/B.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/C.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/X.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/Z.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/inheritDist/A.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/inheritDist/B.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/inheritDist/C.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg/BaseClass.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg/BaseInterface.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg/SubClass.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg1/Implementer.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg1/Interface.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestBadOverride.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestMultiInheritence.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverrideMethods.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenMethodDocCopy.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethods.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg1/BaseClass.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg1/SubClass.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg2/SubClass.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I0.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I1.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I2.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I3.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I4.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg4/Foo.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg5/Classes.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg5/Interfaces.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg5/TestEnum.java ! test/langtools/jdk/jshell/ToolSimpleTest.java Changeset: 2fa0077c4fec Author: bchristi Date: 2017-12-13 11:43 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2fa0077c4fec 8193460: Take tools/launcher/TestXcheckJNIWarnings.java back off the ProblemList Reviewed-by: mchung, psandoz ! test/jdk/ProblemList.txt Changeset: 2608240fc957 Author: redestad Date: 2017-12-13 21:25 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2608240fc957 8193471: Startup regression due to JDK-8185582 Reviewed-by: rriggs, psandoz ! src/java.base/share/classes/java/util/zip/Inflater.java ! src/java.base/share/classes/java/util/zip/ZipFile.java Changeset: c79d31ba84b9 Author: bpatel Date: 2017-12-13 12:45 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c79d31ba84b9 8164407: Add module support for -link and -linkoffline javadoc option Reviewed-by: jjg, ksrini ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.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/Links.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AbstractDoclet.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/DocPaths.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/PackageListWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java ! test/langtools/jdk/javadoc/doclet/testClassCrossReferences/TestClassCrossReferences.java ! test/langtools/jdk/javadoc/doclet/testDocRootInlineTag/TestDocRootInlineTag.java ! test/langtools/jdk/javadoc/doclet/testExternalOverridenMethod/TestExternalOverridenMethod.java ! test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java ! test/langtools/jdk/javadoc/doclet/testModules/TestModules.java + test/langtools/jdk/javadoc/doclet/testModules/jdk/element-list ! test/langtools/jdk/javadoc/doclet/testModules/moduleB/module-info.java + test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkg3mdlB/TestClassLinkOption.java ! test/langtools/jdk/javadoc/doclet/testTitleInHref/TestTitleInHref.java ! test/langtools/jdk/javadoc/tool/api/basic/APITest.java ! test/langtools/tools/javadoc/api/basic/APITest.java Changeset: 8e561c68f72a Author: jwilhelm Date: 2017-12-08 23:43 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8e561c68f72a Merge + src/hotspot/os/posix/include/jvm_md.h + src/hotspot/os/windows/include/jvm_md.h + src/hotspot/share/include/jmm.h + src/hotspot/share/include/jvm.h - src/java.base/share/native/include/jvm.h - src/java.base/unix/native/include/jvm_md.h - src/java.base/windows/native/include/jvm_md.h - src/java.management/share/native/include/jmm.h Changeset: e9e3edac1768 Author: neliasso Date: 2017-12-13 10:21 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e9e3edac1768 8192971: LockCompilationTest fails intermittently Summary: Remove all unnecessary compilations Reviewed-by: kvn, thartmann ! test/hotspot/jtreg/compiler/whitebox/LockCompilationTest.java Changeset: cf7792800ba9 Author: jwilhelm Date: 2017-12-13 23:06 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/cf7792800ba9 Merge - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CooperativePhaseTest.java ! test/jdk/ProblemList.txt ! test/jdk/TEST.ROOT Changeset: 8604408bc26e Author: dlong Date: 2017-12-13 20:35 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8604408bc26e 8193323: Crash in "failed dependencies, but counter didn't change" with enabled UseJVMCICompiler Reviewed-by: kvn ! src/hotspot/share/compiler/compileBroker.cpp ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp Changeset: be065f758154 Author: jgeorge Date: 2017-12-14 12:49 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/be065f758154 8192985: SA: Test cases for the clhsdb 'inspect', 'scanoops' and 'printas' commands Summary: Create tests for the clhsdb commands: inspect, scanoops and printas Reviewed-by: sspitsyn, sballal, cjplummer + test/hotspot/jtreg/serviceability/sa/ClhsdbInspect.java + test/hotspot/jtreg/serviceability/sa/ClhsdbPrintAs.java + test/hotspot/jtreg/serviceability/sa/ClhsdbScanOops.java Changeset: 945332d45710 Author: lkorinth Date: 2017-12-06 11:11 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/945332d45710 8133805: Remove the bot_updates parameter from G1Allocator's allocation methods Reviewed-by: tschatzl, sjohanss ! src/hotspot/share/gc/g1/g1AllocRegion.cpp ! src/hotspot/share/gc/g1/g1AllocRegion.hpp ! src/hotspot/share/gc/g1/g1AllocRegion.inline.hpp ! src/hotspot/share/gc/g1/g1Allocator.cpp ! src/hotspot/share/gc/g1/g1Allocator.inline.hpp Changeset: 6d4e1efac80a Author: iklam Date: 2017-12-13 15:37 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/6d4e1efac80a 8165603: runtime/appcds/UseAppCDS.java: failed to clean up files after test when running with agentvm Reviewed-by: mseledtsov, dholmes ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/runtime/appcds/MultiReleaseJars.java ! test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java ! test/hotspot/jtreg/runtime/appcds/UseAppCDS.java ! test/hotspot/jtreg/runtime/appcds/cacheObject/RedefineClassTest.java ! test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationTest.java ! test/hotspot/jtreg/runtime/appcds/test-classes/Util.java Changeset: 0bce2ae39928 Author: thartmann Date: 2017-12-15 16:51 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0bce2ae39928 8193608: Quarantine test/hotspot/jtreg/compiler/codegen/Test6896617.java until JDK-8193479 is fixed Summary: Added test to ProblemList.txt Reviewed-by: vlivanov ! test/hotspot/jtreg/ProblemList.txt Changeset: 474cec233fb2 Author: hseigel Date: 2017-12-15 11:23 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/474cec233fb2 8154587: Resolution fails for default method named 'clone' Summary: Make sure default methods with the same names as those in j.l.Object get put in the default methods table where resolution can find them. Reviewed-by: acorn, lfoltan ! src/hotspot/share/classfile/defaultMethods.cpp ! src/hotspot/share/classfile/systemDictionary.hpp ! src/hotspot/share/oops/cpCache.cpp ! src/hotspot/share/oops/klassVtable.cpp ! src/hotspot/share/oops/klassVtable.hpp + test/hotspot/jtreg/runtime/clone/AbstractClone.java + test/hotspot/jtreg/runtime/clone/AbstractNoClones.jasm + test/hotspot/jtreg/runtime/clone/DefaultClone.jasm + test/hotspot/jtreg/runtime/clone/DefaultFinalize.jasm + test/hotspot/jtreg/runtime/clone/DefaultHashCode.jasm + test/hotspot/jtreg/runtime/clone/DefaultNoCloneInC.jasm + test/hotspot/jtreg/runtime/clone/LocalClone.jasm + test/hotspot/jtreg/runtime/clone/NoClones.jasm + test/hotspot/jtreg/runtime/clone/invokevirtual/DefMethClone.jasm + test/hotspot/jtreg/runtime/clone/invokevirtual/HasLocalClone.jasm + test/hotspot/jtreg/runtime/clone/invokevirtual/I1.java + test/hotspot/jtreg/runtime/clone/invokevirtual/I1Abstr.java + test/hotspot/jtreg/runtime/clone/invokevirtual/NoLocalClone.jasm + test/hotspot/jtreg/runtime/clone/invokevirtual/NoLocalCloneAbstr.jasm + test/hotspot/jtreg/runtime/clone/invokevirtual/SuperClass.jasm Changeset: 0cd5e2ca53dd Author: smarks Date: 2017-12-13 14:23 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0cd5e2ca53dd 8193476: (jdeprscan) additional version updates for JDK 10 Reviewed-by: darcy ! src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/TraverseProc.java ! src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/readme.md ! src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/resources/jdeprscan.properties Changeset: 23d427d8a1ff Author: jjg Date: 2017-12-13 14:49 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/23d427d8a1ff 8191054: Remove the Native-Header Tool (javah) Reviewed-by: darcy, mcimadamore, ksrini - src/jdk.compiler/share/classes/com/sun/tools/javah/Gen.java - src/jdk.compiler/share/classes/com/sun/tools/javah/InternalError.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JNI.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JavahFileManager.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JavahTask.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JavahTool.java - src/jdk.compiler/share/classes/com/sun/tools/javah/LLNI.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Main.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Mangle.java - src/jdk.compiler/share/classes/com/sun/tools/javah/NativeHeaderTool.java - src/jdk.compiler/share/classes/com/sun/tools/javah/TypeSignature.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Util.java - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n.properties - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n_ja.properties - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n_zh_CN.properties - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/version.properties-template ! src/jdk.compiler/share/classes/module-info.java - test/langtools/tools/javac/T8152360/DeprecateJavahTest.java - test/langtools/tools/javac/nativeHeaders/javahComparison/CompareTest.java - test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass1.java - test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass4.java - test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass5.java - test/langtools/tools/javah/4942232/ParamClassTest.java - test/langtools/tools/javah/4942232/Test.java - test/langtools/tools/javah/6257087/T6257087.java - test/langtools/tools/javah/6572945/T6572945.java - test/langtools/tools/javah/6572945/TestClass1.java - test/langtools/tools/javah/6572945/TestClass2.java - test/langtools/tools/javah/6572945/TestClass3.java - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1.h - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1_Inner1.h - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1_Inner2.h - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass2.h - test/langtools/tools/javah/6572945/gold/jni.file.1 - test/langtools/tools/javah/6572945/gold/jni.file.2 - test/langtools/tools/javah/6572945/gold/jni.file.3 - test/langtools/tools/javah/ModuleClass.java - test/langtools/tools/javah/ReadOldClass.sh - test/langtools/tools/javah/T4942232/MissingParamClassTest.java - test/langtools/tools/javah/T5070898.java - test/langtools/tools/javah/T6893943.java - test/langtools/tools/javah/T6994608.java - test/langtools/tools/javah/T7126832/T7126832.java - test/langtools/tools/javah/T7126832/java.java - test/langtools/tools/javah/T7185778.java - test/langtools/tools/javah/TestHelpOpts.java - test/langtools/tools/javah/VersionTest.java - test/langtools/tools/javah/constMacroTest/ConstMacroTest.java - test/langtools/tools/lib/toolbox/JavahTask.java Changeset: cc738fba6893 Author: hannesw Date: 2017-12-14 02:26 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/cc738fba6893 8191301: JavaImporter fails to resolve imported elements within functions, that contain too many statements Reviewed-by: hannesw, attila Contributed-by: priya.lakshmi.muthuswamy at oracle.com ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeJavaImporter.java + test/nashorn/script/basic/JDK-8191301.js + test/nashorn/script/basic/JDK-8191301.js.EXPECTED Changeset: e5cdedd37b78 Author: jjg Date: 2017-12-13 17:27 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e5cdedd37b78 8178070: duplicate entries in package table Reviewed-by: bpatel, ksrini ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.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/markup/TableHeader.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties ! test/langtools/jdk/javadoc/doclet/lib/JavadocTester.java + test/langtools/jdk/javadoc/doclet/testModules/TestModulePackages.java ! test/langtools/jdk/javadoc/doclet/testModules/TestModules.java ! test/langtools/tools/lib/toolbox/ModuleBuilder.java ! test/langtools/tools/lib/toolbox/ToolBox.java Changeset: e1eb12343774 Author: jjg Date: 2017-12-13 17:29 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e1eb12343774 Merge Changeset: d2a837cf9ff1 Author: mr Date: 2017-12-13 17:28 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d2a837cf9ff1 8192833: JEP 322: Time-Based Release Versioning Reviewed-by: erikj, ihse, iris, mchung, psandoz, tbell ! make/MacBundles.gmk ! make/ReleaseFile.gmk ! make/autoconf/flags.m4 ! make/autoconf/generated-configure.sh ! make/autoconf/jdk-version.m4 ! make/autoconf/spec.gmk.in ! make/autoconf/version-numbers ! make/conf/jib-profiles.js ! make/gensrc/GensrcMisc.gmk ! src/hotspot/share/runtime/vm_version.cpp ! src/java.base/share/classes/java/lang/Runtime.java ! src/java.base/share/classes/java/lang/System.java ! src/java.base/share/classes/java/lang/VersionProps.java.template ! src/java.base/share/classes/java/util/jar/JarFile.java ! src/java.base/share/native/libjava/jdk_util.c ! src/jdk.jconsole/share/classes/sun/tools/jconsole/AboutDialog.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java ! src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Main.java ! src/jdk.zipfs/share/classes/jdk/nio/zipfs/JarFileSystem.java ! test/jdk/java/lang/Runtime/Version/Basic.java Changeset: 7acf5700d542 Author: smarks Date: 2017-12-13 18:47 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7acf5700d542 8140281: add no-arg Optional.orElseThrow() as preferred alternative to get() Reviewed-by: alanb, bpb, forax, darcy ! src/java.base/share/classes/java/util/Optional.java ! src/java.base/share/classes/java/util/OptionalDouble.java ! src/java.base/share/classes/java/util/OptionalInt.java ! src/java.base/share/classes/java/util/OptionalLong.java ! test/jdk/java/util/Optional/Basic.java ! test/jdk/java/util/Optional/BasicDouble.java ! test/jdk/java/util/Optional/BasicInt.java ! test/jdk/java/util/Optional/BasicLong.java Changeset: 984c4b99afc9 Author: darcy Date: 2017-12-13 19:48 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/984c4b99afc9 8193489: Add information about local variable type inference to SourceVersion.RELEASE_10 Reviewed-by: sundar, mr ! src/java.compiler/share/classes/javax/lang/model/SourceVersion.java Changeset: e8230b52a8f4 Author: sherman Date: 2017-12-13 21:41 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e8230b52a8f4 8193490: java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java, FinalizeZipFile.java, TestCleaner.java, Collectible.java failed because cleaner can't finish Reviewed-by: darcy ! src/java.base/share/classes/java/util/zip/Inflater.java ! src/java.base/share/classes/java/util/zip/ZipFile.java Changeset: a8e39cc7b88f Author: lucy Date: 2017-12-14 12:02 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a8e39cc7b88f 8193443: [s390]: EncodeISOArray generates wrong vector code Reviewed-by: goetz, mdoerr ! src/hotspot/cpu/s390/assembler_s390.hpp ! src/hotspot/cpu/s390/assembler_s390.inline.hpp ! src/hotspot/cpu/s390/macroAssembler_s390.cpp Changeset: 651a95f30dfb Author: mdoerr Date: 2017-12-14 13:05 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/651a95f30dfb 8193257: PPC64, s390 implementation for Thread-local handshakes Reviewed-by: goetz, lucy ! src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp ! src/hotspot/cpu/ppc/globalDefinitions_ppc.hpp ! src/hotspot/cpu/ppc/globals_ppc.hpp ! src/hotspot/cpu/ppc/interp_masm_ppc.hpp ! src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.hpp ! src/hotspot/cpu/ppc/ppc.ad ! src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp ! src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp ! src/hotspot/cpu/ppc/templateTable_ppc_64.cpp ! src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp ! src/hotspot/cpu/s390/globalDefinitions_s390.hpp ! src/hotspot/cpu/s390/globals_s390.hpp ! src/hotspot/cpu/s390/interp_masm_s390.cpp ! src/hotspot/cpu/s390/interp_masm_s390.hpp ! src/hotspot/cpu/s390/macroAssembler_s390.cpp ! src/hotspot/cpu/s390/macroAssembler_s390.hpp ! src/hotspot/cpu/s390/s390.ad ! src/hotspot/cpu/s390/sharedRuntime_s390.cpp ! src/hotspot/cpu/s390/templateInterpreterGenerator_s390.cpp ! src/hotspot/cpu/s390/templateTable_s390.cpp Changeset: f47c18852172 Author: weijun Date: 2017-12-14 20:19 +0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f47c18852172 8192988: keytool should support -storepasswd for pkcs12 keystores Reviewed-by: mullan ! src/java.base/share/classes/sun/security/tools/keytool/Main.java + test/jdk/sun/security/tools/keytool/JKStoPKCS12.java + test/jdk/sun/security/tools/keytool/PKCS12Passwd.java - test/jdk/sun/security/tools/keytool/p12importks.sh Changeset: fdefa410d655 Author: attila Date: 2017-12-14 13:42 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/fdefa410d655 8193296: Parser should not eagerly transform delete expressions Reviewed-by: hannesw, sundar ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/AssignSymbols.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/Lower.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Parser.java + test/nashorn/src/jdk/nashorn/api/tree/test/JDK_8193296_Test.java Changeset: f1e1a4fc1cc7 Author: alanb Date: 2017-12-14 12:36 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f1e1a4fc1cc7 8193503: javah launcher was not removed by JDK-8191054 Reviewed-by: erikj, darcy ! make/launcher/Launcher-jdk.compiler.gmk ! test/jdk/tools/launcher/ToolsOpts.java Changeset: 267be02c1137 Author: alanb Date: 2017-12-14 12:51 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/267be02c1137 Merge Changeset: 0ee20aad71c4 Author: redestad Date: 2017-12-14 16:05 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0ee20aad71c4 8193507: [REDO] Startup regression due to JDK-8185582 Reviewed-by: alanb, rriggs Contributed-by: xueming.shen at oracle.com, claes.redestad at oracle.com ! src/java.base/share/classes/java/util/zip/Deflater.java ! src/java.base/share/classes/java/util/zip/Inflater.java - src/java.base/share/classes/java/util/zip/ZStreamRef.java ! src/java.base/share/classes/java/util/zip/ZipFile.java Changeset: a3c7d963c952 Author: erikj Date: 2017-12-14 18:20 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a3c7d963c952 8193208: Add additional licensing file for the JDK Reviewed-by: asaha, tbell, ihse + ADDITIONAL_LICENSE_INFO ! make/copy/Copy-java.base.gmk Changeset: 94be43260982 Author: lana Date: 2017-12-14 20:25 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/94be43260982 Added tag jdk-11+0 for changeset 0ee20aad71c4 ! .hgtags Changeset: 959f2f7cbaa6 Author: jjg Date: 2017-12-14 13:16 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/959f2f7cbaa6 8193525: Intermittent failures of TestModulePackages.java Reviewed-by: darcy ! test/langtools/jdk/javadoc/doclet/testModules/TestModulePackages.java Changeset: 626d11295f31 Author: lana Date: 2017-12-15 06:18 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/626d11295f31 Added tag jdk-10+36 for changeset 959f2f7cbaa6 ! .hgtags Changeset: 0c0b618a20b1 Author: jwilhelm Date: 2017-12-15 16:54 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0c0b618a20b1 Merge - src/java.base/share/classes/java/util/zip/ZStreamRef.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Gen.java - src/jdk.compiler/share/classes/com/sun/tools/javah/InternalError.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JNI.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JavahFileManager.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JavahTask.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JavahTool.java - src/jdk.compiler/share/classes/com/sun/tools/javah/LLNI.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Main.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Mangle.java - src/jdk.compiler/share/classes/com/sun/tools/javah/NativeHeaderTool.java - src/jdk.compiler/share/classes/com/sun/tools/javah/TypeSignature.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Util.java - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n.properties - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n_ja.properties - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n_zh_CN.properties - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/version.properties-template - test/jdk/sun/security/tools/keytool/p12importks.sh - test/langtools/tools/javac/T8152360/DeprecateJavahTest.java - test/langtools/tools/javac/nativeHeaders/javahComparison/CompareTest.java - test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass1.java - test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass4.java - test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass5.java - test/langtools/tools/javah/4942232/ParamClassTest.java - test/langtools/tools/javah/4942232/Test.java - test/langtools/tools/javah/6257087/T6257087.java - test/langtools/tools/javah/6572945/T6572945.java - test/langtools/tools/javah/6572945/TestClass1.java - test/langtools/tools/javah/6572945/TestClass2.java - test/langtools/tools/javah/6572945/TestClass3.java - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1.h - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1_Inner1.h - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1_Inner2.h - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass2.h - test/langtools/tools/javah/6572945/gold/jni.file.1 - test/langtools/tools/javah/6572945/gold/jni.file.2 - test/langtools/tools/javah/6572945/gold/jni.file.3 - test/langtools/tools/javah/ModuleClass.java - test/langtools/tools/javah/ReadOldClass.sh - test/langtools/tools/javah/T4942232/MissingParamClassTest.java - test/langtools/tools/javah/T5070898.java - test/langtools/tools/javah/T6893943.java - test/langtools/tools/javah/T6994608.java - test/langtools/tools/javah/T7126832/T7126832.java - test/langtools/tools/javah/T7126832/java.java - test/langtools/tools/javah/T7185778.java - test/langtools/tools/javah/TestHelpOpts.java - test/langtools/tools/javah/VersionTest.java - test/langtools/tools/javah/constMacroTest/ConstMacroTest.java - test/langtools/tools/lib/toolbox/JavahTask.java Changeset: f82e79958beb Author: hseigel Date: 2017-12-15 15:13 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f82e79958beb 8167372: Add code to check for getting oops while thread is in native Summary: Add asserts that detect when a thread is getting oops while in native Reviewed-by: coleenp, shade, jiangli, gtriantafill ! src/hotspot/share/runtime/jniHandles.cpp ! src/hotspot/share/runtime/jniHandles.hpp Changeset: 08b8cc40cb61 Author: goetz Date: 2017-12-14 12:57 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/08b8cc40cb61 8193509: Test dynamic path to retrieve active processor count. Reviewed-by: dholmes, mdoerr + test/hotspot/jtreg/runtime/os/TestUseCpuAllocPath.java Changeset: 7969cc1b94ee Author: rehn Date: 2017-12-18 12:11 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7969cc1b94ee 8193514: UseMembar should not be obsoleted yet Reviewed-by: dcubed, acorn, mdoerr ! src/hotspot/share/runtime/arguments.cpp Changeset: 7cc7de9bf4a4 Author: coleenp Date: 2017-12-19 06:29 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7cc7de9bf4a4 8186903: Remove j-types from Atomic Summary: Make jlong into int64_t, atomic_FN_long into atomic_FN_int64, make jbyte to u_char. Reviewed-by: dholmes, dcubed ! src/hotspot/cpu/x86/stubGenerator_x86_32.cpp ! src/hotspot/cpu/x86/stubGenerator_x86_64.cpp ! src/hotspot/cpu/zero/stubGenerator_zero.cpp ! src/hotspot/os_cpu/bsd_x86/atomic_bsd_x86.hpp ! src/hotspot/os_cpu/bsd_x86/bsd_x86_32.s ! src/hotspot/os_cpu/bsd_zero/atomic_bsd_zero.hpp ! src/hotspot/os_cpu/linux_arm/atomic_linux_arm.hpp ! src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp ! src/hotspot/os_cpu/linux_arm/os_linux_arm.hpp ! src/hotspot/os_cpu/linux_sparc/os_linux_sparc.hpp ! src/hotspot/os_cpu/linux_x86/atomic_linux_x86.hpp ! src/hotspot/os_cpu/linux_zero/atomic_linux_zero.hpp ! src/hotspot/os_cpu/solaris_sparc/os_solaris_sparc.hpp ! src/hotspot/os_cpu/solaris_x86/atomic_solaris_x86.hpp ! src/hotspot/os_cpu/solaris_x86/os_solaris_x86.cpp ! src/hotspot/os_cpu/solaris_x86/os_solaris_x86.hpp ! src/hotspot/os_cpu/windows_x86/atomic_windows_x86.hpp ! src/hotspot/os_cpu/windows_x86/os_windows_x86.cpp ! src/hotspot/os_cpu/windows_x86/os_windows_x86.hpp ! src/hotspot/share/runtime/atomic.hpp ! src/hotspot/share/runtime/stubRoutines.cpp ! src/hotspot/share/runtime/stubRoutines.hpp Changeset: 7312ae4465d6 Author: iklam Date: 2017-12-04 08:59 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7312ae4465d6 8193672: [test] Enhance vm.cds property to check for all conditions required to run CDS tests Reviewed-by: dholmes, dsamersoff, simonis ! src/hotspot/share/prims/whitebox.cpp ! test/hotspot/jtreg/runtime/SharedArchiveFile/ArchiveDoesNotExist.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/BootAppendTests.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentCompactStrings.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/CdsSameObjectAlignment.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/DefaultUseWithClient.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/DumpSharedDictionary.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/SASymbolTableTest.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/SharedArchiveFile.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/SharedBaseAddress.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStrings.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsDedup.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsRunAuto.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/SharedSymbolTableBucketSize.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/SpaceUtilizationCheck.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/TestInterpreterMethodEntries.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformInterfaceAndImplementor.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperAndSubClasses.java ! test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperSubTwoPckgs.java ! test/hotspot/jtreg/runtime/appcds/AppendClasspath.java ! test/hotspot/jtreg/runtime/appcds/BootClassPathMismatch.java ! test/hotspot/jtreg/runtime/appcds/CaseSensitiveClassPath.java ! test/hotspot/jtreg/runtime/appcds/ClassLoaderTest.java ! test/hotspot/jtreg/runtime/appcds/ClassPathAttr.java ! test/hotspot/jtreg/runtime/appcds/CommandLineFlagCombo.java ! test/hotspot/jtreg/runtime/appcds/CommandLineFlagComboNegative.java ! test/hotspot/jtreg/runtime/appcds/DirClasspathTest.java ! test/hotspot/jtreg/runtime/appcds/DumpClassList.java ! test/hotspot/jtreg/runtime/appcds/ExtraSymbols.java ! test/hotspot/jtreg/runtime/appcds/FieldAnnotationsTest.java ! test/hotspot/jtreg/runtime/appcds/FreeUnusedMetadata.java ! test/hotspot/jtreg/runtime/appcds/HelloExtTest.java ! test/hotspot/jtreg/runtime/appcds/HelloTest.java ! test/hotspot/jtreg/runtime/appcds/IgnoreEmptyClassPaths.java ! test/hotspot/jtreg/runtime/appcds/JvmtiAddPath.java ! test/hotspot/jtreg/runtime/appcds/MismatchedUseAppCDS.java ! test/hotspot/jtreg/runtime/appcds/MissingSuperTest.java ! test/hotspot/jtreg/runtime/appcds/MultiProcessSharing.java ! test/hotspot/jtreg/runtime/appcds/MultiReleaseJars.java ! test/hotspot/jtreg/runtime/appcds/OldClassTest.java ! test/hotspot/jtreg/runtime/appcds/PackageSealing.java ! test/hotspot/jtreg/runtime/appcds/ParallelLoad2.java ! test/hotspot/jtreg/runtime/appcds/ParallelLoadTest.java ! test/hotspot/jtreg/runtime/appcds/PrintSharedArchiveAndExit.java ! test/hotspot/jtreg/runtime/appcds/ProhibitedPackage.java ! test/hotspot/jtreg/runtime/appcds/ProtectionDomain.java ! test/hotspot/jtreg/runtime/appcds/RewriteBytecodesTest.java ! test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java ! test/hotspot/jtreg/runtime/appcds/SharedArchiveFile.java ! test/hotspot/jtreg/runtime/appcds/SharedBaseAddress.java ! test/hotspot/jtreg/runtime/appcds/SharedPackages.java ! test/hotspot/jtreg/runtime/appcds/SignedJar.java ! test/hotspot/jtreg/runtime/appcds/SpecifySysLoaderProp.java ! test/hotspot/jtreg/runtime/appcds/TraceLongClasspath.java ! test/hotspot/jtreg/runtime/appcds/UseAppCDS.java ! test/hotspot/jtreg/runtime/appcds/VerifierTest_0.java ! test/hotspot/jtreg/runtime/appcds/VerifierTest_1A.java ! test/hotspot/jtreg/runtime/appcds/VerifierTest_1B.java ! test/hotspot/jtreg/runtime/appcds/VerifierTest_2.java ! test/hotspot/jtreg/runtime/appcds/WideIloadTest.java ! test/hotspot/jtreg/runtime/appcds/WrongClasspath.java ! test/hotspot/jtreg/runtime/appcds/XShareAutoWithChangedJar.java ! test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedResolvedReferences.java ! test/hotspot/jtreg/runtime/appcds/cacheObject/DumpTimeVerifyFailure.java ! test/hotspot/jtreg/runtime/appcds/cacheObject/GCStressTest.java ! test/hotspot/jtreg/runtime/appcds/cacheObject/OpenArchiveRegion.java ! test/hotspot/jtreg/runtime/appcds/cacheObject/RangeNotWithinHeap.java ! test/hotspot/jtreg/runtime/appcds/cacheObject/RedefineClassTest.java ! test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatA.java ! test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatB.java ! test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatC.java ! test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatD.java ! test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatE.java ! test/hotspot/jtreg/runtime/appcds/customLoader/HelloCustom.java ! test/hotspot/jtreg/runtime/appcds/customLoader/LoaderSegregationTest.java ! test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestMultiFP.java ! test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestSingleFP.java ! test/hotspot/jtreg/runtime/appcds/customLoader/ProhibitedPackageNamesTest.java ! test/hotspot/jtreg/runtime/appcds/customLoader/ProtectionDomain.java ! test/hotspot/jtreg/runtime/appcds/customLoader/SameNameInTwoLoadersTest.java ! test/hotspot/jtreg/runtime/appcds/customLoader/UnintendedLoadersTest.java ! test/hotspot/jtreg/runtime/appcds/customLoader/UnloadUnregisteredLoaderTest.java ! test/hotspot/jtreg/runtime/appcds/customLoader/UnsupportedPlatforms.java ! test/hotspot/jtreg/runtime/appcds/javaldr/ArrayTest.java ! test/hotspot/jtreg/runtime/appcds/javaldr/CheckAnonymousClass.java ! test/hotspot/jtreg/runtime/appcds/javaldr/GCDuringDump.java ! test/hotspot/jtreg/runtime/appcds/javaldr/GCSharedStringsDuringDump.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/CheckUnsupportedDumpingOptions.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/JigsawOptionsCombo.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/AppClassInCP.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/CustomPackage.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/MismatchedPatchModule.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchDir.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchJavaBase.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/Simple.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/SubClassOfPatchedClass.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/TwoJars.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/BootAppendTests.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/ClassPathTests.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/DummyClassesInBootClassPath.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/limitmods/LimitModsTests.java ! test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/OverrideTests.java ! test/hotspot/jtreg/runtime/appcds/jvmti/ClassFileLoadHookTest.java ! test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationTest.java ! test/hotspot/jtreg/runtime/appcds/jvmti/parallelLoad/ParallelLoadAndTransformTest.java ! test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformInterfaceImplementorAppCDS.java ! test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformSuperSubAppCDS.java ! test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineBasicTest.java ! test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineRunningMethods_Shared.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/ExerciseGC.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/FlagCombo.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/InternSharedString.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/LargePages.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/LockSharedStrings.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasic.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasicPlus.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsWbTest.java ! test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java Changeset: 1d24b76cf639 Author: iklam Date: 2017-12-19 11:29 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/1d24b76cf639 8191374: Improve error message when CDS is not supported on exploded build Reviewed-by: jiangli, hseigel ! src/hotspot/share/classfile/classLoader.cpp Changeset: d55bee3727de Author: dholmes Date: 2017-12-19 17:31 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d55bee3727de 8193840: Add compiler/c2/Test8007294.java to the problem list Reviewed-by: coleenp ! test/hotspot/jtreg/ProblemList.txt Changeset: de2e4ff493bf Author: coleenp Date: 2017-12-20 10:05 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/de2e4ff493bf 8152957: Improve specificity of safepoint logging to print safepoint type Summary: upgrade safepoint begin logs to Info logging, which has the reason. Reviewed-by: dholmes, hseigel, zgu ! src/hotspot/share/runtime/safepoint.cpp Changeset: 9a5bcee1a706 Author: iklam Date: 2017-12-20 11:30 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/9a5bcee1a706 8193897: JDK-8191374 caused windows_i586 build to fail Reviewed-by: hseigel ! src/hotspot/share/classfile/classLoader.cpp Changeset: 6e69aea2aee7 Author: gadams Date: 2017-12-20 13:41 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/6e69aea2aee7 8180709: java -javaagent:agent.jar with run-time that does not contain java.instrument prints confusing error Reviewed-by: cjplummer, sspitsyn ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/arguments.hpp ! src/hotspot/share/runtime/thread.cpp Changeset: 003d6365ec6a Author: dholmes Date: 2017-12-15 23:43 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/003d6365ec6a 8193364: verify_special_jvm_flags should not cause an assertion failure when version is bumped Reviewed-by: dcubed, coleenp ! src/hotspot/share/runtime/arguments.cpp Changeset: d4329843abf4 Author: darcy Date: 2017-12-18 18:51 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d4329843abf4 8173382: Add -source 11 and -target 11 to javac 8193291: Add SourceVersion.RELEASE_11 Reviewed-by: jjg, erikj, psandoz ! make/common/SetupJavaCompilers.gmk ! src/java.compiler/share/classes/javax/lang/model/SourceVersion.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Profile.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java ! src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/LoadProc.java ! src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/Main.java ! test/langtools/ProblemList.txt ! test/langtools/tools/javac/api/T6265137.java ! test/langtools/tools/javac/api/T6395981.java ! test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java ! test/langtools/tools/javac/processing/model/TestSourceVersion.java ! test/langtools/tools/javac/profiles/ProfileOptionTest.java ! test/langtools/tools/javac/versions/Versions.java Changeset: 89f6aa26fd6c Author: cushon Date: 2017-12-19 16:24 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/89f6aa26fd6c 8007720: Names are not loaded correctly for method parameters if the parameters have annotations 8177486: Incorrect handling of mandated parameter names in MethodParameters attributes Reviewed-by: jlahoda, vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java + test/langtools/tools/javac/MethodParameters/ClassReaderTest/ClassReaderTest.java + test/langtools/tools/javac/MethodParameters/ClassReaderTest/ClassReaderTest.out + test/langtools/tools/javac/MethodParameters/ClassReaderTest/MethodParameterProcessor.java ! test/langtools/tools/javac/lib/DPrinter.java Changeset: 4966e9237b88 Author: dmarkov Date: 2017-12-13 14:41 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4966e9237b88 8154405: AccessControlException by URLPermission check Reviewed-by: serb, ssadetsky, mullan ! src/java.desktop/share/classes/java/awt/Toolkit.java Changeset: 1f38b6c89f8a Author: prr Date: 2017-12-13 10:56 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/1f38b6c89f8a Merge - src/java.base/share/classes/java/lang/StringDecoderUTF8.java - test/java/util/Calendar/Bug8185841.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/TestMemberInheritence.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/A.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/B.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/C.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/X.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/diamond/Z.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/inheritDist/A.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/inheritDist/B.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/inheritDist/C.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg/BaseClass.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg/BaseInterface.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg/SubClass.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg1/Implementer.java - test/langtools/jdk/javadoc/doclet/testMemberInheritence/pkg1/Interface.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestBadOverride.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestMultiInheritence.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverrideMethods.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenMethodDocCopy.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethods.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg1/BaseClass.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg1/SubClass.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg2/SubClass.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I0.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I1.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I2.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I3.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg3/I4.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg4/Foo.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg5/Classes.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg5/Interfaces.java - test/langtools/jdk/javadoc/doclet/testOverridenMethods/pkg5/TestEnum.java Changeset: 4f9683bf0923 Author: rfield Date: 2017-12-13 14:21 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4f9683bf0923 8188894: jdk/jshell/ToolShiftTabTest.java failed with IllegalStateException Reviewed-by: jlahoda ! test/langtools/jdk/jshell/ToolShiftTabTest.java ! test/langtools/jdk/jshell/UITesting.java Changeset: ef097d7d5b15 Author: prr Date: 2017-12-18 10:28 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ef097d7d5b15 Merge - src/java.base/share/classes/java/util/zip/ZStreamRef.java - src/java.base/share/native/include/jvm.h - src/java.base/unix/native/include/jvm_md.h - src/java.base/windows/native/include/jvm_md.h - src/java.management/share/native/include/jmm.h - src/jdk.compiler/share/classes/com/sun/tools/javah/Gen.java - src/jdk.compiler/share/classes/com/sun/tools/javah/InternalError.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JNI.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JavahFileManager.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JavahTask.java - src/jdk.compiler/share/classes/com/sun/tools/javah/JavahTool.java - src/jdk.compiler/share/classes/com/sun/tools/javah/LLNI.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Main.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Mangle.java - src/jdk.compiler/share/classes/com/sun/tools/javah/NativeHeaderTool.java - src/jdk.compiler/share/classes/com/sun/tools/javah/TypeSignature.java - src/jdk.compiler/share/classes/com/sun/tools/javah/Util.java - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n.properties - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n_ja.properties - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n_zh_CN.properties - src/jdk.compiler/share/classes/com/sun/tools/javah/resources/version.properties-template - src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/PackageListWriter.java - test/jdk/sun/security/tools/keytool/p12importks.sh - test/langtools/tools/javac/T8152360/DeprecateJavahTest.java - test/langtools/tools/javac/nativeHeaders/javahComparison/CompareTest.java - test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass1.java - test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass4.java - test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass5.java - test/langtools/tools/javah/4942232/ParamClassTest.java - test/langtools/tools/javah/4942232/Test.java - test/langtools/tools/javah/6257087/T6257087.java - test/langtools/tools/javah/6572945/T6572945.java - test/langtools/tools/javah/6572945/TestClass1.java - test/langtools/tools/javah/6572945/TestClass2.java - test/langtools/tools/javah/6572945/TestClass3.java - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1.h - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1_Inner1.h - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1_Inner2.h - test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass2.h - test/langtools/tools/javah/6572945/gold/jni.file.1 - test/langtools/tools/javah/6572945/gold/jni.file.2 - test/langtools/tools/javah/6572945/gold/jni.file.3 - test/langtools/tools/javah/ModuleClass.java - test/langtools/tools/javah/ReadOldClass.sh - test/langtools/tools/javah/T4942232/MissingParamClassTest.java - test/langtools/tools/javah/T5070898.java - test/langtools/tools/javah/T6893943.java - test/langtools/tools/javah/T6994608.java - test/langtools/tools/javah/T7126832/T7126832.java - test/langtools/tools/javah/T7126832/java.java - test/langtools/tools/javah/T7185778.java - test/langtools/tools/javah/TestHelpOpts.java - test/langtools/tools/javah/VersionTest.java - test/langtools/tools/javah/constMacroTest/ConstMacroTest.java - test/langtools/tools/lib/toolbox/JavahTask.java Changeset: 3d4e8f5a2a69 Author: rfield Date: 2017-12-19 11:37 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/3d4e8f5a2a69 8179858: jshell tool: sync nomenclature from reference to online /help Reviewed-by: dlsmith, jjg ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n.properties ! test/langtools/jdk/jshell/CommandCompletionTest.java ! test/langtools/jdk/jshell/EditorTestBase.java ! test/langtools/jdk/jshell/ToolBasicTest.java ! test/langtools/jdk/jshell/ToolSimpleTest.java Changeset: 59adf939036a Author: prr Date: 2017-12-19 13:02 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/59adf939036a Merge Changeset: 80176afc8667 Author: prr Date: 2017-12-19 13:58 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/80176afc8667 Merge Changeset: 9b700a5c4381 Author: mcimadamore Date: 2017-12-20 15:33 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/9b700a5c4381 8057650: uniform error diagnostics for inconsistent inherited method signatures Summary: consolidate diagnostics for bad overrides Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/BadCovar.out ! test/langtools/tools/javac/InconsistentInheritedSignature.out ! test/langtools/tools/javac/OverrideChecks/InconsistentReturn.out ! test/langtools/tools/javac/defaultMethods/Neg01.out ! test/langtools/tools/javac/defaultMethods/Neg02.out ! test/langtools/tools/javac/defaultMethods/Neg14.out ! test/langtools/tools/javac/diags/examples/IncompatibleDescsInFunctionalIntf.java ! test/langtools/tools/javac/diags/examples/TypesIncompatible.java ! test/langtools/tools/javac/diags/examples/TypesIncompatibleAbstractDefault.java ! test/langtools/tools/javac/diags/examples/TypesIncompatibleUnrelatedDefaults.java ! test/langtools/tools/javac/generics/6294779/T6294779c.out ! test/langtools/tools/javac/generics/abstract/T4717181c.out ! test/langtools/tools/javac/generics/rawOverride/7157798/Test3.out ! test/langtools/tools/javac/generics/typevars/4856983/T4856983a.out ! test/langtools/tools/javac/generics/typevars/4856983/T4856983b.out ! test/langtools/tools/javac/generics/typevars/6199146/T6199146.out ! test/langtools/tools/javac/generics/wildcards/7034495/T7034495.out ! test/langtools/tools/javac/lambda/BadConv04.out ! test/langtools/tools/javac/lambda/bridge/template_tests/BridgeMethodsTemplateTest.java ! test/langtools/tools/javac/lambda/funcInterfaces/NonSAM2.out ! test/langtools/tools/javac/miranda/4711056/T1.out Changeset: 315c690bb90b Author: bpb Date: 2017-12-20 08:05 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/315c690bb90b 8193842: Replace Files.copy(InputStream,OutputStream) with InputStream.transferTo(OutputStream) Reviewed-by: clanger, alanb ! src/java.base/share/classes/java/nio/file/Files.java Changeset: c96d4c720995 Author: attila Date: 2017-12-20 17:36 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c96d4c720995 8193371: Use Dynalink REMOVE operation in Nashorn Reviewed-by: hannesw, sundar ! src/jdk.dynalink/share/classes/jdk/dynalink/beans/AbstractJavaLinker.java ! src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/AssignSymbols.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/LocalVariableTypesCalculator.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/MethodEmitter.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/RuntimeNode.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptObject.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptRuntime.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Undefined.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/NashornCallSiteDescriptor.java + test/nashorn/script/basic/JDK-8193371.js + test/nashorn/script/basic/JDK-8193371.js.EXPECTED Changeset: 4944950606ef Author: psandoz Date: 2017-12-20 09:14 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4944950606ef 8191913: Bump classfile version number to 55 Reviewed-by: dholmes, darcy Contributed-by: paul.sandoz at oracle.com, erik.joelsson at oracle.com ! make/Main.gmk ! make/autoconf/buildjdk-spec.gmk.in ! make/autoconf/flags.m4 ! make/autoconf/generated-configure.sh ! make/autoconf/jdk-version.m4 ! make/autoconf/platform.m4 ! make/autoconf/spec.gmk.in ! make/autoconf/version-numbers ! make/copy/Copy-java.base.gmk ! make/copy/CopyCommon.gmk ! make/gensrc/GensrcX11Wrappers.gmk ! make/hotspot/lib/CompileJvm.gmk ! src/hotspot/share/classfile/classFileParser.cpp ! src/java.base/share/classes/com/sun/java/util/jar/pack/Constants.java ! src/java.base/share/classes/jdk/internal/module/ModuleInfo.java ! src/java.base/share/classes/jdk/internal/org/objectweb/asm/ClassReader.java ! src/java.base/share/classes/jdk/internal/org/objectweb/asm/Opcodes.java - src/java.base/share/native/include/classfile_constants.h + src/java.base/share/native/include/classfile_constants.h.template ! src/java.base/share/native/libjava/System.c ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/classfile/Classfile.java ! src/jdk.rmic/share/classes/sun/tools/java/RuntimeConstants.java + test/hotspot/jtreg/runtime/classFileParserBug/Class55.jasm ! test/jdk/java/lang/module/ClassFileVersionsTest.java ! test/langtools/tools/javac/6330997/T6330997.java ! test/langtools/tools/javac/classfiles/ClassVersionChecker.java ! test/langtools/tools/javac/versions/Versions.java Changeset: 29e165bdf669 Author: psandoz Date: 2017-12-20 09:14 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/29e165bdf669 8193085: Vectorize the nio Buffer equals and compareTo implementations Reviewed-by: alanb ! src/hotspot/share/classfile/vmSymbols.hpp ! src/java.base/share/classes/java/nio/Bits.java ! src/java.base/share/classes/java/nio/Buffer.java + src/java.base/share/classes/java/nio/BufferMismatch.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/StringCharBuffer.java ! src/java.base/share/classes/java/nio/X-Buffer.java.template ! src/java.base/share/classes/java/util/Arrays.java - src/java.base/share/classes/java/util/ArraysSupport.java + src/java.base/share/classes/jdk/internal/util/ArraysSupport.java + test/jdk/java/nio/Buffer/EqualsCompareTest.java Changeset: 18fb03624696 Author: jwilhelm Date: 2017-12-21 00:07 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/18fb03624696 Merge ! src/hotspot/share/runtime/arguments.cpp ! src/java.base/share/native/libjava/System.c - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CooperativePhaseTest.java ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/classfile/Classfile.java Changeset: ca9489245872 Author: jcbeyler Date: 2017-12-20 11:00 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ca9489245872 8191987: JDK-8190862 work for arch ppc64 Summary: Cleanup interpreter TLAB code Reviewed-by: mdoerr, goetz ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.hpp ! src/hotspot/cpu/ppc/templateTable_ppc_64.cpp Changeset: b7af6f568d00 Author: chegar Date: 2017-12-22 15:55 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b7af6f568d00 8179424: Remove terminally deprecated sun.reflect.Reflection.getCallerClass Reviewed-by: alanb, dfuchs, dholmes, lancea, mchung, rriggs ! make/mapfiles/libjava/mapfile-vers ! make/mapfiles/libjava/reorder-sparc ! make/mapfiles/libjava/reorder-sparcv9 ! make/mapfiles/libjava/reorder-x86 ! src/hotspot/share/include/jvm.h ! src/hotspot/share/prims/jvm.cpp ! src/java.base/share/classes/jdk/internal/reflect/Reflection.java ! src/java.base/share/native/libjava/Reflection.c - src/jdk.unsupported/share/classes/sun/reflect/Reflection.java - test/jdk/jdk/internal/reflect/Reflection/GetCallerClassWithDepth.java - test/jdk/sun/reflect/Reflection/GetCallerClassWithDepth.java ! test/langtools/tools/jdeps/jdkinternals/RemovedJDKInternals.java + test/langtools/tools/jdeps/jdkinternals/patches/jdk.unsupported/sun/reflect/Reflection.java ! test/langtools/tools/jdeps/jdkinternals/src/p/Main.java Changeset: f3907e64eea2 Author: rraghavan Date: 2017-12-22 09:51 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f3907e64eea2 8193699: aarch64 fails to build after 8167372 Summary: added ThreadInVMfromUnknown support Reviewed-by: smonteith, vlivanov ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Changeset: 7b5c930b878c Author: glaubitz Date: 2017-11-29 13:58 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7b5c930b878c 8192123: Zero should use compiler built-ins for atomics on linux-arm Reviewed-by: aph ! src/hotspot/os_cpu/linux_zero/atomic_linux_zero.hpp Changeset: 614068b0ddd7 Author: dnsimon Date: 2017-12-22 18:34 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/614068b0ddd7 8193930: [JVMCI] calling ResolvedTypeType.getClassInitializer on an array type crashes Reviewed-by: never, dlong ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetImplementorTest.java ! test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaType.java Changeset: b97818fba2b0 Author: jcbeyler Date: 2017-12-18 15:38 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b97818fba2b0 8191027: JDK-8190862 work for arch x86/x64 Summary: Fixed Interpreter never refills TLAB Reviewed-by: tschatzl, mdoerr, rehn ! src/hotspot/cpu/x86/templateTable_x86.cpp Changeset: 4aed7c563f7e Author: jcbeyler Date: 2017-12-19 20:10 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4aed7c563f7e 8191986: JDK-8190862 work for arch aarch64 Summary: Fixed Interpreter never refills TLAB Reviewed-by: dsamersoff, adinn, tschatzl, rehn ! src/hotspot/cpu/aarch64/templateTable_aarch64.cpp Changeset: afb2284bb487 Author: jcbeyler Date: 2017-12-19 19:55 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/afb2284bb487 8191989: JDK-8190862 work for arch sparc Summary: Fixed Interpreter never refills TLAB Reviewed-by: tschatzl, rehn ! src/hotspot/cpu/sparc/templateTable_sparc.cpp Changeset: 9ca19ebea22d Author: rkennke Date: 2017-12-05 10:43 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/9ca19ebea22d 8193193: AArch64: immByteMapBase operand generated for non-CardTable GCs Reviewed-by: aph ! src/hotspot/cpu/aarch64/aarch64.ad Changeset: 258a4dab74a7 Author: gadams Date: 2018-01-02 07:50 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/258a4dab74a7 8188856: Incorrect file path in an exception message when .java_pid is not accessible on Unix Reviewed-by: cjplummer, sspitsyn ! src/jdk.attach/aix/classes/sun/tools/attach/VirtualMachineImpl.java ! src/jdk.attach/linux/classes/sun/tools/attach/VirtualMachineImpl.java ! src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java ! src/jdk.attach/solaris/classes/sun/tools/attach/VirtualMachineImpl.java Changeset: bda5211e7876 Author: goetz Date: 2017-12-21 09:05 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/bda5211e7876 8193927: Optimize scanning code for oops. Reviewed-by: simonis, mdoerr, aph ! src/hotspot/cpu/aarch64/relocInfo_aarch64.hpp ! src/hotspot/cpu/arm/relocInfo_arm.hpp ! src/hotspot/cpu/ppc/relocInfo_ppc.hpp ! src/hotspot/cpu/s390/relocInfo_s390.hpp ! src/hotspot/cpu/sparc/relocInfo_sparc.hpp ! src/hotspot/cpu/x86/relocInfo_x86.hpp ! src/hotspot/cpu/zero/relocInfo_zero.hpp ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/code/relocInfo.hpp Changeset: abf1d797e380 Author: aph Date: 2018-01-03 17:29 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/abf1d797e380 8193260: AArch64: JVMCI: Implement trampoline calls Reviewed-by: adinn ! src/hotspot/cpu/aarch64/assembler_aarch64.hpp ! src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp ! src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp ! src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp ! src/hotspot/cpu/sparc/compiledIC_sparc.cpp ! src/hotspot/cpu/sparc/jvmciCodeInstaller_sparc.cpp ! src/hotspot/cpu/x86/compiledIC_x86.cpp ! src/hotspot/cpu/x86/jvmciCodeInstaller_x86.cpp ! src/hotspot/share/code/compiledIC.hpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.cpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.hpp Changeset: 51825789dd89 Author: kbarrett Date: 2018-01-04 18:18 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/51825789dd89 8194406: Use Atomic::replace_if_null Reviewed-by: coleenp, dholmes ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/gc/parallel/gcTaskThread.cpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/prims/jvmtiRawMonitor.cpp ! src/hotspot/share/runtime/mutex.cpp ! src/hotspot/share/runtime/objectMonitor.cpp ! src/hotspot/share/runtime/synchronizer.cpp ! src/hotspot/share/services/mallocSiteTable.cpp ! src/hotspot/share/utilities/bitMap.cpp Changeset: a5548cf24286 Author: dholmes Date: 2018-01-04 22:54 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a5548cf24286 8194279: support zhaoxin x86 cpu vendor ids CentaurHauls and Shanghai Reviewed-by: dholmes, kvn Contributed-by: Vic Wang ! src/hotspot/cpu/x86/assembler_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.hpp Changeset: 4d7a4fad8190 Author: ccheung Date: 2018-01-04 22:47 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4d7a4fad8190 8192927: os::dir_is_empty is incorrect on Windows Summary: Check file names in a directory. It is empty if only the "." and ".." files exist. Use unicode version of windows APIs to handle long path. Reviewed-by: iklam, sspitsyn ! src/hotspot/os/windows/os_windows.cpp ! test/hotspot/jtreg/runtime/appcds/DirClasspathTest.java Changeset: 63fb11c1550d Author: dholmes Date: 2017-12-20 22:36 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/63fb11c1550d 8193838: Update jtreg requiredVersion to 4.2 b11 for JDK 11 and 12 support Reviewed-by: alanb, sspitsyn ! make/conf/jib-profiles.js ! test/hotspot/jtreg/TEST.ROOT ! test/jaxp/TEST.ROOT ! test/jdk/TEST.ROOT ! test/langtools/TEST.ROOT ! test/nashorn/TEST.ROOT Changeset: 38493aecb3d1 Author: xuelei Date: 2017-12-21 05:51 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/38493aecb3d1 8193683: Increase the number of clones in the CloneableDigest Reviewed-by: coffeys, wetmore ! src/java.base/share/classes/sun/security/ssl/HandshakeHash.java Changeset: 91bd550551e0 Author: cushon Date: 2017-12-21 15:58 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/91bd550551e0 8193216: Filer should warn if processors redefine symbols from the classpath or sourcepath Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacFiler.java + test/langtools/tools/javac/processing/warnings/TypeAlreadyExists/A.java + test/langtools/tools/javac/processing/warnings/TypeAlreadyExists/B.java + test/langtools/tools/javac/processing/warnings/TypeAlreadyExists/TestProcTypeAlreadyExistsWarning.java + test/langtools/tools/javac/processing/warnings/TypeAlreadyExists/warn.out Changeset: 2731c0ee46a9 Author: mchung Date: 2017-12-21 15:04 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2731c0ee46a9 8193780: (ref) Remove the undocumented "jdk.lang.ref.disableClearBeforeEnqueue" system property Reviewed-by: alanb ! src/java.base/share/classes/java/lang/ref/Reference.java ! test/jdk/java/lang/ref/ReferenceEnqueue.java Changeset: e5a3b905622e Author: mchung Date: 2017-12-21 15:18 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e5a3b905622e 8193767: Improve javadoc in ResourceBundle working with modules Reviewed-by: alanb, naoto ! src/java.base/share/classes/java/util/ResourceBundle.java ! src/java.base/share/classes/java/util/spi/AbstractResourceBundleProvider.java ! src/java.base/share/classes/java/util/spi/ResourceBundleProvider.java Changeset: 50b86b3974ae Author: thartmann Date: 2017-12-15 16:51 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/50b86b3974ae 8193608: Quarantine test/hotspot/jtreg/compiler/codegen/Test6896617.java until JDK-8193479 is fixed Summary: Added test to ProblemList.txt Reviewed-by: vlivanov ! test/hotspot/jtreg/ProblemList.txt Changeset: b6a8e9658abd Author: rehn Date: 2017-12-18 12:11 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b6a8e9658abd 8193514: UseMembar should not be obsoleted yet Reviewed-by: dcubed, acorn, mdoerr ! src/hotspot/share/runtime/arguments.cpp Changeset: a6531fb9392e Author: dholmes Date: 2017-12-19 17:31 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a6531fb9392e 8193840: Add compiler/c2/Test8007294.java to the problem list Reviewed-by: coleenp ! test/hotspot/jtreg/ProblemList.txt Changeset: 0f53d49bb74b Author: dholmes Date: 2017-12-22 15:23 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0f53d49bb74b 8194071: [Testbug] Update VMDeprecatedOptions test for obsolete/expired options Reviewed-by: hseigel ! test/hotspot/jtreg/runtime/CommandLine/VMDeprecatedOptions.java Changeset: 2c1af559e922 Author: bpb Date: 2017-12-22 14:00 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2c1af559e922 8193832: Performance of InputStream.readAllBytes() could be improved Summary: Read into a list of fixed-size buffers which are gathered at the end Reviewed-by: alanb, chegar, plevart, jrose, psandoz ! src/java.base/share/classes/java/io/InputStream.java ! test/jdk/java/io/InputStream/ReadAllBytes.java Changeset: 3a52333a5e57 Author: vromero Date: 2018-01-02 16:35 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/3a52333a5e57 8187487: crash with classes with same binary name Reviewed-by: jjg ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/NestedInnerClassNames.out + test/langtools/tools/javac/T8187487/CrashWithDuplicateClassNamesTest.java + test/langtools/tools/javac/T8187487/CrashWithDuplicateClassNamesTest.out + test/langtools/tools/javac/diags/examples/SameBinaryName.java Changeset: cb54a299aa91 Author: jjg Date: 2017-12-14 13:16 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/cb54a299aa91 8193525: Intermittent failures of TestModulePackages.java Reviewed-by: darcy ! test/langtools/jdk/javadoc/doclet/testModules/TestModulePackages.java Changeset: 8647aa05d094 Author: lana Date: 2017-12-15 16:38 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8647aa05d094 Added tag jdk-10+36 for changeset cb54a299aa91 ! .hgtags Changeset: cfde2a53d393 Author: roland Date: 2017-12-15 10:26 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/cfde2a53d393 8193518: C2: Vector registers sometimes corrupted at safepoint Reviewed-by: neliasso, thartmann, kvn ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/superword.cpp Changeset: 291020144f22 Author: vdeshpande Date: 2017-12-15 10:44 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/291020144f22 8190934: Regressions on Haswell Xeon due to JDK-8178811 Reviewed-by: neliasso, kvn ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/library_call.cpp Changeset: a099e4d4c35b Author: dmarkov Date: 2017-12-15 21:49 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a099e4d4c35b 8154405: AccessControlException by URLPermission check Reviewed-by: serb, ssadetsky, mullan ! src/java.desktop/share/classes/java/awt/Toolkit.java Changeset: f9152f462cbc Author: alanb Date: 2017-12-19 10:03 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f9152f462cbc 8193758: Update copyright headers of files in src tree that are missing Classpath exception Reviewed-by: mchung, mr, jjg, iris, prr ! make/jdk/src/classes/build/tools/blacklistedcertsconverter/BlacklistedCertsConverter.java ! make/jdk/src/classes/build/tools/generatelsrequivmaps/EquivMapsGenerator.java ! src/java.base/share/classes/java/lang/PublicMethods.java ! src/java.base/share/classes/java/lang/StringConcatHelper.java ! src/java.base/share/classes/java/lang/invoke/StringConcatException.java ! src/java.base/share/classes/jdk/internal/loader/AbstractClassLoaderValue.java ! src/java.base/share/classes/jdk/internal/loader/ClassLoaderValue.java ! src/java.base/share/classes/sun/security/ssl/ExtendedMasterSecretExtension.java ! src/java.desktop/unix/native/common/awt/systemscale/systemScale.c ! src/java.desktop/unix/native/common/awt/systemscale/systemScale.h ! src/java.desktop/windows/native/common/awt/systemscale/systemScale.cpp ! src/java.desktop/windows/native/common/awt/systemscale/systemScale.h ! src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTaskPool.java ! src/jdk.jshell/share/classes/jdk/internal/jshell/debug/InternalDebugControl.java Changeset: 865d39b662a5 Author: mbaesken Date: 2017-12-15 14:08 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/865d39b662a5 8193515: AIX: new Harfbuzz 1.7.1 version fails to compile with xlC Reviewed-by: prr, simonis ! src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic-fallback.hh Changeset: 5471388067cf Author: sundar Date: 2017-12-19 21:35 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/5471388067cf 8193779: Fix copyright header in nashorn builtin scripts Reviewed-by: alanb, hannesw ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/mozilla_compat.js ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/parser.js ! test/nashorn/script/trusted/classfilter_mozilla_compat.js.EXPECTED Changeset: 41ae5c69b09c Author: michaelm Date: 2017-12-19 15:48 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/41ae5c69b09c 8192966: HttpClient should reuse TCP connection for h2c connections Reviewed-by: dfuchs ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Exchange.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/ExchangeImpl.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http2ClientImpl.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http2Connection.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/PlainHttpConnection.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/ResponseContent.java ! test/jdk/java/net/httpclient/http2/server/Http2TestServer.java Changeset: 4ffa14468cd1 Author: michaelm Date: 2017-12-19 16:12 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4ffa14468cd1 Merge Changeset: e8e8db4f8194 Author: mr Date: 2017-12-19 08:51 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e8e8db4f8194 8193764: Cannot set COMPANY_NAME when configuring a build Reviewed-by: erikj, martin, tbell ! make/autoconf/generated-configure.sh ! make/autoconf/jdk-version.m4 Changeset: 5382baab8371 Author: chegar Date: 2017-12-18 10:21 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/5382baab8371 8193698: Null handling in BodyPublisher, BodyHandler, and BodySubscriber convenience static factory methods Reviewed-by: dfuchs ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/BufferingSubscriber.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/HttpResponse.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/RequestPublishers.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/ResponseSubscribers.java - test/jdk/java/net/httpclient/RequestProcessorExceptions.java + test/jdk/java/net/httpclient/SubscriberPublisherAPIExceptions.java Changeset: 597f69e5f1e3 Author: hannesw Date: 2017-12-20 21:40 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/597f69e5f1e3 8193508: Expressions in split literals must never be optimistic Reviewed-by: jlaskey, sundar ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGeneratorLexicalContext.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/OptimisticTypesCalculator.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/Splitter.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/GetSplitState.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/LiteralNode.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/ObjectNode.java + test/nashorn/script/basic/JDK-8193508.js Changeset: 177e1783d886 Author: jwilhelm Date: 2017-12-20 20:55 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/177e1783d886 Merge ! src/hotspot/share/opto/library_call.cpp - src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CooperativePhaseTest.java Changeset: 5f1c30b80554 Author: coleenp Date: 2017-12-19 15:56 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/5f1c30b80554 8193622: JFR test TestUnloadingEventClass.java times out intermittently Summary: Previous change was leaving scratch classes on CLD::_klasses list which are reported to tracing Reviewed-by: gtriantafill, dcubed, mgronlun ! src/hotspot/share/classfile/classLoaderData.cpp Changeset: 26b47ea4c77d Author: jjg Date: 2017-12-20 13:28 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/26b47ea4c77d 8193512: Remove remnants of javah from jdk/jdk repo Reviewed-by: tbell, erikj, alanb, darcy ! make/Images.gmk ! make/RunTestsPrebuiltSpec.gmk ! make/autoconf/boot-jdk.m4 ! make/autoconf/bootcycle-spec.gmk.in ! make/autoconf/generated-configure.sh ! make/autoconf/spec.gmk.in ! make/common/JavaCompilation.gmk ! make/gensrc/Gensrc-jdk.compiler.gmk ! make/langtools/build.properties ! make/langtools/build.xml - make/langtools/intellij/runConfigurations/javah.xml ! make/langtools/netbeans/README ! make/langtools/test/HelloWorld.apt.gold.txt ! make/langtools/test/HelloWorld.java - make/langtools/test/bootstrap/javah.sh ! make/langtools/test/contents.gold.txt ! make/langtools/test/lib/classes.gold.txt - make/langtools/test/lib/javah.sh ! make/langtools/test/lib/src.gold.txt ! make/langtools/tools/anttasks/SelectToolTask.java ! make/nb_native/nbproject/configurations.xml ! make/scripts/compare_exceptions.sh.incl Changeset: fcb5b835bf32 Author: hannesw Date: 2017-12-21 10:26 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/fcb5b835bf32 8193491: JavaImporter fails to resolve method elements within functions, that contain too many statements Reviewed-by: hannesw, sundar, jlaskey Contributed-by: priya.lakshmi.muthuswamy at oracle.com ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeJavaImporter.java ! test/nashorn/script/basic/JDK-8011555.js.EXPECTED + test/nashorn/script/basic/JDK-8193491.js + test/nashorn/script/basic/JDK-8193491.js.EXPECTED ! test/nashorn/script/nosecurity/JDK-8165198.js ! test/nashorn/script/nosecurity/JDK-8165198.js.EXPECTED Changeset: 4f830b447edf Author: chegar Date: 2017-12-21 16:58 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4f830b447edf 8193365: Improve interoperability between HTTP Client's BodyPublisher/BodySubscriber and Flow.Subscriber/Publisher Reviewed-by: dfuchs ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/HttpRequest.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/HttpResponse.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/RequestPublishers.java ! src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/ResponseSubscribers.java + test/jdk/java/net/httpclient/FlowAdapterPublisherTest.java + test/jdk/java/net/httpclient/FlowAdapterSubscriberTest.java + test/jdk/java/net/httpclient/FlowAdaptersCompileOnly.java Changeset: 5ab69533994b Author: joehw Date: 2017-12-21 09:29 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/5ab69533994b 8193568: @LastModified tag in license header Reviewed-by: rriggs ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/ExceptionConst.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/Utility.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/ARRAYLENGTH.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/ATHROW.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/IDIV.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/IREM.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/LDIV.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/LREM.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/MONITORENTER.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/MONITOREXIT.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/MethodGen.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/NEWARRAY.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/ReturnInstruction.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/util/BCELFactory.java ! src/java.xml/share/classes/com/sun/org/apache/bcel/internal/util/InstructionFinder.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/lib/ExsltDatetime.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLMessages.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/utils/ConfigurationError.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/utils/ObjectFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/Translet.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/ApplyTemplates.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeSet.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/AttributeValueTemplate.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/BinOpExpr.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/BooleanCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/CallTemplate.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/CastCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/CeilingCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Choose.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/ConcatCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/ContainsCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/DocumentCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/ElementAvailableCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Expression.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/FilterExpr.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/FloorCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/FlowList.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/ForEach.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/FormatNumberCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionAvailableCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/FunctionCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/GenerateIdCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Import.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Include.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Key.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/KeyCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/LangCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/LiteralElement.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/LocalNameCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/LogicalExpr.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Message.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Mode.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/NameBase.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/NameCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/NamespaceUriCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/NotCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Number.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/NumberCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Predicate.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/ProcessingInstructionPattern.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/RelationalExpr.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/RoundCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Sort.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/StartsWithCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Step.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/StepPattern.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/StringCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/StringLengthCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Stylesheet.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/SymbolTable.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/SyntaxTreeNode.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Template.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/TestSeq.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/TopLevelElement.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/UnaryOpExpr.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/UnionPathExpr.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/UnparsedEntityUriCall.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/UnsupportedElement.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/UseAttributeSets.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/VariableBase.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/Whitespace.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/XPathLexer.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/XSLTC.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/XslAttribute.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/BooleanType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMsg.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/IntType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/InternalError.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MethodGenerator.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/MethodType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/NodeSetType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/NodeType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ObjectType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/RealType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ReferenceType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ResultTreeType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/StringStack.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/StringType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Type.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/Util.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/VoidType.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/KeyIndex.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/LoadDocument.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/NodeCounter.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecord.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/NodeSortRecordFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/dom/SAXImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/AbstractTranslet.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/InternalRuntimeError.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/output/TransletOutputHandlerFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/output/WriterOutputBuffer.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/DOM2SAX.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/SAX2DOM.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/XSLTCSource.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/AttributeMap.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/CoreDocumentImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DOMConfigurationImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DOMImplementationListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DOMImplementationSourceImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DOMMessageFormatter.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DOMNormalizer.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DOMStringListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DOMXSImplementationSourceImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DeepNodeListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DeferredDocumentImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DeferredDocumentTypeImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/DocumentImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/NamedNodeMapImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/RangeImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/Constants.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDTDScannerImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentScannerImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLErrorReporter.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLNamespaceBinder.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLScanner.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dtd/DTDGrammar.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dtd/XMLDTDDescription.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dtd/XMLDTDLoader.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dtd/XMLDTDProcessor.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dtd/XMLDTDValidator.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dtd/models/DFAContentModel.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/DatatypeException.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/XSFacets.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/util/Base64.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/util/ByteListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/xs/BaseDVFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/xs/ExtendedSchemaDVFactoryImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/xs/FullDVFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/xs/ListDV.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/xs/SchemaDVFactoryImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/xs/XSSimpleTypeDecl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_de.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_es.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_fr.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_it.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ja.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_ko.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_pt_BR.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_sv.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_CN.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessageFormatter_zh_TW.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/validation/ConfigurableValidationState.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/validation/ValidationManager.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/validation/ValidationState.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xpath/regex/RegexParser.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/AttributePSVImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/ElementPSVImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/PSVIErrorList.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/SchemaGrammar.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/SubstitutionGroupHandler.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaLoader.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSComplexTypeDecl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSConstraints.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSGrammarBucket.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSMessageFormatter.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/XSModelImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/models/CMBuilder.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/models/XSAllCM.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/models/XSCMValidator.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/models/XSDFACM.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/models/XSEmptyCM.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/opti/SchemaDOM.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/opti/SchemaParsingConfig.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/StAXSchemaParser.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSAttributeChecker.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDAbstractTraverser.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDElementTraverser.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDHandler.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDSimpleTypeTraverser.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDUniqueOrKeyTraverser.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/traversers/XSDocumentInfo.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/util/LSInputListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/util/ObjectListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/util/ShortListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/util/StringListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/util/XSGrammarPool.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/util/XSNamedMapImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/xs/util/XSObjectListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/SAXParserImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/UnparsedEntityHandler.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/AbstractXMLSchema.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/DOMResultBuilder.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/DOMValidatorHelper.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/JAXPValidationMessageFormatter.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/SimpleXMLSchema.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/SoftReferenceGrammarPool.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/ValidatorHandlerImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/WeakReferenceXMLSchema.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/WrappedSAXException.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/AbstractDOMParser.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/BasicParserConfiguration.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/DOMParserImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/XML11Configuration.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/XML11DTDConfiguration.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/XML11NonValidatingConfiguration.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/XMLGrammarPreparser.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/AugmentationsImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/DOMEntityResolverWrapper.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/DatatypeMessageFormatter.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/JAXPNamespaceContextWrapper.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/NamespaceSupport.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/SAXMessageFormatter.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/SymbolHash.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/utils/ConfigurationError.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/utils/ObjectFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xinclude/MultipleScopeNamespaceSupport.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xinclude/XIncludeHandler.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xinclude/XIncludeMessageFormatter.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xinclude/XIncludeTextReader.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xni/Augmentations.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xni/NamespaceContext.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xpointer/XPointerMessageFormatter.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xs/LSInputList.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xs/ShortList.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xs/StringList.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xs/XSNamedMap.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xs/XSNamespaceItemList.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xs/XSObjectList.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xs/datatypes/ByteList.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/xs/datatypes/ObjectList.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/CustomStringPool.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/DTMDefaultBase.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/DTMDocumentImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/DTMManagerDefault.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/DTMNodeList.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/DTMNodeProxy.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/DTMStringPool.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/IncrementalSAXSource_Xerces.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/dom2dtm/DOM2DTM.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/sax2dtm/SAX2DTM.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/sax2dtm/SAX2DTM2.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm/ref/sax2dtm/SAX2RTFDTM.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/res/XMLMessages.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serialize/BaseMarkupSerializer.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serialize/DOMSerializerImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serialize/Encodings.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serialize/SerializerFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serialize/XMLSerializer.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/CharInfo.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/EmptySerializer.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/Encodings.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/NamespaceMappings.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/OutputPropertiesFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/SerializerFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/ToSAXHandler.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/ToStream.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/ToUnknownStream.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/XSLOutputAttributes.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/dom3/DOM3TreeWalker.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/dom3/DOMStringListImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/dom3/NamespaceSupport.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/utils/Messages.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/utils/URI.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/DOMBuilder.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/ObjectPool.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/QName.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/StringComparable.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/StylesheetPIHandler.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/URI.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils/XMLReaderManager.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/Expression.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/ExtensionsProvider.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/NodeSet.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/SourceTreeManager.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/VariableStack.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/XPath.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/XPathContext.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/XPathException.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/AxesWalker.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/FilterExprIterator.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/FilterExprIteratorSimple.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/FilterExprWalker.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/IteratorPool.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/LocPathIterator.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/MatchPatternIterator.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/NodeSequence.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/PredicatedNodeTest.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/UnionChildIterator.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/UnionPathIterator.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/WalkerFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/WalkingIterator.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/axes/WalkingIteratorSorted.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/FunctionTable.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/Lexer.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/compiler/OpMap.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncCurrent.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncExtFunction.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncFalse.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncHere.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncLast.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncPosition.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncSystemProperty.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FuncTrue.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/Function2Args.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/Function3Args.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FunctionMultiArgs.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/functions/FunctionOneArg.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/jaxp/JAXPExtensionsProvider.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/objects/XNodeSet.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/objects/XObject.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/objects/XRTreeFragSelectWrapper.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/operations/Operation.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/operations/UnaryOperation.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/operations/Variable.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/patterns/ContextMatchStepPattern.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/patterns/FunctionPattern.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/patterns/NodeTest.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/patterns/StepPattern.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/patterns/UnionPattern.java Changeset: 8aab0cea56bf Author: psandoz Date: 2017-12-20 11:40 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8aab0cea56bf 8193856: takeWhile produces incorrect result with elements produced by flatMap Reviewed-by: smarks ! src/java.base/share/classes/java/util/stream/WhileOps.java ! test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java Changeset: 4ff5c5206427 Author: attila Date: 2017-12-20 17:36 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4ff5c5206427 8193371: Use Dynalink REMOVE operation in Nashorn Reviewed-by: hannesw, sundar ! src/jdk.dynalink/share/classes/jdk/dynalink/beans/AbstractJavaLinker.java ! src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/AssignSymbols.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/LocalVariableTypesCalculator.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/MethodEmitter.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/RuntimeNode.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptObject.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptRuntime.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Undefined.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JSObjectLinker.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/NashornCallSiteDescriptor.java + test/nashorn/script/basic/JDK-8193371.js + test/nashorn/script/basic/JDK-8193371.js.EXPECTED Changeset: d4412e380f6b Author: joehw Date: 2017-12-21 17:08 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d4412e380f6b 8184431: References to @sun.com Reviewed-by: lancea ! src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/TestSeq.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/dom/ElementImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/PropertyManager.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XML11NSDocumentScannerImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/JAXPValidatorComponent.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/TeeXMLDocumentFilterImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/DatatypeFactoryImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/DurationDayTimeImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/DurationImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/DurationYearMonthImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/datatype/XMLGregorianCalendarImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/DraconianErrorHandler.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/ErrorHandlerAdaptor.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/ReadOnlyGrammarPool.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/StAXValidatorHelper.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/StreamValidatorHelper.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/Util.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/ValidatorHandlerImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/ValidatorImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/WrappedSAXException.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/DraconianErrorHandler.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/ErrorHandlerProxy.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/LocatorWrapper.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/NamespaceContextWrapper.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/SAX2XNI.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/TeeXMLDocumentFilterImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/XMLDocumentFilterImpl.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/util/XMLInputSourceAdaptor.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serialize/BaseMarkupSerializer.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serialize/XML11Serializer.java ! src/java.xml/share/classes/com/sun/org/apache/xml/internal/serialize/XMLSerializer.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/jaxp/JAXPExtensionsProvider.java ! src/java.xml/share/classes/com/sun/org/apache/xpath/internal/jaxp/JAXPVariableStack.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/XMLBufferListener.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/XMLOutputFactoryImpl.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/events/LocationImpl.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/events/NamespaceImpl.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/events/NotationDeclarationImpl.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/events/XMLEventAllocatorImpl.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/events/XMLEventFactoryImpl.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/util/BufferAllocator.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/util/ThreadLocalBufferAllocator.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/writers/UTF8OutputStreamWriter.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/writers/XMLDOMWriterImpl.java ! src/java.xml/share/classes/com/sun/xml/internal/stream/writers/XMLStreamWriterImpl.java ! src/java.xml/share/classes/javax/xml/XMLConstants.java ! src/java.xml/share/classes/javax/xml/datatype/DatatypeConfigurationException.java ! src/java.xml/share/classes/javax/xml/datatype/DatatypeConstants.java ! src/java.xml/share/classes/javax/xml/datatype/DatatypeFactory.java ! src/java.xml/share/classes/javax/xml/datatype/Duration.java ! src/java.xml/share/classes/javax/xml/datatype/FactoryFinder.java ! src/java.xml/share/classes/javax/xml/datatype/XMLGregorianCalendar.java ! src/java.xml/share/classes/javax/xml/datatype/package-info.java ! src/java.xml/share/classes/javax/xml/namespace/NamespaceContext.java ! src/java.xml/share/classes/javax/xml/namespace/QName.java ! src/java.xml/share/classes/javax/xml/parsers/DocumentBuilder.java ! src/java.xml/share/classes/javax/xml/parsers/DocumentBuilderFactory.java ! src/java.xml/share/classes/javax/xml/parsers/FactoryConfigurationError.java ! src/java.xml/share/classes/javax/xml/parsers/FactoryFinder.java ! src/java.xml/share/classes/javax/xml/parsers/ParserConfigurationException.java ! src/java.xml/share/classes/javax/xml/parsers/SAXParser.java ! src/java.xml/share/classes/javax/xml/parsers/SAXParserFactory.java ! src/java.xml/share/classes/javax/xml/stream/FactoryFinder.java ! src/java.xml/share/classes/javax/xml/transform/FactoryFinder.java ! src/java.xml/share/classes/javax/xml/transform/Result.java ! src/java.xml/share/classes/javax/xml/transform/Transformer.java ! src/java.xml/share/classes/javax/xml/transform/TransformerFactory.java ! src/java.xml/share/classes/javax/xml/transform/dom/DOMResult.java ! src/java.xml/share/classes/javax/xml/transform/dom/DOMSource.java ! src/java.xml/share/classes/javax/xml/transform/overview.html ! src/java.xml/share/classes/javax/xml/transform/sax/SAXResult.java ! src/java.xml/share/classes/javax/xml/transform/sax/SAXSource.java ! src/java.xml/share/classes/javax/xml/transform/stax/StAXResult.java ! src/java.xml/share/classes/javax/xml/transform/stax/StAXSource.java ! src/java.xml/share/classes/javax/xml/transform/stream/StreamResult.java ! src/java.xml/share/classes/javax/xml/transform/stream/StreamSource.java ! src/java.xml/share/classes/javax/xml/validation/Schema.java ! src/java.xml/share/classes/javax/xml/validation/SchemaFactory.java ! src/java.xml/share/classes/javax/xml/validation/SchemaFactoryFinder.java ! src/java.xml/share/classes/javax/xml/validation/SchemaFactoryLoader.java ! src/java.xml/share/classes/javax/xml/validation/TypeInfoProvider.java ! src/java.xml/share/classes/javax/xml/validation/Validator.java ! src/java.xml/share/classes/javax/xml/validation/ValidatorHandler.java ! src/java.xml/share/classes/javax/xml/xpath/XPath.java ! src/java.xml/share/classes/javax/xml/xpath/XPathConstants.java ! src/java.xml/share/classes/javax/xml/xpath/XPathException.java ! src/java.xml/share/classes/javax/xml/xpath/XPathExpression.java ! src/java.xml/share/classes/javax/xml/xpath/XPathExpressionException.java ! src/java.xml/share/classes/javax/xml/xpath/XPathFactory.java ! src/java.xml/share/classes/javax/xml/xpath/XPathFactoryConfigurationException.java ! src/java.xml/share/classes/javax/xml/xpath/XPathFactoryFinder.java ! src/java.xml/share/classes/javax/xml/xpath/XPathFunction.java ! src/java.xml/share/classes/javax/xml/xpath/XPathFunctionException.java ! src/java.xml/share/classes/javax/xml/xpath/XPathFunctionResolver.java ! src/java.xml/share/classes/javax/xml/xpath/XPathVariableResolver.java Changeset: c9e503d6fef5 Author: lana Date: 2017-12-22 01:27 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c9e503d6fef5 Added tag jdk-10+37 for changeset 4f830b447edf ! .hgtags Changeset: ca64a6be0128 Author: lana Date: 2017-12-22 01:28 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ca64a6be0128 Merge Changeset: bae005a497a2 Author: jcbeyler Date: 2017-12-20 08:38 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/bae005a497a2 8191988: JDK-8190862 work for arch s390 Summary: Cleanup interpreter TLAB code and fix ZeroTLAB Reviewed-by: mdoerr, goetz ! src/hotspot/cpu/s390/templateTable_s390.cpp Changeset: 08144d9cbdaa Author: dmarkov Date: 2017-12-22 18:49 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/08144d9cbdaa 8193435: Remove pre-1.2 SecurityManager text from java.awt.Toolkit Reviewed-by: serb, mullan ! src/java.desktop/share/classes/java/awt/Toolkit.java ! src/java.desktop/share/classes/sun/awt/SunToolkit.java ! src/java.desktop/share/classes/sun/awt/image/URLImageSource.java Changeset: 044979e94c4e Author: dlong Date: 2017-12-22 22:01 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/044979e94c4e 8191852: Null pointer dereference in ciKlass::get_Klass of ciKlass.hpp:58 Reviewed-by: kvn ! src/hotspot/share/ci/ciField.cpp Changeset: 2207e2917a68 Author: dlong Date: 2017-12-22 22:06 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2207e2917a68 8191854: Null pointer dereference in methodData.hpp:462 Reviewed-by: kvn ! src/hotspot/share/runtime/compilationPolicy.cpp Changeset: 8441a7cea1c1 Author: rraghavan Date: 2017-12-26 00:38 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8441a7cea1c1 8193699: aarch64 fails to build after 8167372 Summary: added ThreadInVMfromUnknown support Reviewed-by: smonteith, vlivanov ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Changeset: b54852746e8f Author: sballal Date: 2017-12-26 15:53 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b54852746e8f 8193427: serviceability/sa/ClhsdbPrintStatics.java fails: java.lang.RuntimeException: '_jfr_checkpoints' missing from stdout/stderr Reviewed-by: dholmes, sspitsyn ! test/hotspot/jtreg/serviceability/sa/ClhsdbPrintStatics.java Changeset: 240933cf3758 Author: sballal Date: 2017-12-27 11:26 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/240933cf3758 8193428: serviceability/sa/ClhsdbSymbol.java fails: java.lang.RuntimeException: 'UsageTracker' missing from stdout/stderr Reviewed-by: dholmes, sspitsyn ! test/hotspot/jtreg/serviceability/sa/ClhsdbSymbol.java Changeset: cafc0ddb8db3 Author: shurailine Date: 2018-01-02 09:56 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/cafc0ddb8db3 8192837: Need new test for release info file Summary: Detect when OpenJDK is built with ClosedJDK elements Reviewed-by: erikj, dholmes, martin Contributed-by: randy.crihfield at oracle.com + test/jdk/sanity/releaseFile/NegativeSOURCETest.java Changeset: 35cf3c947420 Author: jjg Date: 2018-01-02 16:07 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/35cf3c947420 8183964: Bad lexing of javadoc comments (change in parsing/rendering of backslashes in javadoc) Reviewed-by: vromero, cushon ! src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavadocTokenizer.java ! test/langtools/tools/javac/parser/T4910483.java Changeset: 8749f0b3d227 Author: sballal Date: 2018-01-03 10:55 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8749f0b3d227 8193506: serviceability/sa/TestClassDump.java fails in OpenJDK build Reviewed-by: dholmes, cjplummer ! test/hotspot/jtreg/serviceability/sa/TestClassDump.java Changeset: fcd1913b1d36 Author: sballal Date: 2018-01-03 11:14 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/fcd1913b1d36 8194058: [TESTBUG] serviceability/sa/ClhsdbWhere.java fails to find method 'sleep' in output Reviewed-by: dholmes, cjplummer ! test/hotspot/jtreg/serviceability/sa/ClhsdbWhere.java Changeset: c08f1067ef57 Author: sveerabhadra Date: 2018-01-03 15:37 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c08f1067ef57 8193468: [PIT][TEST BUG]: java/awt/FileDialog/MoveToTrashTest.java fails on Linux Reviewed-by: aghaisas, serb ! test/jdk/java/awt/FileDialog/MoveToTrashTest.java Changeset: b08405cc467a Author: jjg Date: 2018-01-03 11:10 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b08405cc467a 8193125: javac should not compile a module if it requires java.base with modifiers Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Directive.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! test/langtools/tools/javac/diags/examples.not-yet.txt + test/langtools/tools/javac/diags/examples/ModifierNotAllowed/module-info.java + test/langtools/tools/javac/modules/JavaBaseTest.java ! test/langtools/tools/javac/processing/model/util/printing/module-info.java ! test/langtools/tools/javac/processing/model/util/printing/module-info.out Changeset: e569e83139fd Author: goetz Date: 2018-01-03 14:41 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e569e83139fd 8194482: Fix SIGSEGV in print_threads_compiling. Reviewed-by: kvn ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp Changeset: e9a564028f2f Author: joehw Date: 2018-01-03 18:21 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e9a564028f2f 8189704: broken links in the javax/xml/namespace package Reviewed-by: darcy ! src/java.xml/share/classes/javax/xml/XMLConstants.java ! src/java.xml/share/classes/javax/xml/namespace/NamespaceContext.java ! src/java.xml/share/classes/javax/xml/namespace/QName.java Changeset: 68c6f57c40d4 Author: lana Date: 2018-01-04 04:22 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/68c6f57c40d4 Merge ! .hgtags ! make/autoconf/generated-configure.sh ! make/autoconf/jdk-version.m4 ! make/autoconf/spec.gmk.in - src/java.base/share/classes/java/util/ArraysSupport.java - src/java.base/share/native/include/classfile_constants.h ! src/java.base/share/native/libjava/System.c ! src/java.desktop/share/classes/java/awt/Toolkit.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/classfile/Classfile.java ! src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java ! test/hotspot/jtreg/ProblemList.txt ! test/jdk/TEST.ROOT Changeset: b2cd597479ea Author: alanb Date: 2018-01-04 15:50 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b2cd597479ea 8194644: Typo in ModuleDescriptor.read javadoc Reviewed-by: alanb Contributed-by: christoph.dreis at freenet.de ! src/java.base/share/classes/java/lang/module/ModuleDescriptor.java Changeset: db09f53aba91 Author: ksrini Date: 2018-01-03 15:16 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/db09f53aba91 8193671: Default Methods tab under Method Summary includes static methods Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java ! test/langtools/jdk/javadoc/doclet/testMethodTypes/TestMethodTypes.java ! test/langtools/jdk/javadoc/doclet/testMethodTypes/pkg1/A.java ! test/langtools/jdk/javadoc/doclet/testMethodTypes/pkg1/B.java ! test/langtools/jdk/javadoc/doclet/testMethodTypes/pkg1/D.java Changeset: 04d8d293e458 Author: jjg Date: 2018-01-04 10:14 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/04d8d293e458 8194141: Remove JDK9Wrappers Reviewed-by: erikj, alanb ! make/autoconf/spec.gmk.in ! src/java.base/share/classes/module-info.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac.properties - src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/util/ModuleHelper.java ! test/langtools/tools/jdeps/listdeps/ListModuleDeps.java Changeset: 2d250a0174a6 Author: jjiang Date: 2018-01-04 19:58 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2d250a0174a6 8189760: sun/security/ssl/CertPathRestrictions/TLSRestrictions.java failed with unexpected Exception intermittently Summary: Adds synchronization to make sure the server exception is available Reviewed-by: xuelei ! test/jdk/sun/security/ssl/CertPathRestrictions/JSSEServer.java ! test/jdk/sun/security/ssl/CertPathRestrictions/TLSRestrictions.java Changeset: 9e524244b67d Author: jwilhelm Date: 2018-01-05 22:02 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/9e524244b67d Merge - make/langtools/intellij/runConfigurations/javah.xml - make/langtools/test/bootstrap/javah.sh - make/langtools/test/lib/javah.sh ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/thread.cpp - src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java ! test/hotspot/jtreg/ProblemList.txt - test/jdk/java/net/httpclient/RequestProcessorExceptions.java Changeset: d8bdf14c4f1e Author: eosterlund Date: 2018-01-08 13:13 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d8bdf14c4f1e 8191888: Refactor ClassLoaderData::remove_handle to use the Access API Reviewed-by: tschatzl, pliden, coleenp ! src/hotspot/share/classfile/classLoaderData.cpp Changeset: c39ae979ca35 Author: eosterlund Date: 2018-01-08 13:22 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c39ae979ca35 8191567: Refactor ciInstanceKlass G1 keep alive barrier to use Access API. Reviewed-by: dholmes, rkennke, tschatzl ! src/hotspot/share/ci/ciInstanceKlass.cpp ! src/hotspot/share/classfile/classLoaderData.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp Changeset: 31cd0c16f4d2 Author: eosterlund Date: 2018-01-08 15:09 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/31cd0c16f4d2 8191904: Refactor weak oops in ResolvedMethodTable to use the Access API Reviewed-by: kbarrett, coleenp ! src/hotspot/share/prims/resolvedMethodTable.cpp ! src/hotspot/share/prims/resolvedMethodTable.hpp Changeset: 80239a242d34 Author: eosterlund Date: 2018-01-08 15:12 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/80239a242d34 8191894: Refactor weak references in JvmtiTagHashmap to use the Access API Reviewed-by: sspitsyn, coleenp ! src/hotspot/share/prims/jvmtiTagMap.cpp Changeset: 01b07229a6ad Author: dcubed Date: 2018-01-08 09:58 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/01b07229a6ad 8194652: VMError::print_native_stack() is missing an os::is_first_C_frame() check Reviewed-by: fparain, gthornbr, stuefe ! src/hotspot/share/utilities/vmError.cpp + test/hotspot/jtreg/runtime/ErrorHandling/BadNativeStackInErrorHandlingTest.java Changeset: 688e5cbd0b91 Author: eosterlund Date: 2018-01-08 16:21 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/688e5cbd0b91 8192003: Refactor weak references in StringTable to use the Access API Reviewed-by: pliden, dholmes, coleenp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/javaClasses.inline.hpp ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/stringTable.hpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: 1703d83b3ffe Author: coleenp Date: 2018-01-08 09:46 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/1703d83b3ffe 8058259: compute_offset() is confusing for static fields Summary: remove most hard-coded offsets, have compute_offset function that takes a string and creates a TempNewSymbol, have static_field_addr() not add in InstanceMirrorKlass::offset_of_static_fields, ie use offset from find_field Reviewed-by: kbarrett, sspitsyn ! 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/jvmci/jvmciJavaClasses.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/init.cpp Changeset: 7f97d35fac6e Author: coleenp Date: 2018-01-08 12:02 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7f97d35fac6e Merge ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp Changeset: 77797298bf36 Author: ecaspole Date: 2018-01-08 17:47 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/77797298bf36 8192857: LogCompilation could show the intrinsics more like +PrintIntrinsics Summary: Show the intrinsics internal name in the inlining output Reviewed-by: kvn, gtriantafill ! src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/CallSite.java ! src/utils/LogCompilation/src/main/java/com/sun/hotspot/tools/compiler/LogParser.java Changeset: a92a5a71364a Author: dpochepk Date: 2018-01-09 18:18 +0300 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a92a5a71364a 8194256: AARCH64: SIMD shift instructions are incorrectly encoded Reviewed-by: aph ! src/hotspot/cpu/aarch64/assembler_aarch64.hpp Changeset: b1006bbb925a Author: dtitov Date: 2018-01-09 09:51 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b1006bbb925a 8187448: 360 doc issues in jdwp-protocol.html Reviewed-by: sspitsyn, amenkov ! make/data/jdwp/jdwp.spec ! make/jdk/src/classes/build/tools/jdwpgen/AbstractCommandNode.java ! make/jdk/src/classes/build/tools/jdwpgen/AbstractNamedNode.java ! make/jdk/src/classes/build/tools/jdwpgen/AbstractTypeListNode.java ! make/jdk/src/classes/build/tools/jdwpgen/CommandSetNode.java ! make/jdk/src/classes/build/tools/jdwpgen/ConstantSetNode.java ! make/jdk/src/classes/build/tools/jdwpgen/ErrorSetNode.java ! make/jdk/src/classes/build/tools/jdwpgen/RootNode.java Changeset: 5f86c562a39e Author: ctornqvi Date: 2018-01-09 16:52 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/5f86c562a39e 8194636: Apply CONCURRENCY_FACTOR to max value in concurrency calculation Reviewed-by: erikj ! test/hotspot/jtreg/Makefile Changeset: d09be0adcf78 Author: jcbeyler Date: 2017-12-19 20:14 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d09be0adcf78 8191985: JDK-8190862 work for arch arm Summary: Fixed Interpreter never refills TLAB Reviewed-by: dsamersoff, aph ! src/hotspot/cpu/arm/templateTable_arm.cpp Changeset: 9f6f48d4f9a1 Author: goetz Date: 2018-01-09 08:38 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/9f6f48d4f9a1 8194814: [ppc, s390] A row of minor fixes and cleanups Summary: Fix the data types of pd flags. Reviewed-by: mdoerr ! src/hotspot/cpu/ppc/c1_MacroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/c1_globals_ppc.hpp ! src/hotspot/cpu/ppc/c2_globals_ppc.hpp ! src/hotspot/cpu/ppc/c2_init_ppc.cpp ! src/hotspot/cpu/ppc/globals_ppc.hpp ! src/hotspot/cpu/ppc/icache_ppc.cpp ! src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp ! src/hotspot/cpu/ppc/jniFastGetField_ppc.cpp ! src/hotspot/cpu/ppc/macroAssembler_ppc.cpp ! src/hotspot/cpu/ppc/nativeInst_ppc.hpp ! src/hotspot/cpu/ppc/runtime_ppc.cpp ! src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp ! src/hotspot/cpu/ppc/stubGenerator_ppc.cpp ! src/hotspot/cpu/ppc/stubRoutines_ppc_64.cpp ! src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp ! src/hotspot/cpu/s390/bytes_s390.hpp ! src/hotspot/cpu/s390/c1_globals_s390.hpp ! src/hotspot/cpu/s390/c2_globals_s390.hpp ! src/hotspot/cpu/s390/globals_s390.hpp Changeset: bf12b502df94 Author: tschatzl Date: 2018-01-10 10:21 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/bf12b502df94 8194824: Add gc/stress/gclocker/TestGCLockerWithParallel.java to the ProblemList file Reviewed-by: ehelin, kbarrett ! test/hotspot/jtreg/ProblemList.txt Changeset: 69d65d9dcadb Author: eosterlund Date: 2018-01-10 18:04 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/69d65d9dcadb 8193063: Enabling narrowOop values for RawAccess accesses Reviewed-by: pliden, kbarrett ! src/hotspot/share/gc/g1/g1SATBCardTableModRefBS.inline.hpp ! src/hotspot/share/gc/shared/barrierSet.hpp ! src/hotspot/share/oops/access.hpp ! src/hotspot/share/oops/access.inline.hpp ! src/hotspot/share/oops/accessBackend.hpp ! src/hotspot/share/oops/accessBackend.inline.hpp Changeset: a58c1924e037 Author: gadams Date: 2018-01-09 13:58 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a58c1924e037 6640188: Methods com.cun.attach.VirtualMachine.load... don't throw NullPointerxception Reviewed-by: sspitsyn ! src/jdk.attach/share/classes/sun/tools/attach/HotSpotVirtualMachine.java Changeset: fdef4da95080 Author: jgeorge Date: 2018-01-11 11:35 +0530 URL: http://hg.openjdk.java.net/zgc/zgc/rev/fdef4da95080 8193352: SA: Test for the clhsdb 'thread' and 'threads' commands Summary: Test for the clhsdb 'thread' and 'threads' commands. Avoids an incorrect 'Couldn't find thread -a' being printed. Reviewed-by: sspitsyn, sballal ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java + test/hotspot/jtreg/serviceability/sa/ClhsdbThread.java Changeset: 862c41cf1c7f Author: tschatzl Date: 2018-01-11 10:40 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/862c41cf1c7f 8137099: G1 needs to "upgrade" GC within the safepoint if it can't allocate during that safepoint to avoid OoME Summary: During a minor GC, if memory allocation fails, start a full GC within the same VM operation in the same safepoint. This avoids a race where the GC locker can prevent the full GC from occurring, and a premature OoME. Reviewed-by: ehelin, sjohanss, phh Contributed-by: thomas.schatzl at oracle.com, axel.siebenborn at sap.com ! make/test/JtregNativeHotspot.gmk ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp ! src/hotspot/share/gc/g1/vm_operations_g1.cpp ! src/hotspot/share/gc/g1/vm_operations_g1.hpp ! src/hotspot/share/runtime/vm_operations.hpp ! test/hotspot/jtreg/ProblemList.txt + test/hotspot/jtreg/gc/stress/TestJNIBlockFullGC/TestJNIBlockFullGC.java + test/hotspot/jtreg/gc/stress/TestJNIBlockFullGC/libTestJNIBlockFullGC.c Changeset: a8ab9344dab6 Author: tschatzl Date: 2018-01-11 11:05 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a8ab9344dab6 8180280: [TESTBUG] Test for JDK-8180048 Summary: Add test at is executed only at higher tiers to allow more time for execution. Reviewed-by: kbarrett, eosterlund + test/hotspot/jtreg/gc/stress/TestReclaimStringsLeaksMemory.java Changeset: 2569f227ae8e Author: tschatzl Date: 2018-01-11 11:28 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2569f227ae8e 8129440: G1 crash during concurrent root region scan Summary: Make concurrent memory accesses to oops on the heap volatile to avoid reloading by the compiler duplicating oop loading code. Reviewed-by: ehelin, eosterlund ! src/hotspot/share/gc/g1/g1OopClosures.inline.hpp Changeset: ec666229de1f Author: dstewart Date: 2018-01-11 20:25 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ec666229de1f 8194762: JTReg failure of "runtime/NMT/PrintNMTStatistics.java" Reviewed-by: dholmes, zgu ! test/hotspot/jtreg/runtime/NMT/PrintNMTStatistics.java Changeset: 612dfa1d8aad Author: coleenp Date: 2018-01-11 18:42 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/612dfa1d8aad 8130039: Move the platform-specific [OS]Semaphore code 8130038: Unify the semaphore usage in os_xxx.cpp 8194763: os::signal_lookup is unused Reviewed-by: dholmes, kbarrett ! src/hotspot/os/aix/os_aix.cpp ! src/hotspot/os/bsd/os_bsd.cpp + src/hotspot/os/bsd/semaphore_bsd.cpp ! src/hotspot/os/bsd/semaphore_bsd.hpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/posix/os_posix.cpp + src/hotspot/os/posix/semaphore_posix.cpp ! src/hotspot/os/posix/semaphore_posix.hpp ! src/hotspot/os/solaris/os_solaris.cpp ! src/hotspot/os/windows/os_windows.cpp + src/hotspot/os/windows/semaphore_windows.cpp ! src/hotspot/share/runtime/os.hpp Changeset: b96f03796580 Author: coleenp Date: 2018-01-11 21:49 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b96f03796580 Merge Changeset: 6ebef5cd0c8d Author: eosterlund Date: 2018-01-10 22:40 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/6ebef5cd0c8d 8194736: Refactor weak oops in ProtectionDomain table to use the Access API Reviewed-by: coleenp, pliden ! src/hotspot/share/classfile/dictionary.cpp ! src/hotspot/share/classfile/dictionary.hpp ! src/hotspot/share/classfile/protectionDomainCache.cpp ! src/hotspot/share/classfile/protectionDomainCache.hpp Changeset: c823eca266c3 Author: stefank Date: 2018-01-12 13:56 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c823eca266c3 8194925: NMT: SummarySanityCheck test can't parse values > max_jint Reviewed-by: shade, zgu ! test/hotspot/jtreg/runtime/NMT/SummarySanityCheck.java Changeset: bade224cc81e Author: pliden Date: 2018-01-12 16:19 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/bade224cc81e 8195000: Remove unused left-overs in arguments.hpp Reviewed-by: stefank ! src/hotspot/share/runtime/arguments.hpp Changeset: 899b522ed65c Author: eosterlund Date: 2018-01-10 22:43 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/899b522ed65c 8194741: Refactor oops in constant pool from CDS to use the Access API Reviewed-by: coleenp, jiangli ! src/hotspot/share/gc/g1/g1SATBCardTableModRefBS.hpp ! src/hotspot/share/gc/g1/g1SATBCardTableModRefBS.inline.hpp ! src/hotspot/share/oops/access.hpp ! src/hotspot/share/oops/access.inline.hpp ! src/hotspot/share/oops/constantPool.cpp ! src/hotspot/share/oops/cpCache.cpp Changeset: 4d1970962ee9 Author: eosterlund Date: 2018-01-15 15:18 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4d1970962ee9 8195107: CDS broken due to 8194741 Reviewed-by: coleenp ! src/hotspot/share/oops/constantPool.cpp Changeset: 20fe8cd3179d Author: bpb Date: 2018-01-05 12:45 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/20fe8cd3179d 8193861: Typos in API documentation of File.toPath() and InetSocketAddress.getAddress() Reviewed-by: chegar, rriggs, lancea ! src/java.base/share/classes/java/io/File.java ! src/java.base/share/classes/java/net/InetSocketAddress.java Changeset: 45a9a7a49379 Author: bpb Date: 2018-01-05 12:46 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/45a9a7a49379 8194649: Minor cleanup of parameter checking in ByteArrayOutputStream and ObjectInputStream Reviewed-by: rriggs ! src/java.base/share/classes/java/io/ByteArrayOutputStream.java ! src/java.base/share/classes/java/io/ObjectInputStream.java Changeset: dd3b97564ed7 Author: bpatel Date: 2018-01-04 09:22 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/dd3b97564ed7 8192007: javadoc @uses and @provides tags in the modules documentation appears before the first-sentence summary of the service type. Reviewed-by: jjg, ksrini ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java ! test/langtools/jdk/javadoc/doclet/testModules/TestModuleServices.java ! test/langtools/jdk/javadoc/doclet/testModules/TestModules.java Changeset: efb9f4c91bde Author: goetz Date: 2017-12-27 11:31 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/efb9f4c91bde 8194232: Container memory not properly recognized. Reviewed-by: bobv, mdoerr, acorn ! src/hotspot/os/linux/osContainer_linux.cpp Changeset: b39894f95ab8 Author: bobv Date: 2018-01-04 13:41 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b39894f95ab8 Merge Changeset: f91345a216c9 Author: rfield Date: 2018-01-04 12:24 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f91345a216c9 8179858: jshell tool: sync nomenclature from reference to online /help Reviewed-by: dlsmith, jjg ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n.properties ! test/langtools/jdk/jshell/CommandCompletionTest.java ! test/langtools/jdk/jshell/EditorTestBase.java ! test/langtools/jdk/jshell/ToolBasicTest.java ! test/langtools/jdk/jshell/ToolSimpleTest.java Changeset: 9c37fbceb579 Author: jjg Date: 2018-01-04 12:55 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/9c37fbceb579 8194069: doclint throws missing comment warnings on lines which can't even have javadoc Reviewed-by: ksrini ! src/jdk.compiler/share/classes/com/sun/tools/doclint/DocLint.java + test/langtools/tools/doclint/LambdaTest.java Changeset: 3b00541635f9 Author: ksrini Date: 2018-01-04 13:32 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/3b00541635f9 8193671: Default Methods tab under Method Summary includes static methods Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java ! test/langtools/jdk/javadoc/doclet/testMethodTypes/TestMethodTypes.java ! test/langtools/jdk/javadoc/doclet/testMethodTypes/pkg1/A.java ! test/langtools/jdk/javadoc/doclet/testMethodTypes/pkg1/B.java ! test/langtools/jdk/javadoc/doclet/testMethodTypes/pkg1/D.java Changeset: 8935285e8759 Author: iveresov Date: 2018-01-04 14:44 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8935285e8759 8194271: jaotc crashes with --debug flag Reviewed-by: kvn, thartmann ! src/hotspot/share/jvmci/jvmciCodeInstaller.cpp ! src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/AOTBackend.java + test/hotspot/jtreg/compiler/aot/cli/jaotc/CompileClassWithDebugTest.java Changeset: a97a26eb896f Author: thartmann Date: 2018-01-05 10:23 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a97a26eb896f 8194494: SHA-512 stub uses AVX 2 instructions on non-supporting CPUs Summary: Check for supports_avx2() && supports_bmi2() before generating SHA-512 stub. Reviewed-by: kvn ! src/hotspot/cpu/x86/vm_version_x86.cpp Changeset: cb7926b6b3d6 Author: jjg Date: 2018-01-05 12:41 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/cb7926b6b3d6 8188649: javadoc -encoding doesn't work when using the old doclet API Reviewed-by: ksrini ! src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java + test/langtools/jdk/javadoc/tool/EncodingTest.java + test/langtools/tools/javadoc/EncodingTest.java Changeset: fe391f235400 Author: lana Date: 2018-01-05 20:09 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/fe391f235400 Added tag jdk-10+38 for changeset e569e83139fd ! .hgtags Changeset: 2ad215f9fdcf Author: lana Date: 2018-01-05 20:10 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/2ad215f9fdcf Merge Changeset: ccbf1c998dd9 Author: lana Date: 2018-01-05 20:58 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ccbf1c998dd9 Merge Changeset: e2b8009bf42c Author: jjg Date: 2018-01-05 16:49 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e2b8009bf42c 8191637: Interface with defaults invalid compiler warning for Serializable Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java + test/langtools/tools/javac/T6356530/SerializableAbstractClassTest.java + test/langtools/tools/javac/T6356530/SerializableAbstractClassTest.out - test/langtools/tools/javac/T6356530/SerializableAbstractClassWithNonAbstractMethodsTest.java - test/langtools/tools/javac/T6356530/SerializableAbstractClassWithNonAbstractMethodsTest.out Changeset: c10b8e775610 Author: lana Date: 2018-01-06 01:13 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/c10b8e775610 Merge ! .hgtags - src/java.base/share/classes/java/util/ArraysSupport.java - src/java.base/share/native/include/classfile_constants.h - src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java Changeset: 9a29aa153c20 Author: xiaofeya Date: 2018-01-08 07:13 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/9a29aa153c20 8194724: Problem list java/net/httpclient/SplitResponseSSL.java Reviewed-by: chegar ! test/jdk/ProblemList.txt Changeset: d3b1fc1bda9c Author: martin Date: 2018-01-03 13:17 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d3b1fc1bda9c 8145371: ClassCastException thrown in LambdaFormEditor.getInCache Summary: Read field into local to avoid customization race Reviewed-by: vlivanov, jrose, psandoz ! src/java.base/share/classes/java/lang/invoke/MethodHandle.java Changeset: 37d2147852fc Author: redestad Date: 2018-01-10 00:08 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/37d2147852fc 8134459: java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java timed out Reviewed-by: psandoz, rriggs ! test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java ! test/jdk/lib/testlibrary/bootlib/java.base/java/util/stream/LambdaTestHelpers.java Changeset: 50cd89fe209f Author: jjiang Date: 2018-01-09 18:36 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/50cd89fe209f 8194257: javax/net/ssl/compatibility/Compatibility.java should be updated for JDK 6 after JDK-8174748 Summary: Marks some of AES_256 and AES_128 cipher suites are JDK 6 enabled Reviewed-by: xuelei ! test/jdk/javax/net/ssl/compatibility/Parameter.java Changeset: abd7f09d0a79 Author: naoto Date: 2018-01-11 12:47 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/abd7f09d0a79 8194148: bcp47u/SymbolsTests.java and FormatTests.java fail on th_TH locale Reviewed-by: rriggs ! test/jdk/java/util/Locale/bcp47u/FormatTests.java ! test/jdk/java/util/Locale/bcp47u/SymbolsTests.java Changeset: b51755ee57f6 Author: jjg Date: 2018-01-11 13:47 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b51755ee57f6 8151850: eliminate javax.tools.FileManagerUtils Reviewed-by: vromero - src/java.compiler/share/classes/javax/tools/FileManagerUtils.java ! src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java Changeset: 7a700fd0ad50 Author: jjg Date: 2018-01-11 15:06 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7a700fd0ad50 8194893: javac -verbose prints wrong paths for output files Reviewed-by: vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java + test/langtools/tools/javac/jvm/VerboseOutTest.java Changeset: 7f57c5908c57 Author: hannesw Date: 2018-01-12 10:33 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7f57c5908c57 8157251: BeanLinker relinks array length operations for array types Reviewed-by: hannesw, jlaskey, attila Contributed-by: priya.lakshmi.muthuswamy at oracle.com ! src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java + test/nashorn/script/basic/JDK-8157251.js + test/nashorn/script/basic/JDK-8157251.js.EXPECTED Changeset: a5f815d1060b Author: mcimadamore Date: 2018-01-12 16:49 +0000 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a5f815d1060b 8194932: no ambuguity error is emitted if classfile contains two identical methods with different return types Summary: add recovery logic when classfile contains two signature-equivalent methods Reviewed-by: jlahoda, vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java + test/langtools/tools/javac/8194932/Foo.jcod + test/langtools/tools/javac/8194932/T8194932.java + test/langtools/tools/javac/8194932/T8194932.out Changeset: bdbbf56c302e Author: bpb Date: 2018-01-12 11:06 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/bdbbf56c302e 8165852: (fs) Mount point not found for a file which is present in overlayfs Summary: Check /proc/mounts when the device ID boundary is reached Reviewed-by: alanb ! src/java.base/linux/classes/sun/nio/fs/LinuxFileStore.java ! src/java.base/linux/classes/sun/nio/fs/LinuxFileSystem.java Changeset: 6a1c3a5e04f3 Author: bpb Date: 2018-01-12 11:06 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/6a1c3a5e04f3 4358774: Add null InputStream and OutputStream Reviewed-by: alanb, prappo, reinhapa, rriggs ! src/java.base/share/classes/java/io/InputStream.java ! src/java.base/share/classes/java/io/OutputStream.java + test/jdk/java/io/InputStream/NullInputStream.java ! test/jdk/java/io/InputStream/ReadParams.java + test/jdk/java/io/OutputStream/NullOutputStream.java ! test/jdk/java/io/OutputStream/WriteParams.java Changeset: 4f647519c8be Author: jwilhelm Date: 2018-01-05 22:02 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/4f647519c8be Merge ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/share/jvmci/jvmciCodeInstaller.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/thread.cpp - src/jdk.unsupported/share/classes/sun/reflect/Reflection.java ! test/hotspot/jtreg/ProblemList.txt - test/jdk/jdk/internal/reflect/Reflection/GetCallerClassWithDepth.java - test/jdk/sun/reflect/Reflection/GetCallerClassWithDepth.java Changeset: 7f11a1699ef6 Author: sherman Date: 2018-01-12 14:05 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7f11a1699ef6 8194667: Regex: Serialization doesn't work with match flags Reviewed-by: rriggs ! src/java.base/share/classes/java/util/regex/Pattern.java ! test/jdk/java/util/regex/RegExTest.java Changeset: fb56735cb46a Author: iignatyev Date: 2018-01-12 14:33 -0800 URL: http://hg.openjdk.java.net/zgc/zgc/rev/fb56735cb46a 8195067: problem list tools/javac/jvm/VerboseOutTest.java Reviewed-by: jjg ! test/langtools/ProblemList.txt Changeset: cc231bd80c8b Author: jwilhelm Date: 2018-01-13 02:56 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/cc231bd80c8b Merge - src/java.compiler/share/classes/javax/tools/FileManagerUtils.java - test/langtools/tools/javac/T6356530/SerializableAbstractClassWithNonAbstractMethodsTest.java - test/langtools/tools/javac/T6356530/SerializableAbstractClassWithNonAbstractMethodsTest.out Changeset: 7638bf98a312 Author: kbarrett Date: 2017-11-21 09:47 -0500 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7638bf98a312 8194312: Support parallel and concurrent JNI global handle processing Summary: Add OopStorage, change JNI gloabl/weak to use OopStorage. Reviewed-by: coleenp, sspitsyn, eosterlund + src/hotspot/share/gc/shared/oopStorage.cpp + src/hotspot/share/gc/shared/oopStorage.hpp ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/prims/jni.cpp ! src/hotspot/share/prims/jniCheck.cpp ! src/hotspot/share/prims/jvmtiTagMap.cpp ! src/hotspot/share/runtime/jniHandles.cpp ! src/hotspot/share/runtime/jniHandles.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp ! src/hotspot/share/runtime/os.cpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/hotspot/share/runtime/vm_operations.hpp ! src/hotspot/share/services/heapDumper.cpp ! src/hotspot/share/services/serviceUtil.hpp + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/OopStorage.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JNIHandleBlock.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JNIHandles.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PointerFinder.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PointerLocation.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java + test/hotspot/gtest/gc/shared/test_oopStorage.cpp Changeset: 357621524dfe Author: pliden Date: 2018-01-17 08:56 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/357621524dfe Merge ! .jcheck/conf ! make/hotspot/lib/CompileJvm.gmk ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp ! src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp ! src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp ! src/hotspot/cpu/sparc/c1_CodeStubs_sparc.cpp ! src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp ! src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.hpp ! src/hotspot/cpu/sparc/c1_LIRGenerator_sparc.cpp ! src/hotspot/cpu/sparc/c1_Runtime1_sparc.cpp ! src/hotspot/cpu/sparc/c2_globals_sparc.hpp ! src/hotspot/cpu/sparc/macroAssembler_sparc.cpp ! src/hotspot/cpu/sparc/macroAssembler_sparc.hpp ! src/hotspot/cpu/sparc/nativeInst_sparc.cpp ! src/hotspot/cpu/sparc/sparc.ad ! src/hotspot/cpu/sparc/stubGenerator_sparc.cpp ! src/hotspot/cpu/sparc/templateInterpreterGenerator_sparc.cpp ! src/hotspot/cpu/sparc/templateTable_sparc.cpp ! src/hotspot/cpu/x86/assembler_x86.cpp ! src/hotspot/cpu/x86/assembler_x86.hpp ! src/hotspot/cpu/x86/c1_CodeStubs_x86.cpp ! src/hotspot/cpu/x86/c1_FrameMap_x86.hpp ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.hpp ! src/hotspot/cpu/x86/c1_LIRGenerator_x86.cpp ! src/hotspot/cpu/x86/c1_Runtime1_x86.cpp ! src/hotspot/cpu/x86/c2_globals_x86.hpp ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.hpp ! src/hotspot/cpu/x86/nativeInst_x86.cpp ! src/hotspot/cpu/x86/nativeInst_x86.hpp ! src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp ! src/hotspot/cpu/x86/stubGenerator_x86_64.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.hpp ! src/hotspot/cpu/x86/stubRoutines_x86_64.cpp ! src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp ! src/hotspot/cpu/x86/templateTable_x86.cpp ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/os/linux/globals_linux.hpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/linux/os_linux.hpp ! src/hotspot/os/solaris/globals_solaris.hpp ! src/hotspot/os/solaris/os_solaris.cpp ! src/hotspot/os/solaris/os_solaris.hpp ! src/hotspot/share/adlc/formssel.cpp ! src/hotspot/share/adlc/formssel.hpp ! src/hotspot/share/asm/codeBuffer.cpp ! src/hotspot/share/c1/c1_CodeStubs.hpp ! src/hotspot/share/c1/c1_LIR.cpp ! src/hotspot/share/c1/c1_LIR.hpp ! src/hotspot/share/c1/c1_LIRAssembler.cpp ! src/hotspot/share/c1/c1_LIRAssembler.hpp ! src/hotspot/share/c1/c1_LIRGenerator.cpp ! src/hotspot/share/c1/c1_LIRGenerator.hpp ! src/hotspot/share/c1/c1_Runtime1.cpp ! src/hotspot/share/c1/c1_Runtime1.hpp ! src/hotspot/share/classfile/compactHashtable.inline.hpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/javaClasses.inline.hpp ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/classfile/vmSymbols.cpp ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/compiler/compileTask.cpp ! src/hotspot/share/compiler/compilerDirectives.hpp ! src/hotspot/share/compiler/oopMap.cpp ! src/hotspot/share/gc/cms/cmsOopClosures.hpp ! src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1FullGCOopClosures.hpp ! src/hotspot/share/gc/g1/g1OopClosures.hpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.hpp ! src/hotspot/share/gc/g1/g1SATBCardTableModRefBS.inline.hpp ! src/hotspot/share/gc/serial/markSweep.cpp ! src/hotspot/share/gc/serial/markSweep.hpp ! src/hotspot/share/gc/shared/barrierSet.hpp ! src/hotspot/share/gc/shared/barrierSetConfig.hpp ! src/hotspot/share/gc/shared/barrierSetConfig.inline.hpp ! src/hotspot/share/gc/shared/collectedHeap.cpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/gc/shared/collectorPolicy.hpp ! src/hotspot/share/gc/shared/gcArguments.cpp ! src/hotspot/share/gc/shared/gcCause.cpp ! src/hotspot/share/gc/shared/gcCause.hpp ! src/hotspot/share/gc/shared/gcId.cpp ! src/hotspot/share/gc/shared/gcName.hpp ! src/hotspot/share/gc/shared/gcTimer.cpp ! src/hotspot/share/gc/shared/gcTimer.hpp ! src/hotspot/share/gc/shared/genOopClosures.hpp ! src/hotspot/share/gc/shared/referenceProcessor.hpp ! src/hotspot/share/gc/shared/specialized_oop_closures.hpp ! src/hotspot/share/gc/shared/threadLocalAllocBuffer.hpp ! src/hotspot/share/gc/shared/threadLocalAllocBuffer.inline.hpp ! src/hotspot/share/logging/logPrefix.hpp ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/memory/metaspace.hpp ! src/hotspot/share/memory/referenceType.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceRefKlass.inline.hpp ! src/hotspot/share/oops/method.cpp ! src/hotspot/share/oops/oop.cpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp ! src/hotspot/share/opto/arraycopynode.cpp ! src/hotspot/share/opto/c2_globals.hpp ! src/hotspot/share/opto/classes.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/connode.hpp ! src/hotspot/share/opto/escape.cpp ! src/hotspot/share/opto/gcm.cpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/graphKit.hpp ! src/hotspot/share/opto/idealGraphPrinter.cpp ! src/hotspot/share/opto/idealKit.cpp ! src/hotspot/share/opto/idealKit.hpp ! src/hotspot/share/opto/lcm.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/loopPredicate.cpp ! src/hotspot/share/opto/loopTransform.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/macro.cpp ! src/hotspot/share/opto/macro.hpp ! src/hotspot/share/opto/macroArrayCopy.cpp ! src/hotspot/share/opto/matcher.cpp ! src/hotspot/share/opto/memnode.cpp ! src/hotspot/share/opto/memnode.hpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/node.hpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/opto/parse2.cpp ! src/hotspot/share/opto/parse3.cpp ! src/hotspot/share/opto/phaseX.cpp ! src/hotspot/share/opto/phaseX.hpp ! src/hotspot/share/opto/phasetype.hpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/opto/type.hpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/prims/jvmtiTagMap.cpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/handles.cpp ! src/hotspot/share/runtime/jniHandles.cpp ! src/hotspot/share/runtime/jniHandles.hpp ! src/hotspot/share/runtime/mutex.cpp ! src/hotspot/share/runtime/os.hpp ! src/hotspot/share/runtime/semaphore.hpp ! src/hotspot/share/runtime/sharedRuntime.cpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! src/hotspot/share/runtime/stackValue.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/runtime/vmThread.cpp ! src/hotspot/share/runtime/vm_operations.hpp ! src/hotspot/share/services/heapDumper.cpp ! src/hotspot/share/trace/traceevents.xml ! src/hotspot/share/trace/tracetypes.xml ! src/hotspot/share/utilities/bitMap.cpp ! src/hotspot/share/utilities/bitMap.hpp ! src/hotspot/share/utilities/globalDefinitions.hpp ! src/hotspot/share/utilities/globalDefinitions_gcc.hpp ! src/hotspot/share/utilities/globalDefinitions_sparcWorks.hpp ! src/hotspot/share/utilities/hashtable.cpp ! src/hotspot/share/utilities/hashtable.hpp ! src/hotspot/share/utilities/vmError.cpp ! test/hotspot/jtreg/compiler/unsafe/JdkInternalMiscUnsafeAccessTestObject.java ! test/lib/sun/hotspot/gc/GC.java Changeset: 0d46758e7dd7 Author: duke Date: 2017-12-08 13:46 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0d46758e7dd7 ZGC: Relax jcheck config ! .jcheck/conf Changeset: 851f170132b3 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/851f170132b3 ZGC: UPSTREAM: Add LIKELY/UNLIKELY macros ! src/hotspot/share/utilities/globalDefinitions.hpp ! src/hotspot/share/utilities/globalDefinitions_gcc.hpp Changeset: 634f1c257a6c Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/634f1c257a6c ZGC: UPSTREAM: Add ATTRIBUTE_ALIGNED macro ! src/hotspot/share/utilities/globalDefinitions.hpp ! src/hotspot/share/utilities/globalDefinitions_gcc.hpp ! src/hotspot/share/utilities/globalDefinitions_sparcWorks.hpp Changeset: cdacbc8a15c4 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/cdacbc8a15c4 ZGC: UPSTREAM: Add optional clear in BitMap constructor ! src/hotspot/share/utilities/bitMap.cpp ! src/hotspot/share/utilities/bitMap.hpp Changeset: e34bd2c00138 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e34bd2c00138 ZGC: UPSTREAM: Add C1 lea patching support for x86 ! src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp ! src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp ! src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp ! src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp ! src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp ! src/hotspot/cpu/x86/nativeInst_x86.cpp ! src/hotspot/cpu/x86/nativeInst_x86.hpp ! src/hotspot/share/c1/c1_LIR.hpp ! src/hotspot/share/c1/c1_LIRAssembler.cpp ! src/hotspot/share/c1/c1_LIRAssembler.hpp Changeset: 886b71794591 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/886b71794591 ZGC: UPSTREAM: Add enhanced C1 leal addressing for SPARC ! src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp Changeset: de115d4acbf1 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/de115d4acbf1 ZGC: UPSTREAM: Introduce os::processor_id() for Linux and Solaris ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/solaris/os_solaris.cpp ! src/hotspot/os/solaris/os_solaris.hpp ! src/hotspot/share/runtime/os.hpp Changeset: f2d5c9b97e24 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f2d5c9b97e24 ZGC: UPSTREAM: Introduce safepoint aware semaphores ! src/hotspot/share/runtime/semaphore.hpp + src/hotspot/share/runtime/semaphore.inline.hpp Changeset: d270b6d0fd1e Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d270b6d0fd1e ZGC: UPSTREAM: Remove assert for safepoint check in Mutex::try_lock() ! src/hotspot/share/runtime/mutex.cpp Changeset: 63e62c570487 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/63e62c570487 ZGC: UPSTREAM: Disable NUMA if process is bound to a subset of CPUs ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/os/linux/os_linux.hpp Changeset: b771a1dc1e7e Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/b771a1dc1e7e ZGC: UPSTREAM: Add ReferenceTypeName ! src/hotspot/share/memory/referenceType.hpp Changeset: ea599c4d0569 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/ea599c4d0569 ZGC: UPSTREAM: Add ReferenceDiscoverer ! src/hotspot/share/gc/cms/cmsOopClosures.hpp ! src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1FullGCOopClosures.hpp ! src/hotspot/share/gc/g1/g1OopClosures.hpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.hpp ! src/hotspot/share/gc/serial/markSweep.cpp ! src/hotspot/share/gc/serial/markSweep.hpp ! src/hotspot/share/gc/shared/genOopClosures.hpp + src/hotspot/share/gc/shared/referenceDiscoverer.hpp ! src/hotspot/share/gc/shared/referenceProcessor.hpp ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/oops/instanceRefKlass.inline.hpp Changeset: 99078f7493bd Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/99078f7493bd ZGC: UPSTREAM: Make create_heap_space_summary() virtual ! src/hotspot/share/gc/shared/collectedHeap.hpp Changeset: d7ac35bd1a7e Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d7ac35bd1a7e ZGC: UPSTREAM: Add support for undoing last TLAB allocation ! src/hotspot/share/gc/shared/threadLocalAllocBuffer.hpp ! src/hotspot/share/gc/shared/threadLocalAllocBuffer.inline.hpp Changeset: 0a34d92d83cb Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0a34d92d83cb ZGC: UPSTREAM: Add support for setting TLAB start/top/end ! src/hotspot/share/gc/shared/threadLocalAllocBuffer.hpp Changeset: f1447d06e40c Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f1447d06e40c ZGC: UPSTREAM: Remove dangerous assert in HandleArea::oops_do() ! src/hotspot/share/runtime/handles.cpp Changeset: 295702155104 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/295702155104 ZGC: UPSTREAM: Allow GCCauseSetter to be used outside of safepoints ! src/hotspot/share/gc/shared/collectedHeap.hpp Changeset: a482fcd21f98 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/a482fcd21f98 ZGC: UPSTREAM: Add end time argument to ConcurrentGCTimer::register_gc_pause_start/_end ! src/hotspot/share/gc/shared/gcTimer.cpp ! src/hotspot/share/gc/shared/gcTimer.hpp Changeset: d409c3c8a36a Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/d409c3c8a36a ZGC: UPSTREAM: Allow GCId::current_raw() calls from non-NamedThreads ! src/hotspot/share/gc/shared/gcId.cpp Changeset: 84a593429701 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/84a593429701 ZGC: UPSTREAM: Introduce CollectedHeap::is_oop() ! src/hotspot/share/gc/shared/collectedHeap.cpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/oops/oop.cpp Changeset: 01c47808efac Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/01c47808efac ZGC: UPSTREAM: Make CollectorPolicy::satisfy_failed_metadata_allocation() virtual ! src/hotspot/share/gc/shared/collectorPolicy.hpp Changeset: 753d7f7775a8 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/753d7f7775a8 ZGC: UPSTREAM: Add oopDesc::field_offset() ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: e02d06aa1f31 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/e02d06aa1f31 ZGC: UPSTREAM: Add missing ResourceMark in Method::print_touched_methods() ! src/hotspot/share/oops/method.cpp Changeset: db4d50646e91 Author: duke Date: 2017-12-08 13:47 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/db4d50646e91 ZGC: The Z Garbage Collector v77 Contributed-by: per.liden at oracle.com, stefan.karlsson at oracle.com, erik.osterlund at oracle.com, mikael.gerdin at oracle.com, kim.barrett at oracle.com, nils.eliasson at oracle.com, rickard.backman at oracle.com, rwestrel at redhat.com, coleen.phillimore at oracle.com, robbin.ehn at oracle.com, gerard.ziemski at oracle.com, hugh.wilkinson at intel.com, sandhya.viswanathan at intel.com, bill.npo.wheeler at intel.com, vinay.k.awasthi at intel.com ! make/hotspot/lib/CompileJvm.gmk ! src/hotspot/cpu/sparc/c1_CodeStubs_sparc.cpp ! src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp ! src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.hpp ! src/hotspot/cpu/sparc/c1_LIRGenerator_sparc.cpp ! src/hotspot/cpu/sparc/c1_Runtime1_sparc.cpp ! src/hotspot/cpu/sparc/c2_globals_sparc.hpp ! src/hotspot/cpu/sparc/macroAssembler_sparc.cpp ! src/hotspot/cpu/sparc/macroAssembler_sparc.hpp ! src/hotspot/cpu/sparc/nativeInst_sparc.cpp ! src/hotspot/cpu/sparc/sparc.ad ! src/hotspot/cpu/sparc/stubGenerator_sparc.cpp ! src/hotspot/cpu/sparc/templateInterpreterGenerator_sparc.cpp ! src/hotspot/cpu/sparc/templateTable_sparc.cpp ! src/hotspot/cpu/x86/assembler_x86.cpp ! src/hotspot/cpu/x86/assembler_x86.hpp ! src/hotspot/cpu/x86/c1_CodeStubs_x86.cpp ! src/hotspot/cpu/x86/c1_FrameMap_x86.hpp ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp ! src/hotspot/cpu/x86/c1_LIRAssembler_x86.hpp ! src/hotspot/cpu/x86/c1_LIRGenerator_x86.cpp ! src/hotspot/cpu/x86/c1_Runtime1_x86.cpp ! src/hotspot/cpu/x86/c2_globals_x86.hpp ! src/hotspot/cpu/x86/macroAssembler_x86.cpp ! src/hotspot/cpu/x86/macroAssembler_x86.hpp ! src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp ! src/hotspot/cpu/x86/stubGenerator_x86_64.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.hpp ! src/hotspot/cpu/x86/stubRoutines_x86_64.cpp ! src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp ! src/hotspot/cpu/x86/templateTable_x86.cpp ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/cpu/x86/x86_64.ad ! src/hotspot/os/linux/globals_linux.hpp ! src/hotspot/os/solaris/globals_solaris.hpp + src/hotspot/os_cpu/linux_x86/zAddress_linux_x86.cpp + src/hotspot/os_cpu/linux_x86/zAddress_linux_x86.inline.hpp + src/hotspot/os_cpu/linux_x86/zBackingFile_linux_x86.cpp + src/hotspot/os_cpu/linux_x86/zBackingFile_linux_x86.hpp + src/hotspot/os_cpu/linux_x86/zBackingPath_linux_x86.cpp + src/hotspot/os_cpu/linux_x86/zBackingPath_linux_x86.hpp + src/hotspot/os_cpu/linux_x86/zGlobals_linux_x86.cpp + src/hotspot/os_cpu/linux_x86/zGlobals_linux_x86.hpp + src/hotspot/os_cpu/linux_x86/zLargePages_linux_x86.cpp + src/hotspot/os_cpu/linux_x86/zNUMA_linux_x86.cpp + src/hotspot/os_cpu/linux_x86/zPhysicalMemoryBacking_linux_x86.cpp + src/hotspot/os_cpu/linux_x86/zPhysicalMemoryBacking_linux_x86.hpp + src/hotspot/os_cpu/linux_x86/zVirtualMemory_linux_x86.cpp + src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.cpp + src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp + src/hotspot/os_cpu/solaris_sparc/zGlobals_solaris_sparc.cpp + src/hotspot/os_cpu/solaris_sparc/zGlobals_solaris_sparc.hpp + src/hotspot/os_cpu/solaris_sparc/zLargePages_solaris_sparc.cpp + src/hotspot/os_cpu/solaris_sparc/zNUMA_solaris_sparc.cpp + src/hotspot/os_cpu/solaris_sparc/zPhysicalMemoryBacking_solaris_sparc.cpp + src/hotspot/os_cpu/solaris_sparc/zPhysicalMemoryBacking_solaris_sparc.hpp + src/hotspot/os_cpu/solaris_sparc/zVirtualMemory_solaris_sparc.cpp ! src/hotspot/share/adlc/formssel.cpp ! src/hotspot/share/adlc/formssel.hpp ! src/hotspot/share/asm/codeBuffer.cpp ! src/hotspot/share/c1/c1_CodeStubs.hpp ! src/hotspot/share/c1/c1_LIR.cpp ! src/hotspot/share/c1/c1_LIR.hpp ! src/hotspot/share/c1/c1_LIRAssembler.cpp ! src/hotspot/share/c1/c1_LIRGenerator.cpp ! src/hotspot/share/c1/c1_LIRGenerator.hpp ! src/hotspot/share/c1/c1_Runtime1.cpp ! src/hotspot/share/c1/c1_Runtime1.hpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/stringTable.cpp ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/classfile/vmSymbols.cpp ! src/hotspot/share/code/nmethod.cpp ! src/hotspot/share/compiler/compileTask.cpp ! src/hotspot/share/compiler/compilerDirectives.hpp ! src/hotspot/share/compiler/oopMap.cpp ! src/hotspot/share/gc/shared/barrierSetConfig.hpp ! src/hotspot/share/gc/shared/barrierSetConfig.inline.hpp ! src/hotspot/share/gc/shared/collectedHeap.hpp ! src/hotspot/share/gc/shared/gcArguments.cpp ! src/hotspot/share/gc/shared/gcCause.cpp ! src/hotspot/share/gc/shared/gcCause.hpp ! src/hotspot/share/gc/shared/gcName.hpp ! src/hotspot/share/gc/shared/specialized_oop_closures.hpp + src/hotspot/share/gc/z/zAddress.cpp + src/hotspot/share/gc/z/zAddress.hpp + src/hotspot/share/gc/z/zAddress.inline.hpp + src/hotspot/share/gc/z/zAddressRangeMap.hpp + src/hotspot/share/gc/z/zAddressRangeMap.inline.hpp + src/hotspot/share/gc/z/zAllocationFlags.hpp + src/hotspot/share/gc/z/zArguments.cpp + src/hotspot/share/gc/z/zArguments.hpp + src/hotspot/share/gc/z/zArray.hpp + src/hotspot/share/gc/z/zArray.inline.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/zBarrierSet.hpp + src/hotspot/share/gc/z/zBarrierSet.inline.hpp + src/hotspot/share/gc/z/zBitField.hpp + src/hotspot/share/gc/z/zBitMap.hpp + src/hotspot/share/gc/z/zBitMap.inline.hpp + src/hotspot/share/gc/z/zCPU.cpp + src/hotspot/share/gc/z/zCPU.hpp + src/hotspot/share/gc/z/zCollectedHeap.cpp + src/hotspot/share/gc/z/zCollectedHeap.hpp + src/hotspot/share/gc/z/zCollectorPolicy.cpp + src/hotspot/share/gc/z/zCollectorPolicy.hpp + src/hotspot/share/gc/z/zDebug.gdb + src/hotspot/share/gc/z/zDirector.cpp + src/hotspot/share/gc/z/zDirector.hpp + src/hotspot/share/gc/z/zDriver.cpp + src/hotspot/share/gc/z/zDriver.hpp + src/hotspot/share/gc/z/zErrno.cpp + src/hotspot/share/gc/z/zErrno.hpp + src/hotspot/share/gc/z/zForwardingTable.cpp + src/hotspot/share/gc/z/zForwardingTable.hpp + src/hotspot/share/gc/z/zForwardingTable.inline.hpp + src/hotspot/share/gc/z/zForwardingTableEntry.hpp + src/hotspot/share/gc/z/zFuture.hpp + src/hotspot/share/gc/z/zFuture.inline.hpp + src/hotspot/share/gc/z/zGlobals.cpp + src/hotspot/share/gc/z/zGlobals.hpp + src/hotspot/share/gc/z/zHash.hpp + src/hotspot/share/gc/z/zHash.inline.hpp + src/hotspot/share/gc/z/zHeap.cpp + src/hotspot/share/gc/z/zHeap.hpp + src/hotspot/share/gc/z/zHeap.inline.hpp + src/hotspot/share/gc/z/zHeapIterator.cpp + src/hotspot/share/gc/z/zHeapIterator.hpp + src/hotspot/share/gc/z/zInitialize.cpp + src/hotspot/share/gc/z/zInitialize.hpp + src/hotspot/share/gc/z/zLargePages.cpp + src/hotspot/share/gc/z/zLargePages.hpp + src/hotspot/share/gc/z/zLargePages.inline.hpp + src/hotspot/share/gc/z/zList.hpp + src/hotspot/share/gc/z/zList.inline.hpp + src/hotspot/share/gc/z/zLiveMap.cpp + src/hotspot/share/gc/z/zLiveMap.hpp + src/hotspot/share/gc/z/zLiveMap.inline.hpp + src/hotspot/share/gc/z/zLock.hpp + src/hotspot/share/gc/z/zLock.inline.hpp + src/hotspot/share/gc/z/zMark.cpp + src/hotspot/share/gc/z/zMark.hpp + src/hotspot/share/gc/z/zMark.inline.hpp + src/hotspot/share/gc/z/zMarkCache.cpp + src/hotspot/share/gc/z/zMarkCache.hpp + src/hotspot/share/gc/z/zMarkCache.inline.hpp + src/hotspot/share/gc/z/zMarkStack.cpp + src/hotspot/share/gc/z/zMarkStack.hpp + src/hotspot/share/gc/z/zMarkStack.inline.hpp + src/hotspot/share/gc/z/zMarkStackEntry.hpp + src/hotspot/share/gc/z/zMarkTerminate.hpp + src/hotspot/share/gc/z/zMarkTerminate.inline.hpp + src/hotspot/share/gc/z/zMemory.cpp + src/hotspot/share/gc/z/zMemory.hpp + src/hotspot/share/gc/z/zMemory.inline.hpp + src/hotspot/share/gc/z/zMessagePort.hpp + src/hotspot/share/gc/z/zMessagePort.inline.hpp + src/hotspot/share/gc/z/zMetaspace.cpp + src/hotspot/share/gc/z/zMetaspace.hpp + src/hotspot/share/gc/z/zMetronome.cpp + src/hotspot/share/gc/z/zMetronome.hpp + src/hotspot/share/gc/z/zNMethodTable.cpp + src/hotspot/share/gc/z/zNMethodTable.hpp + src/hotspot/share/gc/z/zNMethodTableEntry.hpp + src/hotspot/share/gc/z/zNUMA.cpp + src/hotspot/share/gc/z/zNUMA.hpp + src/hotspot/share/gc/z/zObjectAllocator.cpp + src/hotspot/share/gc/z/zObjectAllocator.hpp + src/hotspot/share/gc/z/zOop.hpp + src/hotspot/share/gc/z/zOop.inline.hpp + src/hotspot/share/gc/z/zOopClosures.cpp + src/hotspot/share/gc/z/zOopClosures.hpp + src/hotspot/share/gc/z/zOopClosures.inline.hpp + src/hotspot/share/gc/z/zOopClosures.specialized.hpp + src/hotspot/share/gc/z/zPage.cpp + src/hotspot/share/gc/z/zPage.hpp + src/hotspot/share/gc/z/zPage.inline.hpp + src/hotspot/share/gc/z/zPageAllocator.cpp + src/hotspot/share/gc/z/zPageAllocator.hpp + src/hotspot/share/gc/z/zPageCache.cpp + src/hotspot/share/gc/z/zPageCache.hpp + src/hotspot/share/gc/z/zPageCache.inline.hpp + src/hotspot/share/gc/z/zPageTable.cpp + src/hotspot/share/gc/z/zPageTable.hpp + src/hotspot/share/gc/z/zPageTable.inline.hpp + src/hotspot/share/gc/z/zPageTableEntry.hpp + src/hotspot/share/gc/z/zPhysicalMemory.cpp + src/hotspot/share/gc/z/zPhysicalMemory.hpp + src/hotspot/share/gc/z/zPhysicalMemory.inline.hpp + src/hotspot/share/gc/z/zPreMappedMemory.cpp + src/hotspot/share/gc/z/zPreMappedMemory.hpp + src/hotspot/share/gc/z/zPreMappedMemory.inline.hpp + src/hotspot/share/gc/z/zReferenceProcessor.cpp + src/hotspot/share/gc/z/zReferenceProcessor.hpp + src/hotspot/share/gc/z/zRelocate.cpp + src/hotspot/share/gc/z/zRelocate.hpp + src/hotspot/share/gc/z/zRelocationSet.cpp + src/hotspot/share/gc/z/zRelocationSet.hpp + src/hotspot/share/gc/z/zRelocationSet.inline.hpp + src/hotspot/share/gc/z/zRelocationSetSelector.cpp + src/hotspot/share/gc/z/zRelocationSetSelector.hpp + src/hotspot/share/gc/z/zResurrection.cpp + src/hotspot/share/gc/z/zResurrection.hpp + src/hotspot/share/gc/z/zResurrection.inline.hpp + src/hotspot/share/gc/z/zRootsIterator.cpp + src/hotspot/share/gc/z/zRootsIterator.hpp + src/hotspot/share/gc/z/zServiceability.cpp + src/hotspot/share/gc/z/zServiceability.hpp + src/hotspot/share/gc/z/zStat.cpp + src/hotspot/share/gc/z/zStat.hpp + src/hotspot/share/gc/z/zTask.cpp + src/hotspot/share/gc/z/zTask.hpp + src/hotspot/share/gc/z/zThread.cpp + src/hotspot/share/gc/z/zThread.hpp + src/hotspot/share/gc/z/zTracer.cpp + src/hotspot/share/gc/z/zTracer.hpp + src/hotspot/share/gc/z/zTracer.inline.hpp + src/hotspot/share/gc/z/zUtils.cpp + src/hotspot/share/gc/z/zUtils.hpp + src/hotspot/share/gc/z/zUtils.inline.hpp + src/hotspot/share/gc/z/zValue.hpp + src/hotspot/share/gc/z/zVirtualMemory.cpp + src/hotspot/share/gc/z/zVirtualMemory.hpp + src/hotspot/share/gc/z/zVirtualMemory.inline.hpp + src/hotspot/share/gc/z/zWorkers.cpp + src/hotspot/share/gc/z/zWorkers.hpp + src/hotspot/share/gc/z/zWorkers.inline.hpp ! src/hotspot/share/logging/logPrefix.hpp ! src/hotspot/share/logging/logTag.hpp ! src/hotspot/share/memory/metaspace.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceRefKlass.inline.hpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp ! src/hotspot/share/opto/arraycopynode.cpp ! src/hotspot/share/opto/c2_globals.hpp ! src/hotspot/share/opto/classes.hpp ! src/hotspot/share/opto/compile.cpp ! src/hotspot/share/opto/compile.hpp ! src/hotspot/share/opto/connode.hpp ! src/hotspot/share/opto/escape.cpp ! src/hotspot/share/opto/gcm.cpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/graphKit.hpp ! src/hotspot/share/opto/idealGraphPrinter.cpp ! src/hotspot/share/opto/idealKit.cpp ! src/hotspot/share/opto/idealKit.hpp ! src/hotspot/share/opto/lcm.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/loopPredicate.cpp ! src/hotspot/share/opto/loopTransform.cpp ! src/hotspot/share/opto/loopnode.cpp ! src/hotspot/share/opto/loopnode.hpp ! src/hotspot/share/opto/loopopts.cpp ! src/hotspot/share/opto/macro.cpp ! src/hotspot/share/opto/macro.hpp ! src/hotspot/share/opto/macroArrayCopy.cpp ! src/hotspot/share/opto/matcher.cpp ! src/hotspot/share/opto/memnode.cpp ! src/hotspot/share/opto/memnode.hpp ! src/hotspot/share/opto/node.cpp ! src/hotspot/share/opto/node.hpp ! src/hotspot/share/opto/parse1.cpp ! src/hotspot/share/opto/parse2.cpp ! src/hotspot/share/opto/parse3.cpp ! src/hotspot/share/opto/phaseX.cpp ! src/hotspot/share/opto/phaseX.hpp ! src/hotspot/share/opto/phasetype.hpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/opto/type.cpp ! src/hotspot/share/opto/type.hpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/prims/jvmtiTagMap.cpp ! src/hotspot/share/prims/whitebox.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/jniHandles.cpp ! src/hotspot/share/runtime/jniHandles.hpp ! src/hotspot/share/runtime/sharedRuntime.cpp ! src/hotspot/share/runtime/sharedRuntime.hpp ! src/hotspot/share/runtime/stackValue.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/hotspot/share/runtime/vm_operations.hpp ! src/hotspot/share/services/heapDumper.cpp ! src/hotspot/share/trace/traceevents.xml ! src/hotspot/share/trace/tracetypes.xml ! src/hotspot/share/utilities/hashtable.cpp ! src/hotspot/share/utilities/hashtable.hpp ! src/hotspot/share/utilities/vmError.cpp + src/java.base/share/legal/c-libutl.md + test/hotspot/gtest/gc/z/test_zAddress.cpp + test/hotspot/gtest/gc/z/test_zArray.cpp + test/hotspot/gtest/gc/z/test_zBitField.cpp + test/hotspot/gtest/gc/z/test_zBitMap.cpp + test/hotspot/gtest/gc/z/test_zForwardingTable.cpp + test/hotspot/gtest/gc/z/test_zList.cpp + test/hotspot/gtest/gc/z/test_zLiveMap.cpp + test/hotspot/gtest/gc/z/test_zPhysicalMemory.cpp + test/hotspot/gtest/gc/z/test_zUtils.cpp + test/hotspot/gtest/gc/z/test_zVirtualMemory.cpp + test/hotspot/jtreg/compiler/gcbarriers/UnsafeIntrinsicsTest.java ! test/hotspot/jtreg/compiler/unsafe/JdkInternalMiscUnsafeAccessTestObject.java ! test/lib/sun/hotspot/gc/GC.java From per.liden at oracle.com Wed Jan 17 09:29:06 2018 From: per.liden at oracle.com (Per Liden) Date: Wed, 17 Jan 2018 10:29:06 +0100 Subject: Repository rebased Message-ID: Hi all, FYI, I just rebased the zgc/zgc repo on to the latest jdk/hs. Note that we're using a kind of rebase-model rather then the pure merge-model for zgc/zgc. This means we always keep the ZGC pages on top of what's upstream. When we rebase we also tend to collapse patches into the ZGC master patch and bump its version number. We've used this model through out the ZGC development, and it's been working well for us. It makes it easy to get an overview of what code ZGC is touching and it makes it easier for us to maintain a clear and up-to-date set of "upstream" patches. The full history for all patches is of course still available in the old (and now merged) branches in hg. You don't need to do anything special, just do the normal "hg pull -u" to get the latest stuff. There's no history re-write happening on the server side or anything like that (we're not doing that kind of rebase). cheers, Per From per.liden at oracle.com Wed Jan 17 11:47:11 2018 From: per.liden at oracle.com (Per Liden) Date: Wed, 17 Jan 2018 12:47:11 +0100 Subject: Repository rebased In-Reply-To: References: Message-ID: <43e89c00-918b-7a46-b2cd-b7a74d9a4f21@oracle.com> On 01/17/2018 10:29 AM, Per Liden wrote: > Hi all, > > FYI, I just rebased the zgc/zgc repo on to the latest jdk/hs. Note that > we're using a kind of rebase-model rather then the pure merge-model for > zgc/zgc. This means we always keep the ZGC pages on top of what's s/pages/patches/ > upstream. When we rebase we also tend to collapse patches into the ZGC > master patch and bump its version number. > > We've used this model through out the ZGC development, and it's been > working well for us. It makes it easy to get an overview of what code > ZGC is touching and it makes it easier for us to maintain a clear and > up-to-date set of "upstream" patches. The full history for all patches > is of course still available in the old (and now merged) branches in hg. > > You don't need to do anything special, just do the normal "hg pull -u" > to get the latest stuff. There's no history re-write happening on the > server side or anything like that (we're not doing that kind of rebase). > > cheers, > Per From stefan.karlsson at oracle.com Wed Jan 17 12:57:55 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Wed, 17 Jan 2018 13:57:55 +0100 Subject: SA for ZGC In-Reply-To: References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> Message-ID: <57fe5e83-0e27-6033-c9a5-066e047983d3@oracle.com> Hi Yasumasa, On 2018-01-17 03:51, Yasumasa Suenaga wrote: > Hi Stefan, > > I uploaded new webrev: > http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.03/ I created a delta diff for your patch: http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff > > I removed dependencies to Linux specific code in it. Thanks! I've made some unifications, cleanups, and fixes to the patch: http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04.delta http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04 Notably: 1) Got rid of the duplicated calculations of constants and instead read the values from the database. 2) There's bug in your code: http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff/src/hotspot/share/runtime/vmStructs.cpp.udiff.html + VM_LONG_CONSTANTS_Z(GENERATE_VM_INT_CONSTANT_ENTRY, + GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY) Should be using the _LONG_ versions. However, that doesn't solve the bug, because there's another bug in the SA agent that truncates longs to ints. I created a bug report for that: https://bugs.openjdk.java.net/browse/JDK-8195613 3) There's a bug in the proposed ZAddress.address. If value is 0, then the orWithMask will throw an NPE. I've changed the code to manipulate the value, and as a last step convert it with ZOop.to_address. Thanks, StefanK > > > Thanks, > > Yasumasa > > > > 2018-01-16 20:00 GMT+09:00 Yasumasa Suenaga : >>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. >> >> Sorry, I forgot to run GC.run jcmd. I had a error. >> I will look it later. >> >> >> Yasumasa >> >> >> 2018-01-16 19:57 GMT+09:00 Yasumasa Suenaga : >>> Hi Stefan, >>> >>> I've restored your change and use VM.getOS() and getCPU() in new webrev: >>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.02/ >>> >>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>> >>> >>> 2018-01-16 18:26 GMT+09:00 Stefan Karlsson : >>>> Hi Yasumas, >>>> >>>> On 2018-01-16 08:14, Yasumasa Suenaga wrote: >>>>> >>>>> Hi Stefan, >>>>> >>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>>>> at >>>>>>> first? >>>>>> >>>>>> >>>>>> >>>>>> I'll let Jini handle that bug. >>>>> >>>>> >>>>> Thanks! >>>>> I watch this bug. >>>>> >>>>> >>>>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>>>> See: >>>>>> >>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>> >>>>> >>>>> I think we can use getOS() and getCPU() in VM class: >>>>> >>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 >>>>> >>>>> >>>>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>>> ZCollectedHeap.oopAddressDescription: >>>>>> >>>>>> public String oopAddressDescription(OopHandle handle) { >>>>>> Address origOop = ZOop.to_address(handle); >>>>>> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>>>> >>>>>> We either need to restore the previous implementation, or we need to fix >>>>>> oopAddressDescription. >>>>> >>>>> >>>>> OK, I will keep your original ZOop.java and related implementation. >>>> >>>> >>>> OK. We can revisit this later if we do decide to clean this up. >>>> >>>>> >>>>> >>>>>>> I added these values to constant values in VMStructs. >>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> This is a bug, and causes my test to fail. >>>>>> >>>>>> The constants values in VMStructs are for constants in the C++ code. Some >>>>>> of >>>>>> the values you changed are initialized during the VM initializations, and >>>>>> some are changed throughout the run of the VM. >>>>> >>>>> >>>>> I guess we can use HotSpotVMAddress as JVMCI: >>>>> >>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 >>>>> >>>>> However this symbol is not exported. >>>>> We need to add `gHotSpotVMAddress` to vmStructs.hpp . >>>>> >>>>> BTW, do ZGC team have a plan to refactor zGlobals.hpp? >>>> >>>> >>>> >>>> Currently, we don't have any plans to do that. >>>> >>>>> AFAICS HotSpot does not have global variables (not `const` value). >>>>> IMHO we can refactor zGlobals to the C++ class which extends AllStatic. >>>>> We can use VMStructs directly if we do so. >>>> >>>> >>>> HotSpot actually does have global variables. You'll find some of them in >>>> globalDefinitions.hpp. For example: heapOopSize, MinObjAlignment, and >>>> OopEncodingHeapMax. >>>> >>>> The SA seems to duplicate the calculations of these values instead of >>>> reading the actual values from the process/core. >>>> >>>> I'm a bit reluctant to change the ZGC code style just to adapt to the SA >>>> agent. Currently, I think it's fine to have an extra layer in vmStructs_z >>>> until the SA agent gets support for global variables. >>>> >>>> Thanks, >>>> StefanK >>>> >>>> >>>>> >>>>> >>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>>>> faster >>>>>> with that flag. >>>>> >>>>> >>>>> Thanks! >>>>> After all concerns in above is resolved, I will test it. >>>>> >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> 2018-01-15 17:48 GMT+09:00 Stefan Karlsson : >>>>>> >>>>>> Hi Yasumasa, >>>>>> >>>>>> On 2018-01-13 04:39, Yasumasa Suenaga wrote: >>>>>>> >>>>>>> >>>>>>> Hi Stefan, Per, >>>>>>> >>>>>>> Thank you for your comments and patches! >>>>>>> I uploaded new webrev: >>>>>>> >>>>>>> all: >>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >>>>>>> >>>>>>> diff from Stefan's patch: >>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >>>>>>> >>>>>>> >>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>>>> at >>>>>>> first? >>>>>> >>>>>> >>>>>> >>>>>> I'll let Jini handle that bug. >>>>>> >>>>>>> >>>>>>> >>>>>>>> Just one comment, in ZPage.java: >>>>>>>> >>>>>>>> 91 // There's no relocate operation in the SA. Simply use >>>>>>>> the >>>>>>>> from address and hope for the best. >>>>>>>> 92 return from; >>>>>>>> >>>>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>>>> instead. >>>>>>> >>>>>>> >>>>>>> >>>>>>> I've fixed. >>>>>>> >>>>>>> >>>>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>>>> abstraction in place. >>>>>>> >>>>>>> >>>>>>> >>>>>>> I added some constant values to vmStructs_z.hpp . So we can remove >>>>>>> Linux-specific values from SA Java sources. >>>>>> >>>>>> >>>>>> >>>>>> OK. Sounds like the right thing to do for true constants. More about this >>>>>> later. >>>>>> >>>>>>> But I've not remove address() from ZAddress.java because I'm not sure >>>>>>> why >>>>>>> this method is needed. >>>>>> >>>>>> >>>>>> >>>>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>>>> See: >>>>>> >>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>>>> you read >>>>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>>> >>>>>>> >>>>>>> >>>>>>> I changed ZOop#to_address() which have one argument which type is >>>>>>> Address. >>>>>>> I guess this change is type-safe. >>>>>> >>>>>> >>>>>> >>>>>> My version of ZOop.to_address converted a OopHandle into an non-OopHandle >>>>>> Address. Without it you get an UnsupportedOperationException when you try >>>>>> to >>>>>> do bit-manipulation on the OopHandle. From LinuxOopHandle: >>>>>> public Address addOffsetTo (long offset) throws >>>>>> UnsupportedOperationException { >>>>>> throw new UnsupportedOperationException("addOffsetTo not applicable >>>>>> to >>>>>> OopHandles (interior object pointers not allowed)"); >>>>>> } >>>>>> >>>>>> >>>>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>>> ZCollectedHeap.oopAddressDescription: >>>>>> >>>>>> public String oopAddressDescription(OopHandle handle) { >>>>>> Address origOop = ZOop.to_address(handle); >>>>>> Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>>>> >>>>>> We either need to restore the previous implementation, or we need to fix >>>>>> oopAddressDescription. >>>>>> >>>>>> My version of ZOop.to_address performed bit manipulations just to ensure >>>>>> that we never got a all-zero value. You have left the >>>>>> andWithMask(REMOVE_MSB_MASK), which isn't necessary when you didn't add >>>>>> the >>>>>> bit in the first place. >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>>>> but we can think about unifying our patches. >>>>>>> >>>>>>> >>>>>>> >>>>>>> I think the classes which extends VMObject should be instantiated via >>>>>>> VMObjectFactory#newObject() because other SA codes seems to be so. >>>>>>> I changed to use this factory method as possible. >>>>>> >>>>>> >>>>>> >>>>>> OK. >>>>>> >>>>>>> >>>>>>> >>>>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>>>> the >>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>>>> this? >>>>>>> >>>>>>> >>>>>>> >>>>>>> I added these values to constant values in VMStructs. >>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> This is a bug, and causes my test to fail. >>>>>> >>>>>> The constants values in VMStructs are for constants in the C++ code. Some >>>>>> of >>>>>> the values you changed are initialized during the VM initializations, and >>>>>> some are changed throughout the run of the VM. >>>>>> >>>>>>> >>>>>>> >>>>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>>>> >>>>>>>>> and then continuously dumping the threads: >>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>> >>>>>>> >>>>>>> >>>>>>> Sorry, I do not have SPECjbb. >>>>>>> Can you share the result? >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> You can use any program that starts a number of threads an continuously >>>>>> run >>>>>> GCs. >>>>>> >>>>>>> >>>>>>> I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple >>>>>>> Java app. >>>>>>> This change works fine on my Linux x64 box. >>>>>> >>>>>> >>>>>> >>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>>>> faster >>>>>> with that flag. >>>>>> >>>>>> This reproduces the problem: >>>>>> >>>>>> public class HelloSleep { >>>>>> public static void main(String... args) throws Exception { >>>>>> Thread.sleep(100000000000000L); >>>>>> } >>>>>> } >>>>>> >>>>>> DIR=~/hg/z/build/release/jdk >>>>>> $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & >>>>>> $DIR/bin/jcmd $! GC.run >>>>>> echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ >>>>>> >>>>>> Thanks, >>>>>> StefanK >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> On 2018/01/11 21:40, Per Liden wrote: >>>>>>>> >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> Hi Yasumasa, >>>>>>>>> >>>>>>>>> Here's my first stab at adding the ZGC load barries to the SA: >>>>>>>>> >>>>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Just one comment, in ZPage.java: >>>>>>>> >>>>>>>> 91 // There's no relocate operation in the SA. Simply use >>>>>>>> the >>>>>>>> from address and hope for the best. >>>>>>>> 92 return from; >>>>>>>> >>>>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>>>> instead. >>>>>>>> >>>>>>>> cheers, >>>>>>>> Per >>>>>>>> >>>>>>>>> >>>>>>>>> I find it unfortunate that we have to duplicate the C++ code into >>>>>>>>> Java, >>>>>>>>> to get this to work. But it is what it is. >>>>>>>>> >>>>>>>>> Some comments about the code: >>>>>>>>> >>>>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>>>> abstraction in place. >>>>>>>>> >>>>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>>>> you read >>>>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>>>>> >>>>>>>>> 3) I use the ZGC weak barrier, since the SA agent only needs to be >>>>>>>>> able >>>>>>>>> to access the Objects, not mark them. Which is what the weak barriers >>>>>>>>> provide. >>>>>>>>> >>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>>>> but we can think about unifying our patches. >>>>>>>>> >>>>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>>>> the >>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>>>> this? >>>>>>>>> >>>>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>>>> >>>>>>>>> and then continuously dumping the threads: >>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>>> >>>>>>>>> >>>>>>>>> Cheers, >>>>>>>>> StefanK >>>>>>>>> >>>>>>>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hi Stefan, >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> Let me try to create an initial prototype for load barriers in the >>>>>>>>>>> SA >>>>>>>>>>> case and see where this takes us. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Sure! >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>>>> SA: >>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, I didn't know that. >>>>>>>>>> I hope this issue will be fixed soon :-) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>> >>>>>>>>>>> Thanks for your contribution! >>>>>>>>>>> >>>>>>>>>>> I tested your patch together with jhsdb hsdb and immediately hit >>>>>>>>>>> problems because of the lack of load barriers in the SA code. Let me >>>>>>>>>>> try to >>>>>>>>>>> create an initial prototype for load barriers in the SA case and see >>>>>>>>>>> where >>>>>>>>>>> this takes us. >>>>>>>>>>> >>>>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>>>> SA: >>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> StefanK >>>>>>>>>>> >>>>>>>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks Per! >>>>>>>>>>>> >>>>>>>>>>>> I'm waiting for comments and sponsorship. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>> >>>>>>>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>>>>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>>>>>>>>> command is executed. >>>>>>>>>>>>>> >>>>>>>>>>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>>>>>>>>>> related classes for >>>>>>>>>>>>>> SA as this webrev: >>>>>>>>>>>>>> >>>>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>>>>>>> >>>>>>>>>>>>>> After applying this patch, we can use `universe` command on >>>>>>>>>>>>>> CLHSDB. >>>>>>>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>>>>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>>>>>>> >>>>>>>>>>>>> cheers, >>>>>>>>>>>>> Per >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>> >>>>>> >>>> From yasuenag at gmail.com Wed Jan 17 14:00:11 2018 From: yasuenag at gmail.com (Yasumasa Suenaga) Date: Wed, 17 Jan 2018 23:00:11 +0900 Subject: SA for ZGC In-Reply-To: <57fe5e83-0e27-6033-c9a5-066e047983d3@oracle.com> References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> <57fe5e83-0e27-6033-c9a5-066e047983d3@oracle.com> Message-ID: <1e7b9e3e-0c2a-f6ef-5aaf-330a09655f20@gmail.com> Hi Stefan, > I've made some unifications, cleanups, and fixes to the patch: > http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04.delta > http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04 Thanks! Just one nit: ZGlobals.java ``` 85 ZAddressOffsetBits = db.lookupLongConstant("ZAddressOffsetBits").longValue(); 86 ZAddressOffsetMask = db.lookupLongConstant("ZAddressOffsetMask").longValue(); 87 System.out.println("ZAddressOffsetMask: " + ZAddressOffsetMask); ``` Can we remove L87? > However, that doesn't solve the bug, because there's another bug in the SA agent that truncates longs to ints. I created a bug report for that: > > https://bugs.openjdk.java.net/browse/JDK-8195613 Thanks! I tried to use lookupLongConstant() to get const values in zGlobals.hpp , but I couldn't. I guess it caused by JDK-8195613. BTW, should we merge this SA change at first like JDK-8194737? Others looks good to me. Thanks, Yasumasa On 2018/01/17 21:57, Stefan Karlsson wrote: > Hi Yasumasa, > > On 2018-01-17 03:51, Yasumasa Suenaga wrote: >> Hi Stefan, >> >> I uploaded new webrev: >> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.03/ > > I created a delta diff for your patch: > http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff > >> >> I removed dependencies to Linux specific code in it. > > Thanks! > > I've made some unifications, cleanups, and fixes to the patch: > http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04.delta > http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04 > > Notably: > > 1) Got rid of the duplicated calculations of constants and instead read the values from the database. > > 2) There's bug in your code: > http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff/src/hotspot/share/runtime/vmStructs.cpp.udiff.html > > +? VM_LONG_CONSTANTS_Z(GENERATE_VM_INT_CONSTANT_ENTRY, > +????????????????????? GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY) > > Should be using the _LONG_ versions. > > However, that doesn't solve the bug, because there's another bug in the SA agent that truncates longs to ints. I created a bug report for that: > > https://bugs.openjdk.java.net/browse/JDK-8195613 > > 3) There's a bug in the proposed ZAddress.address. If value is 0, then the orWithMask will throw an NPE. I've changed the code to manipulate the value, and as a last step convert it with ZOop.to_address. > > Thanks, > StefanK > >> >> >> Thanks, >> >> Yasumasa >> >> >> >> 2018-01-16 20:00 GMT+09:00 Yasumasa Suenaga : >>>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. >>> >>> Sorry, I forgot to run GC.run jcmd. I had a error. >>> I will look it later. >>> >>> >>> Yasumasa >>> >>> >>> 2018-01-16 19:57 GMT+09:00 Yasumasa Suenaga : >>>> Hi Stefan, >>>> >>>> I've restored your change and use VM.getOS() and getCPU() in new webrev: >>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.02/ >>>> >>>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> >>>> >>>> >>>> >>>> 2018-01-16 18:26 GMT+09:00 Stefan Karlsson : >>>>> Hi Yasumas, >>>>> >>>>> On 2018-01-16 08:14, Yasumasa Suenaga wrote: >>>>>> >>>>>> Hi Stefan, >>>>>> >>>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>>>>> at >>>>>>>> first? >>>>>>> >>>>>>> >>>>>>> >>>>>>> I'll let Jini handle that bug. >>>>>> >>>>>> >>>>>> Thanks! >>>>>> I watch this bug. >>>>>> >>>>>> >>>>>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>>>>> See: >>>>>>> >>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>>> >>>>>> >>>>>> I think we can use getOS() and getCPU() in VM class: >>>>>> >>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 >>>>>> >>>>>> >>>>>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>>>> ZCollectedHeap.oopAddressDescription: >>>>>>> >>>>>>> ????? public String oopAddressDescription(OopHandle handle) { >>>>>>> ????????? Address origOop = ZOop.to_address(handle); >>>>>>> ????????? Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>>>>> >>>>>>> We either need to restore the previous implementation, or we need to fix >>>>>>> oopAddressDescription. >>>>>> >>>>>> >>>>>> OK, I will keep your original ZOop.java and related implementation. >>>>> >>>>> >>>>> OK. We can revisit this later if we do decide to clean this up. >>>>> >>>>>> >>>>>> >>>>>>>> I added these values to constant values in VMStructs. >>>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> This is a bug, and causes my test to fail. >>>>>>> >>>>>>> The constants values in VMStructs are for constants in the C++ code. Some >>>>>>> of >>>>>>> the values you changed are initialized during the VM initializations, and >>>>>>> some are changed throughout the run of the VM. >>>>>> >>>>>> >>>>>> I guess we can use HotSpotVMAddress as JVMCI: >>>>>> >>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 >>>>>> >>>>>> However this symbol is not exported. >>>>>> We need to add `gHotSpotVMAddress` to vmStructs.hpp . >>>>>> >>>>>> BTW, do ZGC team have a plan to refactor zGlobals.hpp? >>>>> >>>>> >>>>> >>>>> Currently, we don't have any plans to do that. >>>>> >>>>>> AFAICS HotSpot does not have global variables (not `const` value). >>>>>> IMHO we can refactor zGlobals to the C++ class which extends AllStatic. >>>>>> We can use VMStructs directly if we do so. >>>>> >>>>> >>>>> HotSpot actually does have global variables. You'll find some of them in >>>>> globalDefinitions.hpp. For example: heapOopSize, MinObjAlignment, and >>>>> OopEncodingHeapMax. >>>>> >>>>> The SA seems to duplicate the calculations of these values instead of >>>>> reading the actual values from the process/core. >>>>> >>>>> I'm a bit reluctant to change the ZGC code style just to adapt to the SA >>>>> agent. Currently, I think it's fine to have an extra layer in vmStructs_z >>>>> until the SA agent gets support for global variables. >>>>> >>>>> Thanks, >>>>> StefanK >>>>> >>>>> >>>>>> >>>>>> >>>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>>>>> faster >>>>>>> with that flag. >>>>>> >>>>>> >>>>>> Thanks! >>>>>> After all concerns in above is resolved, I will test it. >>>>>> >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> 2018-01-15 17:48 GMT+09:00 Stefan Karlsson : >>>>>>> >>>>>>> Hi Yasumasa, >>>>>>> >>>>>>> On 2018-01-13 04:39, Yasumasa Suenaga wrote: >>>>>>>> >>>>>>>> >>>>>>>> Hi Stefan, Per, >>>>>>>> >>>>>>>> Thank you for your comments and patches! >>>>>>>> I uploaded new webrev: >>>>>>>> >>>>>>>> ???? all: >>>>>>>> ?????? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >>>>>>>> >>>>>>>> ???? diff from Stefan's patch: >>>>>>>> ?????? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >>>>>>>> >>>>>>>> >>>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>>>>> at >>>>>>>> first? >>>>>>> >>>>>>> >>>>>>> >>>>>>> I'll let Jini handle that bug. >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> Just one comment, in ZPage.java: >>>>>>>>> >>>>>>>>> ???? 91???????? // There's no relocate operation in the SA. Simply use >>>>>>>>> the >>>>>>>>> from address and hope for the best. >>>>>>>>> ???? 92???????? return from; >>>>>>>>> >>>>>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>>>>> instead. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I've fixed. >>>>>>>> >>>>>>>> >>>>>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>>>>> abstraction in place. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I added some constant values to vmStructs_z.hpp . So we can remove >>>>>>>> Linux-specific values from SA Java sources. >>>>>>> >>>>>>> >>>>>>> >>>>>>> OK. Sounds like the right thing to do for true constants. More about this >>>>>>> later. >>>>>>> >>>>>>>> But I've not remove address() from ZAddress.java because I'm not sure >>>>>>>> why >>>>>>>> this method is needed. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>>>>> See: >>>>>>> >>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>>>>> you read >>>>>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I changed ZOop#to_address() which have one argument which type is >>>>>>>> Address. >>>>>>>> I guess this change is type-safe. >>>>>>> >>>>>>> >>>>>>> >>>>>>> My version of ZOop.to_address converted a OopHandle into an non-OopHandle >>>>>>> Address. Without it you get an UnsupportedOperationException when you try >>>>>>> to >>>>>>> do bit-manipulation on the OopHandle. From LinuxOopHandle: >>>>>>> ??? public Address??? addOffsetTo?????? (long offset) throws >>>>>>> UnsupportedOperationException { >>>>>>> ????? throw new UnsupportedOperationException("addOffsetTo not applicable >>>>>>> to >>>>>>> OopHandles (interior object pointers not allowed)"); >>>>>>> ??? } >>>>>>> >>>>>>> >>>>>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>>>> ZCollectedHeap.oopAddressDescription: >>>>>>> >>>>>>> ????? public String oopAddressDescription(OopHandle handle) { >>>>>>> ????????? Address origOop = ZOop.to_address(handle); >>>>>>> ????????? Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>>>>> >>>>>>> We either need to restore the previous implementation, or we need to fix >>>>>>> oopAddressDescription. >>>>>>> >>>>>>> My version of ZOop.to_address performed bit manipulations just to ensure >>>>>>> that we never got a all-zero value. You have left the >>>>>>> andWithMask(REMOVE_MSB_MASK), which isn't necessary when you didn't add >>>>>>> the >>>>>>> bit in the first place. >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>>>>> but we can think about unifying our patches. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I think the classes which extends VMObject should be instantiated via >>>>>>>> VMObjectFactory#newObject() because other SA codes seems to be so. >>>>>>>> I changed to use this factory method as possible. >>>>>>> >>>>>>> >>>>>>> >>>>>>> OK. >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>>>>> the >>>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>>>>> this? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I added these values to constant values in VMStructs. >>>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> This is a bug, and causes my test to fail. >>>>>>> >>>>>>> The constants values in VMStructs are for constants in the C++ code. Some >>>>>>> of >>>>>>> the values you changed are initialized during the VM initializations, and >>>>>>> some are changed throughout the run of the VM. >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>>>>> >>>>>>>>>> and then continuously dumping the threads: >>>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Sorry, I do not have SPECjbb. >>>>>>>> Can you share the result? >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> You can use any program that starts a number of threads an continuously >>>>>>> run >>>>>>> GCs. >>>>>>> >>>>>>>> >>>>>>>> I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple >>>>>>>> Java app. >>>>>>>> This change works fine on my Linux x64 box. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>>>>> faster >>>>>>> with that flag. >>>>>>> >>>>>>> This reproduces the problem: >>>>>>> >>>>>>> public class HelloSleep { >>>>>>> ??? public static void main(String...? args) throws Exception { >>>>>>> ????? Thread.sleep(100000000000000L); >>>>>>> ??? } >>>>>>> } >>>>>>> >>>>>>> DIR=~/hg/z/build/release/jdk >>>>>>> $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & >>>>>>> $DIR/bin/jcmd $! GC.run >>>>>>> echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ >>>>>>> >>>>>>> Thanks, >>>>>>> StefanK >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> On 2018/01/11 21:40, Per Liden wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hi Yasumasa, >>>>>>>>>> >>>>>>>>>> Here's my first stab at adding the ZGC load barries to the SA: >>>>>>>>>> >>>>>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Just one comment, in ZPage.java: >>>>>>>>> >>>>>>>>> ???? 91???????? // There's no relocate operation in the SA. Simply use >>>>>>>>> the >>>>>>>>> from address and hope for the best. >>>>>>>>> ???? 92???????? return from; >>>>>>>>> >>>>>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>>>>> instead. >>>>>>>>> >>>>>>>>> cheers, >>>>>>>>> Per >>>>>>>>> >>>>>>>>>> >>>>>>>>>> I find it unfortunate that we have to duplicate the C++ code into >>>>>>>>>> Java, >>>>>>>>>> to get this to work. But it is what it is. >>>>>>>>>> >>>>>>>>>> Some comments about the code: >>>>>>>>>> >>>>>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>>>>> abstraction in place. >>>>>>>>>> >>>>>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>>>>> you read >>>>>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>>>>>> >>>>>>>>>> 3) I use the ZGC weak barrier, since the SA agent only needs to be >>>>>>>>>> able >>>>>>>>>> to access the Objects, not mark them. Which is what the weak barriers >>>>>>>>>> provide. >>>>>>>>>> >>>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>>>>> but we can think about unifying our patches. >>>>>>>>>> >>>>>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>>>>> the >>>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>>>>> this? >>>>>>>>>> >>>>>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>>>>> >>>>>>>>>> and then continuously dumping the threads: >>>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Cheers, >>>>>>>>>> StefanK >>>>>>>>>> >>>>>>>>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hi Stefan, >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Let me try to create an initial prototype for load barriers in the >>>>>>>>>>>> SA >>>>>>>>>>>> case and see where this takes us. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Sure! >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>>>>> SA: >>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks, I didn't know that. >>>>>>>>>>> I hope this issue will be fixed soon :-) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>> >>>>>>>>>>>> Thanks for your contribution! >>>>>>>>>>>> >>>>>>>>>>>> I tested your patch together with jhsdb hsdb and immediately hit >>>>>>>>>>>> problems because of the lack of load barriers in the SA code. Let me >>>>>>>>>>>> try to >>>>>>>>>>>> create an initial prototype for load barriers in the SA case and see >>>>>>>>>>>> where >>>>>>>>>>>> this takes us. >>>>>>>>>>>> >>>>>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>>>>> SA: >>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> StefanK >>>>>>>>>>>> >>>>>>>>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks Per! >>>>>>>>>>>>> >>>>>>>>>>>>> I'm waiting for comments and sponsorship. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>>>>>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>>>>>>>>>> command is executed. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>>>>>>>>>>> related classes for >>>>>>>>>>>>>>> ??? SA as this webrev: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ???? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> After applying this patch, we can use `universe` command on >>>>>>>>>>>>>>> CLHSDB. >>>>>>>>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>>>>>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>>>>>>>> >>>>>>>>>>>>>> cheers, >>>>>>>>>>>>>> Per >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>> >>>>>>> >>>>> From stefan.karlsson at oracle.com Wed Jan 17 14:48:18 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Wed, 17 Jan 2018 15:48:18 +0100 Subject: SA for ZGC In-Reply-To: <1e7b9e3e-0c2a-f6ef-5aaf-330a09655f20@gmail.com> References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> <57fe5e83-0e27-6033-c9a5-066e047983d3@oracle.com> <1e7b9e3e-0c2a-f6ef-5aaf-330a09655f20@gmail.com> Message-ID: <9b9c76f7-9bea-38cd-dcf7-cc9c7d1147f4@oracle.com> Hi Yasumasa, On 2018-01-17 15:00, Yasumasa Suenaga wrote: > Hi Stefan, > >> I've made some unifications, cleanups, and fixes to the patch: >> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04.delta >> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04 > > Thanks! > Just one nit: > > ZGlobals.java > > ``` > ? 85???????? ZAddressOffsetBits = > db.lookupLongConstant("ZAddressOffsetBits").longValue(); > ? 86???????? ZAddressOffsetMask = > db.lookupLongConstant("ZAddressOffsetMask").longValue(); > ? 87???????? System.out.println("ZAddressOffsetMask: " + > ZAddressOffsetMask); > ``` > > Can we remove L87? Haha. Yes, thanks for noticing this. > > >> However, that doesn't solve the bug, because there's another bug in >> the SA agent that truncates longs to ints. I created a bug report for >> that: >> >> https://bugs.openjdk.java.net/browse/JDK-8195613 > > Thanks! > I tried to use lookupLongConstant() to get const values in zGlobals.hpp > , but I couldn't. > I guess it caused by JDK-8195613. > > BTW, should we merge this SA change at first like JDK-8194737? > I've folded fixes for JDK-8195613 and JDK-8194737 into this patch and will push this to zgc/zgc, so that we don't have to wait for the upstream patches to get pushed. > > Others looks good to me. Thanks and thanks for the help! StefanK > > > Thanks, > > Yasumasa > > > > On 2018/01/17 21:57, Stefan Karlsson wrote: >> Hi Yasumasa, >> >> On 2018-01-17 03:51, Yasumasa Suenaga wrote: >>> Hi Stefan, >>> >>> I uploaded new webrev: >>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.03/ >> >> I created a delta diff for your patch: >> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff >> >> >>> >>> I removed dependencies to Linux specific code in it. >> >> Thanks! >> >> I've made some unifications, cleanups, and fixes to the patch: >> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04.delta >> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04 >> >> Notably: >> >> 1) Got rid of the duplicated calculations of constants and instead >> read the values from the database. >> >> 2) There's bug in your code: >> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff/src/hotspot/share/runtime/vmStructs.cpp.udiff.html >> >> >> +? VM_LONG_CONSTANTS_Z(GENERATE_VM_INT_CONSTANT_ENTRY, >> +????????????????????? GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY) >> >> Should be using the _LONG_ versions. >> >> However, that doesn't solve the bug, because there's another bug in >> the SA agent that truncates longs to ints. I created a bug report for >> that: >> >> https://bugs.openjdk.java.net/browse/JDK-8195613 >> >> 3) There's a bug in the proposed ZAddress.address. If value is 0, then >> the orWithMask will throw an NPE. I've changed the code to manipulate >> the value, and as a last step convert it with ZOop.to_address. >> >> Thanks, >> StefanK >> >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>> >>> 2018-01-16 20:00 GMT+09:00 Yasumasa Suenaga : >>>>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it >>>>> works fine. >>>> >>>> Sorry, I forgot to run GC.run jcmd. I had a error. >>>> I will look it later. >>>> >>>> >>>> Yasumasa >>>> >>>> >>>> 2018-01-16 19:57 GMT+09:00 Yasumasa Suenaga : >>>>> Hi Stefan, >>>>> >>>>> I've restored your change and use VM.getOS() and getCPU() in new >>>>> webrev: >>>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.02/ >>>>> >>>>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it >>>>> works fine. >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> >>>>> >>>>> 2018-01-16 18:26 GMT+09:00 Stefan Karlsson >>>>> : >>>>>> Hi Yasumas, >>>>>> >>>>>> On 2018-01-16 08:14, Yasumasa Suenaga wrote: >>>>>>> >>>>>>> Hi Stefan, >>>>>>> >>>>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge >>>>>>>>> it to zgc >>>>>>>>> at >>>>>>>>> first? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I'll let Jini handle that bug. >>>>>>> >>>>>>> >>>>>>> Thanks! >>>>>>> I watch this bug. >>>>>>> >>>>>>> >>>>>>>> On SPARC we add a heap base when converting from "offsets" to >>>>>>>> "objects". >>>>>>>> See: >>>>>>>> >>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>>>>> >>>>>>> >>>>>>> >>>>>>> I think we can use getOS() and getCPU() in VM class: >>>>>>> >>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 >>>>>>> >>>>>>> >>>>>>> >>>>>>>> My first version of of ZCollectedHeap.oop_load_at passed an >>>>>>>> OopHandle to >>>>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>>>>> ZCollectedHeap.oopAddressDescription: >>>>>>>> >>>>>>>> ????? public String oopAddressDescription(OopHandle handle) { >>>>>>>> ????????? Address origOop = ZOop.to_address(handle); >>>>>>>> ????????? Address loadBarrieredOop = >>>>>>>> ZBarrier.weak_barrier(origOop); >>>>>>>> >>>>>>>> We either need to restore the previous implementation, or we >>>>>>>> need to fix >>>>>>>> oopAddressDescription. >>>>>>> >>>>>>> >>>>>>> OK, I will keep your original ZOop.java and related implementation. >>>>>> >>>>>> >>>>>> OK. We can revisit this later if we do decide to clean this up. >>>>>> >>>>>>> >>>>>>> >>>>>>>>> I added these values to constant values in VMStructs. >>>>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> This is a bug, and causes my test to fail. >>>>>>>> >>>>>>>> The constants values in VMStructs are for constants in the C++ >>>>>>>> code. Some >>>>>>>> of >>>>>>>> the values you changed are initialized during the VM >>>>>>>> initializations, and >>>>>>>> some are changed throughout the run of the VM. >>>>>>> >>>>>>> >>>>>>> I guess we can use HotSpotVMAddress as JVMCI: >>>>>>> >>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 >>>>>>> >>>>>>> >>>>>>> However this symbol is not exported. >>>>>>> We need to add `gHotSpotVMAddress` to vmStructs.hpp . >>>>>>> >>>>>>> BTW, do ZGC team have a plan to refactor zGlobals.hpp? >>>>>> >>>>>> >>>>>> >>>>>> Currently, we don't have any plans to do that. >>>>>> >>>>>>> AFAICS HotSpot does not have global variables (not `const` value). >>>>>>> IMHO we can refactor zGlobals to the C++ class which extends >>>>>>> AllStatic. >>>>>>> We can use VMStructs directly if we do so. >>>>>> >>>>>> >>>>>> HotSpot actually does have global variables. You'll find some of >>>>>> them in >>>>>> globalDefinitions.hpp. For example: heapOopSize, MinObjAlignment, and >>>>>> OopEncodingHeapMax. >>>>>> >>>>>> The SA seems to duplicate the calculations of these values instead of >>>>>> reading the actual values from the process/core. >>>>>> >>>>>> I'm a bit reluctant to change the ZGC code style just to adapt to >>>>>> the SA >>>>>> agent. Currently, I think it's fine to have an extra layer in >>>>>> vmStructs_z >>>>>> until the SA agent gets support for global variables. >>>>>> >>>>>> Thanks, >>>>>> StefanK >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray >>>>>>>> pointers >>>>>>>> faster >>>>>>>> with that flag. >>>>>>> >>>>>>> >>>>>>> Thanks! >>>>>>> After all concerns in above is resolved, I will test it. >>>>>>> >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> 2018-01-15 17:48 GMT+09:00 Stefan Karlsson >>>>>>> : >>>>>>>> >>>>>>>> Hi Yasumasa, >>>>>>>> >>>>>>>> On 2018-01-13 04:39, Yasumasa Suenaga wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> Hi Stefan, Per, >>>>>>>>> >>>>>>>>> Thank you for your comments and patches! >>>>>>>>> I uploaded new webrev: >>>>>>>>> >>>>>>>>> ???? all: >>>>>>>>> >>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >>>>>>>>> >>>>>>>>> ???? diff from Stefan's patch: >>>>>>>>> >>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >>>>>>>>> >>>>>>>>> >>>>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge >>>>>>>>> it to zgc >>>>>>>>> at >>>>>>>>> first? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I'll let Jini handle that bug. >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> Just one comment, in ZPage.java: >>>>>>>>>> >>>>>>>>>> ???? 91???????? // There's no relocate operation in the SA. >>>>>>>>>> Simply use >>>>>>>>>> the >>>>>>>>>> from address and hope for the best. >>>>>>>>>> ???? 92???????? return from; >>>>>>>>>> >>>>>>>>>> we should return ZAddress.good(from) here. And then we can >>>>>>>>>> remove the >>>>>>>>>> last part of the comment. Maybe say something about in-place >>>>>>>>>> forwarding >>>>>>>>>> instead. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> I've fixed. >>>>>>>>> >>>>>>>>> >>>>>>>>>>> 1) Some of the constants are Linux-specific and there's no >>>>>>>>>>> platform >>>>>>>>>>> abstraction in place. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> I added some constant values to vmStructs_z.hpp . So we can remove >>>>>>>>> Linux-specific values from SA Java sources. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> OK. Sounds like the right thing to do for true constants. More >>>>>>>> about this >>>>>>>> later. >>>>>>>> >>>>>>>>> But I've not remove address() from ZAddress.java because I'm >>>>>>>>> not sure >>>>>>>>> why >>>>>>>>> this method is needed. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On SPARC we add a heap base when converting from "offsets" to >>>>>>>> "objects". >>>>>>>> See: >>>>>>>> >>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>>> 2) ZOop.to_address subverts the type system so that we can >>>>>>>>>>> get from >>>>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned >>>>>>>>>>> upon if >>>>>>>>>>> you read >>>>>>>>>>> the SA code. Maybe there are more correct ways to implement >>>>>>>>>>> this? >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> I changed ZOop#to_address() which have one argument which type is >>>>>>>>> Address. >>>>>>>>> I guess this change is type-safe. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> My version of ZOop.to_address converted a OopHandle into an >>>>>>>> non-OopHandle >>>>>>>> Address. Without it you get an UnsupportedOperationException >>>>>>>> when you try >>>>>>>> to >>>>>>>> do bit-manipulation on the OopHandle. From LinuxOopHandle: >>>>>>>> ??? public Address??? addOffsetTo?????? (long offset) throws >>>>>>>> UnsupportedOperationException { >>>>>>>> ????? throw new UnsupportedOperationException("addOffsetTo not >>>>>>>> applicable >>>>>>>> to >>>>>>>> OopHandles (interior object pointers not allowed)"); >>>>>>>> ??? } >>>>>>>> >>>>>>>> >>>>>>>> My first version of of ZCollectedHeap.oop_load_at passed an >>>>>>>> OopHandle to >>>>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>>>>> ZCollectedHeap.oopAddressDescription: >>>>>>>> >>>>>>>> ????? public String oopAddressDescription(OopHandle handle) { >>>>>>>> ????????? Address origOop = ZOop.to_address(handle); >>>>>>>> ????????? Address loadBarrieredOop = >>>>>>>> ZBarrier.weak_barrier(origOop); >>>>>>>> >>>>>>>> We either need to restore the previous implementation, or we >>>>>>>> need to fix >>>>>>>> oopAddressDescription. >>>>>>>> >>>>>>>> My version of ZOop.to_address performed bit manipulations just >>>>>>>> to ensure >>>>>>>> that we never got a all-zero value. You have left the >>>>>>>> andWithMask(REMOVE_MSB_MASK), which isn't necessary when you >>>>>>>> didn't add >>>>>>>> the >>>>>>>> bit in the first place. >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped >>>>>>>>>>> that part, >>>>>>>>>>> but we can think about unifying our patches. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> I think the classes which extends VMObject should be >>>>>>>>> instantiated via >>>>>>>>> VMObjectFactory#newObject() because other SA codes seems to be so. >>>>>>>>> I changed to use this factory method as possible. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> OK. >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>>> 5) I had to invent a way to read global variables from >>>>>>>>>>> HotSpot. See >>>>>>>>>>> the >>>>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct >>>>>>>>>>> way to do >>>>>>>>>>> this? >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> I added these values to constant values in VMStructs. >>>>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> This is a bug, and causes my test to fail. >>>>>>>> >>>>>>>> The constants values in VMStructs are for constants in the C++ >>>>>>>> code. Some >>>>>>>> of >>>>>>>> the values you changed are initialized during the VM >>>>>>>> initializations, and >>>>>>>> some are changed throughout the run of the VM. >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>>> I stress tested the thread dumping part that threw exceptions >>>>>>>>>>> for me >>>>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar >>>>>>>>>>> spec.jbb.JBBmain >>>>>>>>>>> >>>>>>>>>>> and then continuously dumping the threads: >>>>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb >>>>>>>>>>> -J-ea clhsdb >>>>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Sorry, I do not have SPECjbb. >>>>>>>>> Can you share the result? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> You can use any program that starts a number of threads an >>>>>>>> continuously >>>>>>>> run >>>>>>>> GCs. >>>>>>>> >>>>>>>>> >>>>>>>>> I tested `universe` and `jstack` and `jstack -v` on CLHSDB with >>>>>>>>> simple >>>>>>>>> Java app. >>>>>>>>> This change works fine on my Linux x64 box. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray >>>>>>>> pointers >>>>>>>> faster >>>>>>>> with that flag. >>>>>>>> >>>>>>>> This reproduces the problem: >>>>>>>> >>>>>>>> public class HelloSleep { >>>>>>>> ??? public static void main(String...? args) throws Exception { >>>>>>>> ????? Thread.sleep(100000000000000L); >>>>>>>> ??? } >>>>>>>> } >>>>>>>> >>>>>>>> DIR=~/hg/z/build/release/jdk >>>>>>>> $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & >>>>>>>> $DIR/bin/jcmd $! GC.run >>>>>>>> echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ >>>>>>>> >>>>>>>> Thanks, >>>>>>>> StefanK >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> >>>>>>>>> >>>>>>>>> On 2018/01/11 21:40, Per Liden wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>> >>>>>>>>>>> Here's my first stab at adding the ZGC load barries to the SA: >>>>>>>>>>> >>>>>>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Just one comment, in ZPage.java: >>>>>>>>>> >>>>>>>>>> ???? 91???????? // There's no relocate operation in the SA. >>>>>>>>>> Simply use >>>>>>>>>> the >>>>>>>>>> from address and hope for the best. >>>>>>>>>> ???? 92???????? return from; >>>>>>>>>> >>>>>>>>>> we should return ZAddress.good(from) here. And then we can >>>>>>>>>> remove the >>>>>>>>>> last part of the comment. Maybe say something about in-place >>>>>>>>>> forwarding >>>>>>>>>> instead. >>>>>>>>>> >>>>>>>>>> cheers, >>>>>>>>>> Per >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I find it unfortunate that we have to duplicate the C++ code >>>>>>>>>>> into >>>>>>>>>>> Java, >>>>>>>>>>> to get this to work. But it is what it is. >>>>>>>>>>> >>>>>>>>>>> Some comments about the code: >>>>>>>>>>> >>>>>>>>>>> 1) Some of the constants are Linux-specific and there's no >>>>>>>>>>> platform >>>>>>>>>>> abstraction in place. >>>>>>>>>>> >>>>>>>>>>> 2) ZOop.to_address subverts the type system so that we can >>>>>>>>>>> get from >>>>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned >>>>>>>>>>> upon if >>>>>>>>>>> you read >>>>>>>>>>> the SA code. Maybe there are more correct ways to implement >>>>>>>>>>> this? >>>>>>>>>>> >>>>>>>>>>> 3) I use the ZGC weak barrier, since the SA agent only needs >>>>>>>>>>> to be >>>>>>>>>>> able >>>>>>>>>>> to access the Objects, not mark them. Which is what the weak >>>>>>>>>>> barriers >>>>>>>>>>> provide. >>>>>>>>>>> >>>>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped >>>>>>>>>>> that part, >>>>>>>>>>> but we can think about unifying our patches. >>>>>>>>>>> >>>>>>>>>>> 5) I had to invent a way to read global variables from >>>>>>>>>>> HotSpot. See >>>>>>>>>>> the >>>>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct >>>>>>>>>>> way to do >>>>>>>>>>> this? >>>>>>>>>>> >>>>>>>>>>> I stress tested the thread dumping part that threw exceptions >>>>>>>>>>> for me >>>>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar >>>>>>>>>>> spec.jbb.JBBmain >>>>>>>>>>> >>>>>>>>>>> and then continuously dumping the threads: >>>>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb >>>>>>>>>>> -J-ea clhsdb >>>>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Cheers, >>>>>>>>>>> StefanK >>>>>>>>>>> >>>>>>>>>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Hi Stefan, >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> Let me try to create an initial prototype for load barriers >>>>>>>>>>>>> in the >>>>>>>>>>>>> SA >>>>>>>>>>>>> case and see where this takes us. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Sure! >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> FYI i also found that compressed oops are not fully >>>>>>>>>>>>> supported in the >>>>>>>>>>>>> SA: >>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks, I didn't know that. >>>>>>>>>>>> I hope this issue will be fixed soon :-) >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks for your contribution! >>>>>>>>>>>>> >>>>>>>>>>>>> I tested your patch together with jhsdb hsdb and >>>>>>>>>>>>> immediately hit >>>>>>>>>>>>> problems because of the lack of load barriers in the SA >>>>>>>>>>>>> code. Let me >>>>>>>>>>>>> try to >>>>>>>>>>>>> create an initial prototype for load barriers in the SA >>>>>>>>>>>>> case and see >>>>>>>>>>>>> where >>>>>>>>>>>>> this takes us. >>>>>>>>>>>>> >>>>>>>>>>>>> FYI i also found that compressed oops are not fully >>>>>>>>>>>>> supported in the >>>>>>>>>>>>> SA: >>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> StefanK >>>>>>>>>>>>> >>>>>>>>>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks Per! >>>>>>>>>>>>>> >>>>>>>>>>>>>> I'm waiting for comments and sponsorship. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I checked SA implementation for ZGC, but it is not yet >>>>>>>>>>>>>>>> available. >>>>>>>>>>>>>>>> For example, we can see WrongTypeException when CLHSDB >>>>>>>>>>>>>>>> `universe` >>>>>>>>>>>>>>>> command is executed. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> As the first step, I propose to implement ZCollectedHeap >>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>> related classes for >>>>>>>>>>>>>>>> ??? SA as this webrev: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> ???? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> After applying this patch, we can use `universe` command on >>>>>>>>>>>>>>>> CLHSDB. >>>>>>>>>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks! Most of us working on ZGC are currently on >>>>>>>>>>>>>>> vacation, but >>>>>>>>>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> cheers, >>>>>>>>>>>>>>> Per >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>> >>>>>>>> >>>>>> From gerard.ziemski at oracle.com Wed Jan 17 17:01:46 2018 From: gerard.ziemski at oracle.com (Gerard Ziemski) Date: Wed, 17 Jan 2018 11:01:46 -0600 Subject: RFR: os::processor_id() for Mac OS X Message-ID: <4C5A46AD-7AEA-416E-B388-5893B349EC6E@oracle.com> hi all, Please review this simple feature adding os::processor_id() implementation for Mac OS X: http://cr.openjdk.java.net/~gziemski/zgc_os_processor_id/webrev/src/hotspot/os/bsd/os_bsd.cpp.udiff.html Here is a standalone test using such implementation: #include #include #include #include int get_cpu_id() { uint32_t EAX = 0; // must be set to 0 uint32_t EBX = 0; uint32_t ECX = 0; uint32_t EDX = 0; __cpuid(1, EAX, EBX, ECX, EDX); // Check EDX for Advanced Programmable Interrupt Controller if ((EDX & bit_APIC) != 0) { // EBX[bits 31:24] Local APIC ID: The initial APIC-ID is used to identify the executing logical processor. return (EBX >> 24) & 0xFF; } return 0; } void *tick(void *void_ptr) { int thread_id = *((int *)void_ptr); for (int i=0; i<10; i++) { printf("thread: %2d running on cpu: %d\n", thread_id, get_cpu_id()); sleep(1); } return NULL; } int main(int argc, const char * argv[]) { int count = 32; pthread_t thread[count]; for (int i=0; i Changeset: f822317928df Author: stefank Date: 2018-01-18 13:24 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f822317928df ZGC: UPSTREAM: 8194737: [SA] OopField.getValueAsOopHandle(Oop) doesn't check for compressed oops ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/CollectedHeap.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/OopField.java From stefan.karlsson at oracle.com Thu Jan 18 12:30:01 2018 From: stefan.karlsson at oracle.com (stefan.karlsson at oracle.com) Date: Thu, 18 Jan 2018 12:30:01 +0000 Subject: hg: zgc/zgc: ZGC: UPSTREAM: 8195613: [SA] HotSpotTypeDataBase.readVMLongConstants truncates values to int Message-ID: <201801181230.w0ICU1Bu013704@aojmv0008.oracle.com> Changeset: 19a2ace40c10 Author: stefank Date: 2018-01-18 13:25 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/19a2ace40c10 ZGC: UPSTREAM: 8195613: [SA] HotSpotTypeDataBase.readVMLongConstants truncates values to int ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java From stefan.karlsson at oracle.com Thu Jan 18 12:30:48 2018 From: stefan.karlsson at oracle.com (stefan.karlsson at oracle.com) Date: Thu, 18 Jan 2018 12:30:48 +0000 Subject: hg: zgc/zgc: ZGC: Basic SA support Message-ID: <201801181230.w0ICUm2V014077@aojmv0008.oracle.com> Changeset: 8609ea491452 Author: stefank Date: 2018-01-18 13:26 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/8609ea491452 ZGC: Basic SA support Contributed-by: stefan.karlsson at oracle.com, yasuenag at gmail.com + src/hotspot/share/gc/z/vmStructs_z.cpp + src/hotspot/share/gc/z/vmStructs_z.hpp ! src/hotspot/share/gc/z/zAddressRangeMap.hpp ! src/hotspot/share/gc/z/zCollectedHeap.hpp ! src/hotspot/share/gc/z/zForwardingTable.hpp ! src/hotspot/share/gc/z/zHeap.hpp ! src/hotspot/share/gc/z/zPage.hpp ! src/hotspot/share/gc/z/zPageAllocator.hpp ! src/hotspot/share/gc/z/zPageTable.hpp ! src/hotspot/share/gc/z/zPhysicalMemory.hpp ! src/hotspot/share/gc/z/zVirtualMemory.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/CollectedHeap.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/shared/CollectedHeapName.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZAddress.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZAddressRangeMapForPageTable.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZBarrier.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZCollectedHeap.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZForwardingTable.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZForwardingTableCursor.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZForwardingTableEntry.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGlobals.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGlobalsForVMStructs.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZHash.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZHeap.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZOop.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPage.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPageAllocator.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPageTable.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPageTableEntry.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZPhysicalMemoryManager.java + src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZVirtualMemory.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/Universe.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Oop.java From stefan.karlsson at oracle.com Thu Jan 18 12:28:30 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Thu, 18 Jan 2018 13:28:30 +0100 Subject: SA for ZGC In-Reply-To: <9b9c76f7-9bea-38cd-dcf7-cc9c7d1147f4@oracle.com> References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> <57fe5e83-0e27-6033-c9a5-066e047983d3@oracle.com> <1e7b9e3e-0c2a-f6ef-5aaf-330a09655f20@gmail.com> <9b9c76f7-9bea-38cd-dcf7-cc9c7d1147f4@oracle.com> Message-ID: <9cb203c5-ec5a-3b31-c1dc-073aed9a2c99@oracle.com> FYI: I just pushed this. http://hg.openjdk.java.net/zgc/zgc/rev/8609ea491452 ZGC: Basic SA support Contributed-by: stefan.karlsson at oracle.com, yasuenag at gmail.com Thanks, StefanK On 2018-01-17 15:48, Stefan Karlsson wrote: > Hi Yasumasa, > > On 2018-01-17 15:00, Yasumasa Suenaga wrote: >> Hi Stefan, >> >>> I've made some unifications, cleanups, and fixes to the patch: >>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04.delta >>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04 >> >> Thanks! >> Just one nit: >> >> ZGlobals.java >> >> ``` >> ?? 85???????? ZAddressOffsetBits = >> db.lookupLongConstant("ZAddressOffsetBits").longValue(); >> ?? 86???????? ZAddressOffsetMask = >> db.lookupLongConstant("ZAddressOffsetMask").longValue(); >> ?? 87???????? System.out.println("ZAddressOffsetMask: " + >> ZAddressOffsetMask); >> ``` >> >> Can we remove L87? > > Haha. Yes, thanks for noticing this. > >> >> >>> However, that doesn't solve the bug, because there's another bug in >>> the SA agent that truncates longs to ints. I created a bug report for >>> that: >>> >>> https://bugs.openjdk.java.net/browse/JDK-8195613 >> >> Thanks! >> I tried to use lookupLongConstant() to get const values in >> zGlobals.hpp , but I couldn't. >> I guess it caused by JDK-8195613. >> >> BTW, should we merge this SA change at first like JDK-8194737? >> > > I've folded fixes for JDK-8195613 and JDK-8194737 into this patch and > will push this to zgc/zgc, so that we don't have to wait for the > upstream patches to get pushed. > >> >> Others looks good to me. > > Thanks and thanks for the help! > > StefanK > >> >> >> Thanks, >> >> Yasumasa >> >> >> >> On 2018/01/17 21:57, Stefan Karlsson wrote: >>> Hi Yasumasa, >>> >>> On 2018-01-17 03:51, Yasumasa Suenaga wrote: >>>> Hi Stefan, >>>> >>>> I uploaded new webrev: >>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.03/ >>> >>> I created a delta diff for your patch: >>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff >>> >>> >>>> >>>> I removed dependencies to Linux specific code in it. >>> >>> Thanks! >>> >>> I've made some unifications, cleanups, and fixes to the patch: >>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04.delta >>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04 >>> >>> Notably: >>> >>> 1) Got rid of the duplicated calculations of constants and instead >>> read the values from the database. >>> >>> 2) There's bug in your code: >>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff/src/hotspot/share/runtime/vmStructs.cpp.udiff.html >>> >>> >>> +? VM_LONG_CONSTANTS_Z(GENERATE_VM_INT_CONSTANT_ENTRY, >>> +????????????????????? GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY) >>> >>> Should be using the _LONG_ versions. >>> >>> However, that doesn't solve the bug, because there's another bug in >>> the SA agent that truncates longs to ints. I created a bug report for >>> that: >>> >>> https://bugs.openjdk.java.net/browse/JDK-8195613 >>> >>> 3) There's a bug in the proposed ZAddress.address. If value is 0, >>> then the orWithMask will throw an NPE. I've changed the code to >>> manipulate the value, and as a last step convert it with >>> ZOop.to_address. >>> >>> Thanks, >>> StefanK >>> >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> >>>> >>>> >>>> 2018-01-16 20:00 GMT+09:00 Yasumasa Suenaga : >>>>>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it >>>>>> works fine. >>>>> >>>>> Sorry, I forgot to run GC.run jcmd. I had a error. >>>>> I will look it later. >>>>> >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> 2018-01-16 19:57 GMT+09:00 Yasumasa Suenaga : >>>>>> Hi Stefan, >>>>>> >>>>>> I've restored your change and use VM.getOS() and getCPU() in new >>>>>> webrev: >>>>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.02/ >>>>>> >>>>>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it >>>>>> works fine. >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> 2018-01-16 18:26 GMT+09:00 Stefan Karlsson >>>>>> : >>>>>>> Hi Yasumas, >>>>>>> >>>>>>> On 2018-01-16 08:14, Yasumasa Suenaga wrote: >>>>>>>> >>>>>>>> Hi Stefan, >>>>>>>> >>>>>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge >>>>>>>>>> it to zgc >>>>>>>>>> at >>>>>>>>>> first? >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> I'll let Jini handle that bug. >>>>>>>> >>>>>>>> >>>>>>>> Thanks! >>>>>>>> I watch this bug. >>>>>>>> >>>>>>>> >>>>>>>>> On SPARC we add a heap base when converting from "offsets" to >>>>>>>>> "objects". >>>>>>>>> See: >>>>>>>>> >>>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I think we can use getOS() and getCPU() in VM class: >>>>>>>> >>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> My first version of of ZCollectedHeap.oop_load_at passed an >>>>>>>>> OopHandle to >>>>>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>>>>> ZOop.to_address isn't needed there. However, it is still needed >>>>>>>>> for >>>>>>>>> ZCollectedHeap.oopAddressDescription: >>>>>>>>> >>>>>>>>> ????? public String oopAddressDescription(OopHandle handle) { >>>>>>>>> ????????? Address origOop = ZOop.to_address(handle); >>>>>>>>> ????????? Address loadBarrieredOop = >>>>>>>>> ZBarrier.weak_barrier(origOop); >>>>>>>>> >>>>>>>>> We either need to restore the previous implementation, or we >>>>>>>>> need to fix >>>>>>>>> oopAddressDescription. >>>>>>>> >>>>>>>> >>>>>>>> OK, I will keep your original ZOop.java and related implementation. >>>>>>> >>>>>>> >>>>>>> OK. We can revisit this later if we do decide to clean this up. >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>>> I added these values to constant values in VMStructs. >>>>>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> This is a bug, and causes my test to fail. >>>>>>>>> >>>>>>>>> The constants values in VMStructs are for constants in the C++ >>>>>>>>> code. Some >>>>>>>>> of >>>>>>>>> the values you changed are initialized during the VM >>>>>>>>> initializations, and >>>>>>>>> some are changed throughout the run of the VM. >>>>>>>> >>>>>>>> >>>>>>>> I guess we can use HotSpotVMAddress as JVMCI: >>>>>>>> >>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 >>>>>>>> >>>>>>>> >>>>>>>> However this symbol is not exported. >>>>>>>> We need to add `gHotSpotVMAddress` to vmStructs.hpp . >>>>>>>> >>>>>>>> BTW, do ZGC team have a plan to refactor zGlobals.hpp? >>>>>>> >>>>>>> >>>>>>> >>>>>>> Currently, we don't have any plans to do that. >>>>>>> >>>>>>>> AFAICS HotSpot does not have global variables (not `const` value). >>>>>>>> IMHO we can refactor zGlobals to the C++ class which extends >>>>>>>> AllStatic. >>>>>>>> We can use VMStructs directly if we do so. >>>>>>> >>>>>>> >>>>>>> HotSpot actually does have global variables. You'll find some of >>>>>>> them in >>>>>>> globalDefinitions.hpp. For example: heapOopSize, MinObjAlignment, >>>>>>> and >>>>>>> OopEncodingHeapMax. >>>>>>> >>>>>>> The SA seems to duplicate the calculations of these values >>>>>>> instead of >>>>>>> reading the actual values from the process/core. >>>>>>> >>>>>>> I'm a bit reluctant to change the ZGC code style just to adapt to >>>>>>> the SA >>>>>>> agent. Currently, I think it's fine to have an extra layer in >>>>>>> vmStructs_z >>>>>>> until the SA agent gets support for global variables. >>>>>>> >>>>>>> Thanks, >>>>>>> StefanK >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray >>>>>>>>> pointers >>>>>>>>> faster >>>>>>>>> with that flag. >>>>>>>> >>>>>>>> >>>>>>>> Thanks! >>>>>>>> After all concerns in above is resolved, I will test it. >>>>>>>> >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> 2018-01-15 17:48 GMT+09:00 Stefan Karlsson >>>>>>>> : >>>>>>>>> >>>>>>>>> Hi Yasumasa, >>>>>>>>> >>>>>>>>> On 2018-01-13 04:39, Yasumasa Suenaga wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hi Stefan, Per, >>>>>>>>>> >>>>>>>>>> Thank you for your comments and patches! >>>>>>>>>> I uploaded new webrev: >>>>>>>>>> >>>>>>>>>> ???? all: >>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >>>>>>>>>> >>>>>>>>>> ???? diff from Stefan's patch: >>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge >>>>>>>>>> it to zgc >>>>>>>>>> at >>>>>>>>>> first? >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> I'll let Jini handle that bug. >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> Just one comment, in ZPage.java: >>>>>>>>>>> >>>>>>>>>>> ???? 91???????? // There's no relocate operation in the SA. >>>>>>>>>>> Simply use >>>>>>>>>>> the >>>>>>>>>>> from address and hope for the best. >>>>>>>>>>> ???? 92???????? return from; >>>>>>>>>>> >>>>>>>>>>> we should return ZAddress.good(from) here. And then we can >>>>>>>>>>> remove the >>>>>>>>>>> last part of the comment. Maybe say something about in-place >>>>>>>>>>> forwarding >>>>>>>>>>> instead. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I've fixed. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> 1) Some of the constants are Linux-specific and there's no >>>>>>>>>>>> platform >>>>>>>>>>>> abstraction in place. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I added some constant values to vmStructs_z.hpp . So we can >>>>>>>>>> remove >>>>>>>>>> Linux-specific values from SA Java sources. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> OK. Sounds like the right thing to do for true constants. More >>>>>>>>> about this >>>>>>>>> later. >>>>>>>>> >>>>>>>>>> But I've not remove address() from ZAddress.java because I'm >>>>>>>>>> not sure >>>>>>>>>> why >>>>>>>>>> this method is needed. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On SPARC we add a heap base when converting from "offsets" to >>>>>>>>> "objects". >>>>>>>>> See: >>>>>>>>> >>>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> 2) ZOop.to_address subverts the type system so that we can >>>>>>>>>>>> get from >>>>>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned >>>>>>>>>>>> upon if >>>>>>>>>>>> you read >>>>>>>>>>>> the SA code. Maybe there are more correct ways to implement >>>>>>>>>>>> this? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I changed ZOop#to_address() which have one argument which type is >>>>>>>>>> Address. >>>>>>>>>> I guess this change is type-safe. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> My version of ZOop.to_address converted a OopHandle into an >>>>>>>>> non-OopHandle >>>>>>>>> Address. Without it you get an UnsupportedOperationException >>>>>>>>> when you try >>>>>>>>> to >>>>>>>>> do bit-manipulation on the OopHandle. From LinuxOopHandle: >>>>>>>>> ??? public Address??? addOffsetTo?????? (long offset) throws >>>>>>>>> UnsupportedOperationException { >>>>>>>>> ????? throw new UnsupportedOperationException("addOffsetTo not >>>>>>>>> applicable >>>>>>>>> to >>>>>>>>> OopHandles (interior object pointers not allowed)"); >>>>>>>>> ??? } >>>>>>>>> >>>>>>>>> >>>>>>>>> My first version of of ZCollectedHeap.oop_load_at passed an >>>>>>>>> OopHandle to >>>>>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>>>>> ZOop.to_address isn't needed there. However, it is still needed >>>>>>>>> for >>>>>>>>> ZCollectedHeap.oopAddressDescription: >>>>>>>>> >>>>>>>>> ????? public String oopAddressDescription(OopHandle handle) { >>>>>>>>> ????????? Address origOop = ZOop.to_address(handle); >>>>>>>>> ????????? Address loadBarrieredOop = >>>>>>>>> ZBarrier.weak_barrier(origOop); >>>>>>>>> >>>>>>>>> We either need to restore the previous implementation, or we >>>>>>>>> need to fix >>>>>>>>> oopAddressDescription. >>>>>>>>> >>>>>>>>> My version of ZOop.to_address performed bit manipulations just >>>>>>>>> to ensure >>>>>>>>> that we never got a all-zero value. You have left the >>>>>>>>> andWithMask(REMOVE_MSB_MASK), which isn't necessary when you >>>>>>>>> didn't add >>>>>>>>> the >>>>>>>>> bit in the first place. >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped >>>>>>>>>>>> that part, >>>>>>>>>>>> but we can think about unifying our patches. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I think the classes which extends VMObject should be >>>>>>>>>> instantiated via >>>>>>>>>> VMObjectFactory#newObject() because other SA codes seems to be >>>>>>>>>> so. >>>>>>>>>> I changed to use this factory method as possible. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> OK. >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> 5) I had to invent a way to read global variables from >>>>>>>>>>>> HotSpot. See >>>>>>>>>>>> the >>>>>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct >>>>>>>>>>>> way to do >>>>>>>>>>>> this? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I added these values to constant values in VMStructs. >>>>>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> This is a bug, and causes my test to fail. >>>>>>>>> >>>>>>>>> The constants values in VMStructs are for constants in the C++ >>>>>>>>> code. Some >>>>>>>>> of >>>>>>>>> the values you changed are initialized during the VM >>>>>>>>> initializations, and >>>>>>>>> some are changed throughout the run of the VM. >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> I stress tested the thread dumping part that threw >>>>>>>>>>>> exceptions for me >>>>>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar >>>>>>>>>>>> spec.jbb.JBBmain >>>>>>>>>>>> >>>>>>>>>>>> and then continuously dumping the threads: >>>>>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb >>>>>>>>>>>> -J-ea clhsdb >>>>>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Sorry, I do not have SPECjbb. >>>>>>>>>> Can you share the result? >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> You can use any program that starts a number of threads an >>>>>>>>> continuously >>>>>>>>> run >>>>>>>>> GCs. >>>>>>>>> >>>>>>>>>> >>>>>>>>>> I tested `universe` and `jstack` and `jstack -v` on CLHSDB >>>>>>>>>> with simple >>>>>>>>>> Java app. >>>>>>>>>> This change works fine on my Linux x64 box. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray >>>>>>>>> pointers >>>>>>>>> faster >>>>>>>>> with that flag. >>>>>>>>> >>>>>>>>> This reproduces the problem: >>>>>>>>> >>>>>>>>> public class HelloSleep { >>>>>>>>> ??? public static void main(String...? args) throws Exception { >>>>>>>>> ????? Thread.sleep(100000000000000L); >>>>>>>>> ??? } >>>>>>>>> } >>>>>>>>> >>>>>>>>> DIR=~/hg/z/build/release/jdk >>>>>>>>> $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & >>>>>>>>> $DIR/bin/jcmd $! GC.run >>>>>>>>> echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb >>>>>>>>> --pid=$ >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> StefanK >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2018/01/11 21:40, Per Liden wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>> >>>>>>>>>>>> Here's my first stab at adding the ZGC load barries to the SA: >>>>>>>>>>>> >>>>>>>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Just one comment, in ZPage.java: >>>>>>>>>>> >>>>>>>>>>> ???? 91???????? // There's no relocate operation in the SA. >>>>>>>>>>> Simply use >>>>>>>>>>> the >>>>>>>>>>> from address and hope for the best. >>>>>>>>>>> ???? 92???????? return from; >>>>>>>>>>> >>>>>>>>>>> we should return ZAddress.good(from) here. And then we can >>>>>>>>>>> remove the >>>>>>>>>>> last part of the comment. Maybe say something about in-place >>>>>>>>>>> forwarding >>>>>>>>>>> instead. >>>>>>>>>>> >>>>>>>>>>> cheers, >>>>>>>>>>> Per >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I find it unfortunate that we have to duplicate the C++ code >>>>>>>>>>>> into >>>>>>>>>>>> Java, >>>>>>>>>>>> to get this to work. But it is what it is. >>>>>>>>>>>> >>>>>>>>>>>> Some comments about the code: >>>>>>>>>>>> >>>>>>>>>>>> 1) Some of the constants are Linux-specific and there's no >>>>>>>>>>>> platform >>>>>>>>>>>> abstraction in place. >>>>>>>>>>>> >>>>>>>>>>>> 2) ZOop.to_address subverts the type system so that we can >>>>>>>>>>>> get from >>>>>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned >>>>>>>>>>>> upon if >>>>>>>>>>>> you read >>>>>>>>>>>> the SA code. Maybe there are more correct ways to implement >>>>>>>>>>>> this? >>>>>>>>>>>> >>>>>>>>>>>> 3) I use the ZGC weak barrier, since the SA agent only needs >>>>>>>>>>>> to be >>>>>>>>>>>> able >>>>>>>>>>>> to access the Objects, not mark them. Which is what the weak >>>>>>>>>>>> barriers >>>>>>>>>>>> provide. >>>>>>>>>>>> >>>>>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped >>>>>>>>>>>> that part, >>>>>>>>>>>> but we can think about unifying our patches. >>>>>>>>>>>> >>>>>>>>>>>> 5) I had to invent a way to read global variables from >>>>>>>>>>>> HotSpot. See >>>>>>>>>>>> the >>>>>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct >>>>>>>>>>>> way to do >>>>>>>>>>>> this? >>>>>>>>>>>> >>>>>>>>>>>> I stress tested the thread dumping part that threw >>>>>>>>>>>> exceptions for me >>>>>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar >>>>>>>>>>>> spec.jbb.JBBmain >>>>>>>>>>>> >>>>>>>>>>>> and then continuously dumping the threads: >>>>>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb >>>>>>>>>>>> -J-ea clhsdb >>>>>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Cheers, >>>>>>>>>>>> StefanK >>>>>>>>>>>> >>>>>>>>>>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Stefan, >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> Let me try to create an initial prototype for load >>>>>>>>>>>>>> barriers in the >>>>>>>>>>>>>> SA >>>>>>>>>>>>>> case and see where this takes us. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Sure! >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> FYI i also found that compressed oops are not fully >>>>>>>>>>>>>> supported in the >>>>>>>>>>>>>> SA: >>>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, I didn't know that. >>>>>>>>>>>>> I hope this issue will be fixed soon :-) >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks for your contribution! >>>>>>>>>>>>>> >>>>>>>>>>>>>> I tested your patch together with jhsdb hsdb and >>>>>>>>>>>>>> immediately hit >>>>>>>>>>>>>> problems because of the lack of load barriers in the SA >>>>>>>>>>>>>> code. Let me >>>>>>>>>>>>>> try to >>>>>>>>>>>>>> create an initial prototype for load barriers in the SA >>>>>>>>>>>>>> case and see >>>>>>>>>>>>>> where >>>>>>>>>>>>>> this takes us. >>>>>>>>>>>>>> >>>>>>>>>>>>>> FYI i also found that compressed oops are not fully >>>>>>>>>>>>>> supported in the >>>>>>>>>>>>>> SA: >>>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> StefanK >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks Per! >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I'm waiting for comments and sponsorship. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I checked SA implementation for ZGC, but it is not yet >>>>>>>>>>>>>>>>> available. >>>>>>>>>>>>>>>>> For example, we can see WrongTypeException when CLHSDB >>>>>>>>>>>>>>>>> `universe` >>>>>>>>>>>>>>>>> command is executed. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> As the first step, I propose to implement >>>>>>>>>>>>>>>>> ZCollectedHeap and >>>>>>>>>>>>>>>>> related classes for >>>>>>>>>>>>>>>>> ??? SA as this webrev: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ???? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> After applying this patch, we can use `universe` >>>>>>>>>>>>>>>>> command on >>>>>>>>>>>>>>>>> CLHSDB. >>>>>>>>>>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks! Most of us working on ZGC are currently on >>>>>>>>>>>>>>>> vacation, but >>>>>>>>>>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> cheers, >>>>>>>>>>>>>>>> Per >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>>> >>>>>>>>> >>>>>>> From stefan.karlsson at oracle.com Thu Jan 18 13:40:34 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Thu, 18 Jan 2018 14:40:34 +0100 Subject: RFR: Add two missing weak roots sets Message-ID: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> Hi all, Please review this patch to add two missing weak roots sets http://cr.openjdk.java.net/~stefank/zgc/zMissingWeakRoots/webrev.01/ The JvmtiExport::weak_oops_do call was moved in the upstream repository, and TRACE_WEAK_OOPS_DO was recently introduced for the Trace API. This was found while testing some jdi tests that used the JvmtiTagMap. Thanks, StefanK From per.liden at oracle.com Thu Jan 18 13:48:17 2018 From: per.liden at oracle.com (Per Liden) Date: Thu, 18 Jan 2018 14:48:17 +0100 Subject: RFR: Add two missing weak roots sets In-Reply-To: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> References: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> Message-ID: <2f61621d-e351-7b62-0152-00da6e4b5773@oracle.com> Looks good! /Per On 01/18/2018 02:40 PM, Stefan Karlsson wrote: > Hi all, > > Please review this patch to add two missing weak roots sets > > http://cr.openjdk.java.net/~stefank/zgc/zMissingWeakRoots/webrev.01/ > > The JvmtiExport::weak_oops_do call was moved in the upstream repository, > and TRACE_WEAK_OOPS_DO was recently introduced for the Trace API. > > This was found while testing some jdi tests that used the JvmtiTagMap. > > Thanks, > StefanK From erik.osterlund at oracle.com Thu Jan 18 13:54:29 2018 From: erik.osterlund at oracle.com (=?UTF-8?Q?Erik_=c3=96sterlund?=) Date: Thu, 18 Jan 2018 14:54:29 +0100 Subject: RFR: Add two missing weak roots sets In-Reply-To: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> References: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> Message-ID: <5A60A715.3040406@oracle.com> Hi Stefan, Looks good. /Erik On 2018-01-18 14:40, Stefan Karlsson wrote: > Hi all, > > Please review this patch to add two missing weak roots sets > > http://cr.openjdk.java.net/~stefank/zgc/zMissingWeakRoots/webrev.01/ > > The JvmtiExport::weak_oops_do call was moved in the upstream > repository, and TRACE_WEAK_OOPS_DO was recently introduced for the > Trace API. > > This was found while testing some jdi tests that used the JvmtiTagMap. > > Thanks, > StefanK From stefan.karlsson at oracle.com Thu Jan 18 13:53:20 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Thu, 18 Jan 2018 14:53:20 +0100 Subject: RFR: Add two missing weak roots sets In-Reply-To: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> References: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> Message-ID: <56e86a14-e8ac-8bbc-c2c6-4f92efbb4ad4@oracle.com> Thanks for the reviews, Per and Erik! StefanK On 2018-01-18 14:40, Stefan Karlsson wrote: > Hi all, > > Please review this patch to add two missing weak roots sets > > http://cr.openjdk.java.net/~stefank/zgc/zMissingWeakRoots/webrev.01/ > > The JvmtiExport::weak_oops_do call was moved in the upstream repository, > and TRACE_WEAK_OOPS_DO was recently introduced for the Trace API. > > This was found while testing some jdi tests that used the JvmtiTagMap. > > Thanks, > StefanK From yasuenag at gmail.com Thu Jan 18 14:03:09 2018 From: yasuenag at gmail.com (Yasumasa Suenaga) Date: Thu, 18 Jan 2018 23:03:09 +0900 Subject: SA for ZGC In-Reply-To: <9cb203c5-ec5a-3b31-c1dc-073aed9a2c99@oracle.com> References: <2c3eefd3-d1da-377c-f370-1b1b4be23d6c@gmail.com> <4a3a571e-4650-06af-3c6f-817edef1c199@oracle.com> <59940274-06dd-4579-093a-cd8f06db6602@oracle.com> <57fe5e83-0e27-6033-c9a5-066e047983d3@oracle.com> <1e7b9e3e-0c2a-f6ef-5aaf-330a09655f20@gmail.com> <9b9c76f7-9bea-38cd-dcf7-cc9c7d1147f4@oracle.com> <9cb203c5-ec5a-3b31-c1dc-073aed9a2c99@oracle.com> Message-ID: <1da3217f-96f8-17da-6547-a0a2328ada15@gmail.com> Hi Stefan, > FYI: I just pushed this. > > http://hg.openjdk.java.net/zgc/zgc/rev/8609ea491452 Thanks! I'm happy to contribute it! Yasumasa On 2018/01/18 21:28, Stefan Karlsson wrote: > FYI: I just pushed this. > > http://hg.openjdk.java.net/zgc/zgc/rev/8609ea491452 > > ZGC: Basic SA support > Contributed-by: stefan.karlsson at oracle.com, yasuenag at gmail.com > > Thanks, > StefanK > > On 2018-01-17 15:48, Stefan Karlsson wrote: >> Hi Yasumasa, >> >> On 2018-01-17 15:00, Yasumasa Suenaga wrote: >>> Hi Stefan, >>> >>>> I've made some unifications, cleanups, and fixes to the patch: >>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04.delta >>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04 >>> >>> Thanks! >>> Just one nit: >>> >>> ZGlobals.java >>> >>> ``` >>> ?? 85???????? ZAddressOffsetBits = db.lookupLongConstant("ZAddressOffsetBits").longValue(); >>> ?? 86???????? ZAddressOffsetMask = db.lookupLongConstant("ZAddressOffsetMask").longValue(); >>> ?? 87???????? System.out.println("ZAddressOffsetMask: " + ZAddressOffsetMask); >>> ``` >>> >>> Can we remove L87? >> >> Haha. Yes, thanks for noticing this. >> >>> >>> >>>> However, that doesn't solve the bug, because there's another bug in the SA agent that truncates longs to ints. I created a bug report for that: >>>> >>>> https://bugs.openjdk.java.net/browse/JDK-8195613 >>> >>> Thanks! >>> I tried to use lookupLongConstant() to get const values in zGlobals.hpp , but I couldn't. >>> I guess it caused by JDK-8195613. >>> >>> BTW, should we merge this SA change at first like JDK-8194737? >>> >> >> I've folded fixes for JDK-8195613 and JDK-8194737 into this patch and will push this to zgc/zgc, so that we don't have to wait for the upstream patches to get pushed. >> >>> >>> Others looks good to me. >> >> Thanks and thanks for the help! >> >> StefanK >> >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>> >>> On 2018/01/17 21:57, Stefan Karlsson wrote: >>>> Hi Yasumasa, >>>> >>>> On 2018-01-17 03:51, Yasumasa Suenaga wrote: >>>>> Hi Stefan, >>>>> >>>>> I uploaded new webrev: >>>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.03/ >>>> >>>> I created a delta diff for your patch: >>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff >>>> >>>>> >>>>> I removed dependencies to Linux specific code in it. >>>> >>>> Thanks! >>>> >>>> I've made some unifications, cleanups, and fixes to the patch: >>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04.delta >>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.04 >>>> >>>> Notably: >>>> >>>> 1) Got rid of the duplicated calculations of constants and instead read the values from the database. >>>> >>>> 2) There's bug in your code: >>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/yasumasa_webrev.03_diff/src/hotspot/share/runtime/vmStructs.cpp.udiff.html >>>> >>>> +? VM_LONG_CONSTANTS_Z(GENERATE_VM_INT_CONSTANT_ENTRY, >>>> +????????????????????? GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY) >>>> >>>> Should be using the _LONG_ versions. >>>> >>>> However, that doesn't solve the bug, because there's another bug in the SA agent that truncates longs to ints. I created a bug report for that: >>>> >>>> https://bugs.openjdk.java.net/browse/JDK-8195613 >>>> >>>> 3) There's a bug in the proposed ZAddress.address. If value is 0, then the orWithMask will throw an NPE. I've changed the code to manipulate the value, and as a last step convert it with ZOop.to_address. >>>> >>>> Thanks, >>>> StefanK >>>> >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> >>>>> 2018-01-16 20:00 GMT+09:00 Yasumasa Suenaga : >>>>>>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. >>>>>> >>>>>> Sorry, I forgot to run GC.run jcmd. I had a error. >>>>>> I will look it later. >>>>>> >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> 2018-01-16 19:57 GMT+09:00 Yasumasa Suenaga : >>>>>>> Hi Stefan, >>>>>>> >>>>>>> I've restored your change and use VM.getOS() and getCPU() in new webrev: >>>>>>> ?? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.02/ >>>>>>> >>>>>>> I checked this patch with -XX:+ZUnmapBadViews on my Linux x64, it works fine. >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2018-01-16 18:26 GMT+09:00 Stefan Karlsson : >>>>>>>> Hi Yasumas, >>>>>>>> >>>>>>>> On 2018-01-16 08:14, Yasumasa Suenaga wrote: >>>>>>>>> >>>>>>>>> Hi Stefan, >>>>>>>>> >>>>>>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>>>>>>>> at >>>>>>>>>>> first? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I'll let Jini handle that bug. >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks! >>>>>>>>> I watch this bug. >>>>>>>>> >>>>>>>>> >>>>>>>>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>>>>>>>> See: >>>>>>>>>> >>>>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>>>>>> >>>>>>>>> >>>>>>>>> I think we can use getOS() and getCPU() in VM class: >>>>>>>>> >>>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VM.java#l511 >>>>>>>>> >>>>>>>>> >>>>>>>>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>>>>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>>>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>>>>>>> ZCollectedHeap.oopAddressDescription: >>>>>>>>>> >>>>>>>>>> ????? public String oopAddressDescription(OopHandle handle) { >>>>>>>>>> ????????? Address origOop = ZOop.to_address(handle); >>>>>>>>>> ????????? Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>>>>>>>> >>>>>>>>>> We either need to restore the previous implementation, or we need to fix >>>>>>>>>> oopAddressDescription. >>>>>>>>> >>>>>>>>> >>>>>>>>> OK, I will keep your original ZOop.java and related implementation. >>>>>>>> >>>>>>>> >>>>>>>> OK. We can revisit this later if we do decide to clean this up. >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>>> I added these values to constant values in VMStructs. >>>>>>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> This is a bug, and causes my test to fail. >>>>>>>>>> >>>>>>>>>> The constants values in VMStructs are for constants in the C++ code. Some >>>>>>>>>> of >>>>>>>>>> the values you changed are initialized during the VM initializations, and >>>>>>>>>> some are changed throughout the run of the VM. >>>>>>>>> >>>>>>>>> >>>>>>>>> I guess we can use HotSpotVMAddress as JVMCI: >>>>>>>>> >>>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/share/jvmci/vmStructs_jvmci.cpp#l937 >>>>>>>>> >>>>>>>>> However this symbol is not exported. >>>>>>>>> We need to add `gHotSpotVMAddress` to vmStructs.hpp . >>>>>>>>> >>>>>>>>> BTW, do ZGC team have a plan to refactor zGlobals.hpp? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Currently, we don't have any plans to do that. >>>>>>>> >>>>>>>>> AFAICS HotSpot does not have global variables (not `const` value). >>>>>>>>> IMHO we can refactor zGlobals to the C++ class which extends AllStatic. >>>>>>>>> We can use VMStructs directly if we do so. >>>>>>>> >>>>>>>> >>>>>>>> HotSpot actually does have global variables. You'll find some of them in >>>>>>>> globalDefinitions.hpp. For example: heapOopSize, MinObjAlignment, and >>>>>>>> OopEncodingHeapMax. >>>>>>>> >>>>>>>> The SA seems to duplicate the calculations of these values instead of >>>>>>>> reading the actual values from the process/core. >>>>>>>> >>>>>>>> I'm a bit reluctant to change the ZGC code style just to adapt to the SA >>>>>>>> agent. Currently, I think it's fine to have an extra layer in vmStructs_z >>>>>>>> until the SA agent gets support for global variables. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> StefanK >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>>>>>>>> faster >>>>>>>>>> with that flag. >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks! >>>>>>>>> After all concerns in above is resolved, I will test it. >>>>>>>>> >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> >>>>>>>>> >>>>>>>>> 2018-01-15 17:48 GMT+09:00 Stefan Karlsson : >>>>>>>>>> >>>>>>>>>> Hi Yasumasa, >>>>>>>>>> >>>>>>>>>> On 2018-01-13 04:39, Yasumasa Suenaga wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Hi Stefan, Per, >>>>>>>>>>> >>>>>>>>>>> Thank you for your comments and patches! >>>>>>>>>>> I uploaded new webrev: >>>>>>>>>>> >>>>>>>>>>> ???? all: >>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/all/ >>>>>>>>>>> >>>>>>>>>>> ???? diff from Stefan's patch: >>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/webrev.01/diff/ >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Stefan's patch seems to have resolved JDK-8194737. >>>>>>>>>>> Should we resolve this JDK-8194737 in upstream repo and merge it to zgc >>>>>>>>>>> at >>>>>>>>>>> first? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I'll let Jini handle that bug. >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Just one comment, in ZPage.java: >>>>>>>>>>>> >>>>>>>>>>>> ???? 91???????? // There's no relocate operation in the SA. Simply use >>>>>>>>>>>> the >>>>>>>>>>>> from address and hope for the best. >>>>>>>>>>>> ???? 92???????? return from; >>>>>>>>>>>> >>>>>>>>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>>>>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>>>>>>>> instead. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I've fixed. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>>>>>>>> abstraction in place. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I added some constant values to vmStructs_z.hpp . So we can remove >>>>>>>>>>> Linux-specific values from SA Java sources. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> OK. Sounds like the right thing to do for true constants. More about this >>>>>>>>>> later. >>>>>>>>>> >>>>>>>>>>> But I've not remove address() from ZAddress.java because I'm not sure >>>>>>>>>>> why >>>>>>>>>>> this method is needed. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On SPARC we add a heap base when converting from "offsets" to "objects". >>>>>>>>>> See: >>>>>>>>>> >>>>>>>>>> http://hg.openjdk.java.net/zgc/zgc/file/89d447cff6c5/src/hotspot/os_cpu/solaris_sparc/zAddress_solaris_sparc.inline.hpp >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>>>>>>>> you read >>>>>>>>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I changed ZOop#to_address() which have one argument which type is >>>>>>>>>>> Address. >>>>>>>>>>> I guess this change is type-safe. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> My version of ZOop.to_address converted a OopHandle into an non-OopHandle >>>>>>>>>> Address. Without it you get an UnsupportedOperationException when you try >>>>>>>>>> to >>>>>>>>>> do bit-manipulation on the OopHandle. From LinuxOopHandle: >>>>>>>>>> ??? public Address??? addOffsetTo?????? (long offset) throws >>>>>>>>>> UnsupportedOperationException { >>>>>>>>>> ????? throw new UnsupportedOperationException("addOffsetTo not applicable >>>>>>>>>> to >>>>>>>>>> OopHandles (interior object pointers not allowed)"); >>>>>>>>>> ??? } >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> My first version of of ZCollectedHeap.oop_load_at passed an OopHandle to >>>>>>>>>> ZBarrier.weak_barrier, but I changed that, so my implementation of >>>>>>>>>> ZOop.to_address isn't needed there. However, it is still needed for >>>>>>>>>> ZCollectedHeap.oopAddressDescription: >>>>>>>>>> >>>>>>>>>> ????? public String oopAddressDescription(OopHandle handle) { >>>>>>>>>> ????????? Address origOop = ZOop.to_address(handle); >>>>>>>>>> ????????? Address loadBarrieredOop = ZBarrier.weak_barrier(origOop); >>>>>>>>>> >>>>>>>>>> We either need to restore the previous implementation, or we need to fix >>>>>>>>>> oopAddressDescription. >>>>>>>>>> >>>>>>>>>> My version of ZOop.to_address performed bit manipulations just to ensure >>>>>>>>>> that we never got a all-zero value. You have left the >>>>>>>>>> andWithMask(REMOVE_MSB_MASK), which isn't necessary when you didn't add >>>>>>>>>> the >>>>>>>>>> bit in the first place. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>>>>>>>> but we can think about unifying our patches. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I think the classes which extends VMObject should be instantiated via >>>>>>>>>>> VMObjectFactory#newObject() because other SA codes seems to be so. >>>>>>>>>>> I changed to use this factory method as possible. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> OK. >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>>>>>>>> the >>>>>>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>>>>>>>> this? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I added these values to constant values in VMStructs. >>>>>>>>>>> Thus I removed ZGlobalsForVMStructs. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> This is a bug, and causes my test to fail. >>>>>>>>>> >>>>>>>>>> The constants values in VMStructs are for constants in the C++ code. Some >>>>>>>>>> of >>>>>>>>>> the values you changed are initialized during the VM initializations, and >>>>>>>>>> some are changed throughout the run of the VM. >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>>>>>>>> >>>>>>>>>>>>> and then continuously dumping the threads: >>>>>>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Sorry, I do not have SPECjbb. >>>>>>>>>>> Can you share the result? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> You can use any program that starts a number of threads an continuously >>>>>>>>>> run >>>>>>>>>> GCs. >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I tested `universe` and `jstack` and `jstack -v` on CLHSDB with simple >>>>>>>>>>> Java app. >>>>>>>>>>> This change works fine on my Linux x64 box. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Try to run with -XX:+ZUnmapBadViews. You will find any stray pointers >>>>>>>>>> faster >>>>>>>>>> with that flag. >>>>>>>>>> >>>>>>>>>> This reproduces the problem: >>>>>>>>>> >>>>>>>>>> public class HelloSleep { >>>>>>>>>> ??? public static void main(String...? args) throws Exception { >>>>>>>>>> ????? Thread.sleep(100000000000000L); >>>>>>>>>> ??? } >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> DIR=~/hg/z/build/release/jdk >>>>>>>>>> $DIR/bin/java -XX:+ZUnmapBadViews -XX:+UseZGC HelloSleep & >>>>>>>>>> $DIR/bin/jcmd $! GC.run >>>>>>>>>> echo -e "verbose true\nthreads" | $DIR/bin/jhsdb -J-ea hsdb --pid=$ >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> StefanK >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 2018/01/11 21:40, Per Liden wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> On 01/10/2018 05:55 PM, Stefan Karlsson wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>> >>>>>>>>>>>>> Here's my first stab at adding the ZGC load barries to the SA: >>>>>>>>>>>>> >>>>>>>>>>>>> http://cr.openjdk.java.net/~stefank/zgc/zSALoadBarriers/webrev.01/ >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Just one comment, in ZPage.java: >>>>>>>>>>>> >>>>>>>>>>>> ???? 91???????? // There's no relocate operation in the SA. Simply use >>>>>>>>>>>> the >>>>>>>>>>>> from address and hope for the best. >>>>>>>>>>>> ???? 92???????? return from; >>>>>>>>>>>> >>>>>>>>>>>> we should return ZAddress.good(from) here. And then we can remove the >>>>>>>>>>>> last part of the comment. Maybe say something about in-place forwarding >>>>>>>>>>>> instead. >>>>>>>>>>>> >>>>>>>>>>>> cheers, >>>>>>>>>>>> Per >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> I find it unfortunate that we have to duplicate the C++ code into >>>>>>>>>>>>> Java, >>>>>>>>>>>>> to get this to work. But it is what it is. >>>>>>>>>>>>> >>>>>>>>>>>>> Some comments about the code: >>>>>>>>>>>>> >>>>>>>>>>>>> 1) Some of the constants are Linux-specific and there's no platform >>>>>>>>>>>>> abstraction in place. >>>>>>>>>>>>> >>>>>>>>>>>>> 2) ZOop.to_address subverts the type system so that we can get from >>>>>>>>>>>>> OopHandles and longs to Addresses. This seems to be frowned upon if >>>>>>>>>>>>> you read >>>>>>>>>>>>> the SA code. Maybe there are more correct ways to implement this? >>>>>>>>>>>>> >>>>>>>>>>>>> 3) I use the ZGC weak barrier, since the SA agent only needs to be >>>>>>>>>>>>> able >>>>>>>>>>>>> to access the Objects, not mark them. Which is what the weak barriers >>>>>>>>>>>>> provide. >>>>>>>>>>>>> >>>>>>>>>>>>> 4) I see that you used VMObjectFactory.newObject, I skipped that part, >>>>>>>>>>>>> but we can think about unifying our patches. >>>>>>>>>>>>> >>>>>>>>>>>>> 5) I had to invent a way to read global variables from HotSpot. See >>>>>>>>>>>>> the >>>>>>>>>>>>> usage of ZGlobalsForVMStructs. Maybe there's a more correct way to do >>>>>>>>>>>>> this? >>>>>>>>>>>>> >>>>>>>>>>>>> I stress tested the thread dumping part that threw exceptions for me >>>>>>>>>>>>> earlier by running SPECjbb2005: >>>>>>>>>>>>> $ java -XX:+UseZGC -Xlog:gc -cp jbb.jar:check.jar spec.jbb.JBBmain >>>>>>>>>>>>> >>>>>>>>>>>>> and then continuously dumping the threads: >>>>>>>>>>>>> $ while true; do echo -e "verbose true\nthreads" | jhsdb -J-ea clhsdb >>>>>>>>>>>>> --pid=`jps | grep JBBmain | awk '{print $1}'`; done >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Cheers, >>>>>>>>>>>>> StefanK >>>>>>>>>>>>> >>>>>>>>>>>>> On 2018-01-09 13:59, Yasumasa Suenaga wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Stefan, >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Let me try to create an initial prototype for load barriers in the >>>>>>>>>>>>>>> SA >>>>>>>>>>>>>>> case and see where this takes us. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Sure! >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>>>>>>>> SA: >>>>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, I didn't know that. >>>>>>>>>>>>>> I hope this issue will be fixed soon :-) >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 2018/01/09 18:36, Stefan Karlsson wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks for your contribution! >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I tested your patch together with jhsdb hsdb and immediately hit >>>>>>>>>>>>>>> problems because of the lack of load barriers in the SA code. Let me >>>>>>>>>>>>>>> try to >>>>>>>>>>>>>>> create an initial prototype for load barriers in the SA case and see >>>>>>>>>>>>>>> where >>>>>>>>>>>>>>> this takes us. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> FYI i also found that compressed oops are not fully supported in the >>>>>>>>>>>>>>> SA: >>>>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8194737 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> StefanK >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 2017-12-21 23:38, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks Per! >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I'm waiting for comments and sponsorship. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 2017/12/22 4:33, Per Liden wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On 2017-12-21 09:40, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I checked SA implementation for ZGC, but it is not yet available. >>>>>>>>>>>>>>>>>> For example, we can see WrongTypeException when CLHSDB `universe` >>>>>>>>>>>>>>>>>> command is executed. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> As the first step, I propose to implement ZCollectedHeap and >>>>>>>>>>>>>>>>>> related classes for >>>>>>>>>>>>>>>>>> ??? SA as this webrev: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> ???? http://cr.openjdk.java.net/~ysuenaga/z/sa-universe/ >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> After applying this patch, we can use `universe` command on >>>>>>>>>>>>>>>>>> CLHSDB. >>>>>>>>>>>>>>>>>> (I followed `VM.info` jcmd output format) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks! Most of us working on ZGC are currently on vacation, but >>>>>>>>>>>>>>>>> we'll have a closer look at the patch after the holidays. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> cheers, >>>>>>>>>>>>>>>>> Per >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Of course, it is not all. We need to work more for it. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>> From coleen.phillimore at oracle.com Thu Jan 18 14:18:44 2018 From: coleen.phillimore at oracle.com (coleen.phillimore at oracle.com) Date: Thu, 18 Jan 2018 09:18:44 -0500 Subject: RFR: Add two missing weak roots sets In-Reply-To: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> References: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> Message-ID: Looks good to me also. Coleen On 1/18/18 8:40 AM, Stefan Karlsson wrote: > Hi all, > > Please review this patch to add two missing weak roots sets > > http://cr.openjdk.java.net/~stefank/zgc/zMissingWeakRoots/webrev.01/ > > The JvmtiExport::weak_oops_do call was moved in the upstream > repository, and TRACE_WEAK_OOPS_DO was recently introduced for the > Trace API. > > This was found while testing some jdi tests that used the JvmtiTagMap. > > Thanks, > StefanK From stefan.karlsson at oracle.com Fri Jan 19 13:43:32 2018 From: stefan.karlsson at oracle.com (stefan.karlsson at oracle.com) Date: Fri, 19 Jan 2018 13:43:32 +0000 Subject: hg: zgc/zgc: ZGC: Add missing Weak Roots Message-ID: <201801191343.w0JDhWkt006619@aojmv0008.oracle.com> Changeset: 359afd2ca03f Author: stefank Date: 2018-01-19 14:38 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/359afd2ca03f ZGC: Add missing Weak Roots ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp From per.liden at oracle.com Fri Jan 19 14:04:28 2018 From: per.liden at oracle.com (Per Liden) Date: Fri, 19 Jan 2018 15:04:28 +0100 Subject: RFR: Make root iterator functions non-static Message-ID: <2f9accdb-2ae8-dbbd-fcab-0d86f3019da0@oracle.com> Hi, We have an upcoming need for non-static functions in the roots iterators. This patch turns all do_* function into non-static member functions. http://cr.openjdk.java.net/~pliden/zgc/roots_iterator_non_static/webrev.0/ Here's also two follow up patches to remove the alignment on ZSerialOopsDo/ZParallelOopsDo (which just seems to waste memory) and another patch to check the claimed state before trying to CAS in ZSerialOopsDo. http://cr.openjdk.java.net/~pliden/zgc/roots_iterator_remove_cache_alignment/webrev.0/ http://cr.openjdk.java.net/~pliden/zgc/roots_iteratoc_claimed_check_first/webrev.0/ /Per From stefan.karlsson at oracle.com Fri Jan 19 14:04:35 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Fri, 19 Jan 2018 15:04:35 +0100 Subject: RFR: Add two missing weak roots sets In-Reply-To: References: <845cfc69-821a-25c3-3ca5-ca09f86166c7@oracle.com> Message-ID: Thanks, Coleen! StefanK On 2018-01-18 15:18, coleen.phillimore at oracle.com wrote: > Looks good to me also. > Coleen > > On 1/18/18 8:40 AM, Stefan Karlsson wrote: >> Hi all, >> >> Please review this patch to add two missing weak roots sets >> >> http://cr.openjdk.java.net/~stefank/zgc/zMissingWeakRoots/webrev.01/ >> >> The JvmtiExport::weak_oops_do call was moved in the upstream >> repository, and TRACE_WEAK_OOPS_DO was recently introduced for the >> Trace API. >> >> This was found while testing some jdi tests that used the JvmtiTagMap. >> >> Thanks, >> StefanK > From per.liden at oracle.com Fri Jan 19 14:11:24 2018 From: per.liden at oracle.com (Per Liden) Date: Fri, 19 Jan 2018 15:11:24 +0100 Subject: RFR: Make root iterator functions non-static In-Reply-To: <1ebbe2cd-bb82-a8c6-4289-3e60131e0b57@oracle.com> References: <2f9accdb-2ae8-dbbd-fcab-0d86f3019da0@oracle.com> <1ebbe2cd-bb82-a8c6-4289-3e60131e0b57@oracle.com> Message-ID: Thanks! /Per On 01/19/2018 03:10 PM, Stefan Karlsson wrote: > Looks good. > > StefanK > > On 2018-01-19 15:04, Per Liden wrote: >> Hi, >> >> We have an upcoming need for non-static functions in the roots >> iterators. This patch turns all do_* function into non-static member >> functions. >> >> http://cr.openjdk.java.net/~pliden/zgc/roots_iterator_non_static/webrev.0/ >> >> >> Here's also two follow up patches to remove the alignment on >> ZSerialOopsDo/ZParallelOopsDo (which just seems to waste memory) and >> another patch to check the claimed state before trying to CAS in >> ZSerialOopsDo. >> >> http://cr.openjdk.java.net/~pliden/zgc/roots_iterator_remove_cache_alignment/webrev.0/ >> >> >> http://cr.openjdk.java.net/~pliden/zgc/roots_iteratoc_claimed_check_first/webrev.0/ >> >> >> /Per >> From per.liden at oracle.com Fri Jan 19 14:15:58 2018 From: per.liden at oracle.com (per.liden at oracle.com) Date: Fri, 19 Jan 2018 14:15:58 +0000 Subject: hg: zgc/zgc: 3 new changesets Message-ID: <201801191415.w0JEFwZW017833@aojmv0008.oracle.com> Changeset: 29314cff0906 Author: pliden Date: 2018-01-19 14:45 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/29314cff0906 ZGC: Make root iterator functions non-static ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp Changeset: 7972895fb97f Author: pliden Date: 2018-01-19 15:06 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7972895fb97f ZGC: Check claimed flags before CAS attempt ! src/hotspot/share/gc/z/zRootsIterator.cpp Changeset: 1d47114d695c Author: pliden Date: 2018-01-19 15:06 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/1d47114d695c ZGC: Remove alignment on root iterator helpers ! src/hotspot/share/gc/z/zRootsIterator.hpp From stefan.karlsson at oracle.com Fri Jan 19 14:10:50 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Fri, 19 Jan 2018 15:10:50 +0100 Subject: RFR: Make root iterator functions non-static In-Reply-To: <2f9accdb-2ae8-dbbd-fcab-0d86f3019da0@oracle.com> References: <2f9accdb-2ae8-dbbd-fcab-0d86f3019da0@oracle.com> Message-ID: <1ebbe2cd-bb82-a8c6-4289-3e60131e0b57@oracle.com> Looks good. StefanK On 2018-01-19 15:04, Per Liden wrote: > Hi, > > We have an upcoming need for non-static functions in the roots > iterators. This patch turns all do_* function into non-static member > functions. > > http://cr.openjdk.java.net/~pliden/zgc/roots_iterator_non_static/webrev.0/ > > Here's also two follow up patches to remove the alignment on > ZSerialOopsDo/ZParallelOopsDo (which just seems to waste memory) and > another patch to check the claimed state before trying to CAS in > ZSerialOopsDo. > > http://cr.openjdk.java.net/~pliden/zgc/roots_iterator_remove_cache_alignment/webrev.0/ > > > http://cr.openjdk.java.net/~pliden/zgc/roots_iteratoc_claimed_check_first/webrev.0/ > > > /Per > From stefan.karlsson at oracle.com Fri Jan 19 15:21:42 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Fri, 19 Jan 2018 16:21:42 +0100 Subject: Preview: Concurrent JNIWeakHandles processing Message-ID: <9768cf5e-cff6-690c-b535-847e89a012f9@oracle.com> Hi all, Kim recently pushed a patch to jdk/hs, which contains the new OopStorage class. This class is a container for oops, and helps separating GC scanning/clearing from Runtime data structure cleaning/unlinking. The OopStorage also provides the functionallity to scan/clear the oop*s concurrently. The container of the JNIWeakHandles has been changed to the OopStorage, but the clearing is currently done during pauses. The following patch adds concurrent clearing to ZGC. The patch moves the clearing out from the "mark end" pause into the "concurrent weak processing" phase after mark end. I want to do further testing before this gets pushed, but here's the current patch: http://cr.openjdk.java.net/~stefank/zgc/zConcurrentJNIWeakHandles/webrev.01/ Thanks, StefanK From stefan.karlsson at oracle.com Mon Jan 22 19:29:29 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Mon, 22 Jan 2018 20:29:29 +0100 Subject: Preview: Concurrent JNIWeakHandles processing In-Reply-To: <9768cf5e-cff6-690c-b535-847e89a012f9@oracle.com> References: <9768cf5e-cff6-690c-b535-847e89a012f9@oracle.com> Message-ID: I fixed the copyright header for the two new files, and fixed the incorrect usage of Atomic::cmpxchg. StefanK On 2018-01-19 16:21, Stefan Karlsson wrote: > Hi all, > > Kim recently pushed a patch to jdk/hs, which contains the new > OopStorage class. This class is a container for oops, and helps > separating GC scanning/clearing from Runtime data structure > cleaning/unlinking. The OopStorage also provides the functionallity to > scan/clear the oop*s concurrently. > > The container of the JNIWeakHandles has been changed to the > OopStorage, but the clearing is currently done during pauses. The > following patch adds concurrent clearing to ZGC. The patch moves the > clearing out from the "mark end" pause into the "concurrent weak > processing" phase after mark end. > > I want to do further testing before this gets pushed, but here's the > current patch: > > http://cr.openjdk.java.net/~stefank/zgc/zConcurrentJNIWeakHandles/webrev.01/ > > > Thanks, > StefanK From per.liden at oracle.com Wed Jan 24 10:16:06 2018 From: per.liden at oracle.com (Per Liden) Date: Wed, 24 Jan 2018 11:16:06 +0100 Subject: Preview: Concurrent JNIWeakHandles processing In-Reply-To: References: <9768cf5e-cff6-690c-b535-847e89a012f9@oracle.com> Message-ID: First of all, just want to mention that this patch is kind a major milestone. With the recent introduction of OopStorage, we now have enough infrastructure in place upstream to start moving the cleaning of VM weak roots out from STW and in to a concurrent phase. The JNI weak handles is the first step, StringTable is being worked on and will follow later. In plain English, this means that an application can create as many JNIWeakGlobalRefs as is wants to without affecting GC pause times. About the patch. Stefan and I discussed some minor cleanups, which I'll push as a follow up to his patch. Here that are: http://cr.openjdk.java.net/~pliden/zgc/concurrent_weak_processing_cleanups/webrev.0/ cheers, Per On 01/22/2018 08:29 PM, Stefan Karlsson wrote: > I fixed the copyright header for the two new files, and fixed the > incorrect usage of Atomic::cmpxchg. > > StefanK > > On 2018-01-19 16:21, Stefan Karlsson wrote: >> Hi all, >> >> Kim recently pushed a patch to jdk/hs, which contains the new >> OopStorage class. This class is a container for oops, and helps >> separating GC scanning/clearing from Runtime data structure >> cleaning/unlinking. The OopStorage also provides the functionallity to >> scan/clear the oop*s concurrently. >> >> The container of the JNIWeakHandles has been changed to the >> OopStorage, but the clearing is currently done during pauses. The >> following patch adds concurrent clearing to ZGC. The patch moves the >> clearing out from the "mark end" pause into the "concurrent weak >> processing" phase after mark end. >> >> I want to do further testing before this gets pushed, but here's the >> current patch: >> >> http://cr.openjdk.java.net/~stefank/zgc/zConcurrentJNIWeakHandles/webrev.01/ >> >> >> Thanks, >> StefanK > > From shade at redhat.com Wed Jan 24 10:22:16 2018 From: shade at redhat.com (Aleksey Shipilev) Date: Wed, 24 Jan 2018 11:22:16 +0100 Subject: Preview: Concurrent JNIWeakHandles processing In-Reply-To: References: <9768cf5e-cff6-690c-b535-847e89a012f9@oracle.com> Message-ID: On 01/24/2018 11:16 AM, Per Liden wrote: > First of all, just want to mention that this patch is kind a major milestone. With the recent > introduction of OopStorage, we now have enough infrastructure in place upstream to start moving the > cleaning of VM weak roots out from STW and in to a concurrent phase. The JNI weak handles is the > first step, StringTable is being worked on and will follow later. > > In plain English, this means that an application can create as many JNIWeakGlobalRefs as is wants to > without affecting GC pause times. I, for one, welcome our new^W^W this outstanding work! -Aleksey From stefan.karlsson at oracle.com Wed Jan 24 12:39:31 2018 From: stefan.karlsson at oracle.com (stefan.karlsson at oracle.com) Date: Wed, 24 Jan 2018 12:39:31 +0000 Subject: hg: zgc/zgc: ZGC: Concurrent cleaning of JNIWeakHandles Message-ID: <201801241239.w0OCdVNN021706@aojmv0008.oracle.com> Changeset: 944f83f2f037 Author: stefank Date: 2018-01-24 13:34 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/944f83f2f037 ZGC: Concurrent cleaning of JNIWeakHandles ! src/hotspot/share/gc/z/zDriver.cpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeap.hpp ! src/hotspot/share/gc/z/zOopClosures.hpp ! src/hotspot/share/gc/z/zOopClosures.inline.hpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp + src/hotspot/share/gc/z/zWeakRootsProcessor.cpp + src/hotspot/share/gc/z/zWeakRootsProcessor.hpp ! src/hotspot/share/runtime/globals.hpp ! src/hotspot/share/runtime/jniHandles.cpp ! src/hotspot/share/runtime/jniHandles.hpp From per.liden at oracle.com Wed Jan 24 12:40:47 2018 From: per.liden at oracle.com (per.liden at oracle.com) Date: Wed, 24 Jan 2018 12:40:47 +0000 Subject: hg: zgc/zgc: ZGC: Concurrent weak processing cleanups Message-ID: <201801241240.w0OCelij022331@aojmv0008.oracle.com> Changeset: 0c797f001d31 Author: pliden Date: 2018-01-24 13:35 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/0c797f001d31 ZGC: Concurrent weak processing cleanups ! src/hotspot/share/gc/z/zDriver.cpp ! src/hotspot/share/gc/z/zHeap.cpp ! src/hotspot/share/gc/z/zHeap.hpp ! src/hotspot/share/gc/z/zOopClosures.hpp ! src/hotspot/share/gc/z/zOopClosures.inline.hpp ! src/hotspot/share/gc/z/zRootsIterator.cpp ! src/hotspot/share/gc/z/zRootsIterator.hpp ! src/hotspot/share/gc/z/zStat.cpp ! src/hotspot/share/gc/z/zWeakRootsProcessor.cpp ! src/hotspot/share/gc/z/zWeakRootsProcessor.hpp ! src/hotspot/share/runtime/globals.hpp From stefan.karlsson at oracle.com Wed Jan 24 12:45:59 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Wed, 24 Jan 2018 13:45:59 +0100 Subject: Preview: Concurrent JNIWeakHandles processing In-Reply-To: References: <9768cf5e-cff6-690c-b535-847e89a012f9@oracle.com> Message-ID: <41024f9d-2a6e-8baf-be51-13c7ac34f36f@oracle.com> We need to turn off the global verification of JNIHandles::weak_oops_do, in JNIHandles::verify. Otherwise, we end up verifying oops* that have not been fixed yet. The following is an ugly workaround, and we probably want to overhaul the verification and move the responsibility to verify the roots to the GCs. diff --git a/src/hotspot/share/runtime/jniHandles.cpp b/src/hotspot/share/runtime/jniHandles.cpp --- a/src/hotspot/share/runtime/jniHandles.cpp +++ b/src/hotspot/share/runtime/jniHandles.cpp @@ -314,7 +314,9 @@ VerifyJNIHandles verify_handle; oops_do(&verify_handle); - weak_oops_do(&verify_handle); + if (!UseZGC) { + weak_oops_do(&verify_handle); + } } // This method is implemented here to avoid circular includes between StefanK On 2018-01-24 11:16, Per Liden wrote: > First of all, just want to mention that this patch is kind a major > milestone. With the recent introduction of OopStorage, we now have > enough infrastructure in place upstream to start moving the cleaning of > VM weak roots out from STW and in to a concurrent phase. The JNI weak > handles is the first step, StringTable is being worked on and will > follow later. > > In plain English, this means that an application can create as many > JNIWeakGlobalRefs as is wants to without affecting GC pause times. > > About the patch. Stefan and I discussed some minor cleanups, which I'll > push as a follow up to his patch. Here that are: > > http://cr.openjdk.java.net/~pliden/zgc/concurrent_weak_processing_cleanups/webrev.0/ > > > cheers, > Per > > On 01/22/2018 08:29 PM, Stefan Karlsson wrote: >> I fixed the copyright header for the two new files, and fixed the >> incorrect usage of Atomic::cmpxchg. >> >> StefanK >> >> On 2018-01-19 16:21, Stefan Karlsson wrote: >>> Hi all, >>> >>> Kim recently pushed a patch to jdk/hs, which contains the new >>> OopStorage class. This class is a container for oops, and helps >>> separating GC scanning/clearing from Runtime data structure >>> cleaning/unlinking. The OopStorage also provides the functionallity >>> to scan/clear the oop*s concurrently. >>> >>> The container of the JNIWeakHandles has been changed to the >>> OopStorage, but the clearing is currently done during pauses. The >>> following patch adds concurrent clearing to ZGC. The patch moves the >>> clearing out from the "mark end" pause into the "concurrent weak >>> processing" phase after mark end. >>> >>> I want to do further testing before this gets pushed, but here's the >>> current patch: >>> >>> http://cr.openjdk.java.net/~stefank/zgc/zConcurrentJNIWeakHandles/webrev.01/ >>> >>> >>> Thanks, >>> StefanK >> >> From stefan.karlsson at oracle.com Wed Jan 24 12:51:17 2018 From: stefan.karlsson at oracle.com (stefan.karlsson at oracle.com) Date: Wed, 24 Jan 2018 12:51:17 +0000 Subject: hg: zgc/zgc: ZGC: Turn off global JNIHandles::weak_oop_do verification Message-ID: <201801241251.w0OCpHCT025942@aojmv0008.oracle.com> Changeset: f62de39d0559 Author: stefank Date: 2018-01-24 13:46 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/f62de39d0559 ZGC: Turn off global JNIHandles::weak_oop_do verification ! src/hotspot/share/runtime/jniHandles.cpp From stefan.karlsson at oracle.com Wed Jan 24 15:17:48 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Wed, 24 Jan 2018 16:17:48 +0100 Subject: NMT: Weird merging of regions Message-ID: <5c6d66bd-66f4-c557-6eab-ca055bc9d80c@oracle.com> Hi Zhengyu (all), I was looking at the NMT output from one of our stress tests and saw something unexpected. It looks like the first number commits of small ZPages get merged into one region, until we allocate a medium ZPage which ends up at the end of the virtual address space. After the medium ZPage has been allocated non of the subsequent small ZPages get merged. I traced the committing of memory: [0.079s][info][gc ] nmt_commit 0x0000040000000000 514048K [2.523s][info][gc ] nmt_commit 0x000004001f600000 2048K [2.528s][info][gc ] nmt_commit 0x000004001f800000 2048K [2.533s][info][gc ] nmt_commit 0x000004001fa00000 2048K [2.535s][info][gc ] nmt_commit 0x000004001fc00000 2048K [2.537s][info][gc ] nmt_commit 0x000004001fe00000 2048K [2.538s][info][gc ] nmt_commit 0x0000040020000000 2048K [2.543s][info][gc ] nmt_commit 0x0000040020200000 2048K [2.547s][info][gc ] nmt_commit 0x0000040020400000 2048K ... [3.714s][info][gc ] nmt_commit 0x000004003c200000 2048K [3.715s][info][gc ] nmt_commit 0x000004003c400000 2048K [3.731s][info][gc ] nmt_commit 0x000007fffe000000 32768K [3.737s][info][gc ] nmt_commit 0x000007fffc000000 32768K [3.737s][info][gc ] nmt_commit 0x000004003c600000 2048K [3.741s][info][gc ] nmt_commit 0x000004003c800000 2048K The output from NMT is: [0x0000040000000000 - 0x000004001f600000] committed 514048KB from [0x00002b9e6209618b] ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, ZPhysicalMemoryManager&, unsigned long)+0xfb [0x00002b9e6208e277] ZPageAllocator::ZPageAllocator(unsigned long, unsigned long, unsigned long)+0x67 [0x00002b9e620706fc] ZHeap::ZHeap()+0xac [0x00002b9e6206c2c9] ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 [0x000004001f600000 - 0x000004003c600000] committed 475136KB from [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x9b [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x17 [0x00002b9e6207faa4] ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, unsigned long, unsigned long, ZAllocationFlags)+0x114 [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned long)+0x103 [0x000004003c600000 - 0x000004003c800000] committed 2048KB from [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x9b [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x17 [0x00002b9e6207faa4] ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, unsigned long, unsigned long, ZAllocationFlags)+0x114 [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned long)+0x103 [0x000004003c800000 - 0x000004003ca00000] committed 2048KB from [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x9b [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x17 [0x00002b9e6207faa4] ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, unsigned long, unsigned long, ZAllocationFlags)+0x114 [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned long)+0x103 As can be seen all pages between: [2.523s][info][gc ] nmt_commit 0x000004001f600000 2048K and: [3.715s][info][gc ] nmt_commit 0x000004003c400000 2048K are merged into: [0x000004001f600000 - 0x000004003c600000] committed 475136KB from However the small page commits after the medium page commits all get separate entries. I looked at the code in add_committed_region and this seems to be intentionally: // special case to expand prior region if there is no next region but I don't understand the _reason_ why we don't merge the added region with adjacent next regions. Zhengyu, do you know/remember the motivation behind this? I created a patch to try to merge with the next region: http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.01/ This yields NMT output like the following: [0x0000040000000000 - 0x000004001f600000] committed 514048KB from [0x00002b26cda232db] ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, ZPhysicalMemoryManager&, unsigned long)+0xfb [0x00002b26cda1b3c7] ZPageAllocator::ZPageAllocator(unsigned long, unsigned long, unsigned long)+0x67 [0x00002b26cd9fd84c] ZHeap::ZHeap()+0xac [0x00002b26cd9f9419] ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 [0x000004001f600000 - 0x0000040380800000] committed 14174208KB from [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x9b [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x17 [0x00002b26cda0cbf4] ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, unsigned long, unsigned long, ZAllocationFlags)+0x114 [0x00002b26cda0e9a3] ZObjectAllocator::alloc_object(unsigned long)+0x103 [0x000007ffce000000 - 0x0000080000000000] committed 819200KB from [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x9b [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned long, ZAllocationFlags)+0x17 [0x00002b26cda0cbf4] ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, unsigned long, unsigned long, ZAllocationFlags)+0x114 [0x00002b26cda0e935] ZObjectAllocator::alloc_object(unsigned long)+0x95 StefanK From zgu at redhat.com Wed Jan 24 15:43:41 2018 From: zgu at redhat.com (Zhengyu Gu) Date: Wed, 24 Jan 2018 10:43:41 -0500 Subject: NMT: Weird merging of regions In-Reply-To: <5c6d66bd-66f4-c557-6eab-ca055bc9d80c@oracle.com> References: <5c6d66bd-66f4-c557-6eab-ca055bc9d80c@oracle.com> Message-ID: <5d0125ac-272c-a3fe-8c91-939ca84aa592@redhat.com> Hi Stefan, It looks like a bug that subsequent small regions were not merged, they all have the same stacks. This part of code was last touched by JDK-8138705 (https://bugs.openjdk.java.net/browse/JDK-8138705), not sure if it is the cause. Your patch looks good to me. Thanks, -Zhengyu On 01/24/2018 10:17 AM, Stefan Karlsson wrote: > Hi Zhengyu (all), > > I was looking at the NMT output from one of our stress tests and saw > something unexpected. It looks like the first number commits of small > ZPages get merged into one region, until we allocate a medium ZPage > which ends up at the end of the virtual address space. After the medium > ZPage has been allocated non of the subsequent small ZPages get merged. > > I traced the committing of memory: > > [0.079s][info][gc ] nmt_commit 0x0000040000000000 514048K > [2.523s][info][gc ] nmt_commit 0x000004001f600000 2048K > [2.528s][info][gc ] nmt_commit 0x000004001f800000 2048K > [2.533s][info][gc ] nmt_commit 0x000004001fa00000 2048K > [2.535s][info][gc ] nmt_commit 0x000004001fc00000 2048K > [2.537s][info][gc ] nmt_commit 0x000004001fe00000 2048K > [2.538s][info][gc ] nmt_commit 0x0000040020000000 2048K > [2.543s][info][gc ] nmt_commit 0x0000040020200000 2048K > [2.547s][info][gc ] nmt_commit 0x0000040020400000 2048K > ... > [3.714s][info][gc ] nmt_commit 0x000004003c200000 2048K > [3.715s][info][gc ] nmt_commit 0x000004003c400000 2048K > [3.731s][info][gc ] nmt_commit 0x000007fffe000000 32768K > [3.737s][info][gc ] nmt_commit 0x000007fffc000000 32768K > [3.737s][info][gc ] nmt_commit 0x000004003c600000 2048K > [3.741s][info][gc ] nmt_commit 0x000004003c800000 2048K > > The output from NMT is: > > [0x0000040000000000 - 0x000004001f600000] committed 514048KB from > [0x00002b9e6209618b] > ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, > ZPhysicalMemoryManager&, unsigned long)+0xfb > [0x00002b9e6208e277] ZPageAllocator::ZPageAllocator(unsigned long, > unsigned long, unsigned long)+0x67 > [0x00002b9e620706fc] ZHeap::ZHeap()+0xac > [0x00002b9e6206c2c9] > ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 > > [0x000004001f600000 - 0x000004003c600000] committed 475136KB from > [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, > unsigned long, ZAllocationFlags)+0x9b > [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned > long, ZAllocationFlags)+0x17 > [0x00002b9e6207faa4] > ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, > unsigned long, unsigned long, ZAllocationFlags)+0x114 > [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned > long)+0x103 > > [0x000004003c600000 - 0x000004003c800000] committed 2048KB from > [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, > unsigned long, ZAllocationFlags)+0x9b > [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned > long, ZAllocationFlags)+0x17 > [0x00002b9e6207faa4] > ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, > unsigned long, unsigned long, ZAllocationFlags)+0x114 > [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned > long)+0x103 > > [0x000004003c800000 - 0x000004003ca00000] committed 2048KB from > [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, > unsigned long, ZAllocationFlags)+0x9b > [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned > long, ZAllocationFlags)+0x17 > [0x00002b9e6207faa4] > ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, > unsigned long, unsigned long, ZAllocationFlags)+0x114 > [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned > long)+0x103 > > > As can be seen all pages between: > [2.523s][info][gc ] nmt_commit 0x000004001f600000 2048K > > and: > [3.715s][info][gc ] nmt_commit 0x000004003c400000 2048K > > are merged into: > [0x000004001f600000 - 0x000004003c600000] committed 475136KB from > > However the small page commits after the medium page commits all get > separate entries. > > I looked at the code in add_committed_region and this seems to be > intentionally: > // special case to expand prior region if there is no next region > > but I don't understand the _reason_ why we don't merge the added region > with adjacent next regions. > > Zhengyu, do you know/remember the motivation behind this? > > > I created a patch to try to merge with the next region: > http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.01/ > > This yields NMT output like the following: > > [0x0000040000000000 - 0x000004001f600000] committed 514048KB from > [0x00002b26cda232db] > ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, > ZPhysicalMemoryManager&, unsigned long)+0xfb > [0x00002b26cda1b3c7] ZPageAllocator::ZPageAllocator(unsigned long, > unsigned long, unsigned long)+0x67 > [0x00002b26cd9fd84c] ZHeap::ZHeap()+0xac > [0x00002b26cd9f9419] > ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 > > [0x000004001f600000 - 0x0000040380800000] committed 14174208KB from > [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, > unsigned long, ZAllocationFlags)+0x9b > [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned > long, ZAllocationFlags)+0x17 > [0x00002b26cda0cbf4] > ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, > unsigned long, unsigned long, ZAllocationFlags)+0x114 > [0x00002b26cda0e9a3] ZObjectAllocator::alloc_object(unsigned > long)+0x103 > > [0x000007ffce000000 - 0x0000080000000000] committed 819200KB from > [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, > unsigned long, ZAllocationFlags)+0x9b > [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned > long, ZAllocationFlags)+0x17 > [0x00002b26cda0cbf4] > ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, > unsigned long, unsigned long, ZAllocationFlags)+0x114 > [0x00002b26cda0e935] ZObjectAllocator::alloc_object(unsigned > long)+0x95 > > StefanK From coleen.phillimore at oracle.com Wed Jan 24 16:40:09 2018 From: coleen.phillimore at oracle.com (coleen.phillimore at oracle.com) Date: Wed, 24 Jan 2018 11:40:09 -0500 Subject: NMT: Weird merging of regions In-Reply-To: <5d0125ac-272c-a3fe-8c91-939ca84aa592@redhat.com> References: <5c6d66bd-66f4-c557-6eab-ca055bc9d80c@oracle.com> <5d0125ac-272c-a3fe-8c91-939ca84aa592@redhat.com> Message-ID: <1e903701-de5f-6536-c69b-b73fba2c3e08@oracle.com> Yeah, I don't remember why we checked for null.?? Probably just to simplify the code path. The patch looks good.? There should be a test in the test system to verify it (see the bug that Zhengyu pointed to). Coleen On 1/24/18 10:43 AM, Zhengyu Gu wrote: > Hi Stefan, > > It looks like a bug that subsequent small regions were not merged, > they all have the same stacks. This part of code was last touched by > JDK-8138705 (https://bugs.openjdk.java.net/browse/JDK-8138705), not > sure if it is the cause. > > Your patch looks good to me. > > Thanks, > > -Zhengyu > > On 01/24/2018 10:17 AM, Stefan Karlsson wrote: >> Hi Zhengyu (all), >> >> I was looking at the NMT output from one of our stress tests and saw >> something unexpected. It looks like the first number commits of small >> ZPages get merged into one region, until we allocate a medium ZPage >> which ends up at the end of the virtual address space. After the >> medium ZPage has been allocated non of the subsequent small ZPages >> get merged. >> >> I traced the committing of memory: >> >> [0.079s][info][gc???? ] nmt_commit?? 0x0000040000000000 514048K >> [2.523s][info][gc???? ] nmt_commit?? 0x000004001f600000 2048K >> [2.528s][info][gc???? ] nmt_commit?? 0x000004001f800000 2048K >> [2.533s][info][gc???? ] nmt_commit?? 0x000004001fa00000 2048K >> [2.535s][info][gc???? ] nmt_commit?? 0x000004001fc00000 2048K >> [2.537s][info][gc???? ] nmt_commit?? 0x000004001fe00000 2048K >> [2.538s][info][gc???? ] nmt_commit?? 0x0000040020000000 2048K >> [2.543s][info][gc???? ] nmt_commit?? 0x0000040020200000 2048K >> [2.547s][info][gc???? ] nmt_commit?? 0x0000040020400000 2048K >> ... >> [3.714s][info][gc?????? ] nmt_commit?? 0x000004003c200000 2048K >> [3.715s][info][gc?????? ] nmt_commit?? 0x000004003c400000 2048K >> [3.731s][info][gc?????? ] nmt_commit?? 0x000007fffe000000 32768K >> [3.737s][info][gc?????? ] nmt_commit?? 0x000007fffc000000 32768K >> [3.737s][info][gc?????? ] nmt_commit?? 0x000004003c600000 2048K >> [3.741s][info][gc?????? ] nmt_commit?? 0x000004003c800000 2048K >> >> The output from NMT is: >> >> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >> ???? [0x00002b9e6209618b] >> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >> ZPhysicalMemoryManager&, unsigned long)+0xfb >> ???? [0x00002b9e6208e277] ZPageAllocator::ZPageAllocator(unsigned >> long, unsigned long, unsigned long)+0x67 >> ???? [0x00002b9e620706fc] ZHeap::ZHeap()+0xac >> ???? [0x00002b9e6206c2c9] >> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >> >> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, >> unsigned long, ZAllocationFlags)+0x9b >> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned >> long, ZAllocationFlags)+0x17 >> ???? [0x00002b9e6207faa4] >> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >> unsigned long, unsigned long, ZAllocationFlags)+0x114 >> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >> long)+0x103 >> >> [0x000004003c600000 - 0x000004003c800000] committed 2048KB from >> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, >> unsigned long, ZAllocationFlags)+0x9b >> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned >> long, ZAllocationFlags)+0x17 >> ???? [0x00002b9e6207faa4] >> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >> unsigned long, unsigned long, ZAllocationFlags)+0x114 >> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >> long)+0x103 >> >> [0x000004003c800000 - 0x000004003ca00000] committed 2048KB from >> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, >> unsigned long, ZAllocationFlags)+0x9b >> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned >> long, ZAllocationFlags)+0x17 >> ???? [0x00002b9e6207faa4] >> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >> unsigned long, unsigned long, ZAllocationFlags)+0x114 >> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >> long)+0x103 >> >> >> As can be seen all pages between: >> [2.523s][info][gc???? ] nmt_commit?? 0x000004001f600000 2048K >> >> and: >> [3.715s][info][gc?????? ] nmt_commit?? 0x000004003c400000 2048K >> >> are merged into: >> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >> >> However the small page commits after the medium page commits all get >> separate entries. >> >> I looked at the code in add_committed_region and this seems to be >> intentionally: >> ?????? // special case to expand prior region if there is no next region >> >> but I don't understand the _reason_ why we don't merge the added >> region with adjacent next regions. >> >> Zhengyu, do you know/remember the motivation behind this? >> >> >> I created a patch to try to merge with the next region: >> ? http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.01/ >> >> This yields NMT output like the following: >> >> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >> ???? [0x00002b26cda232db] >> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >> ZPhysicalMemoryManager&, unsigned long)+0xfb >> ???? [0x00002b26cda1b3c7] ZPageAllocator::ZPageAllocator(unsigned >> long, unsigned long, unsigned long)+0x67 >> ???? [0x00002b26cd9fd84c] ZHeap::ZHeap()+0xac >> ???? [0x00002b26cd9f9419] >> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >> >> [0x000004001f600000 - 0x0000040380800000] committed 14174208KB from >> ???? [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, >> unsigned long, ZAllocationFlags)+0x9b >> ???? [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned >> long, ZAllocationFlags)+0x17 >> ???? [0x00002b26cda0cbf4] >> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >> unsigned long, unsigned long, ZAllocationFlags)+0x114 >> ???? [0x00002b26cda0e9a3] ZObjectAllocator::alloc_object(unsigned >> long)+0x103 >> >> [0x000007ffce000000 - 0x0000080000000000] committed 819200KB from >> ???? [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, >> unsigned long, ZAllocationFlags)+0x9b >> ???? [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned >> long, ZAllocationFlags)+0x17 >> ???? [0x00002b26cda0cbf4] >> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >> unsigned long, unsigned long, ZAllocationFlags)+0x114 >> ???? [0x00002b26cda0e935] ZObjectAllocator::alloc_object(unsigned >> long)+0x95 >> >> StefanK From stefan.karlsson at oracle.com Thu Jan 25 15:31:55 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Thu, 25 Jan 2018 16:31:55 +0100 Subject: NMT: Weird merging of regions In-Reply-To: <1e903701-de5f-6536-c69b-b73fba2c3e08@oracle.com> References: <5c6d66bd-66f4-c557-6eab-ca055bc9d80c@oracle.com> <5d0125ac-272c-a3fe-8c91-939ca84aa592@redhat.com> <1e903701-de5f-6536-c69b-b73fba2c3e08@oracle.com> Message-ID: <20ae2972-9b14-a4a7-4b39-cb04f6d1f144@oracle.com> Hi Coleen and Zhengyu, Thanks for the feedback. The accounting part of the patch is wrong, because the size of the next node needs to be subtracted. I fixed this, simplified the code, and added a test: http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.02 With this patch all tests test/hotspot/jtreg/runtime/NMT passes. Thanks, StefanK On 2018-01-24 17:40, coleen.phillimore at oracle.com wrote: > > Yeah, I don't remember why we checked for null.?? Probably just to > simplify the code path. > > The patch looks good.? There should be a test in the test system to > verify it (see the bug that Zhengyu pointed to). > > Coleen > > On 1/24/18 10:43 AM, Zhengyu Gu wrote: >> Hi Stefan, >> >> It looks like a bug that subsequent small regions were not merged, >> they all have the same stacks. This part of code was last touched by >> JDK-8138705 (https://bugs.openjdk.java.net/browse/JDK-8138705), not >> sure if it is the cause. >> >> Your patch looks good to me. >> >> Thanks, >> >> -Zhengyu >> >> On 01/24/2018 10:17 AM, Stefan Karlsson wrote: >>> Hi Zhengyu (all), >>> >>> I was looking at the NMT output from one of our stress tests and saw >>> something unexpected. It looks like the first number commits of small >>> ZPages get merged into one region, until we allocate a medium ZPage >>> which ends up at the end of the virtual address space. After the >>> medium ZPage has been allocated non of the subsequent small ZPages >>> get merged. >>> >>> I traced the committing of memory: >>> >>> [0.079s][info][gc???? ] nmt_commit?? 0x0000040000000000 514048K >>> [2.523s][info][gc???? ] nmt_commit?? 0x000004001f600000 2048K >>> [2.528s][info][gc???? ] nmt_commit?? 0x000004001f800000 2048K >>> [2.533s][info][gc???? ] nmt_commit?? 0x000004001fa00000 2048K >>> [2.535s][info][gc???? ] nmt_commit?? 0x000004001fc00000 2048K >>> [2.537s][info][gc???? ] nmt_commit?? 0x000004001fe00000 2048K >>> [2.538s][info][gc???? ] nmt_commit?? 0x0000040020000000 2048K >>> [2.543s][info][gc???? ] nmt_commit?? 0x0000040020200000 2048K >>> [2.547s][info][gc???? ] nmt_commit?? 0x0000040020400000 2048K >>> ... >>> [3.714s][info][gc?????? ] nmt_commit?? 0x000004003c200000 2048K >>> [3.715s][info][gc?????? ] nmt_commit?? 0x000004003c400000 2048K >>> [3.731s][info][gc?????? ] nmt_commit?? 0x000007fffe000000 32768K >>> [3.737s][info][gc?????? ] nmt_commit?? 0x000007fffc000000 32768K >>> [3.737s][info][gc?????? ] nmt_commit?? 0x000004003c600000 2048K >>> [3.741s][info][gc?????? ] nmt_commit?? 0x000004003c800000 2048K >>> >>> The output from NMT is: >>> >>> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >>> ???? [0x00002b9e6209618b] >>> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >>> ZPhysicalMemoryManager&, unsigned long)+0xfb >>> ???? [0x00002b9e6208e277] ZPageAllocator::ZPageAllocator(unsigned >>> long, unsigned long, unsigned long)+0x67 >>> ???? [0x00002b9e620706fc] ZHeap::ZHeap()+0xac >>> ???? [0x00002b9e6206c2c9] >>> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >>> >>> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >>> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, >>> unsigned long, ZAllocationFlags)+0x9b >>> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned >>> long, ZAllocationFlags)+0x17 >>> ???? [0x00002b9e6207faa4] >>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >>> unsigned long, unsigned long, ZAllocationFlags)+0x114 >>> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>> long)+0x103 >>> >>> [0x000004003c600000 - 0x000004003c800000] committed 2048KB from >>> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, >>> unsigned long, ZAllocationFlags)+0x9b >>> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned >>> long, ZAllocationFlags)+0x17 >>> ???? [0x00002b9e6207faa4] >>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >>> unsigned long, unsigned long, ZAllocationFlags)+0x114 >>> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>> long)+0x103 >>> >>> [0x000004003c800000 - 0x000004003ca00000] committed 2048KB from >>> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, >>> unsigned long, ZAllocationFlags)+0x9b >>> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned >>> long, ZAllocationFlags)+0x17 >>> ???? [0x00002b9e6207faa4] >>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >>> unsigned long, unsigned long, ZAllocationFlags)+0x114 >>> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>> long)+0x103 >>> >>> >>> As can be seen all pages between: >>> [2.523s][info][gc???? ] nmt_commit?? 0x000004001f600000 2048K >>> >>> and: >>> [3.715s][info][gc?????? ] nmt_commit?? 0x000004003c400000 2048K >>> >>> are merged into: >>> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >>> >>> However the small page commits after the medium page commits all get >>> separate entries. >>> >>> I looked at the code in add_committed_region and this seems to be >>> intentionally: >>> ?????? // special case to expand prior region if there is no next region >>> >>> but I don't understand the _reason_ why we don't merge the added >>> region with adjacent next regions. >>> >>> Zhengyu, do you know/remember the motivation behind this? >>> >>> >>> I created a patch to try to merge with the next region: >>> ? http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.01/ >>> >>> This yields NMT output like the following: >>> >>> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >>> ???? [0x00002b26cda232db] >>> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >>> ZPhysicalMemoryManager&, unsigned long)+0xfb >>> ???? [0x00002b26cda1b3c7] ZPageAllocator::ZPageAllocator(unsigned >>> long, unsigned long, unsigned long)+0x67 >>> ???? [0x00002b26cd9fd84c] ZHeap::ZHeap()+0xac >>> ???? [0x00002b26cd9f9419] >>> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >>> >>> [0x000004001f600000 - 0x0000040380800000] committed 14174208KB from >>> ???? [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, >>> unsigned long, ZAllocationFlags)+0x9b >>> ???? [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned >>> long, ZAllocationFlags)+0x17 >>> ???? [0x00002b26cda0cbf4] >>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >>> unsigned long, unsigned long, ZAllocationFlags)+0x114 >>> ???? [0x00002b26cda0e9a3] ZObjectAllocator::alloc_object(unsigned >>> long)+0x103 >>> >>> [0x000007ffce000000 - 0x0000080000000000] committed 819200KB from >>> ???? [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, >>> unsigned long, ZAllocationFlags)+0x9b >>> ???? [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned >>> long, ZAllocationFlags)+0x17 >>> ???? [0x00002b26cda0cbf4] >>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned char, >>> unsigned long, unsigned long, ZAllocationFlags)+0x114 >>> ???? [0x00002b26cda0e935] ZObjectAllocator::alloc_object(unsigned >>> long)+0x95 >>> >>> StefanK > From zgu at redhat.com Thu Jan 25 16:20:17 2018 From: zgu at redhat.com (Zhengyu Gu) Date: Thu, 25 Jan 2018 11:20:17 -0500 Subject: NMT: Weird merging of regions In-Reply-To: <20ae2972-9b14-a4a7-4b39-cb04f6d1f144@oracle.com> References: <5c6d66bd-66f4-c557-6eab-ca055bc9d80c@oracle.com> <5d0125ac-272c-a3fe-8c91-939ca84aa592@redhat.com> <1e903701-de5f-6536-c69b-b73fba2c3e08@oracle.com> <20ae2972-9b14-a4a7-4b39-cb04f6d1f144@oracle.com> Message-ID: Hi Stefan, It looks great! Could you push to upstream JDK? Thanks for fixing this. -Zhengyu On 01/25/2018 10:31 AM, Stefan Karlsson wrote: > Hi Coleen and Zhengyu, > > Thanks for the feedback. > > The accounting part of the patch is wrong, because the size of the next > node needs to be subtracted. I fixed this, simplified the code, and > added a test: > > http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.02 > > With this patch all tests test/hotspot/jtreg/runtime/NMT passes. > > Thanks, > StefanK > > On 2018-01-24 17:40, coleen.phillimore at oracle.com wrote: >> >> Yeah, I don't remember why we checked for null. Probably just to >> simplify the code path. >> >> The patch looks good. There should be a test in the test system to >> verify it (see the bug that Zhengyu pointed to). >> >> Coleen >> >> On 1/24/18 10:43 AM, Zhengyu Gu wrote: >>> Hi Stefan, >>> >>> It looks like a bug that subsequent small regions were not merged, >>> they all have the same stacks. This part of code was last touched by >>> JDK-8138705 (https://bugs.openjdk.java.net/browse/JDK-8138705), not >>> sure if it is the cause. >>> >>> Your patch looks good to me. >>> >>> Thanks, >>> >>> -Zhengyu >>> >>> On 01/24/2018 10:17 AM, Stefan Karlsson wrote: >>>> Hi Zhengyu (all), >>>> >>>> I was looking at the NMT output from one of our stress tests and saw >>>> something unexpected. It looks like the first number commits of >>>> small ZPages get merged into one region, until we allocate a medium >>>> ZPage which ends up at the end of the virtual address space. After >>>> the medium ZPage has been allocated non of the subsequent small >>>> ZPages get merged. >>>> >>>> I traced the committing of memory: >>>> >>>> [0.079s][info][gc ] nmt_commit 0x0000040000000000 514048K >>>> [2.523s][info][gc ] nmt_commit 0x000004001f600000 2048K >>>> [2.528s][info][gc ] nmt_commit 0x000004001f800000 2048K >>>> [2.533s][info][gc ] nmt_commit 0x000004001fa00000 2048K >>>> [2.535s][info][gc ] nmt_commit 0x000004001fc00000 2048K >>>> [2.537s][info][gc ] nmt_commit 0x000004001fe00000 2048K >>>> [2.538s][info][gc ] nmt_commit 0x0000040020000000 2048K >>>> [2.543s][info][gc ] nmt_commit 0x0000040020200000 2048K >>>> [2.547s][info][gc ] nmt_commit 0x0000040020400000 2048K >>>> ... >>>> [3.714s][info][gc ] nmt_commit 0x000004003c200000 2048K >>>> [3.715s][info][gc ] nmt_commit 0x000004003c400000 2048K >>>> [3.731s][info][gc ] nmt_commit 0x000007fffe000000 32768K >>>> [3.737s][info][gc ] nmt_commit 0x000007fffc000000 32768K >>>> [3.737s][info][gc ] nmt_commit 0x000004003c600000 2048K >>>> [3.741s][info][gc ] nmt_commit 0x000004003c800000 2048K >>>> >>>> The output from NMT is: >>>> >>>> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >>>> [0x00002b9e6209618b] >>>> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >>>> ZPhysicalMemoryManager&, unsigned long)+0xfb >>>> [0x00002b9e6208e277] ZPageAllocator::ZPageAllocator(unsigned >>>> long, unsigned long, unsigned long)+0x67 >>>> [0x00002b9e620706fc] ZHeap::ZHeap()+0xac >>>> [0x00002b9e6206c2c9] >>>> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >>>> >>>> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >>>> [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, >>>> unsigned long, ZAllocationFlags)+0x9b >>>> [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned >>>> long, ZAllocationFlags)+0x17 >>>> [0x00002b9e6207faa4] >>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>> [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>>> long)+0x103 >>>> >>>> [0x000004003c600000 - 0x000004003c800000] committed 2048KB from >>>> [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, >>>> unsigned long, ZAllocationFlags)+0x9b >>>> [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned >>>> long, ZAllocationFlags)+0x17 >>>> [0x00002b9e6207faa4] >>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>> [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>>> long)+0x103 >>>> >>>> [0x000004003c800000 - 0x000004003ca00000] committed 2048KB from >>>> [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned char, >>>> unsigned long, ZAllocationFlags)+0x9b >>>> [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, unsigned >>>> long, ZAllocationFlags)+0x17 >>>> [0x00002b9e6207faa4] >>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>> [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>>> long)+0x103 >>>> >>>> >>>> As can be seen all pages between: >>>> [2.523s][info][gc ] nmt_commit 0x000004001f600000 2048K >>>> >>>> and: >>>> [3.715s][info][gc ] nmt_commit 0x000004003c400000 2048K >>>> >>>> are merged into: >>>> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >>>> >>>> However the small page commits after the medium page commits all get >>>> separate entries. >>>> >>>> I looked at the code in add_committed_region and this seems to be >>>> intentionally: >>>> // special case to expand prior region if there is no next >>>> region >>>> >>>> but I don't understand the _reason_ why we don't merge the added >>>> region with adjacent next regions. >>>> >>>> Zhengyu, do you know/remember the motivation behind this? >>>> >>>> >>>> I created a patch to try to merge with the next region: >>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.01/ >>>> >>>> This yields NMT output like the following: >>>> >>>> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >>>> [0x00002b26cda232db] >>>> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >>>> ZPhysicalMemoryManager&, unsigned long)+0xfb >>>> [0x00002b26cda1b3c7] ZPageAllocator::ZPageAllocator(unsigned >>>> long, unsigned long, unsigned long)+0x67 >>>> [0x00002b26cd9fd84c] ZHeap::ZHeap()+0xac >>>> [0x00002b26cd9f9419] >>>> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >>>> >>>> [0x000004001f600000 - 0x0000040380800000] committed 14174208KB from >>>> [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, >>>> unsigned long, ZAllocationFlags)+0x9b >>>> [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned >>>> long, ZAllocationFlags)+0x17 >>>> [0x00002b26cda0cbf4] >>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>> [0x00002b26cda0e9a3] ZObjectAllocator::alloc_object(unsigned >>>> long)+0x103 >>>> >>>> [0x000007ffce000000 - 0x0000080000000000] committed 819200KB from >>>> [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned char, >>>> unsigned long, ZAllocationFlags)+0x9b >>>> [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, unsigned >>>> long, ZAllocationFlags)+0x17 >>>> [0x00002b26cda0cbf4] >>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>> [0x00002b26cda0e935] ZObjectAllocator::alloc_object(unsigned >>>> long)+0x95 >>>> >>>> StefanK >> From stefan.karlsson at oracle.com Thu Jan 25 16:42:51 2018 From: stefan.karlsson at oracle.com (Stefan Karlsson) Date: Thu, 25 Jan 2018 17:42:51 +0100 Subject: NMT: Weird merging of regions In-Reply-To: References: <5c6d66bd-66f4-c557-6eab-ca055bc9d80c@oracle.com> <5d0125ac-272c-a3fe-8c91-939ca84aa592@redhat.com> <1e903701-de5f-6536-c69b-b73fba2c3e08@oracle.com> <20ae2972-9b14-a4a7-4b39-cb04f6d1f144@oracle.com> Message-ID: On 2018-01-25 17:20, Zhengyu Gu wrote: > Hi Stefan, > > It looks great! Could you push to upstream JDK? Will do. Thanks! StefanK > > Thanks for fixing this. > > -Zhengyu > > On 01/25/2018 10:31 AM, Stefan Karlsson wrote: >> Hi Coleen and Zhengyu, >> >> Thanks for the feedback. >> >> The accounting part of the patch is wrong, because the size of the >> next node needs to be subtracted. I fixed this, simplified the code, >> and added a test: >> >> http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.02 >> >> With this patch all tests test/hotspot/jtreg/runtime/NMT passes. >> >> Thanks, >> StefanK >> >> On 2018-01-24 17:40, coleen.phillimore at oracle.com wrote: >>> >>> Yeah, I don't remember why we checked for null.?? Probably just to >>> simplify the code path. >>> >>> The patch looks good.? There should be a test in the test system to >>> verify it (see the bug that Zhengyu pointed to). >>> >>> Coleen >>> >>> On 1/24/18 10:43 AM, Zhengyu Gu wrote: >>>> Hi Stefan, >>>> >>>> It looks like a bug that subsequent small regions were not merged, >>>> they all have the same stacks. This part of code was last touched >>>> by JDK-8138705 (https://bugs.openjdk.java.net/browse/JDK-8138705), >>>> not sure if it is the cause. >>>> >>>> Your patch looks good to me. >>>> >>>> Thanks, >>>> >>>> -Zhengyu >>>> >>>> On 01/24/2018 10:17 AM, Stefan Karlsson wrote: >>>>> Hi Zhengyu (all), >>>>> >>>>> I was looking at the NMT output from one of our stress tests and >>>>> saw something unexpected. It looks like the first number commits >>>>> of small ZPages get merged into one region, until we allocate a >>>>> medium ZPage which ends up at the end of the virtual address >>>>> space. After the medium ZPage has been allocated non of the >>>>> subsequent small ZPages get merged. >>>>> >>>>> I traced the committing of memory: >>>>> >>>>> [0.079s][info][gc???? ] nmt_commit?? 0x0000040000000000 514048K >>>>> [2.523s][info][gc???? ] nmt_commit?? 0x000004001f600000 2048K >>>>> [2.528s][info][gc???? ] nmt_commit?? 0x000004001f800000 2048K >>>>> [2.533s][info][gc???? ] nmt_commit?? 0x000004001fa00000 2048K >>>>> [2.535s][info][gc???? ] nmt_commit?? 0x000004001fc00000 2048K >>>>> [2.537s][info][gc???? ] nmt_commit?? 0x000004001fe00000 2048K >>>>> [2.538s][info][gc???? ] nmt_commit?? 0x0000040020000000 2048K >>>>> [2.543s][info][gc???? ] nmt_commit?? 0x0000040020200000 2048K >>>>> [2.547s][info][gc???? ] nmt_commit?? 0x0000040020400000 2048K >>>>> ... >>>>> [3.714s][info][gc?????? ] nmt_commit?? 0x000004003c200000 2048K >>>>> [3.715s][info][gc?????? ] nmt_commit?? 0x000004003c400000 2048K >>>>> [3.731s][info][gc?????? ] nmt_commit?? 0x000007fffe000000 32768K >>>>> [3.737s][info][gc?????? ] nmt_commit?? 0x000007fffc000000 32768K >>>>> [3.737s][info][gc?????? ] nmt_commit?? 0x000004003c600000 2048K >>>>> [3.741s][info][gc?????? ] nmt_commit?? 0x000004003c800000 2048K >>>>> >>>>> The output from NMT is: >>>>> >>>>> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >>>>> ???? [0x00002b9e6209618b] >>>>> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >>>>> ZPhysicalMemoryManager&, unsigned long)+0xfb >>>>> ???? [0x00002b9e6208e277] ZPageAllocator::ZPageAllocator(unsigned >>>>> long, unsigned long, unsigned long)+0x67 >>>>> ???? [0x00002b9e620706fc] ZHeap::ZHeap()+0xac >>>>> ???? [0x00002b9e6206c2c9] >>>>> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >>>>> >>>>> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >>>>> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned >>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, >>>>> unsigned long, ZAllocationFlags)+0x17 >>>>> ???? [0x00002b9e6207faa4] >>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>>>> long)+0x103 >>>>> >>>>> [0x000004003c600000 - 0x000004003c800000] committed 2048KB from >>>>> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned >>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, >>>>> unsigned long, ZAllocationFlags)+0x17 >>>>> ???? [0x00002b9e6207faa4] >>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>>>> long)+0x103 >>>>> >>>>> [0x000004003c800000 - 0x000004003ca00000] committed 2048KB from >>>>> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned >>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, >>>>> unsigned long, ZAllocationFlags)+0x17 >>>>> ???? [0x00002b9e6207faa4] >>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>>>> long)+0x103 >>>>> >>>>> >>>>> As can be seen all pages between: >>>>> [2.523s][info][gc???? ] nmt_commit?? 0x000004001f600000 2048K >>>>> >>>>> and: >>>>> [3.715s][info][gc?????? ] nmt_commit?? 0x000004003c400000 2048K >>>>> >>>>> are merged into: >>>>> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >>>>> >>>>> However the small page commits after the medium page commits all >>>>> get separate entries. >>>>> >>>>> I looked at the code in add_committed_region and this seems to be >>>>> intentionally: >>>>> ?????? // special case to expand prior region if there is no next >>>>> region >>>>> >>>>> but I don't understand the _reason_ why we don't merge the added >>>>> region with adjacent next regions. >>>>> >>>>> Zhengyu, do you know/remember the motivation behind this? >>>>> >>>>> >>>>> I created a patch to try to merge with the next region: >>>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.01/ >>>>> >>>>> This yields NMT output like the following: >>>>> >>>>> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >>>>> ???? [0x00002b26cda232db] >>>>> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >>>>> ZPhysicalMemoryManager&, unsigned long)+0xfb >>>>> ???? [0x00002b26cda1b3c7] ZPageAllocator::ZPageAllocator(unsigned >>>>> long, unsigned long, unsigned long)+0x67 >>>>> ???? [0x00002b26cd9fd84c] ZHeap::ZHeap()+0xac >>>>> ???? [0x00002b26cd9f9419] >>>>> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >>>>> >>>>> [0x000004001f600000 - 0x0000040380800000] committed 14174208KB from >>>>> ???? [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned >>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>> ???? [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, >>>>> unsigned long, ZAllocationFlags)+0x17 >>>>> ???? [0x00002b26cda0cbf4] >>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>> ???? [0x00002b26cda0e9a3] ZObjectAllocator::alloc_object(unsigned >>>>> long)+0x103 >>>>> >>>>> [0x000007ffce000000 - 0x0000080000000000] committed 819200KB from >>>>> ???? [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned >>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>> ???? [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, >>>>> unsigned long, ZAllocationFlags)+0x17 >>>>> ???? [0x00002b26cda0cbf4] >>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>> ???? [0x00002b26cda0e935] ZObjectAllocator::alloc_object(unsigned >>>>> long)+0x95 >>>>> >>>>> StefanK >>> From coleen.phillimore at oracle.com Thu Jan 25 21:53:11 2018 From: coleen.phillimore at oracle.com (coleen.phillimore at oracle.com) Date: Thu, 25 Jan 2018 16:53:11 -0500 Subject: NMT: Weird merging of regions In-Reply-To: References: <5c6d66bd-66f4-c557-6eab-ca055bc9d80c@oracle.com> <5d0125ac-272c-a3fe-8c91-939ca84aa592@redhat.com> <1e903701-de5f-6536-c69b-b73fba2c3e08@oracle.com> <20ae2972-9b14-a4a7-4b39-cb04f6d1f144@oracle.com> Message-ID: <1a878402-bf39-5339-a770-66c2aca9edc6@oracle.com> This patch looks good and thank you for writing another test. Coleen On 1/25/18 11:42 AM, Stefan Karlsson wrote: > On 2018-01-25 17:20, Zhengyu Gu wrote: >> Hi Stefan, >> >> It looks great! Could you push to upstream JDK? > > Will do. Thanks! > > StefanK > >> >> Thanks for fixing this. >> >> -Zhengyu >> >> On 01/25/2018 10:31 AM, Stefan Karlsson wrote: >>> Hi Coleen and Zhengyu, >>> >>> Thanks for the feedback. >>> >>> The accounting part of the patch is wrong, because the size of the >>> next node needs to be subtracted. I fixed this, simplified the code, >>> and added a test: >>> >>> http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.02 >>> >>> With this patch all tests test/hotspot/jtreg/runtime/NMT passes. >>> >>> Thanks, >>> StefanK >>> >>> On 2018-01-24 17:40, coleen.phillimore at oracle.com wrote: >>>> >>>> Yeah, I don't remember why we checked for null.?? Probably just to >>>> simplify the code path. >>>> >>>> The patch looks good.? There should be a test in the test system to >>>> verify it (see the bug that Zhengyu pointed to). >>>> >>>> Coleen >>>> >>>> On 1/24/18 10:43 AM, Zhengyu Gu wrote: >>>>> Hi Stefan, >>>>> >>>>> It looks like a bug that subsequent small regions were not merged, >>>>> they all have the same stacks. This part of code was last touched >>>>> by JDK-8138705 (https://bugs.openjdk.java.net/browse/JDK-8138705), >>>>> not sure if it is the cause. >>>>> >>>>> Your patch looks good to me. >>>>> >>>>> Thanks, >>>>> >>>>> -Zhengyu >>>>> >>>>> On 01/24/2018 10:17 AM, Stefan Karlsson wrote: >>>>>> Hi Zhengyu (all), >>>>>> >>>>>> I was looking at the NMT output from one of our stress tests and >>>>>> saw something unexpected. It looks like the first number commits >>>>>> of small ZPages get merged into one region, until we allocate a >>>>>> medium ZPage which ends up at the end of the virtual address >>>>>> space. After the medium ZPage has been allocated non of the >>>>>> subsequent small ZPages get merged. >>>>>> >>>>>> I traced the committing of memory: >>>>>> >>>>>> [0.079s][info][gc???? ] nmt_commit?? 0x0000040000000000 514048K >>>>>> [2.523s][info][gc???? ] nmt_commit?? 0x000004001f600000 2048K >>>>>> [2.528s][info][gc???? ] nmt_commit?? 0x000004001f800000 2048K >>>>>> [2.533s][info][gc???? ] nmt_commit?? 0x000004001fa00000 2048K >>>>>> [2.535s][info][gc???? ] nmt_commit?? 0x000004001fc00000 2048K >>>>>> [2.537s][info][gc???? ] nmt_commit?? 0x000004001fe00000 2048K >>>>>> [2.538s][info][gc???? ] nmt_commit?? 0x0000040020000000 2048K >>>>>> [2.543s][info][gc???? ] nmt_commit?? 0x0000040020200000 2048K >>>>>> [2.547s][info][gc???? ] nmt_commit?? 0x0000040020400000 2048K >>>>>> ... >>>>>> [3.714s][info][gc?????? ] nmt_commit 0x000004003c200000 2048K >>>>>> [3.715s][info][gc?????? ] nmt_commit 0x000004003c400000 2048K >>>>>> [3.731s][info][gc?????? ] nmt_commit 0x000007fffe000000 32768K >>>>>> [3.737s][info][gc?????? ] nmt_commit 0x000007fffc000000 32768K >>>>>> [3.737s][info][gc?????? ] nmt_commit 0x000004003c600000 2048K >>>>>> [3.741s][info][gc?????? ] nmt_commit 0x000004003c800000 2048K >>>>>> >>>>>> The output from NMT is: >>>>>> >>>>>> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >>>>>> ???? [0x00002b9e6209618b] >>>>>> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >>>>>> ZPhysicalMemoryManager&, unsigned long)+0xfb >>>>>> ???? [0x00002b9e6208e277] ZPageAllocator::ZPageAllocator(unsigned >>>>>> long, unsigned long, unsigned long)+0x67 >>>>>> ???? [0x00002b9e620706fc] ZHeap::ZHeap()+0xac >>>>>> ???? [0x00002b9e6206c2c9] >>>>>> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >>>>>> >>>>>> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >>>>>> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned >>>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>>> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, >>>>>> unsigned long, ZAllocationFlags)+0x17 >>>>>> ???? [0x00002b9e6207faa4] >>>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>>> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>>>>> long)+0x103 >>>>>> >>>>>> [0x000004003c600000 - 0x000004003c800000] committed 2048KB from >>>>>> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned >>>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>>> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, >>>>>> unsigned long, ZAllocationFlags)+0x17 >>>>>> ???? [0x00002b9e6207faa4] >>>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>>> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>>>>> long)+0x103 >>>>>> >>>>>> [0x000004003c800000 - 0x000004003ca00000] committed 2048KB from >>>>>> ???? [0x00002b9e620907bb] ZPageAllocator::alloc_page(unsigned >>>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>>> ???? [0x00002b9e620712e7] ZHeap::alloc_page(unsigned char, >>>>>> unsigned long, ZAllocationFlags)+0x17 >>>>>> ???? [0x00002b9e6207faa4] >>>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>>> ???? [0x00002b9e62081853] ZObjectAllocator::alloc_object(unsigned >>>>>> long)+0x103 >>>>>> >>>>>> >>>>>> As can be seen all pages between: >>>>>> [2.523s][info][gc???? ] nmt_commit?? 0x000004001f600000 2048K >>>>>> >>>>>> and: >>>>>> [3.715s][info][gc?????? ] nmt_commit 0x000004003c400000 2048K >>>>>> >>>>>> are merged into: >>>>>> [0x000004001f600000 - 0x000004003c600000] committed 475136KB from >>>>>> >>>>>> However the small page commits after the medium page commits all >>>>>> get separate entries. >>>>>> >>>>>> I looked at the code in add_committed_region and this seems to be >>>>>> intentionally: >>>>>> ?????? // special case to expand prior region if there is no next >>>>>> region >>>>>> >>>>>> but I don't understand the _reason_ why we don't merge the added >>>>>> region with adjacent next regions. >>>>>> >>>>>> Zhengyu, do you know/remember the motivation behind this? >>>>>> >>>>>> >>>>>> I created a patch to try to merge with the next region: >>>>>> http://cr.openjdk.java.net/~stefank/zgc/zNMTMerging/webrev.01/ >>>>>> >>>>>> This yields NMT output like the following: >>>>>> >>>>>> [0x0000040000000000 - 0x000004001f600000] committed 514048KB from >>>>>> ???? [0x00002b26cda232db] >>>>>> ZPreMappedMemory::ZPreMappedMemory(ZVirtualMemoryManager&, >>>>>> ZPhysicalMemoryManager&, unsigned long)+0xfb >>>>>> ???? [0x00002b26cda1b3c7] ZPageAllocator::ZPageAllocator(unsigned >>>>>> long, unsigned long, unsigned long)+0x67 >>>>>> ???? [0x00002b26cd9fd84c] ZHeap::ZHeap()+0xac >>>>>> ???? [0x00002b26cd9f9419] >>>>>> ZCollectedHeap::ZCollectedHeap(ZCollectorPolicy*)+0x49 >>>>>> >>>>>> [0x000004001f600000 - 0x0000040380800000] committed 14174208KB from >>>>>> ???? [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned >>>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>>> ???? [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, >>>>>> unsigned long, ZAllocationFlags)+0x17 >>>>>> ???? [0x00002b26cda0cbf4] >>>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>>> ???? [0x00002b26cda0e9a3] ZObjectAllocator::alloc_object(unsigned >>>>>> long)+0x103 >>>>>> >>>>>> [0x000007ffce000000 - 0x0000080000000000] committed 819200KB from >>>>>> ???? [0x00002b26cda1d90b] ZPageAllocator::alloc_page(unsigned >>>>>> char, unsigned long, ZAllocationFlags)+0x9b >>>>>> ???? [0x00002b26cd9fe437] ZHeap::alloc_page(unsigned char, >>>>>> unsigned long, ZAllocationFlags)+0x17 >>>>>> ???? [0x00002b26cda0cbf4] >>>>>> ZObjectAllocator::alloc_object_in_shared_page(ZPage**, unsigned >>>>>> char, unsigned long, unsigned long, ZAllocationFlags)+0x114 >>>>>> ???? [0x00002b26cda0e935] ZObjectAllocator::alloc_object(unsigned >>>>>> long)+0x95 >>>>>> >>>>>> StefanK >>>> > From stefan.karlsson at oracle.com Mon Jan 29 17:58:26 2018 From: stefan.karlsson at oracle.com (stefan.karlsson at oracle.com) Date: Mon, 29 Jan 2018 17:58:26 +0000 Subject: hg: zgc/zgc: ZGC: UPSTREAM: 8196217: NMT: add_committed_regions doesn't merge succeeding regions Message-ID: <201801291758.w0THwQN2016197@aojmv0008.oracle.com> Changeset: 7ce28087d321 Author: stefank Date: 2018-01-29 18:53 +0100 URL: http://hg.openjdk.java.net/zgc/zgc/rev/7ce28087d321 ZGC: UPSTREAM: 8196217: NMT: add_committed_regions doesn't merge succeeding regions ! src/hotspot/share/services/virtualMemoryTracker.cpp + test/hotspot/jtreg/runtime/NMT/VirtualAllocCommitMerge.java