From john.coomes at oracle.com Thu Aug 1 10:50:08 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 17:50:08 +0000
Subject: hg: hsx/hotspot-emb/corba: Added tag jdk8-b101 for changeset
a013024b0747
Message-ID: <20130801175011.B261B48529@hg.openjdk.java.net>
Changeset: 528c7e76eaee
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/corba/rev/528c7e76eaee
Added tag jdk8-b101 for changeset a013024b0747
! .hgtags
From john.coomes at oracle.com Thu Aug 1 10:50:21 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 17:50:21 +0000
Subject: hg: hsx/hotspot-emb/jaxp: Added tag jdk8-b101 for changeset
0a7432f898e5
Message-ID: <20130801175029.D22154852A@hg.openjdk.java.net>
Changeset: b8cd8b101ecb
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jaxp/rev/b8cd8b101ecb
Added tag jdk8-b101 for changeset 0a7432f898e5
! .hgtags
From john.coomes at oracle.com Thu Aug 1 10:50:40 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 17:50:40 +0000
Subject: hg: hsx/hotspot-emb/jaxws: Added tag jdk8-b101 for changeset
60b623a36164
Message-ID: <20130801175047.E92444852B@hg.openjdk.java.net>
Changeset: 988a5f2ac559
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jaxws/rev/988a5f2ac559
Added tag jdk8-b101 for changeset 60b623a36164
! .hgtags
From john.coomes at oracle.com Thu Aug 1 10:51:05 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 17:51:05 +0000
Subject: hg: hsx/hotspot-emb/jdk: Added tag jdk8-b101 for changeset
690161232823
Message-ID: <20130801175229.5E8224852C@hg.openjdk.java.net>
Changeset: b52a2ecdb803
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/b52a2ecdb803
Added tag jdk8-b101 for changeset 690161232823
! .hgtags
From john.coomes at oracle.com Thu Aug 1 10:53:26 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 17:53:26 +0000
Subject: hg: hsx/hotspot-emb/langtools: Added tag jdk8-b101 for changeset
0324dbf07b0f
Message-ID: <20130801175341.576D84852D@hg.openjdk.java.net>
Changeset: 4c42fba7b0e7
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/4c42fba7b0e7
Added tag jdk8-b101 for changeset 0324dbf07b0f
! .hgtags
From john.coomes at oracle.com Thu Aug 1 10:53:51 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 17:53:51 +0000
Subject: hg: hsx/hotspot-emb/nashorn: Added tag jdk8-b101 for changeset
a302b05d0ee4
Message-ID: <20130801175355.A8F414852E@hg.openjdk.java.net>
Changeset: 573ccf92d646
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/573ccf92d646
Added tag jdk8-b101 for changeset a302b05d0ee4
! .hgtags
From john.coomes at oracle.com Thu Aug 1 11:07:58 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 18:07:58 +0000
Subject: hg: hsx/hotspot-rt/corba: Added tag jdk8-b101 for changeset
a013024b0747
Message-ID: <20130801180800.8072948537@hg.openjdk.java.net>
Changeset: 528c7e76eaee
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/corba/rev/528c7e76eaee
Added tag jdk8-b101 for changeset a013024b0747
! .hgtags
From john.coomes at oracle.com Thu Aug 1 11:07:50 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 18:07:50 +0000
Subject: hg: hsx/hotspot-rt: Added tag jdk8-b101 for changeset 9f74a220677d
Message-ID: <20130801180750.576EA48536@hg.openjdk.java.net>
Changeset: 5eb3c1dc348f
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/rev/5eb3c1dc348f
Added tag jdk8-b101 for changeset 9f74a220677d
! .hgtags
From john.coomes at oracle.com Thu Aug 1 11:08:12 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 18:08:12 +0000
Subject: hg: hsx/hotspot-rt/jaxp: Added tag jdk8-b101 for changeset
0a7432f898e5
Message-ID: <20130801180823.B777548538@hg.openjdk.java.net>
Changeset: b8cd8b101ecb
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jaxp/rev/b8cd8b101ecb
Added tag jdk8-b101 for changeset 0a7432f898e5
! .hgtags
From john.coomes at oracle.com Thu Aug 1 11:08:36 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 18:08:36 +0000
Subject: hg: hsx/hotspot-rt/jaxws: Added tag jdk8-b101 for changeset
60b623a36164
Message-ID: <20130801180845.3537748539@hg.openjdk.java.net>
Changeset: 988a5f2ac559
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jaxws/rev/988a5f2ac559
Added tag jdk8-b101 for changeset 60b623a36164
! .hgtags
From john.coomes at oracle.com Thu Aug 1 11:09:03 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 18:09:03 +0000
Subject: hg: hsx/hotspot-rt/jdk: Added tag jdk8-b101 for changeset 690161232823
Message-ID: <20130801181034.7E6634853A@hg.openjdk.java.net>
Changeset: b52a2ecdb803
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/b52a2ecdb803
Added tag jdk8-b101 for changeset 690161232823
! .hgtags
From john.coomes at oracle.com Thu Aug 1 11:11:30 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 18:11:30 +0000
Subject: hg: hsx/hotspot-rt/langtools: Added tag jdk8-b101 for changeset
0324dbf07b0f
Message-ID: <20130801181147.439684853B@hg.openjdk.java.net>
Changeset: 4c42fba7b0e7
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/4c42fba7b0e7
Added tag jdk8-b101 for changeset 0324dbf07b0f
! .hgtags
From john.coomes at oracle.com Thu Aug 1 11:11:58 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 18:11:58 +0000
Subject: hg: hsx/hotspot-rt/nashorn: Added tag jdk8-b101 for changeset
a302b05d0ee4
Message-ID: <20130801181202.793494853C@hg.openjdk.java.net>
Changeset: 573ccf92d646
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/573ccf92d646
Added tag jdk8-b101 for changeset a302b05d0ee4
! .hgtags
From john.coomes at oracle.com Thu Aug 1 10:50:00 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 01 Aug 2013 17:50:00 +0000
Subject: hg: hsx/hotspot-emb: Added tag jdk8-b101 for changeset 9f74a220677d
Message-ID: <20130801175001.08B2548527@hg.openjdk.java.net>
Changeset: 5eb3c1dc348f
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/rev/5eb3c1dc348f
Added tag jdk8-b101 for changeset 9f74a220677d
! .hgtags
From harold.seigel at oracle.com Thu Aug 1 11:51:18 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Thu, 01 Aug 2013 14:51:18 -0400
Subject: Request for review: 7073961 [TESTBUG] closed/runtime/4845371/DBB.java
failed on solaris 10 x64
Message-ID: <51FAAE26.5030306@oracle.com>
Hi,
Please review this small change to help fix bug 7073961. This change
adds a method that enables tests to distinguish between Solaris on Sparc
and Solaris on X86.
Open webrev at: http://cr.openjdk.java.net/~hseigel/bug_7073961/
Bug link at: http://bugs.sun.com/view_bug.do?bug_id=7073961
JBB Bug at: https://jbs.oracle.com/bugs/browse/JDK-7073961
Thanks! Harold
From mikhailo.seledtsov at oracle.com Thu Aug 1 13:32:37 2013
From: mikhailo.seledtsov at oracle.com (Mikhailo Seledtsov)
Date: Thu, 01 Aug 2013 16:32:37 -0400
Subject: Request for review: 7073961 [TESTBUG]
closed/runtime/4845371/DBB.java failed on solaris 10 x64
In-Reply-To: <51FAAE26.5030306@oracle.com>
References: <51FAAE26.5030306@oracle.com>
Message-ID: <51FAC5E5.20004@oracle.com>
Looks good.
Misha
(not a reviewer)
On 8/1/2013 2:51 PM, harold seigel wrote:
> Hi,
>
> Please review this small change to help fix bug 7073961. This change
> adds a method that enables tests to distinguish between Solaris on
> Sparc and Solaris on X86.
>
> Open webrev at: http://cr.openjdk.java.net/~hseigel/bug_7073961/
>
>
> Bug link at: http://bugs.sun.com/view_bug.do?bug_id=7073961
>
> JBB Bug at: https://jbs.oracle.com/bugs/browse/JDK-7073961
>
> Thanks! Harold
From christian.tornqvist at oracle.com Thu Aug 1 13:40:55 2013
From: christian.tornqvist at oracle.com (Christian Tornqvist)
Date: Thu, 1 Aug 2013 16:40:55 -0400
Subject: RFR(S) 8009585: [TESTBUG] test/runtime/7196045 times out
In-Reply-To: <51F9B074.6080906@oracle.com>
References: <017101ce8977$b563c050$202b40f0$@oracle.com>
<51F5F396.5030001@oracle.com>
<016601ce8e2c$4124f790$c36ee6b0$@oracle.com>
<51F9B074.6080906@oracle.com>
Message-ID: <024f01ce8ef7$6ce81b20$46b85160$@oracle.com>
Hi David,
Somehow that option disappeared from the command line when modifying the
test, I've added that and updated the webrev:
http://cr.openjdk.java.net/~ctornqvi/webrev/8009585/webrev.01/
Thanks,
Christian
-----Original Message-----
From: David Holmes [mailto:david.holmes at oracle.com]
Sent: den 31 juli 2013 20:49
To: Christian Tornqvist
Cc: hotspot-runtime-dev at openjdk.java.net
Subject: Re: RFR(S) 8009585: [TESTBUG] test/runtime/7196045 times out
On 1/08/2013 6:26 AM, Christian Tornqvist wrote:
> Did a jprt run with both tests (increased the jtreg timeout on the
> original test for 7196045 to 200 seconds), both reproduced on 30/30
> targets (all platforms except embedded). Test fails to run on embedded
> since the counter isn't there. This should be solved by excluding this
> test on embedded platforms since it's not applicable there.
The test needs to add -XX:+UsePerfData in that case.
David
-----
>
> Thanks,
> Christian
>
> -----Original Message-----
> From: David Holmes [mailto:david.holmes at oracle.com]
> Sent: den 29 juli 2013 00:46
> To: Christian Tornqvist
> Cc: hotspot-runtime-dev at openjdk.java.net
> Subject: Re: RFR(S) 8009585: [TESTBUG] test/runtime/7196045 times out
>
> On 26/07/2013 6:44 AM, Christian Tornqvist wrote:
>> Small fix for a timeout issue in test/runtime/7196045, the internal
>> test timeout was set to 120 seconds which is the same default timeout
>> used by jtreg. Usually meant that jtreg ended up killing the test
>> before it finished. Added an allocation thread and decreased the heap
>> size, this has greatly increased the reproduction rate of this test,
>> reproduces within one second for 20 out of 20 runs. Decreased the run
>> time of the test from 120 seconds to 10 seconds.
>
> Did you see a similar reproduction rate on all platforms? This test
> might always trivially pass on slower/smaller devices.
>
> David
> -----
>
>> Webrev:
>>
>> http://cr.openjdk.java.net/~ctornqvi/webrev/8009585/webrev.00/
>>
>> Bug:
>>
>> http://bugs.sun.com/view_bug.do?bug_id=8009585
>>
>> Thanks,
>>
>> Christian
>>
>
From christian.tornqvist at oracle.com Thu Aug 1 15:37:11 2013
From: christian.tornqvist at oracle.com (christian.tornqvist at oracle.com)
Date: Thu, 01 Aug 2013 22:37:11 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 3 new changesets
Message-ID: <20130801223721.847174854B@hg.openjdk.java.net>
Changeset: 9bd314787fad
Author: mseledtsov
Date: 2013-08-01 22:15 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/9bd314787fad
8020614: OutputAnalyzer.shouldHaveExitValue() should print stdout/stderr output
Summary: OutputAnalyzer.shouldHaveExitValue() should print stdout/stderr output
Reviewed-by: kvn, ctornqvi, dholmes
+ test/testlibrary/OutputAnalyzerReportingTest.java
! test/testlibrary/com/oracle/java/testlibrary/OutputAnalyzer.java
! test/testlibrary/com/oracle/java/testlibrary/ProcessTools.java
Changeset: c01913206da5
Author: ctornqvi
Date: 2013-08-01 22:20 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/c01913206da5
8014294: Assert in ThreadTimesClosure::do_thread() due to use of naked oop instead of handle
Summary: Assert in ThreadTimesClosure::do_thread() due to use of naked oop instead of handle
Reviewed-by: coleenp, sspitsyn
! src/share/vm/services/management.cpp
Changeset: 81e0f17ade64
Author: ctornqvi
Date: 2013-08-01 22:25 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/81e0f17ade64
8009407: runtime/8000968/Test8000968.sh has incorrect check for proper config
Summary: runtime/8000968/Test8000968.sh has incorrect check for proper config
Reviewed-by: coleenp, mseledtsov, sspitsyn, hseigel
- test/runtime/8000968/Test8000968.sh
+ test/runtime/CompressedOops/CompressedKlassPointerAndOops.java
From david.holmes at oracle.com Thu Aug 1 16:37:17 2013
From: david.holmes at oracle.com (David Holmes)
Date: Fri, 02 Aug 2013 09:37:17 +1000
Subject: RFR(S) 8009585: [TESTBUG] test/runtime/7196045 times out
In-Reply-To: <024f01ce8ef7$6ce81b20$46b85160$@oracle.com>
References: <017101ce8977$b563c050$202b40f0$@oracle.com>
<51F5F396.5030001@oracle.com>
<016601ce8e2c$4124f790$c36ee6b0$@oracle.com>
<51F9B074.6080906@oracle.com>
<024f01ce8ef7$6ce81b20$46b85160$@oracle.com>
Message-ID: <51FAF12D.8040802@oracle.com>
On 2/08/2013 6:40 AM, Christian Tornqvist wrote:
> Hi David,
>
> Somehow that option disappeared from the command line when modifying the
> test, I've added that and updated the webrev:
>
> http://cr.openjdk.java.net/~ctornqvi/webrev/8009585/webrev.01/
Thanks for adding it in. I think it was added by the test harness
previously but it is better to handle this in the test itself.
David
> Thanks,
> Christian
>
> -----Original Message-----
> From: David Holmes [mailto:david.holmes at oracle.com]
> Sent: den 31 juli 2013 20:49
> To: Christian Tornqvist
> Cc: hotspot-runtime-dev at openjdk.java.net
> Subject: Re: RFR(S) 8009585: [TESTBUG] test/runtime/7196045 times out
>
> On 1/08/2013 6:26 AM, Christian Tornqvist wrote:
>> Did a jprt run with both tests (increased the jtreg timeout on the
>> original test for 7196045 to 200 seconds), both reproduced on 30/30
>> targets (all platforms except embedded). Test fails to run on embedded
>> since the counter isn't there. This should be solved by excluding this
>> test on embedded platforms since it's not applicable there.
>
> The test needs to add -XX:+UsePerfData in that case.
>
> David
> -----
>
>>
>> Thanks,
>> Christian
>>
>> -----Original Message-----
>> From: David Holmes [mailto:david.holmes at oracle.com]
>> Sent: den 29 juli 2013 00:46
>> To: Christian Tornqvist
>> Cc: hotspot-runtime-dev at openjdk.java.net
>> Subject: Re: RFR(S) 8009585: [TESTBUG] test/runtime/7196045 times out
>>
>> On 26/07/2013 6:44 AM, Christian Tornqvist wrote:
>>> Small fix for a timeout issue in test/runtime/7196045, the internal
>>> test timeout was set to 120 seconds which is the same default timeout
>>> used by jtreg. Usually meant that jtreg ended up killing the test
>>> before it finished. Added an allocation thread and decreased the heap
>>> size, this has greatly increased the reproduction rate of this test,
>>> reproduces within one second for 20 out of 20 runs. Decreased the run
>>> time of the test from 120 seconds to 10 seconds.
>>
>> Did you see a similar reproduction rate on all platforms? This test
>> might always trivially pass on slower/smaller devices.
>>
>> David
>> -----
>>
>>> Webrev:
>>>
>>> http://cr.openjdk.java.net/~ctornqvi/webrev/8009585/webrev.00/
>>>
>>> Bug:
>>>
>>> http://bugs.sun.com/view_bug.do?bug_id=8009585
>>>
>>> Thanks,
>>>
>>> Christian
>>>
>>
>
From kevin.walls at oracle.com Fri Aug 2 07:52:22 2013
From: kevin.walls at oracle.com (kevin.walls at oracle.com)
Date: Fri, 02 Aug 2013 14:52:22 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8020943: Memory leak when GCNotifier uses
create_from_platform_dependent_str()
Message-ID: <20130802145230.1B46848572@hg.openjdk.java.net>
Changeset: 32e3bada0978
Author: kevinw
Date: 2013-08-02 12:26 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/32e3bada0978
8020943: Memory leak when GCNotifier uses create_from_platform_dependent_str()
Reviewed-by: mgerdin, fparain, dcubed
! src/share/vm/services/gcNotifier.cpp
From daniel.daugherty at oracle.com Fri Aug 2 13:28:38 2013
From: daniel.daugherty at oracle.com (daniel.daugherty at oracle.com)
Date: Fri, 02 Aug 2013 20:28:38 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 23 new changesets
Message-ID: <20130802202930.24E334858B@hg.openjdk.java.net>
Changeset: 9d7b55c8a0c4
Author: cl
Date: 2013-07-25 03:18 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/9d7b55c8a0c4
Added tag jdk8-b100 for changeset 5787fac72e76
! .hgtags
Changeset: 46487ba40ff2
Author: amurillo
Date: 2013-07-26 03:48 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/46487ba40ff2
Merge
Changeset: f6921c876db1
Author: amurillo
Date: 2013-07-26 03:48 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/f6921c876db1
Added tag hs25-b43 for changeset 46487ba40ff2
! .hgtags
Changeset: e84845884c85
Author: amurillo
Date: 2013-07-26 04:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/e84845884c85
8021566: new hotspot build - hs25-b44
Reviewed-by: jcoomes
! make/hotspot_version
Changeset: d90d1b96b65b
Author: kvn
Date: 2013-07-26 12:37 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/d90d1b96b65b
8008938: TieredCompilation should be default
Summary: switch on TieredCompilation by default
Reviewed-by: twisti
! src/cpu/sparc/vm/c2_globals_sparc.hpp
! src/cpu/x86/vm/c2_globals_x86.hpp
Changeset: 0f98cc013b21
Author: fparain
Date: 2013-07-31 08:28 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/0f98cc013b21
Merge
Changeset: c65045599519
Author: dholmes
Date: 2013-07-25 21:05 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/c65045599519
8021314: minimal1.make needs to force off components not supported by the minimal VM
Reviewed-by: coleenp, bpittore
! make/bsd/makefiles/minimal1.make
! make/linux/makefiles/minimal1.make
Changeset: 078e5eb2e52e
Author: clucasius
Date: 2013-07-27 17:23 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/078e5eb2e52e
Merge
Changeset: da839a3c5735
Author: dholmes
Date: 2013-07-31 19:05 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/da839a3c5735
Merge
Changeset: e3c8767c5cf8
Author: tschatzl
Date: 2013-07-24 10:07 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/e3c8767c5cf8
8020123: Test gc/g1/TestPrintRegionRememberedSetInfo.java fails with "test result: Error. No action after @build"
Summary: Remove the @build tag and replace it by a @run tag so that the test gets executed
Reviewed-by: brutisso, mgerdin
! test/gc/g1/TestPrintRegionRememberedSetInfo.java
Changeset: 7b06ae405d7b
Author: jmasa
Date: 2013-07-23 09:49 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/7b06ae405d7b
6990419: CMS Remaining work for 6572569: consistently skewed work distribution in (long) re-mark pauses
Reviewed-by: rasbold, tschatzl, jmasa
Contributed-by: yamauchi at google.com
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
! src/share/vm/memory/defNewGeneration.cpp
! src/share/vm/memory/generation.hpp
! src/share/vm/runtime/globals.hpp
Changeset: fb7010c7c011
Author: jmasa
Date: 2013-07-25 07:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/fb7010c7c011
Merge
Changeset: ca9dedeebdec
Author: jmasa
Date: 2013-07-25 11:07 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/ca9dedeebdec
6412968: CMS Long initial mark pauses
Reviewed-by: rasbold, tschatzl, jmasa
Contributed-by: yamauchi at google.com
! src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
! src/share/vm/memory/sharedHeap.cpp
! src/share/vm/runtime/globals.hpp
Changeset: 8796fd3ac898
Author: tamao
Date: 2013-07-26 13:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/8796fd3ac898
Merge
! src/share/vm/runtime/globals.hpp
Changeset: 313227279a05
Author: brutisso
Date: 2013-08-01 07:03 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/313227279a05
8021967: Deprecate -XX:DefaultMaxRAMFraction
Reviewed-by: tschatzl, jmasa, kvn, tamao
! src/share/vm/runtime/arguments.cpp
+ test/gc/startup_warnings/TestDefaultMaxRAMFraction.java
Changeset: dae8324fc7d1
Author: brutisso
Date: 2013-08-01 09:35 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/dae8324fc7d1
8021879: G1: G1HeapRegionSize flag value not updated correctly
Reviewed-by: tschatzl, jmasa
! src/share/vm/gc_implementation/g1/heapRegion.cpp
+ test/gc/arguments/TestG1HeapRegionSize.java
Changeset: 8d4ff57af591
Author: brutisso
Date: 2013-08-01 17:29 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/8d4ff57af591
8022051: G1: Remove some unused G1 flags
Reviewed-by: tschatzl, jmasa
! src/share/vm/gc_implementation/g1/g1_globals.hpp
Changeset: 69d0dbb53c78
Author: tamao
Date: 2013-08-01 17:17 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/69d0dbb53c78
Merge
Changeset: 7c9885d23744
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/7c9885d23744
Added tag jdk8-b101 for changeset f6921c876db1
! .hgtags
Changeset: 530fe88b3b2c
Author: amurillo
Date: 2013-08-02 02:54 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/530fe88b3b2c
Merge
Changeset: c4697c1c4484
Author: amurillo
Date: 2013-08-02 02:54 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/c4697c1c4484
Added tag hs25-b44 for changeset 530fe88b3b2c
! .hgtags
Changeset: 79ce055063e9
Author: amurillo
Date: 2013-08-02 03:06 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/79ce055063e9
8022124: new hotspot build - hs25-b45
Reviewed-by: jcoomes
! make/hotspot_version
Changeset: dee4c330acd4
Author: dcubed
Date: 2013-08-02 08:32 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/dee4c330acd4
Merge
- test/runtime/8000968/Test8000968.sh
From daniel.daugherty at oracle.com Fri Aug 2 13:29:30 2013
From: daniel.daugherty at oracle.com (daniel.daugherty at oracle.com)
Date: Fri, 02 Aug 2013 20:29:30 +0000
Subject: hg: hsx/hotspot-rt-gate/hotspot: 23 new changesets
Message-ID: <20130802203043.99A5A4858C@hg.openjdk.java.net>
Changeset: 9d7b55c8a0c4
Author: cl
Date: 2013-07-25 03:18 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/9d7b55c8a0c4
Added tag jdk8-b100 for changeset 5787fac72e76
! .hgtags
Changeset: 46487ba40ff2
Author: amurillo
Date: 2013-07-26 03:48 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/46487ba40ff2
Merge
Changeset: f6921c876db1
Author: amurillo
Date: 2013-07-26 03:48 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/f6921c876db1
Added tag hs25-b43 for changeset 46487ba40ff2
! .hgtags
Changeset: e84845884c85
Author: amurillo
Date: 2013-07-26 04:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/e84845884c85
8021566: new hotspot build - hs25-b44
Reviewed-by: jcoomes
! make/hotspot_version
Changeset: d90d1b96b65b
Author: kvn
Date: 2013-07-26 12:37 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/d90d1b96b65b
8008938: TieredCompilation should be default
Summary: switch on TieredCompilation by default
Reviewed-by: twisti
! src/cpu/sparc/vm/c2_globals_sparc.hpp
! src/cpu/x86/vm/c2_globals_x86.hpp
Changeset: 0f98cc013b21
Author: fparain
Date: 2013-07-31 08:28 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/0f98cc013b21
Merge
Changeset: c65045599519
Author: dholmes
Date: 2013-07-25 21:05 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/c65045599519
8021314: minimal1.make needs to force off components not supported by the minimal VM
Reviewed-by: coleenp, bpittore
! make/bsd/makefiles/minimal1.make
! make/linux/makefiles/minimal1.make
Changeset: 078e5eb2e52e
Author: clucasius
Date: 2013-07-27 17:23 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/078e5eb2e52e
Merge
Changeset: da839a3c5735
Author: dholmes
Date: 2013-07-31 19:05 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/da839a3c5735
Merge
Changeset: e3c8767c5cf8
Author: tschatzl
Date: 2013-07-24 10:07 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/e3c8767c5cf8
8020123: Test gc/g1/TestPrintRegionRememberedSetInfo.java fails with "test result: Error. No action after @build"
Summary: Remove the @build tag and replace it by a @run tag so that the test gets executed
Reviewed-by: brutisso, mgerdin
! test/gc/g1/TestPrintRegionRememberedSetInfo.java
Changeset: 7b06ae405d7b
Author: jmasa
Date: 2013-07-23 09:49 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/7b06ae405d7b
6990419: CMS Remaining work for 6572569: consistently skewed work distribution in (long) re-mark pauses
Reviewed-by: rasbold, tschatzl, jmasa
Contributed-by: yamauchi at google.com
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
! src/share/vm/memory/defNewGeneration.cpp
! src/share/vm/memory/generation.hpp
! src/share/vm/runtime/globals.hpp
Changeset: fb7010c7c011
Author: jmasa
Date: 2013-07-25 07:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/fb7010c7c011
Merge
Changeset: ca9dedeebdec
Author: jmasa
Date: 2013-07-25 11:07 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/ca9dedeebdec
6412968: CMS Long initial mark pauses
Reviewed-by: rasbold, tschatzl, jmasa
Contributed-by: yamauchi at google.com
! src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
! src/share/vm/memory/sharedHeap.cpp
! src/share/vm/runtime/globals.hpp
Changeset: 8796fd3ac898
Author: tamao
Date: 2013-07-26 13:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/8796fd3ac898
Merge
! src/share/vm/runtime/globals.hpp
Changeset: 313227279a05
Author: brutisso
Date: 2013-08-01 07:03 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/313227279a05
8021967: Deprecate -XX:DefaultMaxRAMFraction
Reviewed-by: tschatzl, jmasa, kvn, tamao
! src/share/vm/runtime/arguments.cpp
+ test/gc/startup_warnings/TestDefaultMaxRAMFraction.java
Changeset: dae8324fc7d1
Author: brutisso
Date: 2013-08-01 09:35 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/dae8324fc7d1
8021879: G1: G1HeapRegionSize flag value not updated correctly
Reviewed-by: tschatzl, jmasa
! src/share/vm/gc_implementation/g1/heapRegion.cpp
+ test/gc/arguments/TestG1HeapRegionSize.java
Changeset: 8d4ff57af591
Author: brutisso
Date: 2013-08-01 17:29 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/8d4ff57af591
8022051: G1: Remove some unused G1 flags
Reviewed-by: tschatzl, jmasa
! src/share/vm/gc_implementation/g1/g1_globals.hpp
Changeset: 69d0dbb53c78
Author: tamao
Date: 2013-08-01 17:17 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/69d0dbb53c78
Merge
Changeset: 7c9885d23744
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/7c9885d23744
Added tag jdk8-b101 for changeset f6921c876db1
! .hgtags
Changeset: 530fe88b3b2c
Author: amurillo
Date: 2013-08-02 02:54 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/530fe88b3b2c
Merge
Changeset: c4697c1c4484
Author: amurillo
Date: 2013-08-02 02:54 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/c4697c1c4484
Added tag hs25-b44 for changeset 530fe88b3b2c
! .hgtags
Changeset: 79ce055063e9
Author: amurillo
Date: 2013-08-02 03:06 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/79ce055063e9
8022124: new hotspot build - hs25-b45
Reviewed-by: jcoomes
! make/hotspot_version
Changeset: dee4c330acd4
Author: dcubed
Date: 2013-08-02 08:32 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt-gate/hotspot/rev/dee4c330acd4
Merge
- test/runtime/8000968/Test8000968.sh
From harold.seigel at oracle.com Fri Aug 2 13:31:55 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Fri, 02 Aug 2013 16:31:55 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <51F03ABE.2090002@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com>
Message-ID: <51FC173B.6070205@oracle.com>
Hi,
Please review this updated webrev for bug 8003424:
http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
The updated webrev has a lot of changes from the previous webrev,
including the following:
1. Class metaspace information is now output when
-XX:+PrintCompressedOopsMode is specified.
2. decode_klass_not_null(Register dst, Register src) no longer
clobbers R12.
3. Method using_class_vsm() was renamed to using_class_space().
4. Type narrowKlass was added and replaces narrowOop, where appropriate.
5. The Metaspace:: qualifier was removed, where it was unnecessary.
6. Metaspace::initialize_class_space() was made private.
7. Method max_heap_for_compressed_oops(), in arguments.cpp, was updated.
Performance tests were run by Jenny using specjvm2008, specjbb2005, and
specjbb2013. The results showed no significant performance difference
in terms of scores and gc behavior.
Additional testing was done on Solaris Sparc and Linux x86 using
SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
Please let me know what additional tests should be run.
Thanks!
Harold
On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
> Hi Harold,
>
> > Usually the narrow_klass_base will be 32G and the
> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means that
> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12, unless
> > we do multiple addq(r, narrow_klass_base_shifted()). Does that make
> sense?
>
> My bad, I miscalculated. But we have "perfect value" 0x800000000 and I
> am tempted to use may be bts (bit set) to avoid R12 usage (assuming or
> with check that class metaspace size < 32Gb).
>
> > Is there one prefix byte per instruction, or just for certain
> instructions?
>
> "Not all instructions require a REX prefix in 64-bit mode. A prefix is
> necessary only if an instruction references one of the extended
> registers or uses a 64-bit operand."
>
> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and =32
> and big java heap. Recently we got several bugs which indicated that
> we did not separate cleanly oops and klass pointers en/decoding.
>
> Thanks,
> Vladimir
>
> On 7/24/13 11:35 AM, harold seigel wrote:
>> Hi Vladimir,
>>
>> Thank you for the review! Please see inline comments.
>>
>> Thanks, Harold
>>
>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>> Nice clean up, Harold
>>>>
>>>> Could you add the size of class metaspace in output with
>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>> remember an
>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>> Will be done in next webrev.
>>>>
>>>> Also it would be nice to print these info line (and compressed oops
>>>> info
>>>> line) in hs_err files.
>> I filed an enhancement bug for this: 8021264
>> .
>>>>
>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in x86_64.ad.
>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also note
>>>> that code in .ad file does not check the encoding mode for narrow
>>>> klass/oop so it should be conservative and assume that arithmetic
>>>> instructions are used.
>> OK. Thanks.
>>>>
>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>> 4Gb so
>>>> the value is 32 bit. You can use it directly in narrow klass
>>>> encoding/decoding without destroying R12.
>>>
>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>> bit is extended so you will get wrong result with address > 2gb).
>> But the base will normally be 32Gb. So this case won't happen very
>> often.
>>>
>>> You definitely should not use R12 in decode_klass_not_null(Register
>>> dst, Register src) method where you have free 'dst' register.
>> Will be fixed in next webrev.
>>>
>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>> The idea was to avoid using R12 by using shifted base:
>>>
>>> decode:
>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>> if (Universe::set_narrow_klass_shift() == 0) {
>>> shrq(r, LogKlassAlignmentInBytes);
>>> }
>>> addq(r, Universe::narrow_klass_base_shifted());
>>> shlq(r, LogKlassAlignmentInBytes);
>>> }
>>>
>>> Universe::narrow_klass_base_shifted() is set only if
>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>> (max positive int).
>> Usually the narrow_klass_base will be 32G and the
>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means that
>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12, unless
>> we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>> sense?
>>>
>>> And you have general memory reservation problem. At least on Solaris,
>>> as I remember, OS will always try to keep protected 4Kb pages between
>>> different requested memory regions. That is why in jdk7 we first
>>> reserve one huge space and then cut it on java heap, perm gen and
>>> protection page below heap to catch implicit NULL exceptions with
>>> compressed oops.
>>>
>>> So, please, verify that you are getting 'cds_address + cds_total'
>>> address or CompressedKlassPointersBase without CDS and with compressed
>>> oops and with Xmx20Gb.
>> I verifed that we get either cds_address+cds_total as the address, or
>> CompressedKlassPointersBase as the address without CDS on Linux, Windows
>> 7, Mac OS, and Solaris 5.11. This is true with default heap sizes and
>> -Xmx32G.
>>
>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the desired
>> CDS address for class metaspace regardless of heap size.
>>>
>>>>
>>>> instr_size_for_decode_klass_not_null() is ugly but unfortunately we
>>>> can't do other way. I assume you use max size because depending on
>>>> registers used in instructions you will or will not get prefix byte
>>>> (r8-r15).
>> Is there one prefix byte per instruction, or just for certain
>> instructions?
>>>>
>>>> I will look on changes in more details may be late.
>>>
>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>> which are not obvious.
>> I changed using_class_vsm() to using_class_space().
>>>
>>>
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>> Hi,
>>>>>
>>>>> Please review this fix for bug 8003424.
>>>>>
>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>
>>>>> Open bug links at:
>>>>>
>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>
>>>>> JBS Bug links at
>>>>>
>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>
>>>>>
>>>>> This fix provides support for using compressed klass pointers with
>>>>> CDS.
>>>>> It also changes the class metaspace allocation on 64-bit platforms
>>>>> when
>>>>> UseCompressedKlassPointers is true. Instead of allocating the class
>>>>> metaspace as part of the Java Heap allocation and locating it at the
>>>>> base of that allocation, the metaspace will now be allocated
>>>>> separately,
>>>>> above the Java heap. This will enable future expansion of the
>>>>> metaspace
>>>>> because it won't be backed up against the Java heap. If CDS is being
>>>>> used, then the CDS region will be allocated between the Java heap and
>>>>> the metaspace.
>>>>>
>>>>> The new class metaspace allocation code tries to allocate memory at
>>>>> 32G,
>>>>> or above the CDS region, if it is present. Because of this, encoding
>>>>> and decoding of compressed klass pointers will always require use
>>>>> of a
>>>>> base register. So, encoding and decoding of compressed klass
>>>>> pointers
>>>>> will differ from compressed oops.
>>>>>
>>>>> There are no class metaspace allocation changes if
>>>>> UseCompressedKlassPointers is turned off or if running on a 32-bit
>>>>> platform.
>>>>>
>>>>> The code changes also include some cleanup and will fix bugs 8016729,
>>>>> 8011610, and 8003424.
>>>>>
>>>>>
>>>>> Many of the modules in this webrev contain a lot of changes. Modules
>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were changed to
>>>>> support the new encoding and decoding of compressed klass pointers.
>>>>>
>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>> allocation for metaspace and the CDS region and to determine
>>>>> compressed
>>>>> klass pointer encoding base and shifting values.
>>>>>
>>>>> Most of the changes to module universe.cpp were to remove code
>>>>> related
>>>>> to allocating metaspace and remove code that considered compressed
>>>>> klass
>>>>> pointers when determining the compressed oops compression mechanism.
>>>>>
>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as part of a
>>>>> cleanup requested by Coleen.
>>>>>
>>>>>
>>>>> These changes were tested with JCK Lang and VM tests, JTReg tests,
>>>>> JPRT,
>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>> tests. Most of the test were run with -Xshare:on and -Xshare:off
>>>>> (with
>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>> 64-Bit
>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests were
>>>>> run on Solaris x86.
>>>>>
>>>>> The performance impact of these changes is TBD.
>>>>>
>>>>> Thanks, Harold
>>>>>
>>>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130802/3e2153e6/attachment-0001.html
From christian.tornqvist at oracle.com Fri Aug 2 15:21:03 2013
From: christian.tornqvist at oracle.com (christian.tornqvist at oracle.com)
Date: Fri, 02 Aug 2013 22:21:03 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 3 new changesets
Message-ID: <20130802222112.0ACF8485A1@hg.openjdk.java.net>
Changeset: fa57c8104b76
Author: ctornqvi
Date: 2013-08-02 18:12 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/fa57c8104b76
8009585: test/runtime/7196045 times out
Summary: test/runtime/7196045 times out
Reviewed-by: dholmes, mseledtsov
- test/runtime/7196045/Test7196045.java
+ test/runtime/InternalApi/ThreadCpuTimesDeadlock.java
Changeset: 0f209afdfcf8
Author: ctornqvi
Date: 2013-08-02 18:26 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/0f209afdfcf8
Merge
Changeset: d02de8cac823
Author: ctornqvi
Date: 2013-08-02 22:34 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/d02de8cac823
Merge
- test/runtime/7196045/Test7196045.java
From daniel.daugherty at oracle.com Fri Aug 2 15:36:07 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Fri, 02 Aug 2013 16:36:07 -0600
Subject: code review (round 0) request for VS2010 IDE fix (8016601)
Message-ID: <51FC3457.30003@oracle.com>
Greetings,
I have have a proposed fix for the following bug:
8016601 Unable to build hsx24 on Windows using project creator and
Visual Studio
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016601
https://jbs.oracle.com/bugs/browse/JDK-8016601
Here are the HSX-25 webrev URLs:
OpenJDK: http://cr.openjdk.java.net/~dcubed/8016601-webrev/0-hsx25/
Internal: http://javaweb.us.oracle.com/~ddaugher/8016601-webrev/0-hsx25/
Testing:
- JPRT windows_i586 and windows_x64 build and test
- local windows_i586 cmd line builds for:
{OpenJDK, Oracle} x {Client, Server} VM x {product, debug, fastdebug}
- local windows_i586 VS2010 builds for
{OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
fastdebug}
- local windows_x64 VS2010 builds for
{OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
fastdebug}
Thanks to Ron for doing the windows_x64 testing
Gory details are below. As always, comments, questions and
suggestions are welome.
Dan
Gory Details:
Build fixes:
- VS2010 IDE builds are working again; fixes this failure mode:
1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\objectCountEventSender.obj
: warning LNK4042: object specified more than once; extras ignored
1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\errorReporter.obj
: warning LNK4042: object specified more than once; extras ignored
1> Creating library
D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.lib
and object
D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.exp
1>jfrRequestables.obj : error LNK2019: unresolved external symbol
"public: static void __cdecl
ObjectCountEventSender::disable_requestable_event(void)"
(?disable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced in
function "public: virtual void __thiscall
VM_GC_SendObjectCountEvent::doit(void)"
(?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
1>jfrRequestables.obj : error LNK2019: unresolved external symbol
"public: static void __cdecl
ObjectCountEventSender::enable_requestable_event(void)"
(?enable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced in
function "public: virtual void __thiscall
VM_GC_SendObjectCountEvent::doit(void)"
(?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.dll
: fatal error LNK1120: 2 unresolved externals
- The ProjectCreator tool is modified to support two new options:
'-relativeAltSrcInclude' and '-altRelativeInclude'. Here's an
example use of the new options:
-relativeAltSrcInclude src\closed
-altRelativeInclude share\vm
which means config the project with some alternate source files in
src\closed\share\vm that will replace the corresponding files in
src\share\vm.
For example, src\closed\share\vm\utilities\errorReporter.cpp replaces
src\share\vm\utilities\errorReporter.cpp. In the VS2010 IDE, you'll
still be able to see src\share\vm\utilities\errorReporter.cpp in the
project source browser, but the icon will indicate that the file is
excluded from the project.
The ProjectCreator tool's file tree walking logic is modified to keep
track of each alternate source file that is found. If a corresponding
regular source file is found, then the regular source file is
excluded from the project in favor of the alternate source version.
- VS2010 cmd line build no longer issue the following linker warnings:
link.exe @C:\Users\lfoltan\AppData\Local\Temp\nm9B65.tmp
errorReporter.obj : warning LNK4042: object specified more than
once; extras ignored
objectCountEventSender.obj : warning LNK4042: object specified more
than once; extras ignored
Misc cleanups:
- removed more "core" config support from various makefiles and scripts;
the "core" config is vestigal and was mostly removed years ago; the
"core" config is not the same as the "minimalvm" config.
- removed extra references to ${ALTSRC}/share/vm/jfr objects
- added some "AltSrc" versus "OpenJDK" identification to messages where
files are auto-generated
- added some missing copyright headers
From david.holmes at oracle.com Sun Aug 4 21:34:10 2013
From: david.holmes at oracle.com (david.holmes at oracle.com)
Date: Mon, 05 Aug 2013 04:34:10 +0000
Subject: hg: hsx/hotspot-emb/hotspot: 20 new changesets
Message-ID: <20130805043452.980D1485D5@hg.openjdk.java.net>
Changeset: 1b6395189726
Author: minqi
Date: 2013-07-19 14:43 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/1b6395189726
8012263: ciReplay: gracefully exit & report meaningful error when replay data parsing fails
Summary: find_method could return NULL so need explicitly check if there is error after parse_method, exit on error to avoid crash.
Reviewed-by: kvn, twisti
Contributed-by: yumin.qi at oracle.com
! src/share/vm/ci/ciReplay.cpp
Changeset: 5ad7f8179bf7
Author: minqi
Date: 2013-07-24 08:04 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/5ad7f8179bf7
Merge
Changeset: b6baf306e698
Author: fparain
Date: 2013-07-26 05:54 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/b6baf306e698
Merge
Changeset: 83ca9dc4564d
Author: fparain
Date: 2013-07-26 15:24 +0000
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/83ca9dc4564d
8019845: Memory leak during class redefinition
Reviewed-by: acorn, jmasa, coleenp, dcubed, mgerdin
! src/share/vm/memory/metaspace.cpp
Changeset: f9ee986a9fea
Author: ccheung
Date: 2013-07-30 14:14 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/f9ee986a9fea
8021296: [TESTBUG] Test8017498.sh fails to find "gcc" and fails to compile on some Linux releases
Summary: Added checking for gcc and simplified the sig_handler() in the test case
Reviewed-by: dcubed, coleenp, minqi, dlong
! test/runtime/6929067/Test6929067.sh
! test/runtime/7107135/Test7107135.sh
! test/runtime/jsig/Test8017498.sh
! test/runtime/jsig/TestJNI.c
Changeset: 0f98cc013b21
Author: fparain
Date: 2013-07-31 08:28 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/0f98cc013b21
Merge
Changeset: da839a3c5735
Author: dholmes
Date: 2013-07-31 19:05 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/da839a3c5735
Merge
Changeset: e3c8767c5cf8
Author: tschatzl
Date: 2013-07-24 10:07 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/e3c8767c5cf8
8020123: Test gc/g1/TestPrintRegionRememberedSetInfo.java fails with "test result: Error. No action after @build"
Summary: Remove the @build tag and replace it by a @run tag so that the test gets executed
Reviewed-by: brutisso, mgerdin
! test/gc/g1/TestPrintRegionRememberedSetInfo.java
Changeset: 7b06ae405d7b
Author: jmasa
Date: 2013-07-23 09:49 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/7b06ae405d7b
6990419: CMS Remaining work for 6572569: consistently skewed work distribution in (long) re-mark pauses
Reviewed-by: rasbold, tschatzl, jmasa
Contributed-by: yamauchi at google.com
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
! src/share/vm/memory/defNewGeneration.cpp
! src/share/vm/memory/generation.hpp
! src/share/vm/runtime/globals.hpp
Changeset: fb7010c7c011
Author: jmasa
Date: 2013-07-25 07:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/fb7010c7c011
Merge
Changeset: ca9dedeebdec
Author: jmasa
Date: 2013-07-25 11:07 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/ca9dedeebdec
6412968: CMS Long initial mark pauses
Reviewed-by: rasbold, tschatzl, jmasa
Contributed-by: yamauchi at google.com
! src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
! src/share/vm/memory/sharedHeap.cpp
! src/share/vm/runtime/globals.hpp
Changeset: 8796fd3ac898
Author: tamao
Date: 2013-07-26 13:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/8796fd3ac898
Merge
! src/share/vm/runtime/globals.hpp
Changeset: 313227279a05
Author: brutisso
Date: 2013-08-01 07:03 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/313227279a05
8021967: Deprecate -XX:DefaultMaxRAMFraction
Reviewed-by: tschatzl, jmasa, kvn, tamao
! src/share/vm/runtime/arguments.cpp
+ test/gc/startup_warnings/TestDefaultMaxRAMFraction.java
Changeset: dae8324fc7d1
Author: brutisso
Date: 2013-08-01 09:35 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/dae8324fc7d1
8021879: G1: G1HeapRegionSize flag value not updated correctly
Reviewed-by: tschatzl, jmasa
! src/share/vm/gc_implementation/g1/heapRegion.cpp
+ test/gc/arguments/TestG1HeapRegionSize.java
Changeset: 8d4ff57af591
Author: brutisso
Date: 2013-08-01 17:29 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/8d4ff57af591
8022051: G1: Remove some unused G1 flags
Reviewed-by: tschatzl, jmasa
! src/share/vm/gc_implementation/g1/g1_globals.hpp
Changeset: 69d0dbb53c78
Author: tamao
Date: 2013-08-01 17:17 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/69d0dbb53c78
Merge
Changeset: 7c9885d23744
Author: cl
Date: 2013-08-01 04:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/7c9885d23744
Added tag jdk8-b101 for changeset f6921c876db1
! .hgtags
Changeset: 530fe88b3b2c
Author: amurillo
Date: 2013-08-02 02:54 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/530fe88b3b2c
Merge
Changeset: c4697c1c4484
Author: amurillo
Date: 2013-08-02 02:54 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/c4697c1c4484
Added tag hs25-b44 for changeset 530fe88b3b2c
! .hgtags
Changeset: 79ce055063e9
Author: amurillo
Date: 2013-08-02 03:06 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/79ce055063e9
8022124: new hotspot build - hs25-b45
Reviewed-by: jcoomes
! make/hotspot_version
From kevin.walls at oracle.com Mon Aug 5 04:42:10 2013
From: kevin.walls at oracle.com (kevin.walls at oracle.com)
Date: Mon, 05 Aug 2013 11:42:10 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8021444: SA: ClassDump.run() should not
ignore existing ClassFilter.
Message-ID: <20130805114212.76C6A485D9@hg.openjdk.java.net>
Changeset: e0379d5ba5d2
Author: kevinw
Date: 2013-08-05 10:27 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/e0379d5ba5d2
8021444: SA: ClassDump.run() should not ignore existing ClassFilter.
Reviewed-by: minqi, poonam
! agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassDump.java
From stevenschlansker at gmail.com Sun Aug 4 22:21:10 2013
From: stevenschlansker at gmail.com (Steven Schlansker)
Date: Sun, 4 Aug 2013 22:21:10 -0700
Subject: Dismal performance of String.intern()
In-Reply-To: <51B6EDAE.3080300@oracle.com>
References:
<51B6EDAE.3080300@oracle.com>
Message-ID: <20130804222110.3b032f4e@luminol>
On Tue, 11 Jun 2013 10:28:14 +0100
Alan Bateman wrote:
> On 10/06/2013 19:06, Steven Schlansker wrote:
> > Hi core-libs-dev,
> >
> > While doing performance profiling of my application, I discovered
> > that nearly 50% of the time deserializing JSON was spent within
> > String.intern(). I understand that in general interning Strings is
> > not the best approach for things, but I think I have a decent use
> > case -- the value of a certain field is one of a very limited
> > number of valid values (that are not known at compile time, so I
> > cannot use an Enum), and is repeated many millions of times in the
> > JSON stream.
> >
> Have you run with -XX:+PrintStringTableStatistics? Might be
> interesting if you can share the output (it is printed just before
> the VM terminates).
>
> There are also tuning knobs such as StringTableSize and would be
> interesting to know if you've experimented with.
>
> -Alan.
Hi everyone,
Thanks again for your useful advice. I definitely misjudged the
difficulty and complexity of working with methods that directly bridge
the Java <-> C++ "gap"! As such, it took me way longer to get to this
than I expected...
That said, I think I have very good results to report. OpenJDK8 is
already *significantly* better than OpenJDK 7 was, but still can be
better.
Here is the patch I have at the moment:
https://gist.github.com/stevenschlansker/6153643
I used oprofile with oprofile-jit to identify the hot spots in the
benchmark code as being java_lang_String::equals() and
java_lang_String::as_unicode_string.
Both of these methods have hand-written loops that copy or compare
jchar arrays.
The problem is that in -fastdebug or -slowdebug releases, this is
one method call per character (the function is not inlined). Even in
-release builds, it seems that this is significantly slower than the
libc memcpy() or memcmp() functions which can use SSE4 (or other
related technologies).
My patch adds new methods, char_cmp and char_cpy, which delegate to the
mem* functions instead of using hand-written loops.
The micro-benchmark results are very good for such a small change.
On fastdebug, before:
Benchmark Mode Thr Cnt
Sec Mean Mean error Units
o.s.b.InternBenchmark.testLongStringChmIntern sample 1 2819
5 1.780 0.184 msec/op
o.s.b.InternBenchmark.testLongStringJdkIntern sample 1 343
5 14.571 0.310 msec/op
o.s.b.InternBenchmark.testLongStringNoIntern sample 1 8712
5 0.526 0.138 msec/op
o.s.b.InternBenchmark.testShortStringChmIntern sample 1 4427
5 1.133 0.121 msec/op
o.s.b.InternBenchmark.testShortStringJdkIntern sample 1 603
5 8.319 0.161 msec/op
o.s.b.InternBenchmark.testShortStringNoIntern sample 1 17185
5 0.274 0.048 msec/op
After:
Benchmark Mode Thr Cnt
Sec Mean Mean error Units
o.s.b.InternBenchmark.testLongStringChmIntern sample 1 2898
5 1.812 0.208 msec/op
o.s.b.InternBenchmark.testLongStringJdkIntern sample 1 1138
5 4.397 0.136 msec/op
o.s.b.InternBenchmark.testLongStringNoIntern sample 1 9035
5 0.519 0.146 msec/op
o.s.b.InternBenchmark.testShortStringChmIntern sample 1 4538
5 1.094 0.107 msec/op
o.s.b.InternBenchmark.testShortStringJdkIntern sample 1 1363
5 3.686 0.100 msec/op
o.s.b.InternBenchmark.testShortStringNoIntern sample 1 16686
5 0.316 0.081 msec/op
On release, before:
Benchmark Mode Thr Cnt
Sec Mean Mean error Units
o.s.b.InternBenchmark.testLongStringChmIntern sample 1 4030
5 1.240 0.002 msec/op
o.s.b.InternBenchmark.testLongStringJdkIntern sample 1 1024
5 4.894 0.042 msec/op
o.s.b.InternBenchmark.testLongStringNoIntern sample 1 20000
5 0.185 0.002 msec/op
o.s.b.InternBenchmark.testShortStringChmIntern sample 1 6143
5 0.814 0.005 msec/op
o.s.b.InternBenchmark.testShortStringJdkIntern sample 1 1852
5 2.702 0.016 msec/op
o.s.b.InternBenchmark.testShortStringNoIntern sample 1 20000
5 0.102 0.001 msec/op
After:
Benchmark Mode Thr Cnt
Sec Mean Mean error Units
o.s.b.InternBenchmark.testLongStringChmIntern sample 1 4040
5 1.236 0.002 msec/op
o.s.b.InternBenchmark.testLongStringJdkIntern sample 1 2733
5 1.832 0.010 msec/op
o.s.b.InternBenchmark.testLongStringNoIntern sample 1 20000
5 0.181 0.002 msec/op
o.s.b.InternBenchmark.testShortStringChmIntern sample 1 6170
5 0.809 0.001 msec/op
o.s.b.InternBenchmark.testShortStringJdkIntern sample 1 3577
5 1.396 0.007 msec/op
o.s.b.InternBenchmark.testShortStringNoIntern sample 1 20000
5 0.102 0.000 msec/op
This is almost a 3.5x improvement on fastdebug builds, and more than a
2.5x improvement on release builds. It is now only ~50% slower than
ConcurrentHashMap, at least for the low-contention case! (I did not
benchmark higher numbers of threads thoroughly, but I do not think that
my changes could make that worse...)
Finally, the benchmark code:
https://github.com/stevenschlansker/jvm-intern-benchmark/blob/master/src/main/java/org/sugis/benchmark/InternBenchmark.java
It is not the best ever benchmark, but I'm hopeful that it's "good
enough" to demonstrate the wins I have. Please let me know if you
believe the benchmark invalidates my conclusions. It is run with JMH,
as that seems to be the standard way of doing things around here.
Thank you again for your time and input; I am hopeful that I have not
erred terribly :-)
Best,
Steven
From ioi.lam at oracle.com Mon Aug 5 10:18:38 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Mon, 05 Aug 2013 10:18:38 -0700
Subject: RFR (XXS) 8022093 - syntax error near "umpiconninfo_t" -- when
building on Solaris 10
Message-ID: <51FFDE6E.2090503@oracle.com>
|Please review a very small fix:||
||
||http://cr.openjdk.java.net/~iklam/8022093/solaris_dtrace_002/||
||
||Bug: syntax error near "umpiconninfo_t" -- when building on Solaris 10||
||
||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022093||
|| https://jbs.oracle.com/bugs/browse/JDK-8022093||
||
||Summary of fix:||
||
|| OK -- it's not really fixing the build per-se, but I
added more error messages to show users possible workarounds.
Otherwise||it's fairly hard to figure out what to do.
||
||---vvv---||
||Compiling dtrace.d||
||dtrace: failed to compile script dtrace.d: "/usr/lib/dtrace/mpi.d",
line 68: syntax error near "umpiconninfo_t"||
||*****************************************************************||
||* If you are seeing 'syntax error near "umpiconninfo_t"' on Solaris||
||* 10, try doing 'cd /usr/lib/dtrace && gzip mpi.d' as root, ||
||* or set the environment variable HOTSPOT_DISABLE_DTRACE_PROBES||
||* to disable dtrace probes for this build.||
||*****************************************************************||
||---^^^---||
||
||Tests:||
||
|| JPRT||
||
||Thanks||
||- Ioi||
||
|
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130805/24a2c75d/attachment.html
From ioi.lam at oracle.com Mon Aug 5 11:15:43 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Mon, 05 Aug 2013 11:15:43 -0700
Subject: Dismal performance of String.intern()
In-Reply-To: <20130804222110.3b032f4e@luminol>
References:
<51B6EDAE.3080300@oracle.com> <20130804222110.3b032f4e@luminol>
Message-ID: <51FFEBCF.7090408@oracle.com>
Hi Steven,
This looks like a promising patch. If all goes well I can sponsor this
patch into hotspot-rt.
I have problems building your test. Could you send a stand-alone test
that can be build with plain JDK (i.e., exclude things like
com.google.common. and org.openjdk.jmh)?
Also, I saw that you tested with strings that are the same length as
UUID, which are 36 chars long:
2544f85f-1845-42c4-aba1-7a431e6edb99
eff61458-32f8-45cd-a77d-fddb14951cab
d685f1a2-0b95-4021-b9b3-b0fb3c02a17f
We do need to handle strings with shorter length, and making calls to
memcmp() may cause degradation with lots of short strings. Can you add a
sub-test that tests for strings length <= 4?
I would also recommend running a few non-trivial apps (such as eclipse)
and dump the interned string table to see the distribution of lengths. I
know this is a hassle, but it would be a good last step to wrap up your
work.
Meanwhile, I will try to run our benchmarks (aka "refworkload") to check
for any performance impact.
Thanks
- Ioi
On 08/04/2013 10:21 PM, Steven Schlansker wrote:
> On Tue, 11 Jun 2013 10:28:14 +0100
> Alan Bateman wrote:
>
>> On 10/06/2013 19:06, Steven Schlansker wrote:
>>> Hi core-libs-dev,
>>>
>>> While doing performance profiling of my application, I discovered
>>> that nearly 50% of the time deserializing JSON was spent within
>>> String.intern(). I understand that in general interning Strings is
>>> not the best approach for things, but I think I have a decent use
>>> case -- the value of a certain field is one of a very limited
>>> number of valid values (that are not known at compile time, so I
>>> cannot use an Enum), and is repeated many millions of times in the
>>> JSON stream.
>>>
>> Have you run with -XX:+PrintStringTableStatistics? Might be
>> interesting if you can share the output (it is printed just before
>> the VM terminates).
>>
>> There are also tuning knobs such as StringTableSize and would be
>> interesting to know if you've experimented with.
>>
>> -Alan.
> Hi everyone,
>
> Thanks again for your useful advice. I definitely misjudged the
> difficulty and complexity of working with methods that directly bridge
> the Java <-> C++ "gap"! As such, it took me way longer to get to this
> than I expected...
>
> That said, I think I have very good results to report. OpenJDK8 is
> already *significantly* better than OpenJDK 7 was, but still can be
> better.
>
> Here is the patch I have at the moment:
> https://gist.github.com/stevenschlansker/6153643
>
> I used oprofile with oprofile-jit to identify the hot spots in the
> benchmark code as being java_lang_String::equals() and
> java_lang_String::as_unicode_string.
>
> Both of these methods have hand-written loops that copy or compare
> jchar arrays.
>
> The problem is that in -fastdebug or -slowdebug releases, this is
> one method call per character (the function is not inlined). Even in
> -release builds, it seems that this is significantly slower than the
> libc memcpy() or memcmp() functions which can use SSE4 (or other
> related technologies).
>
> My patch adds new methods, char_cmp and char_cpy, which delegate to the
> mem* functions instead of using hand-written loops.
>
> The micro-benchmark results are very good for such a small change.
>
> On fastdebug, before:
>
> Benchmark Mode Thr Cnt
> Sec Mean Mean error Units
> o.s.b.InternBenchmark.testLongStringChmIntern sample 1 2819
> 5 1.780 0.184 msec/op
> o.s.b.InternBenchmark.testLongStringJdkIntern sample 1 343
> 5 14.571 0.310 msec/op
> o.s.b.InternBenchmark.testLongStringNoIntern sample 1 8712
> 5 0.526 0.138 msec/op
> o.s.b.InternBenchmark.testShortStringChmIntern sample 1 4427
> 5 1.133 0.121 msec/op
> o.s.b.InternBenchmark.testShortStringJdkIntern sample 1 603
> 5 8.319 0.161 msec/op
> o.s.b.InternBenchmark.testShortStringNoIntern sample 1 17185
> 5 0.274 0.048 msec/op
>
> After:
>
> Benchmark Mode Thr Cnt
> Sec Mean Mean error Units
> o.s.b.InternBenchmark.testLongStringChmIntern sample 1 2898
> 5 1.812 0.208 msec/op
> o.s.b.InternBenchmark.testLongStringJdkIntern sample 1 1138
> 5 4.397 0.136 msec/op
> o.s.b.InternBenchmark.testLongStringNoIntern sample 1 9035
> 5 0.519 0.146 msec/op
> o.s.b.InternBenchmark.testShortStringChmIntern sample 1 4538
> 5 1.094 0.107 msec/op
> o.s.b.InternBenchmark.testShortStringJdkIntern sample 1 1363
> 5 3.686 0.100 msec/op
> o.s.b.InternBenchmark.testShortStringNoIntern sample 1 16686
> 5 0.316 0.081 msec/op
>
> On release, before:
>
> Benchmark Mode Thr Cnt
> Sec Mean Mean error Units
> o.s.b.InternBenchmark.testLongStringChmIntern sample 1 4030
> 5 1.240 0.002 msec/op
> o.s.b.InternBenchmark.testLongStringJdkIntern sample 1 1024
> 5 4.894 0.042 msec/op
> o.s.b.InternBenchmark.testLongStringNoIntern sample 1 20000
> 5 0.185 0.002 msec/op
> o.s.b.InternBenchmark.testShortStringChmIntern sample 1 6143
> 5 0.814 0.005 msec/op
> o.s.b.InternBenchmark.testShortStringJdkIntern sample 1 1852
> 5 2.702 0.016 msec/op
> o.s.b.InternBenchmark.testShortStringNoIntern sample 1 20000
> 5 0.102 0.001 msec/op
>
> After:
>
> Benchmark Mode Thr Cnt
> Sec Mean Mean error Units
> o.s.b.InternBenchmark.testLongStringChmIntern sample 1 4040
> 5 1.236 0.002 msec/op
> o.s.b.InternBenchmark.testLongStringJdkIntern sample 1 2733
> 5 1.832 0.010 msec/op
> o.s.b.InternBenchmark.testLongStringNoIntern sample 1 20000
> 5 0.181 0.002 msec/op
> o.s.b.InternBenchmark.testShortStringChmIntern sample 1 6170
> 5 0.809 0.001 msec/op
> o.s.b.InternBenchmark.testShortStringJdkIntern sample 1 3577
> 5 1.396 0.007 msec/op
> o.s.b.InternBenchmark.testShortStringNoIntern sample 1 20000
> 5 0.102 0.000 msec/op
>
>
> This is almost a 3.5x improvement on fastdebug builds, and more than a
> 2.5x improvement on release builds. It is now only ~50% slower than
> ConcurrentHashMap, at least for the low-contention case! (I did not
> benchmark higher numbers of threads thoroughly, but I do not think that
> my changes could make that worse...)
>
> Finally, the benchmark code:
> https://github.com/stevenschlansker/jvm-intern-benchmark/blob/master/src/main/java/org/sugis/benchmark/InternBenchmark.java
>
> It is not the best ever benchmark, but I'm hopeful that it's "good
> enough" to demonstrate the wins I have. Please let me know if you
> believe the benchmark invalidates my conclusions. It is run with JMH,
> as that seems to be the standard way of doing things around here.
>
> Thank you again for your time and input; I am hopeful that I have not
> erred terribly :-)
>
> Best,
> Steven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130805/ed81e903/attachment-0001.html
From aleksey.shipilev at oracle.com Mon Aug 5 11:29:54 2013
From: aleksey.shipilev at oracle.com (Aleksey Shipilev)
Date: Mon, 05 Aug 2013 22:29:54 +0400
Subject: Dismal performance of String.intern()
In-Reply-To: <51FFEBCF.7090408@oracle.com>
References:
<51B6EDAE.3080300@oracle.com> <20130804222110.3b032f4e@luminol>
<51FFEBCF.7090408@oracle.com>
Message-ID: <51FFEF22.7010409@oracle.com>
On 08/05/2013 10:15 PM, Ioi Lam wrote:
> I have problems building your test. Could you send a stand-alone test
> that can be build with plain JDK (i.e., exclude things like
> com.google.common. and org.openjdk.jmh)?
I would strongly advise against dropping JMH. Maintaining the benchmark
with JMH is the way to overcome many of the benchmarking pitfalls we
would introduce with custom tests. Depending on Guava is the blocker
though, since we can not have this dependency in OpenJDK before prior
legal review.
-Aleksey.
From aleksey.shipilev at oracle.com Mon Aug 5 11:43:50 2013
From: aleksey.shipilev at oracle.com (Aleksey Shipilev)
Date: Mon, 05 Aug 2013 22:43:50 +0400
Subject: Dismal performance of String.intern()
In-Reply-To: <20130804222110.3b032f4e@luminol>
References:
<51B6EDAE.3080300@oracle.com> <20130804222110.3b032f4e@luminol>
Message-ID: <51FFF266.5030806@oracle.com>
Hi Steven,
On 08/05/2013 09:21 AM, Steven Schlansker wrote:
> Here is the patch I have at the moment:
> https://gist.github.com/stevenschlansker/6153643
Would you like to make char_cmp() and char_cpy() "inline"? In release,
they can then be compiled straight to memcmp/memcpy.
> This is almost a 3.5x improvement on fastdebug builds, and more than a
> 2.5x improvement on release builds. It is now only ~50% slower than
> ConcurrentHashMap, at least for the low-contention case! (I did not
> benchmark higher numbers of threads thoroughly, but I do not think that
> my changes could make that worse...)
The results look good. In fact, I think multi-threaded tests will show
how the StringTable works under contention, and whether the changes you
made are making it worse or better is the open question. (I bet for
"better").
> Finally, the benchmark code:
> https://github.com/stevenschlansker/jvm-intern-benchmark/blob/master/src/main/java/org/sugis/benchmark/InternBenchmark.java
>
> It is not the best ever benchmark, but I'm hopeful that it's "good
> enough" to demonstrate the wins I have. Please let me know if you
> believe the benchmark invalidates my conclusions. It is run with JMH,
> as that seems to be the standard way of doing things around here.
The benchmark is good, actually. You pay for the cost of constructing
the interner, though, but it seems to be the lesser of two evils (i.e.
cleaning the interner is more of the hassle). A few minor nits:
a) It seems better to design this benchmark this way: prepare the list
of random Strings (Ioi's suggestion to juggle the string lenghts fits
nicely there), feed them to interner, return the interner from the @GMB
method. You will save a lot of blatant allocations like "new
String(buf)" in the hot loop, as well as make loop more unpredictable
(e.g. not relying on successful hoisting).
b) @BenchmarkMode can float up to class level. Less scaffolding.
-Aleksey.
From coleen.phillimore at oracle.com Mon Aug 5 12:21:13 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Mon, 05 Aug 2013 15:21:13 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <51FC173B.6070205@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
Message-ID: <51FFFB29.9070304@oracle.com>
On 08/02/2013 04:31 PM, harold seigel wrote:
> Hi,
>
> Please review this updated webrev for bug 8003424:
> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>
>
> The updated webrev has a lot of changes from the previous webrev,
> including the following:
>
> 1. Class metaspace information is now output when
> -XX:+PrintCompressedOopsMode is specified.
>
> 2. decode_klass_not_null(Register dst, Register src) no longer
> clobbers R12.
>
If decode_klass_not_null(src, dest) doesn't use r12, isn't the size
calculated by *instr_size_for_decode_klass_not_null* now wrong? Or is
this size calculation only valid for the case where you only have one
register? Or can this size be a max size?
http://cr.openjdk.java.net/~hseigel/bug_8003424.2/src/share/vm/memory/heap.cpp.frames.html
In this file can you spell out segm_r_aligned to something more
descriptive - like reserved_segment_alignment, reserved_segments_size,
committed_segments_size.
http://cr.openjdk.java.net/~hseigel/bug_8003424.2/src/share/vm/memory/metaspace.cpp.udiff.html
*+ if (PrintCompressedOopsMode || (PrintMiscellaneous && Verbose)) {*
*+ gclog_or_tty->print_cr("Narrow klass base: " PTR_FORMAT ", Narrow klass shift: " SIZE_FORMAT,*
I see this conditional comes from universe.cpp but I don't see why this
should be printed for the OR condition: PrintMiscellaneous && Verbose.
2941 #ifdef _LP64
2942 Universe::set_narrow_klass_base((address)_space_list->current_virtual_space()->bottom()
Put a comment why you do this. It's so UseCompressedKlassPointers
decoding "works" while you are creating the shared archive. The oops
are thrown away right now so it doesn't matter that the encoded value
uses a different base during dumping than it will use during
UseSharedSpaces. When we share String oops, we'll have to fix this
code but I don't know how to fix this yet. Maybe add code that always
requires that the CDS archive base is the lower of the two bases. Not
a problem with your code.
Maybe you should assert that UseCompressedOops and KlassPtrs are set
here though.
3012 if (using_class_space()) {
3013 _class_space_list = new VirtualSpaceList(rs);
3014 }
This function initialize_class_space() is always called when you are
using_class_space() so why this conditional? Shouldn't this also be
moved to 2917 under where it's called (or above) in the ifdef LP64 since
it's LP64 only now?
2557 if ((mdtype == Metaspace::ClassType) && !Metaspace::using_class_space()) {
2558 return 0;
2559 }
One way to shorten this expression that appears a few times, is to add
an inlined overloaded using_class_space(MetadataType).
This looks really good. I've been through it a few times and I don't
see any problems, other than these suggestions here.
Thanks!
Coleen
>
> 3. Method using_class_vsm() was renamed to using_class_space().
>
> 4. Type narrowKlass was added and replaces narrowOop, where
> appropriate.
>
> 5. The Metaspace:: qualifier was removed, where it was unnecessary.
>
> 6. Metaspace::initialize_class_space() was made private.
>
> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
> updated.
>
> Performance tests were run by Jenny using specjvm2008, specjbb2005,
> and specjbb2013. The results showed no significant performance
> difference in terms of scores and gc behavior.
>
> Additional testing was done on Solaris Sparc and Linux x86 using
> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>
> Please let me know what additional tests should be run.
>
> Thanks!
> Harold
>
> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>> Hi Harold,
>>
>> > Usually the narrow_klass_base will be 32G and the
>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>> that
>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>> unless
>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
>> make sense?
>>
>> My bad, I miscalculated. But we have "perfect value" 0x800000000 and
>> I am tempted to use may be bts (bit set) to avoid R12 usage (assuming
>> or with check that class metaspace size < 32Gb).
>>
>> > Is there one prefix byte per instruction, or just for certain
>> instructions?
>>
>> "Not all instructions require a REX prefix in 64-bit mode. A prefix
>> is necessary only if an instruction references one of the extended
>> registers or uses a 64-bit operand."
>>
>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and =32
>> and big java heap. Recently we got several bugs which indicated that
>> we did not separate cleanly oops and klass pointers en/decoding.
>>
>> Thanks,
>> Vladimir
>>
>> On 7/24/13 11:35 AM, harold seigel wrote:
>>> Hi Vladimir,
>>>
>>> Thank you for the review! Please see inline comments.
>>>
>>> Thanks, Harold
>>>
>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>> Nice clean up, Harold
>>>>>
>>>>> Could you add the size of class metaspace in output with
>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>> remember an
>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>> Will be done in next webrev.
>>>>>
>>>>> Also it would be nice to print these info line (and compressed
>>>>> oops info
>>>>> line) in hs_err files.
>>> I filed an enhancement bug for this: 8021264
>>> .
>>>>>
>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>> x86_64.ad.
>>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also note
>>>>> that code in .ad file does not check the encoding mode for narrow
>>>>> klass/oop so it should be conservative and assume that arithmetic
>>>>> instructions are used.
>>> OK. Thanks.
>>>>>
>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>> 4Gb so
>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>> encoding/decoding without destroying R12.
>>>>
>>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>>> bit is extended so you will get wrong result with address > 2gb).
>>> But the base will normally be 32Gb. So this case won't happen very
>>> often.
>>>>
>>>> You definitely should not use R12 in decode_klass_not_null(Register
>>>> dst, Register src) method where you have free 'dst' register.
>>> Will be fixed in next webrev.
>>>>
>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>>> The idea was to avoid using R12 by using shifted base:
>>>>
>>>> decode:
>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>> shrq(r, LogKlassAlignmentInBytes);
>>>> }
>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>> shlq(r, LogKlassAlignmentInBytes);
>>>> }
>>>>
>>>> Universe::narrow_klass_base_shifted() is set only if
>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>>> (max positive int).
>>> Usually the narrow_klass_base will be 32G and the
>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means that
>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12, unless
>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>> sense?
>>>>
>>>> And you have general memory reservation problem. At least on Solaris,
>>>> as I remember, OS will always try to keep protected 4Kb pages between
>>>> different requested memory regions. That is why in jdk7 we first
>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>> protection page below heap to catch implicit NULL exceptions with
>>>> compressed oops.
>>>>
>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>> address or CompressedKlassPointersBase without CDS and with compressed
>>>> oops and with Xmx20Gb.
>>> I verifed that we get either cds_address+cds_total as the address, or
>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>> Windows
>>> 7, Mac OS, and Solaris 5.11. This is true with default heap sizes and
>>> -Xmx32G.
>>>
>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the desired
>>> CDS address for class metaspace regardless of heap size.
>>>>
>>>>>
>>>>> instr_size_for_decode_klass_not_null() is ugly but unfortunately we
>>>>> can't do other way. I assume you use max size because depending on
>>>>> registers used in instructions you will or will not get prefix byte
>>>>> (r8-r15).
>>> Is there one prefix byte per instruction, or just for certain
>>> instructions?
>>>>>
>>>>> I will look on changes in more details may be late.
>>>>
>>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>>> which are not obvious.
>>> I changed using_class_vsm() to using_class_space().
>>>>
>>>>
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Please review this fix for bug 8003424.
>>>>>>
>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>
>>>>>> Open bug links at:
>>>>>>
>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>
>>>>>> JBS Bug links at
>>>>>>
>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>
>>>>>>
>>>>>> This fix provides support for using compressed klass pointers
>>>>>> with CDS.
>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>>> platforms when
>>>>>> UseCompressedKlassPointers is true. Instead of allocating the class
>>>>>> metaspace as part of the Java Heap allocation and locating it at the
>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>> separately,
>>>>>> above the Java heap. This will enable future expansion of the
>>>>>> metaspace
>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>> being
>>>>>> used, then the CDS region will be allocated between the Java heap
>>>>>> and
>>>>>> the metaspace.
>>>>>>
>>>>>> The new class metaspace allocation code tries to allocate memory at
>>>>>> 32G,
>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>> encoding
>>>>>> and decoding of compressed klass pointers will always require use
>>>>>> of a
>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>> pointers
>>>>>> will differ from compressed oops.
>>>>>>
>>>>>> There are no class metaspace allocation changes if
>>>>>> UseCompressedKlassPointers is turned off or if running on a 32-bit
>>>>>> platform.
>>>>>>
>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>> 8016729,
>>>>>> 8011610, and 8003424.
>>>>>>
>>>>>>
>>>>>> Many of the modules in this webrev contain a lot of changes. Modules
>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were changed to
>>>>>> support the new encoding and decoding of compressed klass pointers.
>>>>>>
>>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>> compressed
>>>>>> klass pointer encoding base and shifting values.
>>>>>>
>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>> related
>>>>>> to allocating metaspace and remove code that considered compressed
>>>>>> klass
>>>>>> pointers when determining the compressed oops compression mechanism.
>>>>>>
>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as part
>>>>>> of a
>>>>>> cleanup requested by Coleen.
>>>>>>
>>>>>>
>>>>>> These changes were tested with JCK Lang and VM tests, JTReg tests,
>>>>>> JPRT,
>>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>>> tests. Most of the test were run with -Xshare:on and -Xshare:off
>>>>>> (with
>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>>> 64-Bit
>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests were
>>>>>> run on Solaris x86.
>>>>>>
>>>>>> The performance impact of these changes is TBD.
>>>>>>
>>>>>> Thanks, Harold
>>>>>>
>>>>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130805/6915d2e3/attachment-0001.html
From serguei.spitsyn at oracle.com Mon Aug 5 12:39:13 2013
From: serguei.spitsyn at oracle.com (serguei.spitsyn at oracle.com)
Date: Mon, 05 Aug 2013 12:39:13 -0700
Subject: RFR (XXS) 8022093 - syntax error near "umpiconninfo_t" -- when
building on Solaris 10
In-Reply-To: <51FFDE6E.2090503@oracle.com>
References: <51FFDE6E.2090503@oracle.com>
Message-ID: <51FFFF61.5070409@oracle.com>
The fix is good.
I guess, granting the DTrace permissions on a build machine would be
another workaround.
Probably, there is no big need to say it in the error message explicitly.
Thanks,
Serguei
On 8/5/13 10:18 AM, Ioi Lam wrote:
> |Please review a very small fix:||
> ||
> ||http://cr.openjdk.java.net/~iklam/8022093/solaris_dtrace_002/||
> ||
> ||Bug: syntax error near "umpiconninfo_t" -- when building on Solaris 10||
> ||
> ||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022093||
> ||https://jbs.oracle.com/bugs/browse/JDK-8022093||
> ||
> ||Summary of fix:||
> ||
> || OK -- it's not really fixing the build per-se, but I
> added more error messages to show users possible workarounds.
> Otherwise||it's fairly hard to figure out what to do.
> ||
> ||---vvv---||
> ||Compiling dtrace.d||
> ||dtrace: failed to compile script dtrace.d: "/usr/lib/dtrace/mpi.d",
> line 68: syntax error near "umpiconninfo_t"||
> ||*****************************************************************||
> ||* If you are seeing 'syntax error near "umpiconninfo_t"' on Solaris||
> ||* 10, try doing 'cd /usr/lib/dtrace && gzip mpi.d' as root, ||
> ||* or set the environment variable HOTSPOT_DISABLE_DTRACE_PROBES||
> ||* to disable dtrace probes for this build.||
> ||*****************************************************************||
> ||---^^^---||
> ||
> ||Tests:||
> ||
> || JPRT||
> ||
> ||Thanks||
> ||- Ioi||
> ||
> |
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130805/414e0173/attachment.html
From harold.seigel at oracle.com Mon Aug 5 13:45:59 2013
From: harold.seigel at oracle.com (harold.seigel at oracle.com)
Date: Mon, 05 Aug 2013 20:45:59 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 2 new changesets
Message-ID: <20130805204607.A1E4E485EA@hg.openjdk.java.net>
Changeset: b67604b59546
Author: hseigel
Date: 2013-08-04 16:30 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/b67604b59546
7073961: [TESTBUG] closed/runtime/4845371/DBB.java failed on solaris 10 X65
Summary: Added a x86 64-bit Solaris shared library and rewrote test in Java
Reviewed-by: dholmes, ctornqvi
! test/testlibrary/com/oracle/java/testlibrary/Platform.java
Changeset: 9064e3a19525
Author: hseigel
Date: 2013-08-05 08:55 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/9064e3a19525
Merge
- test/runtime/7196045/Test7196045.java
- test/runtime/8000968/Test8000968.sh
From vladimir.kozlov at oracle.com Mon Aug 5 15:59:52 2013
From: vladimir.kozlov at oracle.com (Vladimir Kozlov)
Date: Mon, 05 Aug 2013 15:59:52 -0700
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <51FC173B.6070205@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
Message-ID: <52002E68.6080901@oracle.com>
Harold,
I don't like to have two versions of reinit_heapbase() method. Can you
modify the original one by checking (Universe::heap() != NULL)?
Note, on SPARC set() could generate up to 8 instructions to load 64-bit
constant into register. So I am not sure that it will be faster than load.
sparc MacroAssembler::decode_klass_not_null(Register src, Register dst)
should be modified to not use G6 when narrow_klass_shift() == 0.
x86 MacroAssembler::encode_klass_not_null(Register dst, Register src)
also should be modified to not use R12 when dst != src by using
mov64(dst, base) + negq(dst) + addq(dst, src) instructions.
Replace next leaq() with addq(dst, src) (address expressions use adr
module in cpu which could be bottleneck):
5135 } else {
5136 leaq(dst, Address(dst, src, Address::times_1, 0));
I can't find where in CDS you store information about compressed klass
pointers and compressed oops parameters which were used during dump?
How you verify that correct parameters/flags are ussed when such CDS is
used later?
Could you add more explanation in the comment why next method returns
'false' if DumpSharedSpaces is 'true'? From first glance it contradicts
to the bug's synopsis:
+ // Return TRUE only if UseCompressedKlassPointers is True and
DumpSharedSpaces is False.
+ static bool using_class_space() {
+ return NOT_LP64(false) LP64_ONLY(UseCompressedKlassPointers &&
!DumpSharedSpaces);
+ }
Could you move set_narrow_klass_base_and_shift() near
can_use_cds_with_metaspace_addr() to use one #ifdef LP64?
set_narrow_klass_base_and_shift() and can_use_cds_with_metaspace_addr()
have the same code for UseSharedSpaces. It would be nice to have only
one copy. Call can_use_cds_with_metaspace_addr() from
set_narrow_klass_base_and_shift() ?
I see that you unconditionally set comp klass ptr base and shift for
DumpSharedSpaces. Should you do the check similar to
can_use_cds_with_metaspace_addr() to find if you can do that? You don't
even check UseCompressedKlassPointers.
Why you have next limitation? What if coop can't be used because of big
heap?:
+ // UseCompressedOops and UseCompressedKlassPointers must be on for
UseSharedSpaces.
+ if (!UseCompressedOops || !UseCompressedKlassPointers) {
+ no_shared_spaces();
Could you move UseCompressedKlassPointers code in arguments.cpp into
separate method similar to set_use_compressed_oops()?
About new tests.
The first test in CDSCompressedKPtrsError misses -XX:+UseCompressedOops
flag.
Could you also test cross flags combinations?:
-XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
-XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
It would be nice to have test to check ClassMetaspaceSize value range.
You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint or
maxuint.
About code style, indention. We align next line to corresponding part of
previous line if we need to split a line. And sometimes it is better to
keep one long line. I understand some of them were before your changes
but, please, clean up at lest ones you touched.
Cases in metaspace.cpp:
2263 assert(raw_word_size >= min_size,
2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
SIZE_FORMAT, word_size, min_size));
2485 if (Metaspace::using_class_space() &&
2486 (Metaspace::class_space_list() != NULL)) {
2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
2575 (Metaspace::using_class_space() ?
2576
Metaspace::class_space_list()->virtual_space_total() : 0) :
2577 Metaspace::space_list()->virtual_space_total();
2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
SIZE_FORMAT ", "
2695 SIZE_FORMAT " small(s) " SIZE_FORMAT ", "
2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT ", "
2697 "large count " SIZE_FORMAT,
2698 cls_specialized_count, cls_specialized_waste,
2699 cls_small_count, cls_small_waste,
2700 cls_medium_count, cls_medium_waste, cls_humongous_count);
2872 while (!metaspace_rs.is_reserved() && (addr + 1*G > addr) &&
2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
2889 vm_exit_during_initialization(err_msg(
2890 "Could not allocate metaspace: %d bytes",
2891 class_metaspace_size()));
3107 return using_class_space() ?
3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
3157 if (is_class && using_class_space()) {
3158 class_vsm()->deallocate(ptr, word_size);
3305 return space_list()->contains(ptr) ||
3306 (using_class_space() && class_space_list()->contains(ptr));
metaspace.hpp:
270 return _allocated_capacity_words[Metaspace::NonClassType] +
271 (Metaspace::using_class_space() ?
272 _allocated_capacity_words[Metaspace::ClassType] : 0);
285 return _allocated_used_words[Metaspace::NonClassType] +
286 (Metaspace::using_class_space() ?
287 _allocated_used_words[Metaspace::ClassType] : 0);
universe.cpp:
849 assert((intptr_t)Universe::narrow_oop_base() <=
(intptr_t)(Universe::heap()->base() -
850 os::vm_page_size()) ||
851 Universe::narrow_oop_base() == NULL, "invalid value");
Thanks,
Vladimir
On 8/2/13 1:31 PM, harold seigel wrote:
> Hi,
>
> Please review this updated webrev for bug 8003424:
> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>
>
> The updated webrev has a lot of changes from the previous webrev,
> including the following:
>
> 1. Class metaspace information is now output when
> -XX:+PrintCompressedOopsMode is specified.
>
> 2. decode_klass_not_null(Register dst, Register src) no longer
> clobbers R12.
>
> 3. Method using_class_vsm() was renamed to using_class_space().
>
> 4. Type narrowKlass was added and replaces narrowOop, where appropriate.
>
> 5. The Metaspace:: qualifier was removed, where it was unnecessary.
>
> 6. Metaspace::initialize_class_space() was made private.
>
> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was updated.
>
> Performance tests were run by Jenny using specjvm2008, specjbb2005, and
> specjbb2013. The results showed no significant performance difference
> in terms of scores and gc behavior.
>
> Additional testing was done on Solaris Sparc and Linux x86 using
> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>
> Please let me know what additional tests should be run.
>
> Thanks!
> Harold
>
> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>> Hi Harold,
>>
>> > Usually the narrow_klass_base will be 32G and the
>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means that
>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12, unless
>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>> sense?
>>
>> My bad, I miscalculated. But we have "perfect value" 0x800000000 and I
>> am tempted to use may be bts (bit set) to avoid R12 usage (assuming or
>> with check that class metaspace size < 32Gb).
>>
>> > Is there one prefix byte per instruction, or just for certain
>> instructions?
>>
>> "Not all instructions require a REX prefix in 64-bit mode. A prefix is
>> necessary only if an instruction references one of the extended
>> registers or uses a 64-bit operand."
>>
>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and =32
>> and big java heap. Recently we got several bugs which indicated that
>> we did not separate cleanly oops and klass pointers en/decoding.
>>
>> Thanks,
>> Vladimir
>>
>> On 7/24/13 11:35 AM, harold seigel wrote:
>>> Hi Vladimir,
>>>
>>> Thank you for the review! Please see inline comments.
>>>
>>> Thanks, Harold
>>>
>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>> Nice clean up, Harold
>>>>>
>>>>> Could you add the size of class metaspace in output with
>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>> remember an
>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>> Will be done in next webrev.
>>>>>
>>>>> Also it would be nice to print these info line (and compressed oops
>>>>> info
>>>>> line) in hs_err files.
>>> I filed an enhancement bug for this: 8021264
>>> .
>>>>>
>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in x86_64.ad.
>>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also note
>>>>> that code in .ad file does not check the encoding mode for narrow
>>>>> klass/oop so it should be conservative and assume that arithmetic
>>>>> instructions are used.
>>> OK. Thanks.
>>>>>
>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>> 4Gb so
>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>> encoding/decoding without destroying R12.
>>>>
>>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>>> bit is extended so you will get wrong result with address > 2gb).
>>> But the base will normally be 32Gb. So this case won't happen very
>>> often.
>>>>
>>>> You definitely should not use R12 in decode_klass_not_null(Register
>>>> dst, Register src) method where you have free 'dst' register.
>>> Will be fixed in next webrev.
>>>>
>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>>> The idea was to avoid using R12 by using shifted base:
>>>>
>>>> decode:
>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>> shrq(r, LogKlassAlignmentInBytes);
>>>> }
>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>> shlq(r, LogKlassAlignmentInBytes);
>>>> }
>>>>
>>>> Universe::narrow_klass_base_shifted() is set only if
>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>>> (max positive int).
>>> Usually the narrow_klass_base will be 32G and the
>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means that
>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12, unless
>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>> sense?
>>>>
>>>> And you have general memory reservation problem. At least on Solaris,
>>>> as I remember, OS will always try to keep protected 4Kb pages between
>>>> different requested memory regions. That is why in jdk7 we first
>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>> protection page below heap to catch implicit NULL exceptions with
>>>> compressed oops.
>>>>
>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>> address or CompressedKlassPointersBase without CDS and with compressed
>>>> oops and with Xmx20Gb.
>>> I verifed that we get either cds_address+cds_total as the address, or
>>> CompressedKlassPointersBase as the address without CDS on Linux, Windows
>>> 7, Mac OS, and Solaris 5.11. This is true with default heap sizes and
>>> -Xmx32G.
>>>
>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the desired
>>> CDS address for class metaspace regardless of heap size.
>>>>
>>>>>
>>>>> instr_size_for_decode_klass_not_null() is ugly but unfortunately we
>>>>> can't do other way. I assume you use max size because depending on
>>>>> registers used in instructions you will or will not get prefix byte
>>>>> (r8-r15).
>>> Is there one prefix byte per instruction, or just for certain
>>> instructions?
>>>>>
>>>>> I will look on changes in more details may be late.
>>>>
>>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>>> which are not obvious.
>>> I changed using_class_vsm() to using_class_space().
>>>>
>>>>
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Please review this fix for bug 8003424.
>>>>>>
>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>
>>>>>> Open bug links at:
>>>>>>
>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>
>>>>>> JBS Bug links at
>>>>>>
>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>
>>>>>>
>>>>>> This fix provides support for using compressed klass pointers with
>>>>>> CDS.
>>>>>> It also changes the class metaspace allocation on 64-bit platforms
>>>>>> when
>>>>>> UseCompressedKlassPointers is true. Instead of allocating the class
>>>>>> metaspace as part of the Java Heap allocation and locating it at the
>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>> separately,
>>>>>> above the Java heap. This will enable future expansion of the
>>>>>> metaspace
>>>>>> because it won't be backed up against the Java heap. If CDS is being
>>>>>> used, then the CDS region will be allocated between the Java heap and
>>>>>> the metaspace.
>>>>>>
>>>>>> The new class metaspace allocation code tries to allocate memory at
>>>>>> 32G,
>>>>>> or above the CDS region, if it is present. Because of this, encoding
>>>>>> and decoding of compressed klass pointers will always require use
>>>>>> of a
>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>> pointers
>>>>>> will differ from compressed oops.
>>>>>>
>>>>>> There are no class metaspace allocation changes if
>>>>>> UseCompressedKlassPointers is turned off or if running on a 32-bit
>>>>>> platform.
>>>>>>
>>>>>> The code changes also include some cleanup and will fix bugs 8016729,
>>>>>> 8011610, and 8003424.
>>>>>>
>>>>>>
>>>>>> Many of the modules in this webrev contain a lot of changes. Modules
>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were changed to
>>>>>> support the new encoding and decoding of compressed klass pointers.
>>>>>>
>>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>> compressed
>>>>>> klass pointer encoding base and shifting values.
>>>>>>
>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>> related
>>>>>> to allocating metaspace and remove code that considered compressed
>>>>>> klass
>>>>>> pointers when determining the compressed oops compression mechanism.
>>>>>>
>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as part of a
>>>>>> cleanup requested by Coleen.
>>>>>>
>>>>>>
>>>>>> These changes were tested with JCK Lang and VM tests, JTReg tests,
>>>>>> JPRT,
>>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>>> tests. Most of the test were run with -Xshare:on and -Xshare:off
>>>>>> (with
>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>>> 64-Bit
>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests were
>>>>>> run on Solaris x86.
>>>>>>
>>>>>> The performance impact of these changes is TBD.
>>>>>>
>>>>>> Thanks, Harold
>>>>>>
>>>>>>
>>>
>
From david.holmes at oracle.com Mon Aug 5 21:15:12 2013
From: david.holmes at oracle.com (David Holmes)
Date: Tue, 06 Aug 2013 14:15:12 +1000
Subject: RFR (XXS) 8022093 - syntax error near "umpiconninfo_t" -- when
building on Solaris 10
In-Reply-To: <51FFFF61.5070409@oracle.com>
References: <51FFDE6E.2090503@oracle.com> <51FFFF61.5070409@oracle.com>
Message-ID: <52007850.7020701@oracle.com>
Ioi the change looks fine - Reviewed.
On 6/08/2013 5:39 AM, serguei.spitsyn at oracle.com wrote:
> The fix is good.
> I guess, granting the DTrace permissions on a build machine would be
> another workaround.
> Probably, there is no big need to say it in the error message explicitly.
This has nothing to do with Dtrace permissions. The mpi.d file is broken
and needs to be removed. You can either do that or rename it so dtrace
ignores it.
Cheers,
David
> Thanks,
> Serguei
>
>
> On 8/5/13 10:18 AM, Ioi Lam wrote:
>> |Please review a very small fix:||
>> ||
>> ||http://cr.openjdk.java.net/~iklam/8022093/solaris_dtrace_002/||
>> ||
>> ||Bug: syntax error near "umpiconninfo_t" -- when building on Solaris 10||
>> ||
>> ||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022093||
>> ||https://jbs.oracle.com/bugs/browse/JDK-8022093||
>> ||
>> ||Summary of fix:||
>> ||
>> || OK -- it's not really fixing the build per-se, but I
>> added more error messages to show users possible workarounds.
>> Otherwise||it's fairly hard to figure out what to do.
>> ||
>> ||---vvv---||
>> ||Compiling dtrace.d||
>> ||dtrace: failed to compile script dtrace.d: "/usr/lib/dtrace/mpi.d",
>> line 68: syntax error near "umpiconninfo_t"||
>> ||*****************************************************************||
>> ||* If you are seeing 'syntax error near "umpiconninfo_t"' on Solaris||
>> ||* 10, try doing 'cd /usr/lib/dtrace && gzip mpi.d' as root, ||
>> ||* or set the environment variable HOTSPOT_DISABLE_DTRACE_PROBES||
>> ||* to disable dtrace probes for this build.||
>> ||*****************************************************************||
>> ||---^^^---||
>> ||
>> ||Tests:||
>> ||
>> || JPRT||
>> ||
>> ||Thanks||
>> ||- Ioi||
>> ||
>> |
>
From dmitry.samersoff at oracle.com Tue Aug 6 06:20:51 2013
From: dmitry.samersoff at oracle.com (dmitry.samersoff at oracle.com)
Date: Tue, 06 Aug 2013 13:20:51 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8019396: SA-JDI OSThread class
initialization throws an exception
Message-ID: <20130806132055.2ABAD48604@hg.openjdk.java.net>
Changeset: 22a5aff0df0b
Author: dsamersoff
Date: 2013-08-06 14:28 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/22a5aff0df0b
8019396: SA-JDI OSThread class initialization throws an exception
Summary: Method sun.jvm.hotspot.runtime.OSThread.initialize throws a sun.jvm.hotspot.types.WrongTypeException
Reviewed-by: dholmes, mgerdin
! agent/src/share/classes/sun/jvm/hotspot/jdi/JVMTIThreadState.java
! agent/src/share/classes/sun/jvm/hotspot/runtime/OSThread.java
From coleen.phillimore at oracle.com Tue Aug 6 14:33:47 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Tue, 06 Aug 2013 17:33:47 -0400
Subject: RFR 8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
Message-ID: <52016BBB.3040907@oracle.com>
Summary: ActiveMethodOopsCache was used to keep track of old versions of
some methods that are cached in Universe but is buggy with permgen
removal and not needed anymore
There was a crash in this function that I couldn't reproduce. It was
likely that the crash was for something else, but this is a lurking bug.
open webrev at http://cr.openjdk.java.net/~coleenp/8009728/
bug link at http://bugs.sun.com/view_bug.do?bug_id=8009728
local bug link https://jbs.oracle.com/bugs/browse/JDK-8009728
Tested with vm.quick.testlist which includes redefine classes tests and
jck lang and vm tests.
Thanks,
Coleen
From yumin.qi at oracle.com Tue Aug 6 15:38:01 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Tue, 06 Aug 2013 15:38:01 -0700
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
Message-ID: <52017AC9.9040809@oracle.com>
Please review:
http://cr.openjdk.java.net/~minqi/8019583/webrev0/
Summary: The test will always pass since TestMT.java will always return
value 0 to shell. Fix by recording failure value and exit with it.
Thanks
Yumin
From mikael.vidstedt at oracle.com Tue Aug 6 16:36:12 2013
From: mikael.vidstedt at oracle.com (Mikael Vidstedt)
Date: Tue, 06 Aug 2013 16:36:12 -0700
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and Windows
Server 2012 R2
Message-ID: <5201886C.1030206@oracle.com>
Please review the following change:
http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
The patch adds support to os_windows.cpp for recognizing the upcoming
Windows versions: Windows 8.1 and Windows Server 2012 R2.
The changed is based on the corresponding code on the JDK side[1][2][3].
Thanks,
Mikael
[1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
[2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
[3]
http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
From christian.tornqvist at oracle.com Tue Aug 6 16:52:26 2013
From: christian.tornqvist at oracle.com (Christian Tornqvist)
Date: Tue, 6 Aug 2013 19:52:26 -0400
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <5201886C.1030206@oracle.com>
References: <5201886C.1030206@oracle.com>
Message-ID: <006e01ce9300$014d2880$03e77980$@oracle.com>
Change looks good, thanks for fixing this :)
Thanks,
Christian
-----Original Message-----
From: hotspot-runtime-dev-bounces at openjdk.java.net [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of Mikael Vidstedt
Sent: den 6 augusti 2013 19:36
To: hotspot-runtime-dev at openjdk.java.net
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and Windows Server 2012 R2
Please review the following change:
http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
The patch adds support to os_windows.cpp for recognizing the upcoming Windows versions: Windows 8.1 and Windows Server 2012 R2.
The changed is based on the corresponding code on the JDK side[1][2][3].
Thanks,
Mikael
[1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
[2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
[3]
http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
From mikael.vidstedt at oracle.com Tue Aug 6 17:01:51 2013
From: mikael.vidstedt at oracle.com (Mikael Vidstedt)
Date: Tue, 06 Aug 2013 17:01:51 -0700
Subject: code review (round 0) request for VS2010 IDE fix (8016601)
In-Reply-To: <51FC3457.30003@oracle.com>
References: <51FC3457.30003@oracle.com>
Message-ID: <52018E6F.1090803@oracle.com>
Dan,
I have not reviewed the actual changes, but FWIW I have verified that
applying the patch does solve the linker error you mention. Thanks a lot
for fixing!
Cheers,
Mikael
On 2013-08-02 15:36, Daniel D. Daugherty wrote:
> Greetings,
>
> I have have a proposed fix for the following bug:
>
> 8016601 Unable to build hsx24 on Windows using project creator and
> Visual Studio
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016601
> https://jbs.oracle.com/bugs/browse/JDK-8016601
>
> Here are the HSX-25 webrev URLs:
>
> OpenJDK: http://cr.openjdk.java.net/~dcubed/8016601-webrev/0-hsx25/
> Internal: http://javaweb.us.oracle.com/~ddaugher/8016601-webrev/0-hsx25/
>
> Testing:
> - JPRT windows_i586 and windows_x64 build and test
> - local windows_i586 cmd line builds for:
> {OpenJDK, Oracle} x {Client, Server} VM x {product, debug, fastdebug}
> - local windows_i586 VS2010 builds for
> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
> fastdebug}
> - local windows_x64 VS2010 builds for
> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
> fastdebug}
> Thanks to Ron for doing the windows_x64 testing
>
> Gory details are below. As always, comments, questions and
> suggestions are welome.
>
> Dan
>
>
> Gory Details:
>
> Build fixes:
> - VS2010 IDE builds are working again; fixes this failure mode:
>
> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\objectCountEventSender.obj
> : warning LNK4042: object specified more than once; extras ignored
> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\errorReporter.obj
> : warning LNK4042: object specified more than once; extras ignored
> 1> Creating library
> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.lib
> and object
> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.exp
> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
> "public: static void __cdecl
> ObjectCountEventSender::disable_requestable_event(void)"
> (?disable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced
> in function "public: virtual void __thiscall
> VM_GC_SendObjectCountEvent::doit(void)"
> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
> "public: static void __cdecl
> ObjectCountEventSender::enable_requestable_event(void)"
> (?enable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced
> in function "public: virtual void __thiscall
> VM_GC_SendObjectCountEvent::doit(void)"
> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.dll
> : fatal error LNK1120: 2 unresolved externals
>
> - The ProjectCreator tool is modified to support two new options:
> '-relativeAltSrcInclude' and '-altRelativeInclude'. Here's an
> example use of the new options:
>
> -relativeAltSrcInclude src\closed
> -altRelativeInclude share\vm
>
> which means config the project with some alternate source files in
> src\closed\share\vm that will replace the corresponding files in
> src\share\vm.
>
> For example, src\closed\share\vm\utilities\errorReporter.cpp replaces
> src\share\vm\utilities\errorReporter.cpp. In the VS2010 IDE, you'll
> still be able to see src\share\vm\utilities\errorReporter.cpp in the
> project source browser, but the icon will indicate that the file is
> excluded from the project.
>
> The ProjectCreator tool's file tree walking logic is modified to keep
> track of each alternate source file that is found. If a corresponding
> regular source file is found, then the regular source file is
> excluded from the project in favor of the alternate source version.
>
> - VS2010 cmd line build no longer issue the following linker warnings:
>
> link.exe @C:\Users\lfoltan\AppData\Local\Temp\nm9B65.tmp
> errorReporter.obj : warning LNK4042: object specified more than
> once; extras ignored
> objectCountEventSender.obj : warning LNK4042: object specified
> more than once; extras ignored
>
> Misc cleanups:
>
> - removed more "core" config support from various makefiles and scripts;
> the "core" config is vestigal and was mostly removed years ago; the
> "core" config is not the same as the "minimalvm" config.
> - removed extra references to ${ALTSRC}/share/vm/jfr objects
> - added some "AltSrc" versus "OpenJDK" identification to messages where
> files are auto-generated
> - added some missing copyright headers
>
From tao.mao at oracle.com Tue Aug 6 17:15:08 2013
From: tao.mao at oracle.com (Tao Mao)
Date: Tue, 06 Aug 2013 17:15:08 -0700
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <5201886C.1030206@oracle.com>
References: <5201886C.1030206@oracle.com>
Message-ID: <5201918C.9060501@oracle.com>
Looks good. I bet you've tested the code on the two kinds of machines.
Thanks.
Tao
On 8/6/13 4:36 PM, Mikael Vidstedt wrote:
>
> Please review the following change:
>
> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>
> The patch adds support to os_windows.cpp for recognizing the upcoming
> Windows versions: Windows 8.1 and Windows Server 2012 R2.
>
> The changed is based on the corresponding code on the JDK side[1][2][3].
>
> Thanks,
> Mikael
>
> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
> [3]
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>
From ron.durbin at oracle.com Tue Aug 6 17:19:55 2013
From: ron.durbin at oracle.com (Ron Durbin)
Date: Tue, 6 Aug 2013 17:19:55 -0700 (PDT)
Subject: code review (round 0) request for VS2010 IDE fix (8016601)
In-Reply-To: <51FC3457.30003@oracle.com>
References: <51FC3457.30003@oracle.com>
Message-ID:
Your code looks good and it resolves the reported defect.
> -----Original Message-----
> From: Daniel D. Daugherty
> Sent: Friday, August 02, 2013 4:36 PM
> To: hotspot-runtime-dev at openjdk.java.net; serviceability-dev at openjdk.java.net; build-dev
> Subject: code review (round 0) request for VS2010 IDE fix (8016601)
>
> Greetings,
>
> I have have a proposed fix for the following bug:
>
> 8016601 Unable to build hsx24 on Windows using project creator and
> Visual Studio
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016601
> https://jbs.oracle.com/bugs/browse/JDK-8016601
>
> Here are the HSX-25 webrev URLs:
>
> OpenJDK: http://cr.openjdk.java.net/~dcubed/8016601-webrev/0-hsx25/
> Internal: http://javaweb.us.oracle.com/~ddaugher/8016601-webrev/0-hsx25/
>
> Testing:
> - JPRT windows_i586 and windows_x64 build and test
> - local windows_i586 cmd line builds for:
> {OpenJDK, Oracle} x {Client, Server} VM x {product, debug, fastdebug}
> - local windows_i586 VS2010 builds for
> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug, fastdebug}
> - local windows_x64 VS2010 builds for
> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug, fastdebug}
> Thanks to Ron for doing the windows_x64 testing
>
> Gory details are below. As always, comments, questions and suggestions are welome.
>
> Dan
>
>
> Gory Details:
>
> Build fixes:
> - VS2010 IDE builds are working again; fixes this failure mode:
>
> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\obj
> 1>ectCountEventSender.obj
> : warning LNK4042: object specified more than once; extras ignored
> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\err
> 1>orReporter.obj
> : warning LNK4042: object specified more than once; extras ignored
> 1> Creating library
> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.lib
> and object
> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.exp
> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
> "public: static void __cdecl
> ObjectCountEventSender::disable_requestable_event(void)"
> (?disable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced in function "public:
> virtual void __thiscall VM_GC_SendObjectCountEvent::doit(void)"
> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
> "public: static void __cdecl
> ObjectCountEventSender::enable_requestable_event(void)"
> (?enable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced in function "public:
> virtual void __thiscall VM_GC_SendObjectCountEvent::doit(void)"
> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm
> 1>.dll
> : fatal error LNK1120: 2 unresolved externals
>
> - The ProjectCreator tool is modified to support two new options:
> '-relativeAltSrcInclude' and '-altRelativeInclude'. Here's an
> example use of the new options:
>
> -relativeAltSrcInclude src\closed
> -altRelativeInclude share\vm
>
> which means config the project with some alternate source files in
> src\closed\share\vm that will replace the corresponding files in
> src\share\vm.
>
> For example, src\closed\share\vm\utilities\errorReporter.cpp replaces
> src\share\vm\utilities\errorReporter.cpp. In the VS2010 IDE, you'll
> still be able to see src\share\vm\utilities\errorReporter.cpp in the
> project source browser, but the icon will indicate that the file is
> excluded from the project.
>
> The ProjectCreator tool's file tree walking logic is modified to keep
> track of each alternate source file that is found. If a corresponding
> regular source file is found, then the regular source file is
> excluded from the project in favor of the alternate source version.
>
> - VS2010 cmd line build no longer issue the following linker warnings:
>
> link.exe @C:\Users\lfoltan\AppData\Local\Temp\nm9B65.tmp
> errorReporter.obj : warning LNK4042: object specified more than once; extras ignored
> objectCountEventSender.obj : warning LNK4042: object specified more than once; extras
> ignored
>
> Misc cleanups:
>
> - removed more "core" config support from various makefiles and scripts;
> the "core" config is vestigal and was mostly removed years ago; the
> "core" config is not the same as the "minimalvm" config.
> - removed extra references to ${ALTSRC}/share/vm/jfr objects
> - added some "AltSrc" versus "OpenJDK" identification to messages where
> files are auto-generated
> - added some missing copyright headers
>
From daniel.daugherty at oracle.com Tue Aug 6 18:48:09 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Tue, 06 Aug 2013 19:48:09 -0600
Subject: code review (round 0) request for VS2010 IDE fix (8016601)
In-Reply-To: <52018E6F.1090803@oracle.com>
References: <51FC3457.30003@oracle.com> <52018E6F.1090803@oracle.com>
Message-ID: <5201A759.6010303@oracle.com>
Thanks for being another tester for these changes!
Just curious: which OS and VS version?
Dan
On 8/6/13 6:01 PM, Mikael Vidstedt wrote:
>
> Dan,
>
> I have not reviewed the actual changes, but FWIW I have verified that
> applying the patch does solve the linker error you mention. Thanks a
> lot for fixing!
>
> Cheers,
> Mikael
>
> On 2013-08-02 15:36, Daniel D. Daugherty wrote:
>> Greetings,
>>
>> I have have a proposed fix for the following bug:
>>
>> 8016601 Unable to build hsx24 on Windows using project creator and
>> Visual Studio
>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016601
>> https://jbs.oracle.com/bugs/browse/JDK-8016601
>>
>> Here are the HSX-25 webrev URLs:
>>
>> OpenJDK: http://cr.openjdk.java.net/~dcubed/8016601-webrev/0-hsx25/
>> Internal: http://javaweb.us.oracle.com/~ddaugher/8016601-webrev/0-hsx25/
>>
>> Testing:
>> - JPRT windows_i586 and windows_x64 build and test
>> - local windows_i586 cmd line builds for:
>> {OpenJDK, Oracle} x {Client, Server} VM x {product, debug, fastdebug}
>> - local windows_i586 VS2010 builds for
>> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
>> fastdebug}
>> - local windows_x64 VS2010 builds for
>> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
>> fastdebug}
>> Thanks to Ron for doing the windows_x64 testing
>>
>> Gory details are below. As always, comments, questions and
>> suggestions are welome.
>>
>> Dan
>>
>>
>> Gory Details:
>>
>> Build fixes:
>> - VS2010 IDE builds are working again; fixes this failure mode:
>>
>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\objectCountEventSender.obj
>> : warning LNK4042: object specified more than once; extras ignored
>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\errorReporter.obj
>> : warning LNK4042: object specified more than once; extras ignored
>> 1> Creating library
>> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.lib
>> and object
>> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.exp
>> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
>> "public: static void __cdecl
>> ObjectCountEventSender::disable_requestable_event(void)"
>> (?disable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced
>> in function "public: virtual void __thiscall
>> VM_GC_SendObjectCountEvent::doit(void)"
>> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
>> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
>> "public: static void __cdecl
>> ObjectCountEventSender::enable_requestable_event(void)"
>> (?enable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced
>> in function "public: virtual void __thiscall
>> VM_GC_SendObjectCountEvent::doit(void)"
>> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.dll
>> : fatal error LNK1120: 2 unresolved externals
>>
>> - The ProjectCreator tool is modified to support two new options:
>> '-relativeAltSrcInclude' and '-altRelativeInclude'. Here's an
>> example use of the new options:
>>
>> -relativeAltSrcInclude src\closed
>> -altRelativeInclude share\vm
>>
>> which means config the project with some alternate source files in
>> src\closed\share\vm that will replace the corresponding files in
>> src\share\vm.
>>
>> For example, src\closed\share\vm\utilities\errorReporter.cpp replaces
>> src\share\vm\utilities\errorReporter.cpp. In the VS2010 IDE, you'll
>> still be able to see src\share\vm\utilities\errorReporter.cpp in the
>> project source browser, but the icon will indicate that the file is
>> excluded from the project.
>>
>> The ProjectCreator tool's file tree walking logic is modified to keep
>> track of each alternate source file that is found. If a corresponding
>> regular source file is found, then the regular source file is
>> excluded from the project in favor of the alternate source version.
>>
>> - VS2010 cmd line build no longer issue the following linker warnings:
>>
>> link.exe @C:\Users\lfoltan\AppData\Local\Temp\nm9B65.tmp
>> errorReporter.obj : warning LNK4042: object specified more than
>> once; extras ignored
>> objectCountEventSender.obj : warning LNK4042: object specified
>> more than once; extras ignored
>>
>> Misc cleanups:
>>
>> - removed more "core" config support from various makefiles and scripts;
>> the "core" config is vestigal and was mostly removed years ago; the
>> "core" config is not the same as the "minimalvm" config.
>> - removed extra references to ${ALTSRC}/share/vm/jfr objects
>> - added some "AltSrc" versus "OpenJDK" identification to messages where
>> files are auto-generated
>> - added some missing copyright headers
>>
>
From daniel.daugherty at oracle.com Tue Aug 6 18:48:31 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Tue, 06 Aug 2013 19:48:31 -0600
Subject: code review (round 0) request for VS2010 IDE fix (8016601)
In-Reply-To:
References: <51FC3457.30003@oracle.com>
Message-ID: <5201A76F.9010609@oracle.com>
Ron,
Thanks for the review!
Dan
On 8/6/13 6:19 PM, Ron Durbin wrote:
> Your code looks good and it resolves the reported defect.
>
>
>> -----Original Message-----
>> From: Daniel D. Daugherty
>> Sent: Friday, August 02, 2013 4:36 PM
>> To: hotspot-runtime-dev at openjdk.java.net; serviceability-dev at openjdk.java.net; build-dev
>> Subject: code review (round 0) request for VS2010 IDE fix (8016601)
>>
>> Greetings,
>>
>> I have have a proposed fix for the following bug:
>>
>> 8016601 Unable to build hsx24 on Windows using project creator and
>> Visual Studio
>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016601
>> https://jbs.oracle.com/bugs/browse/JDK-8016601
>>
>> Here are the HSX-25 webrev URLs:
>>
>> OpenJDK: http://cr.openjdk.java.net/~dcubed/8016601-webrev/0-hsx25/
>> Internal: http://javaweb.us.oracle.com/~ddaugher/8016601-webrev/0-hsx25/
>>
>> Testing:
>> - JPRT windows_i586 and windows_x64 build and test
>> - local windows_i586 cmd line builds for:
>> {OpenJDK, Oracle} x {Client, Server} VM x {product, debug, fastdebug}
>> - local windows_i586 VS2010 builds for
>> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug, fastdebug}
>> - local windows_x64 VS2010 builds for
>> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug, fastdebug}
>> Thanks to Ron for doing the windows_x64 testing
>>
>> Gory details are below. As always, comments, questions and suggestions are welome.
>>
>> Dan
>>
>>
>> Gory Details:
>>
>> Build fixes:
>> - VS2010 IDE builds are working again; fixes this failure mode:
>>
>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\obj
>> 1>ectCountEventSender.obj
>> : warning LNK4042: object specified more than once; extras ignored
>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\err
>> 1>orReporter.obj
>> : warning LNK4042: object specified more than once; extras ignored
>> 1> Creating library
>> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.lib
>> and object
>> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.exp
>> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
>> "public: static void __cdecl
>> ObjectCountEventSender::disable_requestable_event(void)"
>> (?disable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced in function "public:
>> virtual void __thiscall VM_GC_SendObjectCountEvent::doit(void)"
>> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
>> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
>> "public: static void __cdecl
>> ObjectCountEventSender::enable_requestable_event(void)"
>> (?enable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced in function "public:
>> virtual void __thiscall VM_GC_SendObjectCountEvent::doit(void)"
>> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm
>> 1>.dll
>> : fatal error LNK1120: 2 unresolved externals
>>
>> - The ProjectCreator tool is modified to support two new options:
>> '-relativeAltSrcInclude' and '-altRelativeInclude'. Here's an
>> example use of the new options:
>>
>> -relativeAltSrcInclude src\closed
>> -altRelativeInclude share\vm
>>
>> which means config the project with some alternate source files in
>> src\closed\share\vm that will replace the corresponding files in
>> src\share\vm.
>>
>> For example, src\closed\share\vm\utilities\errorReporter.cpp replaces
>> src\share\vm\utilities\errorReporter.cpp. In the VS2010 IDE, you'll
>> still be able to see src\share\vm\utilities\errorReporter.cpp in the
>> project source browser, but the icon will indicate that the file is
>> excluded from the project.
>>
>> The ProjectCreator tool's file tree walking logic is modified to keep
>> track of each alternate source file that is found. If a corresponding
>> regular source file is found, then the regular source file is
>> excluded from the project in favor of the alternate source version.
>>
>> - VS2010 cmd line build no longer issue the following linker warnings:
>>
>> link.exe @C:\Users\lfoltan\AppData\Local\Temp\nm9B65.tmp
>> errorReporter.obj : warning LNK4042: object specified more than once; extras ignored
>> objectCountEventSender.obj : warning LNK4042: object specified more than once; extras
>> ignored
>>
>> Misc cleanups:
>>
>> - removed more "core" config support from various makefiles and scripts;
>> the "core" config is vestigal and was mostly removed years ago; the
>> "core" config is not the same as the "minimalvm" config.
>> - removed extra references to ${ALTSRC}/share/vm/jfr objects
>> - added some "AltSrc" versus "OpenJDK" identification to messages where
>> files are auto-generated
>> - added some missing copyright headers
>>
From serguei.spitsyn at oracle.com Tue Aug 6 20:55:49 2013
From: serguei.spitsyn at oracle.com (serguei.spitsyn at oracle.com)
Date: Wed, 07 Aug 2013 03:55:49 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 7187554: JSR 292: JVMTI PopFrame needs to
handle appendix arguments
Message-ID: <20130807035553.7DAED48654@hg.openjdk.java.net>
Changeset: ca0165daa6ec
Author: sspitsyn
Date: 2013-08-06 16:33 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/ca0165daa6ec
7187554: JSR 292: JVMTI PopFrame needs to handle appendix arguments
Summary: Restore the appendix argument after PopFrame() call
Reviewed-by: twisti, coleenp
Contributed-by: serguei.spitsyn at oracle.com
! src/cpu/sparc/vm/templateInterpreter_sparc.cpp
! src/cpu/x86/vm/templateInterpreter_x86_32.cpp
! src/cpu/x86/vm/templateInterpreter_x86_64.cpp
! src/share/vm/classfile/javaClasses.cpp
! src/share/vm/classfile/javaClasses.hpp
! src/share/vm/classfile/systemDictionary.hpp
! src/share/vm/classfile/vmSymbols.hpp
! src/share/vm/interpreter/interpreterRuntime.cpp
! src/share/vm/interpreter/interpreterRuntime.hpp
From david.holmes at oracle.com Wed Aug 7 01:31:17 2013
From: david.holmes at oracle.com (david.holmes at oracle.com)
Date: Wed, 07 Aug 2013 08:31:17 +0000
Subject: hg: hsx/hotspot-emb/hotspot: 8012144: multiple SIGSEGVs fails on staxf
Message-ID: <20130807083122.0B83548663@hg.openjdk.java.net>
Changeset: cd25d3be91c5
Author: vladidan
Date: 2013-08-06 20:01 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/cd25d3be91c5
8012144: multiple SIGSEGVs fails on staxf
Summary: Forward port of 7u change to add additional fence() on RMO platforms, with a load_acquire on all platforms
Reviewed-by: dholmes, kvn
! src/share/vm/utilities/taskqueue.hpp
From david.holmes at oracle.com Wed Aug 7 02:25:19 2013
From: david.holmes at oracle.com (david.holmes at oracle.com)
Date: Wed, 07 Aug 2013 09:25:19 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 2 new changesets
Message-ID: <20130807092620.6D2A748664@hg.openjdk.java.net>
Changeset: c54a3122f9c8
Author: omajid
Date: 2013-08-06 12:28 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/c54a3122f9c8
8022188: Make zero compile after 8016131 and 8016697
Reviewed-by: dholmes, twisti
! src/cpu/zero/vm/entryFrame_zero.hpp
! src/cpu/zero/vm/frame_zero.inline.hpp
! src/cpu/zero/vm/stubGenerator_zero.cpp
! src/os_cpu/linux_zero/vm/os_linux_zero.cpp
Changeset: 196aa14f9f29
Author: dholmes
Date: 2013-08-06 21:06 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/196aa14f9f29
Merge
From harold.seigel at oracle.com Wed Aug 7 05:02:56 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Wed, 07 Aug 2013 08:02:56 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <51FFFB29.9070304@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
<51FFFB29.9070304@oracle.com>
Message-ID: <52023770.9070804@oracle.com>
Hi Coleen,
Thanks for all the comments. Please see my replies inline.
Harold
On 8/5/2013 3:21 PM, Coleen Phillimore wrote:
>
> On 08/02/2013 04:31 PM, harold seigel wrote:
>> Hi,
>>
>> Please review this updated webrev for bug 8003424:
>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>
>>
>> The updated webrev has a lot of changes from the previous webrev,
>> including the following:
>>
>> 1. Class metaspace information is now output when
>> -XX:+PrintCompressedOopsMode is specified.
>>
>> 2. decode_klass_not_null(Register dst, Register src) no longer
>> clobbers R12.
>>
>
> If decode_klass_not_null(src, dest) doesn't use r12, isn't the size
> calculated by *instr_size_for_decode_klass_not_null* now wrong? Or
> is this size calculation only valid for the case where you only have
> one register? Or can this size be a max size?
This size is a max size.
>
> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/src/share/vm/memory/heap.cpp.frames.html
>
> In this file can you spell out segm_r_aligned to something more
> descriptive - like reserved_segment_alignment, reserved_segments_size,
> committed_segments_size.
This change will be in the next webrev.
>
> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/src/share/vm/memory/metaspace.cpp.udiff.html
>
> *+ if (PrintCompressedOopsMode || (PrintMiscellaneous && Verbose)) {*
> *+ gclog_or_tty->print_cr("Narrow klass base: " PTR_FORMAT ", Narrow klass shift: " SIZE_FORMAT,*
>
> I see this conditional comes from universe.cpp but I don't see why
> this should be printed for the OR condition: PrintMiscellaneous &&
> Verbose.
I removed the second OR condition.
>
> 2941 #ifdef _LP64
> 2942 Universe::set_narrow_klass_base((address)_space_list->current_virtual_space()->bottom()
>
> Put a comment why you do this. It's so UseCompressedKlassPointers
> decoding "works" while you are creating the shared archive. The oops
> are thrown away right now so it doesn't matter that the encoded value
> uses a different base during dumping than it will use during
> UseSharedSpaces. When we share String oops, we'll have to fix this
> code but I don't know how to fix this yet. Maybe add code that always
> requires that the CDS archive base is the lower of the two bases.
> Not a problem with your code.
>
> Maybe you should assert that UseCompressedOops and KlassPtrs are set
> here though.
I added both a comment and an assert.
>
> 3012 if (using_class_space()) {
> 3013 _class_space_list = new VirtualSpaceList(rs);
> 3014 }
>
> This function initialize_class_space() is always called when you are
> using_class_space() so why this conditional? Shouldn't this also be
> moved to 2917 under where it's called (or above) in the ifdef LP64
> since it's LP64 only now?
I changed the conditional to an assert.
>
> 2557 if ((mdtype == Metaspace::ClassType) && !Metaspace::using_class_space()) {
> 2558 return 0;
> 2559 }
> One way to shorten this expression that appears a few times, is to add
> an inlined overloaded using_class_space(MetadataType).
I'd prefer to leave this code as is. This expression occurs only twice
and I think the existing code is more descriptive than a new function
would be.
>
> This looks really good. I've been through it a few times and I don't
> see any problems, other than these suggestions here.
>
> Thanks!
> Coleen
>
>>
>> 3. Method using_class_vsm() was renamed to using_class_space().
>>
>> 4. Type narrowKlass was added and replaces narrowOop, where
>> appropriate.
>>
>> 5. The Metaspace:: qualifier was removed, where it was unnecessary.
>>
>> 6. Metaspace::initialize_class_space() was made private.
>>
>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>> updated.
>>
>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
>> and specjbb2013. The results showed no significant performance
>> difference in terms of scores and gc behavior.
>>
>> Additional testing was done on Solaris Sparc and Linux x86 using
>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>
>> Please let me know what additional tests should be run.
>>
>> Thanks!
>> Harold
>>
>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>> Hi Harold,
>>>
>>> > Usually the narrow_klass_base will be 32G and the
>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>> that
>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>> unless
>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>> make sense?
>>>
>>> My bad, I miscalculated. But we have "perfect value" 0x800000000 and
>>> I am tempted to use may be bts (bit set) to avoid R12 usage
>>> (assuming or with check that class metaspace size < 32Gb).
>>>
>>> > Is there one prefix byte per instruction, or just for certain
>>> instructions?
>>>
>>> "Not all instructions require a REX prefix in 64-bit mode. A prefix
>>> is necessary only if an instruction references one of the extended
>>> registers or uses a 64-bit operand."
>>>
>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and =32
>>> and big java heap. Recently we got several bugs which indicated that
>>> we did not separate cleanly oops and klass pointers en/decoding.
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>> Hi Vladimir,
>>>>
>>>> Thank you for the review! Please see inline comments.
>>>>
>>>> Thanks, Harold
>>>>
>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>> Nice clean up, Harold
>>>>>>
>>>>>> Could you add the size of class metaspace in output with
>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>> remember an
>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>> Will be done in next webrev.
>>>>>>
>>>>>> Also it would be nice to print these info line (and compressed
>>>>>> oops info
>>>>>> line) in hs_err files.
>>>> I filed an enhancement bug for this: 8021264
>>>> .
>>>>>>
>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>>> x86_64.ad.
>>>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also note
>>>>>> that code in .ad file does not check the encoding mode for narrow
>>>>>> klass/oop so it should be conservative and assume that arithmetic
>>>>>> instructions are used.
>>>> OK. Thanks.
>>>>>>
>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>>> 4Gb so
>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>> encoding/decoding without destroying R12.
>>>>>
>>>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>> But the base will normally be 32Gb. So this case won't happen very
>>>> often.
>>>>>
>>>>> You definitely should not use R12 in decode_klass_not_null(Register
>>>>> dst, Register src) method where you have free 'dst' register.
>>>> Will be fixed in next webrev.
>>>>>
>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>
>>>>> decode:
>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>> }
>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>> }
>>>>>
>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>>>> (max positive int).
>>>> Usually the narrow_klass_base will be 32G and the
>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>> that
>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>> unless
>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>> make sense?
>>>>>
>>>>> And you have general memory reservation problem. At least on Solaris,
>>>>> as I remember, OS will always try to keep protected 4Kb pages between
>>>>> different requested memory regions. That is why in jdk7 we first
>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>> compressed oops.
>>>>>
>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>> compressed
>>>>> oops and with Xmx20Gb.
>>>> I verifed that we get either cds_address+cds_total as the address, or
>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>> Windows
>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap sizes and
>>>> -Xmx32G.
>>>>
>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>> desired
>>>> CDS address for class metaspace regardless of heap size.
>>>>>
>>>>>>
>>>>>> instr_size_for_decode_klass_not_null() is ugly but unfortunately we
>>>>>> can't do other way. I assume you use max size because depending on
>>>>>> registers used in instructions you will or will not get prefix byte
>>>>>> (r8-r15).
>>>> Is there one prefix byte per instruction, or just for certain
>>>> instructions?
>>>>>>
>>>>>> I will look on changes in more details may be late.
>>>>>
>>>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>>>> which are not obvious.
>>>> I changed using_class_vsm() to using_class_space().
>>>>>
>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> Vladimir
>>>>>>
>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> Please review this fix for bug 8003424.
>>>>>>>
>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>
>>>>>>> Open bug links at:
>>>>>>>
>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>
>>>>>>> JBS Bug links at
>>>>>>>
>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>
>>>>>>>
>>>>>>> This fix provides support for using compressed klass pointers
>>>>>>> with CDS.
>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>>>> platforms when
>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
>>>>>>> class
>>>>>>> metaspace as part of the Java Heap allocation and locating it at
>>>>>>> the
>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>> separately,
>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>> metaspace
>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>> being
>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>> heap and
>>>>>>> the metaspace.
>>>>>>>
>>>>>>> The new class metaspace allocation code tries to allocate memory at
>>>>>>> 32G,
>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>> encoding
>>>>>>> and decoding of compressed klass pointers will always require
>>>>>>> use of a
>>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>>> pointers
>>>>>>> will differ from compressed oops.
>>>>>>>
>>>>>>> There are no class metaspace allocation changes if
>>>>>>> UseCompressedKlassPointers is turned off or if running on a 32-bit
>>>>>>> platform.
>>>>>>>
>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>> 8016729,
>>>>>>> 8011610, and 8003424.
>>>>>>>
>>>>>>>
>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>> Modules
>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were changed to
>>>>>>> support the new encoding and decoding of compressed klass pointers.
>>>>>>>
>>>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>> compressed
>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>
>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>> related
>>>>>>> to allocating metaspace and remove code that considered compressed
>>>>>>> klass
>>>>>>> pointers when determining the compressed oops compression
>>>>>>> mechanism.
>>>>>>>
>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as part
>>>>>>> of a
>>>>>>> cleanup requested by Coleen.
>>>>>>>
>>>>>>>
>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg tests,
>>>>>>> JPRT,
>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>>>> tests. Most of the test were run with -Xshare:on and
>>>>>>> -Xshare:off (with
>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>>>> 64-Bit
>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
>>>>>>> were
>>>>>>> run on Solaris x86.
>>>>>>>
>>>>>>> The performance impact of these changes is TBD.
>>>>>>>
>>>>>>> Thanks, Harold
>>>>>>>
>>>>>>>
>>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130807/0616ea3c/attachment-0001.html
From david.holmes at oracle.com Wed Aug 7 05:33:13 2013
From: david.holmes at oracle.com (David Holmes)
Date: Wed, 07 Aug 2013 22:33:13 +1000
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
In-Reply-To: <52017AC9.9040809@oracle.com>
References: <52017AC9.9040809@oracle.com>
Message-ID: <52023E89.3060706@oracle.com>
Hi Yumin,
As I understand the bug report the issue is more with the shell script
returning the value of $? which no longer refers to the execution of the
test but the evaluation of the if [ $? == 0 ]
David
On 7/08/2013 8:38 AM, Yumin Qi wrote:
> Please review:
>
> http://cr.openjdk.java.net/~minqi/8019583/webrev0/
>
>
> Summary: The test will always pass since TestMT.java will always return
> value 0 to shell. Fix by recording failure value and exit with it.
>
> Thanks
> Yumin
From coleen.phillimore at oracle.com Wed Aug 7 05:33:26 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Wed, 07 Aug 2013 08:33:26 -0400
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
In-Reply-To: <52017AC9.9040809@oracle.com>
References: <52017AC9.9040809@oracle.com>
Message-ID: <52023E96.4000904@oracle.com>
Yumin,
Looks good.
Coleen
On 8/6/2013 6:38 PM, Yumin Qi wrote:
> Please review:
>
> http://cr.openjdk.java.net/~minqi/8019583/webrev0/
>
>
> Summary: The test will always pass since TestMT.java will always
> return value 0 to shell. Fix by recording failure value and exit with it.
>
> Thanks
> Yumin
From ron.durbin at oracle.com Wed Aug 7 06:33:35 2013
From: ron.durbin at oracle.com (Ron Durbin)
Date: Wed, 7 Aug 2013 06:33:35 -0700 (PDT)
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <5201886C.1030206@oracle.com>
References: <5201886C.1030206@oracle.com>
Message-ID: <6964c1ae-f549-4356-a59e-a914fff9f30b@default>
Not a cap R review, but I have reviewed your changes and they look good.
Ron
> -----Original Message-----
> From: Mikael Vidstedt
> Sent: Tuesday, August 06, 2013 5:36 PM
> To: hotspot-runtime-dev at openjdk.java.net
> Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and Windows Server 2012
> R2
>
>
> Please review the following change:
>
> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>
> The patch adds support to os_windows.cpp for recognizing the upcoming Windows versions:
> Windows 8.1 and Windows Server 2012 R2.
>
> The changed is based on the corresponding code on the JDK side[1][2][3].
>
> Thanks,
> Mikael
>
> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
> [3]
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>
From coleen.phillimore at oracle.com Wed Aug 7 06:39:38 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Wed, 07 Aug 2013 09:39:38 -0400
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <5201886C.1030206@oracle.com>
References: <5201886C.1030206@oracle.com>
Message-ID: <52024E1A.4000908@oracle.com>
It looks like the code under the case for all these releases, should be
different case statements for each, rather than these cascading 'if'
statements. And make 1668-1673 a new function returning si. So if we
have a new release, in general it will work because the default will
print out something. But a better default would be lines 1712-1717
which are dead code now.
Sorry, I know it's simple and urgent but this seems to be getting
increasingly ugly.
Thanks,
Coleen
On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>
> Please review the following change:
>
> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>
> The patch adds support to os_windows.cpp for recognizing the upcoming
> Windows versions: Windows 8.1 and Windows Server 2012 R2.
>
> The changed is based on the corresponding code on the JDK side[1][2][3].
>
> Thanks,
> Mikael
>
> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
> [3]
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>
From coleen.phillimore at oracle.com Wed Aug 7 06:46:09 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Wed, 07 Aug 2013 09:46:09 -0400
Subject: code review (round 0) request for VS2010 IDE fix (8016601)
In-Reply-To: <52018E6F.1090803@oracle.com>
References: <51FC3457.30003@oracle.com> <52018E6F.1090803@oracle.com>
Message-ID: <52024FA1.9090005@oracle.com>
Dan, this looks good. Thank you for fixing it and removing the old core
build, which is likely broken.
Thanks,
Coleen
On 8/6/2013 8:01 PM, Mikael Vidstedt wrote:
>
> Dan,
>
> I have not reviewed the actual changes, but FWIW I have verified that
> applying the patch does solve the linker error you mention. Thanks a
> lot for fixing!
>
> Cheers,
> Mikael
>
> On 2013-08-02 15:36, Daniel D. Daugherty wrote:
>> Greetings,
>>
>> I have have a proposed fix for the following bug:
>>
>> 8016601 Unable to build hsx24 on Windows using project creator and
>> Visual Studio
>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016601
>> https://jbs.oracle.com/bugs/browse/JDK-8016601
>>
>> Here are the HSX-25 webrev URLs:
>>
>> OpenJDK: http://cr.openjdk.java.net/~dcubed/8016601-webrev/0-hsx25/
>> Internal: http://javaweb.us.oracle.com/~ddaugher/8016601-webrev/0-hsx25/
>>
>> Testing:
>> - JPRT windows_i586 and windows_x64 build and test
>> - local windows_i586 cmd line builds for:
>> {OpenJDK, Oracle} x {Client, Server} VM x {product, debug, fastdebug}
>> - local windows_i586 VS2010 builds for
>> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
>> fastdebug}
>> - local windows_x64 VS2010 builds for
>> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
>> fastdebug}
>> Thanks to Ron for doing the windows_x64 testing
>>
>> Gory details are below. As always, comments, questions and
>> suggestions are welome.
>>
>> Dan
>>
>>
>> Gory Details:
>>
>> Build fixes:
>> - VS2010 IDE builds are working again; fixes this failure mode:
>>
>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\objectCountEventSender.obj
>> : warning LNK4042: object specified more than once; extras ignored
>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\errorReporter.obj
>> : warning LNK4042: object specified more than once; extras ignored
>> 1> Creating library
>> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.lib
>> and object
>> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.exp
>> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
>> "public: static void __cdecl
>> ObjectCountEventSender::disable_requestable_event(void)"
>> (?disable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced
>> in function "public: virtual void __thiscall
>> VM_GC_SendObjectCountEvent::doit(void)"
>> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
>> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
>> "public: static void __cdecl
>> ObjectCountEventSender::enable_requestable_event(void)"
>> (?enable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced
>> in function "public: virtual void __thiscall
>> VM_GC_SendObjectCountEvent::doit(void)"
>> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.dll
>> : fatal error LNK1120: 2 unresolved externals
>>
>> - The ProjectCreator tool is modified to support two new options:
>> '-relativeAltSrcInclude' and '-altRelativeInclude'. Here's an
>> example use of the new options:
>>
>> -relativeAltSrcInclude src\closed
>> -altRelativeInclude share\vm
>>
>> which means config the project with some alternate source files in
>> src\closed\share\vm that will replace the corresponding files in
>> src\share\vm.
>>
>> For example, src\closed\share\vm\utilities\errorReporter.cpp replaces
>> src\share\vm\utilities\errorReporter.cpp. In the VS2010 IDE, you'll
>> still be able to see src\share\vm\utilities\errorReporter.cpp in the
>> project source browser, but the icon will indicate that the file is
>> excluded from the project.
>>
>> The ProjectCreator tool's file tree walking logic is modified to keep
>> track of each alternate source file that is found. If a corresponding
>> regular source file is found, then the regular source file is
>> excluded from the project in favor of the alternate source version.
>>
>> - VS2010 cmd line build no longer issue the following linker warnings:
>>
>> link.exe @C:\Users\lfoltan\AppData\Local\Temp\nm9B65.tmp
>> errorReporter.obj : warning LNK4042: object specified more than
>> once; extras ignored
>> objectCountEventSender.obj : warning LNK4042: object specified
>> more than once; extras ignored
>>
>> Misc cleanups:
>>
>> - removed more "core" config support from various makefiles and scripts;
>> the "core" config is vestigal and was mostly removed years ago; the
>> "core" config is not the same as the "minimalvm" config.
>> - removed extra references to ${ALTSRC}/share/vm/jfr objects
>> - added some "AltSrc" versus "OpenJDK" identification to messages where
>> files are auto-generated
>> - added some missing copyright headers
>>
>
From daniel.daugherty at oracle.com Wed Aug 7 07:10:40 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Wed, 07 Aug 2013 08:10:40 -0600
Subject: code review (round 0) request for VS2010 IDE fix (8016601)
In-Reply-To: <52024FA1.9090005@oracle.com>
References: <51FC3457.30003@oracle.com> <52018E6F.1090803@oracle.com>
<52024FA1.9090005@oracle.com>
Message-ID: <52025560.7050603@oracle.com>
Adding back serviceability-dev at openjdk.java.net and
build-dev at openjdk.java.net
Reminder: "reply to list" only replies to _one_ list.
On 8/7/13 7:46 AM, Coleen Phillimore wrote:
>
> Dan, this looks good. Thank you for fixing it
Thanks for the review!
> and removing the old core build, which is likely broken.
Yes, when I ran the IDE batch build of all the configs, the core
configs failed quite nicely.
Dan
>
> Thanks,
> Coleen
>
> On 8/6/2013 8:01 PM, Mikael Vidstedt wrote:
>>
>> Dan,
>>
>> I have not reviewed the actual changes, but FWIW I have verified that
>> applying the patch does solve the linker error you mention. Thanks a
>> lot for fixing!
>>
>> Cheers,
>> Mikael
>>
>> On 2013-08-02 15:36, Daniel D. Daugherty wrote:
>>> Greetings,
>>>
>>> I have have a proposed fix for the following bug:
>>>
>>> 8016601 Unable to build hsx24 on Windows using project creator and
>>> Visual Studio
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016601
>>> https://jbs.oracle.com/bugs/browse/JDK-8016601
>>>
>>> Here are the HSX-25 webrev URLs:
>>>
>>> OpenJDK: http://cr.openjdk.java.net/~dcubed/8016601-webrev/0-hsx25/
>>> Internal:
>>> http://javaweb.us.oracle.com/~ddaugher/8016601-webrev/0-hsx25/
>>>
>>> Testing:
>>> - JPRT windows_i586 and windows_x64 build and test
>>> - local windows_i586 cmd line builds for:
>>> {OpenJDK, Oracle} x {Client, Server} VM x {product, debug, fastdebug}
>>> - local windows_i586 VS2010 builds for
>>> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
>>> fastdebug}
>>> - local windows_x64 VS2010 builds for
>>> {OpenJDK, Oracle} x {Client, Server, Tiered} VM x {product, debug,
>>> fastdebug}
>>> Thanks to Ron for doing the windows_x64 testing
>>>
>>> Gory details are below. As always, comments, questions and
>>> suggestions are welome.
>>>
>>> Dan
>>>
>>>
>>> Gory Details:
>>>
>>> Build fixes:
>>> - VS2010 IDE builds are working again; fixes this failure mode:
>>>
>>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\objectCountEventSender.obj
>>> : warning LNK4042: object specified more than once; extras ignored
>>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\errorReporter.obj
>>> : warning LNK4042: object specified more than once; extras ignored
>>> 1> Creating library
>>> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.lib
>>> and object
>>> D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.exp
>>> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
>>> "public: static void __cdecl
>>> ObjectCountEventSender::disable_requestable_event(void)"
>>> (?disable_requestable_event at ObjectCountEventSender@@SAXXZ)
>>> referenced in function "public: virtual void __thiscall
>>> VM_GC_SendObjectCountEvent::doit(void)"
>>> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
>>> 1>jfrRequestables.obj : error LNK2019: unresolved external symbol
>>> "public: static void __cdecl
>>> ObjectCountEventSender::enable_requestable_event(void)"
>>> (?enable_requestable_event at ObjectCountEventSender@@SAXXZ) referenced
>>> in function "public: virtual void __thiscall
>>> VM_GC_SendObjectCountEvent::doit(void)"
>>> (?doit at VM_GC_SendObjectCountEvent@@UAEXXZ)
>>> 1>D:\hotspot_src\hsx\24\hotspot_14_jun\build\vs-i486\compiler2\debug\jvm.dll
>>> : fatal error LNK1120: 2 unresolved externals
>>>
>>> - The ProjectCreator tool is modified to support two new options:
>>> '-relativeAltSrcInclude' and '-altRelativeInclude'. Here's an
>>> example use of the new options:
>>>
>>> -relativeAltSrcInclude src\closed
>>> -altRelativeInclude share\vm
>>>
>>> which means config the project with some alternate source files in
>>> src\closed\share\vm that will replace the corresponding files in
>>> src\share\vm.
>>>
>>> For example, src\closed\share\vm\utilities\errorReporter.cpp replaces
>>> src\share\vm\utilities\errorReporter.cpp. In the VS2010 IDE, you'll
>>> still be able to see src\share\vm\utilities\errorReporter.cpp in the
>>> project source browser, but the icon will indicate that the file is
>>> excluded from the project.
>>>
>>> The ProjectCreator tool's file tree walking logic is modified to keep
>>> track of each alternate source file that is found. If a corresponding
>>> regular source file is found, then the regular source file is
>>> excluded from the project in favor of the alternate source version.
>>>
>>> - VS2010 cmd line build no longer issue the following linker warnings:
>>>
>>> link.exe @C:\Users\lfoltan\AppData\Local\Temp\nm9B65.tmp
>>> errorReporter.obj : warning LNK4042: object specified more than
>>> once; extras ignored
>>> objectCountEventSender.obj : warning LNK4042: object specified
>>> more than once; extras ignored
>>>
>>> Misc cleanups:
>>>
>>> - removed more "core" config support from various makefiles and
>>> scripts;
>>> the "core" config is vestigal and was mostly removed years ago; the
>>> "core" config is not the same as the "minimalvm" config.
>>> - removed extra references to ${ALTSRC}/share/vm/jfr objects
>>> - added some "AltSrc" versus "OpenJDK" identification to messages where
>>> files are auto-generated
>>> - added some missing copyright headers
>>>
>>
>
From harold.seigel at oracle.com Wed Aug 7 08:34:54 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Wed, 07 Aug 2013 11:34:54 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <52002E68.6080901@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
<52002E68.6080901@oracle.com>
Message-ID: <5202691E.6020500@oracle.com>
Hi Vladimir,
Thanks for the thorough review!
See comments inline.
Harold
On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
> Harold,
>
> I don't like to have two versions of reinit_heapbase() method. Can you
> modify the original one by checking (Universe::heap() != NULL)?
Done. See next webrev.
>
> Note, on SPARC set() could generate up to 8 instructions to load
> 64-bit constant into register. So I am not sure that it will be faster
> than load.
We thought it would be faster because it doesn't need to load anything
from memory.
>
> sparc MacroAssembler::decode_klass_not_null(Register src, Register
> dst) should be modified to not use G6 when narrow_klass_shift() == 0.
Done.
>
> x86 MacroAssembler::encode_klass_not_null(Register dst, Register src)
> also should be modified to not use R12 when dst != src by using
> mov64(dst, base) + negq(dst) + addq(dst, src) instructions.
Done.
>
> Replace next leaq() with addq(dst, src) (address expressions use adr
> module in cpu which could be bottleneck):
>
> 5135 } else {
> 5136 leaq(dst, Address(dst, src, Address::times_1, 0));
Done.
>
>
> I can't find where in CDS you store information about compressed klass
> pointers and compressed oops parameters which were used during dump?
> How you verify that correct parameters/flags are ussed when such CDS
> is used later?
No compressed klass pointers nor compressed oops get written to the
archive. So, the compressed klass pointers and compressed oops
parameters do not need to be recorded in the archive.
>
> Could you add more explanation in the comment why next method returns
> 'false' if DumpSharedSpaces is 'true'? From first glance it
> contradicts to the bug's synopsis:
>
> + // Return TRUE only if UseCompressedKlassPointers is True and
> DumpSharedSpaces is False.
> + static bool using_class_space() {
> + return NOT_LP64(false) LP64_ONLY(UseCompressedKlassPointers &&
> !DumpSharedSpaces);
> + }
The classes that are written to the read/write archive section are not
from class metaspace. Class metaspace is not dumped to the archive.
>
> Could you move set_narrow_klass_base_and_shift() near
> can_use_cds_with_metaspace_addr() to use one #ifdef LP64?
Done.
>
> set_narrow_klass_base_and_shift() and
> can_use_cds_with_metaspace_addr() have the same code for
> UseSharedSpaces. It would be nice to have only one copy. Call
> can_use_cds_with_metaspace_addr() from
> set_narrow_klass_base_and_shift() ?
I could add new inlined methods that determine the higher_address and
lower_base when UseSharedSpaces is true and have them called from
set_narrow_klass_base_and_shift() and
can_use_cds_with_metaspace_addr(). Would that be worth doing?
>
> I see that you unconditionally set comp klass ptr base and shift for
> DumpSharedSpaces. Should you do the check similar to
> can_use_cds_with_metaspace_addr() to find if you can do that? You
> don't even check UseCompressedKlassPointers.
I don't think the checks are needed because the information written to
the archive is not affected by the size of the class metaspace.
Also, I recently added code to arguments.cpp that will generate an error
if UseCompressedOops or UseCompressedKlassPointers is turned off and
DumpSharedSpaces is on.
>
> Why you have next limitation? What if coop can't be used because of
> big heap?:
>
> + // UseCompressedOops and UseCompressedKlassPointers must be on
> for UseSharedSpaces.
> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> + no_shared_spaces();
If coop is turned off then CDS cannot be used. CDS will only be
supported if both UseCompressedOops and UseCompressedKlassPointers are
TRUE.
>
> Could you move UseCompressedKlassPointers code in arguments.cpp into
> separate method similar to set_use_compressed_oops()?
Done.
>
> About new tests.
> The first test in CDSCompressedKPtrsError misses
> -XX:+UseCompressedOops flag.
Fixed.
>
> Could you also test cross flags combinations?:
>
> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
Done.
>
> It would be nice to have test to check ClassMetaspaceSize value range.
> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
> or maxuint.
A member of our runtime SQE group is writing additional tests. I'll ask
him to write a ClassMetaspaceSize range test.
We chose 3Gb because we thought it was a sufficiently large size.
>
>
> About code style, indention. We align next line to corresponding part
> of previous line if we need to split a line. And sometimes it is
> better to keep one long line. I understand some of them were before
> your changes but, please, clean up at lest ones you touched.
Done.
>
> Cases in metaspace.cpp:
>
> 2263 assert(raw_word_size >= min_size,
> 2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
> SIZE_FORMAT, word_size, min_size));
>
>
> 2485 if (Metaspace::using_class_space() &&
> 2486 (Metaspace::class_space_list() != NULL)) {
>
>
> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
> 2575 (Metaspace::using_class_space() ?
> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
> 2577 Metaspace::space_list()->virtual_space_total();
>
>
> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
> SIZE_FORMAT ", "
> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT ", "
> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
> ", "
> 2697 "large count " SIZE_FORMAT,
> 2698 cls_specialized_count, cls_specialized_waste,
> 2699 cls_small_count, cls_small_waste,
> 2700 cls_medium_count, cls_medium_waste,
> cls_humongous_count);
>
>
> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G > addr) &&
> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>
>
> 2889 vm_exit_during_initialization(err_msg(
> 2890 "Could not allocate metaspace: %d bytes",
> 2891 class_metaspace_size()));
>
>
> 3107 return using_class_space() ?
> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>
>
> 3157 if (is_class && using_class_space()) {
> 3158 class_vsm()->deallocate(ptr, word_size);
>
>
> 3305 return space_list()->contains(ptr) ||
> 3306 (using_class_space() && class_space_list()->contains(ptr));
>
> metaspace.hpp:
>
> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
> 271 (Metaspace::using_class_space() ?
> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>
> 285 return _allocated_used_words[Metaspace::NonClassType] +
> 286 (Metaspace::using_class_space() ?
> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>
> universe.cpp:
>
> 849 assert((intptr_t)Universe::narrow_oop_base() <=
> (intptr_t)(Universe::heap()->base() -
> 850 os::vm_page_size()) ||
> 851 Universe::narrow_oop_base() == NULL, "invalid value");
>
>
> Thanks,
> Vladimir
>
> On 8/2/13 1:31 PM, harold seigel wrote:
>> Hi,
>>
>> Please review this updated webrev for bug 8003424:
>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>
>>
>> The updated webrev has a lot of changes from the previous webrev,
>> including the following:
>>
>> 1. Class metaspace information is now output when
>> -XX:+PrintCompressedOopsMode is specified.
>>
>> 2. decode_klass_not_null(Register dst, Register src) no longer
>> clobbers R12.
>>
>> 3. Method using_class_vsm() was renamed to using_class_space().
>>
>> 4. Type narrowKlass was added and replaces narrowOop, where
>> appropriate.
>>
>> 5. The Metaspace:: qualifier was removed, where it was unnecessary.
>>
>> 6. Metaspace::initialize_class_space() was made private.
>>
>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>> updated.
>>
>> Performance tests were run by Jenny using specjvm2008, specjbb2005, and
>> specjbb2013. The results showed no significant performance difference
>> in terms of scores and gc behavior.
>>
>> Additional testing was done on Solaris Sparc and Linux x86 using
>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>
>> Please let me know what additional tests should be run.
>>
>> Thanks!
>> Harold
>>
>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>> Hi Harold,
>>>
>>> > Usually the narrow_klass_base will be 32G and the
>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>> that
>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>> unless
>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>> sense?
>>>
>>> My bad, I miscalculated. But we have "perfect value" 0x800000000 and I
>>> am tempted to use may be bts (bit set) to avoid R12 usage (assuming or
>>> with check that class metaspace size < 32Gb).
>>>
>>> > Is there one prefix byte per instruction, or just for certain
>>> instructions?
>>>
>>> "Not all instructions require a REX prefix in 64-bit mode. A prefix is
>>> necessary only if an instruction references one of the extended
>>> registers or uses a 64-bit operand."
>>>
>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and =32
>>> and big java heap. Recently we got several bugs which indicated that
>>> we did not separate cleanly oops and klass pointers en/decoding.
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>> Hi Vladimir,
>>>>
>>>> Thank you for the review! Please see inline comments.
>>>>
>>>> Thanks, Harold
>>>>
>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>> Nice clean up, Harold
>>>>>>
>>>>>> Could you add the size of class metaspace in output with
>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>> remember an
>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>> Will be done in next webrev.
>>>>>>
>>>>>> Also it would be nice to print these info line (and compressed oops
>>>>>> info
>>>>>> line) in hs_err files.
>>>> I filed an enhancement bug for this: 8021264
>>>> .
>>>>>>
>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>>> x86_64.ad.
>>>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also note
>>>>>> that code in .ad file does not check the encoding mode for narrow
>>>>>> klass/oop so it should be conservative and assume that arithmetic
>>>>>> instructions are used.
>>>> OK. Thanks.
>>>>>>
>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>>> 4Gb so
>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>> encoding/decoding without destroying R12.
>>>>>
>>>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>> But the base will normally be 32Gb. So this case won't happen very
>>>> often.
>>>>>
>>>>> You definitely should not use R12 in decode_klass_not_null(Register
>>>>> dst, Register src) method where you have free 'dst' register.
>>>> Will be fixed in next webrev.
>>>>>
>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>
>>>>> decode:
>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>> }
>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>> }
>>>>>
>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>>>> (max positive int).
>>>> Usually the narrow_klass_base will be 32G and the
>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>> that
>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>> unless
>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>>> sense?
>>>>>
>>>>> And you have general memory reservation problem. At least on Solaris,
>>>>> as I remember, OS will always try to keep protected 4Kb pages between
>>>>> different requested memory regions. That is why in jdk7 we first
>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>> compressed oops.
>>>>>
>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>> compressed
>>>>> oops and with Xmx20Gb.
>>>> I verifed that we get either cds_address+cds_total as the address, or
>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>> Windows
>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap sizes and
>>>> -Xmx32G.
>>>>
>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>> desired
>>>> CDS address for class metaspace regardless of heap size.
>>>>>
>>>>>>
>>>>>> instr_size_for_decode_klass_not_null() is ugly but unfortunately we
>>>>>> can't do other way. I assume you use max size because depending on
>>>>>> registers used in instructions you will or will not get prefix byte
>>>>>> (r8-r15).
>>>> Is there one prefix byte per instruction, or just for certain
>>>> instructions?
>>>>>>
>>>>>> I will look on changes in more details may be late.
>>>>>
>>>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>>>> which are not obvious.
>>>> I changed using_class_vsm() to using_class_space().
>>>>>
>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> Vladimir
>>>>>>
>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> Please review this fix for bug 8003424.
>>>>>>>
>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>
>>>>>>> Open bug links at:
>>>>>>>
>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>
>>>>>>> JBS Bug links at
>>>>>>>
>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>
>>>>>>>
>>>>>>> This fix provides support for using compressed klass pointers with
>>>>>>> CDS.
>>>>>>> It also changes the class metaspace allocation on 64-bit platforms
>>>>>>> when
>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
>>>>>>> class
>>>>>>> metaspace as part of the Java Heap allocation and locating it at
>>>>>>> the
>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>> separately,
>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>> metaspace
>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>> being
>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>> heap and
>>>>>>> the metaspace.
>>>>>>>
>>>>>>> The new class metaspace allocation code tries to allocate memory at
>>>>>>> 32G,
>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>> encoding
>>>>>>> and decoding of compressed klass pointers will always require use
>>>>>>> of a
>>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>>> pointers
>>>>>>> will differ from compressed oops.
>>>>>>>
>>>>>>> There are no class metaspace allocation changes if
>>>>>>> UseCompressedKlassPointers is turned off or if running on a 32-bit
>>>>>>> platform.
>>>>>>>
>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>> 8016729,
>>>>>>> 8011610, and 8003424.
>>>>>>>
>>>>>>>
>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>> Modules
>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were changed to
>>>>>>> support the new encoding and decoding of compressed klass pointers.
>>>>>>>
>>>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>> compressed
>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>
>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>> related
>>>>>>> to allocating metaspace and remove code that considered compressed
>>>>>>> klass
>>>>>>> pointers when determining the compressed oops compression
>>>>>>> mechanism.
>>>>>>>
>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as part
>>>>>>> of a
>>>>>>> cleanup requested by Coleen.
>>>>>>>
>>>>>>>
>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg tests,
>>>>>>> JPRT,
>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>>>> tests. Most of the test were run with -Xshare:on and -Xshare:off
>>>>>>> (with
>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>>>> 64-Bit
>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
>>>>>>> were
>>>>>>> run on Solaris x86.
>>>>>>>
>>>>>>> The performance impact of these changes is TBD.
>>>>>>>
>>>>>>> Thanks, Harold
>>>>>>>
>>>>>>>
>>>>
>>
From vladimir.kozlov at oracle.com Wed Aug 7 09:20:28 2013
From: vladimir.kozlov at oracle.com (Vladimir Kozlov)
Date: Wed, 07 Aug 2013 09:20:28 -0700
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <52023770.9070804@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
<51FFFB29.9070304@oracle.com> <52023770.9070804@oracle.com>
Message-ID: <520273CC.2060002@oracle.com>
>> *+ if (PrintCompressedOopsMode || (PrintMiscellaneous && Verbose)) {*
>> *+ gclog_or_tty->print_cr("Narrow klass base: " PTR_FORMAT ", Narrow klass shift: " SIZE_FORMAT,*
>>
>> I see this conditional comes from universe.cpp but I don't see why this should be printed for the OR condition:
>> PrintMiscellaneous && Verbose.
> I removed the second OR condition.
I asked Harold to do that because we print information about coop info with (PrintMiscellaneous && Verbose):
[SafePoint Polling address: 0x00000001106d5000]
Logical CPUs per core: 2
UseSSE=4 UseAVX=1 UseAES=1
Allocation prefetching: PREFETCHNTA at distance 192, 4 lines of 64 bytes
PrefetchCopyIntervalInBytes 576
PrefetchScanIntervalInBytes 576
PrefetchFieldsAhead 1
CPU:total 8 (4 cores per cpu, 2 threads per core) family 6 model 42 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3,
ssse3, sse4.1, sse4.2, popcnt, avx, aes, ht, tsc, tscinvbit
heap address: 0x00000007ada00000, size: 1318 MB, zero based Compressed Oops
I wanted to avoid specifying additional flag -XX:+PrintCompressedOopsMode :)
Thanks,
Vladimir
On 8/7/13 5:02 AM, harold seigel wrote:
> Hi Coleen,
>
> Thanks for all the comments. Please see my replies inline.
>
> Harold
>
> On 8/5/2013 3:21 PM, Coleen Phillimore wrote:
>>
>> On 08/02/2013 04:31 PM, harold seigel wrote:
>>> Hi,
>>>
>>> Please review this updated webrev for bug 8003424: http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>
>>>
>>> The updated webrev has a lot of changes from the previous webrev, including the following:
>>>
>>> 1. Class metaspace information is now output when -XX:+PrintCompressedOopsMode is specified.
>>>
>>> 2. decode_klass_not_null(Register dst, Register src) no longer clobbers R12.
>>>
>>
>> If decode_klass_not_null(src, dest) doesn't use r12, isn't the size calculated by
>> *instr_size_for_decode_klass_not_null* now wrong? Or is this size calculation only valid for the case where you only
>> have one register? Or can this size be a max size?
> This size is a max size.
>>
>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/src/share/vm/memory/heap.cpp.frames.html
>>
>> In this file can you spell out segm_r_aligned to something more descriptive - like reserved_segment_alignment,
>> reserved_segments_size, committed_segments_size.
> This change will be in the next webrev.
>>
>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/src/share/vm/memory/metaspace.cpp.udiff.html
>>
>> *+ if (PrintCompressedOopsMode || (PrintMiscellaneous && Verbose)) {*
>> *+ gclog_or_tty->print_cr("Narrow klass base: " PTR_FORMAT ", Narrow klass shift: " SIZE_FORMAT,*
>>
>> I see this conditional comes from universe.cpp but I don't see why this should be printed for the OR condition:
>> PrintMiscellaneous && Verbose.
> I removed the second OR condition.
>>
>> 2941 #ifdef _LP64
>> 2942 Universe::set_narrow_klass_base((address)_space_list->current_virtual_space()->bottom()
>>
>> Put a comment why you do this. It's so UseCompressedKlassPointers decoding "works" while you are creating the shared
>> archive. The oops are thrown away right now so it doesn't matter that the encoded value uses a different base during
>> dumping than it will use during UseSharedSpaces. When we share String oops, we'll have to fix this code but I don't
>> know how to fix this yet. Maybe add code that always requires that the CDS archive base is the lower of the two
>> bases. Not a problem with your code.
>>
>> Maybe you should assert that UseCompressedOops and KlassPtrs are set here though.
> I added both a comment and an assert.
>>
>> 3012 if (using_class_space()) {
>> 3013 _class_space_list = new VirtualSpaceList(rs);
>> 3014 }
>>
>> This function initialize_class_space() is always called when you are using_class_space() so why this conditional?
>> Shouldn't this also be moved to 2917 under where it's called (or above) in the ifdef LP64 since it's LP64 only now?
> I changed the conditional to an assert.
>>
>> 2557 if ((mdtype == Metaspace::ClassType) && !Metaspace::using_class_space()) {
>> 2558 return 0;
>> 2559 }
>> One way to shorten this expression that appears a few times, is to add an inlined overloaded
>> using_class_space(MetadataType).
> I'd prefer to leave this code as is. This expression occurs only twice and I think the existing code is more
> descriptive than a new function would be.
>>
>> This looks really good. I've been through it a few times and I don't see any problems, other than these suggestions here.
>>
>> Thanks!
>> Coleen
>>
>>>
>>> 3. Method using_class_vsm() was renamed to using_class_space().
>>>
>>> 4. Type narrowKlass was added and replaces narrowOop, where appropriate.
>>>
>>> 5. The Metaspace:: qualifier was removed, where it was unnecessary.
>>>
>>> 6. Metaspace::initialize_class_space() was made private.
>>>
>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was updated.
>>>
>>> Performance tests were run by Jenny using specjvm2008, specjbb2005, and specjbb2013. The results showed no
>>> significant performance difference in terms of scores and gc behavior.
>>>
>>> Additional testing was done on Solaris Sparc and Linux x86 using SpecJBB2005 with -Xmx34g and
>>> -XX:ObjectAlignmentInBytes=16 & 32.
>>>
>>> Please let me know what additional tests should be run.
>>>
>>> Thanks!
>>> Harold
>>>
>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>> Hi Harold,
>>>>
>>>> > Usually the narrow_klass_base will be 32G and the
>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means that
>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12, unless
>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that make sense?
>>>>
>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000 and I am tempted to use may be bts (bit set) to
>>>> avoid R12 usage (assuming or with check that class metaspace size < 32Gb).
>>>>
>>>> > Is there one prefix byte per instruction, or just for certain instructions?
>>>>
>>>> "Not all instructions require a REX prefix in 64-bit mode. A prefix is necessary only if an instruction references
>>>> one of the extended registers or uses a 64-bit operand."
>>>>
>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and =32 and big java heap. Recently we got several bugs
>>>> which indicated that we did not separate cleanly oops and klass pointers en/decoding.
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>> Hi Vladimir,
>>>>>
>>>>> Thank you for the review! Please see inline comments.
>>>>>
>>>>> Thanks, Harold
>>>>>
>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>>> Nice clean up, Harold
>>>>>>>
>>>>>>> Could you add the size of class metaspace in output with
>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to remember an
>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>> Will be done in next webrev.
>>>>>>>
>>>>>>> Also it would be nice to print these info line (and compressed oops info
>>>>>>> line) in hs_err files.
>>>>> I filed an enhancement bug for this: 8021264
>>>>> .
>>>>>>>
>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in x86_64.ad.
>>>>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also note
>>>>>>> that code in .ad file does not check the encoding mode for narrow
>>>>>>> klass/oop so it should be conservative and assume that arithmetic
>>>>>>> instructions are used.
>>>>> OK. Thanks.
>>>>>>>
>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below 4Gb so
>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>>> encoding/decoding without destroying R12.
>>>>>>
>>>>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>>> But the base will normally be 32Gb. So this case won't happen very often.
>>>>>>
>>>>>> You definitely should not use R12 in decode_klass_not_null(Register
>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>> Will be fixed in next webrev.
>>>>>>
>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>>
>>>>>> decode:
>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>>> }
>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>>> }
>>>>>>
>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>>>>> (max positive int).
>>>>> Usually the narrow_klass_base will be 32G and the
>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means that
>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12, unless
>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that make sense?
>>>>>>
>>>>>> And you have general memory reservation problem. At least on Solaris,
>>>>>> as I remember, OS will always try to keep protected 4Kb pages between
>>>>>> different requested memory regions. That is why in jdk7 we first
>>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>>> compressed oops.
>>>>>>
>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>>> address or CompressedKlassPointersBase without CDS and with compressed
>>>>>> oops and with Xmx20Gb.
>>>>> I verifed that we get either cds_address+cds_total as the address, or
>>>>> CompressedKlassPointersBase as the address without CDS on Linux, Windows
>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap sizes and
>>>>> -Xmx32G.
>>>>>
>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the desired
>>>>> CDS address for class metaspace regardless of heap size.
>>>>>>
>>>>>>>
>>>>>>> instr_size_for_decode_klass_not_null() is ugly but unfortunately we
>>>>>>> can't do other way. I assume you use max size because depending on
>>>>>>> registers used in instructions you will or will not get prefix byte
>>>>>>> (r8-r15).
>>>>> Is there one prefix byte per instruction, or just for certain instructions?
>>>>>>>
>>>>>>> I will look on changes in more details may be late.
>>>>>>
>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>>>>> which are not obvious.
>>>>> I changed using_class_vsm() to using_class_space().
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Vladimir
>>>>>>>
>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Please review this fix for bug 8003424.
>>>>>>>>
>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>>
>>>>>>>> Open bug links at:
>>>>>>>>
>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>>
>>>>>>>> JBS Bug links at
>>>>>>>>
>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>>
>>>>>>>>
>>>>>>>> This fix provides support for using compressed klass pointers with CDS.
>>>>>>>> It also changes the class metaspace allocation on 64-bit platforms when
>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the class
>>>>>>>> metaspace as part of the Java Heap allocation and locating it at the
>>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>>> separately,
>>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>>> metaspace
>>>>>>>> because it won't be backed up against the Java heap. If CDS is being
>>>>>>>> used, then the CDS region will be allocated between the Java heap and
>>>>>>>> the metaspace.
>>>>>>>>
>>>>>>>> The new class metaspace allocation code tries to allocate memory at
>>>>>>>> 32G,
>>>>>>>> or above the CDS region, if it is present. Because of this, encoding
>>>>>>>> and decoding of compressed klass pointers will always require use of a
>>>>>>>> base register. So, encoding and decoding of compressed klass pointers
>>>>>>>> will differ from compressed oops.
>>>>>>>>
>>>>>>>> There are no class metaspace allocation changes if
>>>>>>>> UseCompressedKlassPointers is turned off or if running on a 32-bit
>>>>>>>> platform.
>>>>>>>>
>>>>>>>> The code changes also include some cleanup and will fix bugs 8016729,
>>>>>>>> 8011610, and 8003424.
>>>>>>>>
>>>>>>>>
>>>>>>>> Many of the modules in this webrev contain a lot of changes. Modules
>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were changed to
>>>>>>>> support the new encoding and decoding of compressed klass pointers.
>>>>>>>>
>>>>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>>>>> allocation for metaspace and the CDS region and to determine compressed
>>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>>
>>>>>>>> Most of the changes to module universe.cpp were to remove code related
>>>>>>>> to allocating metaspace and remove code that considered compressed
>>>>>>>> klass
>>>>>>>> pointers when determining the compressed oops compression mechanism.
>>>>>>>>
>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as part of a
>>>>>>>> cleanup requested by Coleen.
>>>>>>>>
>>>>>>>>
>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg tests,
>>>>>>>> JPRT,
>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>>>>> tests. Most of the test were run with -Xshare:on and -Xshare:off (with
>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>>>>> 64-Bit
>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests were
>>>>>>>> run on Solaris x86.
>>>>>>>>
>>>>>>>> The performance impact of these changes is TBD.
>>>>>>>>
>>>>>>>> Thanks, Harold
>>>>>>>>
>>>>>>>>
>>>>>
>>>
>>
>
From mikael.vidstedt at oracle.com Wed Aug 7 09:28:40 2013
From: mikael.vidstedt at oracle.com (Mikael Vidstedt)
Date: Wed, 07 Aug 2013 09:28:40 -0700
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <52024E1A.4000908@oracle.com>
References: <5201886C.1030206@oracle.com> <52024E1A.4000908@oracle.com>
Message-ID: <520275B8.5010101@oracle.com>
Coleen,
Funny you should mention that, and since I fully agree with you I
actually did prepare another version of the patch which is heavily
inspired by the java_props_md.c implementation:
http://cr.openjdk.java.net/~mikael/webrevs/winvercleanup2/webrev/
I personally like this version better, but the one thing that held me
back was the fact that I will basically want to dig up machines with all
the different (supported) Windows versions and verify that the code is
still correct in all cases. If you think this is the way to go I more
than willing to will do so. Let me know what you think about the new
version of the patch!
There's no real urgency here - I'd rather do it correct once than...
Cheers,
Mikael
On 2013-08-07 06:39, Coleen Phillimore wrote:
>
> It looks like the code under the case for all these releases, should
> be different case statements for each, rather than these cascading
> 'if' statements. And make 1668-1673 a new function returning si. So
> if we have a new release, in general it will work because the default
> will print out something. But a better default would be lines
> 1712-1717 which are dead code now.
>
> Sorry, I know it's simple and urgent but this seems to be getting
> increasingly ugly.
>
> Thanks,
> Coleen
>
> On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>>
>> Please review the following change:
>>
>> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>>
>> The patch adds support to os_windows.cpp for recognizing the upcoming
>> Windows versions: Windows 8.1 and Windows Server 2012 R2.
>>
>> The changed is based on the corresponding code on the JDK side[1][2][3].
>>
>> Thanks,
>> Mikael
>>
>> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
>> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
>> [3]
>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>>
>
From ioi.lam at oracle.com Wed Aug 7 10:01:41 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Wed, 07 Aug 2013 10:01:41 -0700
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <520275B8.5010101@oracle.com>
References: <5201886C.1030206@oracle.com> <52024E1A.4000908@oracle.com>
<520275B8.5010101@oracle.com>
Message-ID: <52027D75.7050204@oracle.com>
Just a minor nit. I think it's better to keep the old variable name
(osvi) so that the number of lines changed would be minimized.
For testability, good luck finding a Windows 3.1 :-)
How about splitting the function so that you have a
void os::win32::print_windows_version(outputStream* st, OSVERSIONINFOEX
osvi)
Then, we can have a stand-alone test.exe that links to os_windows.obj
and test it with all combinarions of osvi.
- Ioi
On 08/07/2013 09:28 AM, Mikael Vidstedt wrote:
>
> Coleen,
>
> Funny you should mention that, and since I fully agree with you I
> actually did prepare another version of the patch which is heavily
> inspired by the java_props_md.c implementation:
>
> http://cr.openjdk.java.net/~mikael/webrevs/winvercleanup2/webrev/
>
> I personally like this version better, but the one thing that held me
> back was the fact that I will basically want to dig up machines with
> all the different (supported) Windows versions and verify that the
> code is still correct in all cases. If you think this is the way to go
> I more than willing to will do so. Let me know what you think about
> the new version of the patch!
>
> There's no real urgency here - I'd rather do it correct once than...
>
> Cheers,
> Mikael
>
>
> On 2013-08-07 06:39, Coleen Phillimore wrote:
>>
>> It looks like the code under the case for all these releases, should
>> be different case statements for each, rather than these cascading
>> 'if' statements. And make 1668-1673 a new function returning si.
>> So if we have a new release, in general it will work because the
>> default will print out something. But a better default would be
>> lines 1712-1717 which are dead code now.
>>
>> Sorry, I know it's simple and urgent but this seems to be getting
>> increasingly ugly.
>>
>> Thanks,
>> Coleen
>>
>> On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>>>
>>> Please review the following change:
>>>
>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>>>
>>> The patch adds support to os_windows.cpp for recognizing the
>>> upcoming Windows versions: Windows 8.1 and Windows Server 2012 R2.
>>>
>>> The changed is based on the corresponding code on the JDK
>>> side[1][2][3].
>>>
>>> Thanks,
>>> Mikael
>>>
>>> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
>>> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
>>> [3]
>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130807/9aa93ece/attachment-0001.html
From dmitry.samersoff at oracle.com Wed Aug 7 10:24:11 2013
From: dmitry.samersoff at oracle.com (dmitry.samersoff at oracle.com)
Date: Wed, 07 Aug 2013 17:24:11 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8021771: warning stat64 is deprecated -
when building on OSX 10.7.5
Message-ID: <20130807172416.1F0794868B@hg.openjdk.java.net>
Changeset: 195ff07bc7f6
Author: dsamersoff
Date: 2013-08-07 19:02 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/195ff07bc7f6
8021771: warning stat64 is deprecated - when building on OSX 10.7.5
Summary: stat64 have to be replaced with stat
Reviewed-by: dholmes, kmo
Contributed-by: rednaxelafx at gmail.com
! src/os/bsd/vm/attachListener_bsd.cpp
From coleen.phillimore at oracle.com Wed Aug 7 10:56:57 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Wed, 07 Aug 2013 13:56:57 -0400
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <520275B8.5010101@oracle.com>
References: <5201886C.1030206@oracle.com> <52024E1A.4000908@oracle.com>
<520275B8.5010101@oracle.com>
Message-ID: <52028A69.8010207@oracle.com>
Mikael,
I do like your new version better but because you changed so much, it
should be verified on all versions of windows. Which you might not
want to do. My suggestion to make this code nicer (fix case stmt and
outline common code) was really simple and I think can be verified by
code inspection, which might be less work and easier to review.
Coleen
On 8/7/2013 12:28 PM, Mikael Vidstedt wrote:
>
> Coleen,
>
> Funny you should mention that, and since I fully agree with you I
> actually did prepare another version of the patch which is heavily
> inspired by the java_props_md.c implementation:
>
> http://cr.openjdk.java.net/~mikael/webrevs/winvercleanup2/webrev/
>
> I personally like this version better, but the one thing that held me
> back was the fact that I will basically want to dig up machines with
> all the different (supported) Windows versions and verify that the
> code is still correct in all cases. If you think this is the way to go
> I more than willing to will do so. Let me know what you think about
> the new version of the patch!
>
> There's no real urgency here - I'd rather do it correct once than...
>
> Cheers,
> Mikael
>
>
> On 2013-08-07 06:39, Coleen Phillimore wrote:
>>
>> It looks like the code under the case for all these releases, should
>> be different case statements for each, rather than these cascading
>> 'if' statements. And make 1668-1673 a new function returning si.
>> So if we have a new release, in general it will work because the
>> default will print out something. But a better default would be
>> lines 1712-1717 which are dead code now.
>>
>> Sorry, I know it's simple and urgent but this seems to be getting
>> increasingly ugly.
>>
>> Thanks,
>> Coleen
>>
>> On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>>>
>>> Please review the following change:
>>>
>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>>>
>>> The patch adds support to os_windows.cpp for recognizing the
>>> upcoming Windows versions: Windows 8.1 and Windows Server 2012 R2.
>>>
>>> The changed is based on the corresponding code on the JDK
>>> side[1][2][3].
>>>
>>> Thanks,
>>> Mikael
>>>
>>> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
>>> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
>>> [3]
>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>>>
>>
>
From harold.seigel at oracle.com Wed Aug 7 13:27:58 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Wed, 07 Aug 2013 16:27:58 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <520273CC.2060002@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
<51FFFB29.9070304@oracle.com> <52023770.9070804@oracle.com>
<520273CC.2060002@oracle.com>
Message-ID: <5202ADCE.4020602@oracle.com>
Hi,
I restored the second OR condition so that the info will get printed
with either PrintCompressedOopsMode OR (PrintMiscellaneous && Verbose).
Thanks, Harold
On 8/7/2013 12:20 PM, Vladimir Kozlov wrote:
> >> *+ if (PrintCompressedOopsMode || (PrintMiscellaneous &&
> Verbose)) {*
> >> *+ gclog_or_tty->print_cr("Narrow klass base: " PTR_FORMAT ",
> Narrow klass shift: " SIZE_FORMAT,*
> >>
> >> I see this conditional comes from universe.cpp but I don't see why
> this should be printed for the OR condition:
> >> PrintMiscellaneous && Verbose.
> > I removed the second OR condition.
>
> I asked Harold to do that because we print information about coop info
> with (PrintMiscellaneous && Verbose):
>
> [SafePoint Polling address: 0x00000001106d5000]
> Logical CPUs per core: 2
> UseSSE=4 UseAVX=1 UseAES=1
> Allocation prefetching: PREFETCHNTA at distance 192, 4 lines of 64 bytes
> PrefetchCopyIntervalInBytes 576
> PrefetchScanIntervalInBytes 576
> PrefetchFieldsAhead 1
> CPU:total 8 (4 cores per cpu, 2 threads per core) family 6 model 42
> stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1,
> sse4.2, popcnt, avx, aes, ht, tsc, tscinvbit
>
> heap address: 0x00000007ada00000, size: 1318 MB, zero based Compressed
> Oops
>
>
> I wanted to avoid specifying additional flag
> -XX:+PrintCompressedOopsMode :)
>
> Thanks,
> Vladimir
>
>
> On 8/7/13 5:02 AM, harold seigel wrote:
>> Hi Coleen,
>>
>> Thanks for all the comments. Please see my replies inline.
>>
>> Harold
>>
>> On 8/5/2013 3:21 PM, Coleen Phillimore wrote:
>>>
>>> On 08/02/2013 04:31 PM, harold seigel wrote:
>>>> Hi,
>>>>
>>>> Please review this updated webrev for bug 8003424:
>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>>
>>>>
>>>> The updated webrev has a lot of changes from the previous webrev,
>>>> including the following:
>>>>
>>>> 1. Class metaspace information is now output when
>>>> -XX:+PrintCompressedOopsMode is specified.
>>>>
>>>> 2. decode_klass_not_null(Register dst, Register src) no longer
>>>> clobbers R12.
>>>>
>>>
>>> If decode_klass_not_null(src, dest) doesn't use r12, isn't the size
>>> calculated by
>>> *instr_size_for_decode_klass_not_null* now wrong? Or is this size
>>> calculation only valid for the case where you only
>>> have one register? Or can this size be a max size?
>> This size is a max size.
>>>
>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/src/share/vm/memory/heap.cpp.frames.html
>>>
>>>
>>> In this file can you spell out segm_r_aligned to something more
>>> descriptive - like reserved_segment_alignment,
>>> reserved_segments_size, committed_segments_size.
>> This change will be in the next webrev.
>>>
>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/src/share/vm/memory/metaspace.cpp.udiff.html
>>>
>>>
>>> *+ if (PrintCompressedOopsMode || (PrintMiscellaneous && Verbose)) {*
>>> *+ gclog_or_tty->print_cr("Narrow klass base: " PTR_FORMAT ",
>>> Narrow klass shift: " SIZE_FORMAT,*
>>>
>>> I see this conditional comes from universe.cpp but I don't see why
>>> this should be printed for the OR condition:
>>> PrintMiscellaneous && Verbose.
>> I removed the second OR condition.
>>>
>>> 2941 #ifdef _LP64
>>> 2942
>>> Universe::set_narrow_klass_base((address)_space_list->current_virtual_space()->bottom()
>>>
>>> Put a comment why you do this. It's so UseCompressedKlassPointers
>>> decoding "works" while you are creating the shared
>>> archive. The oops are thrown away right now so it doesn't matter
>>> that the encoded value uses a different base during
>>> dumping than it will use during UseSharedSpaces. When we share
>>> String oops, we'll have to fix this code but I don't
>>> know how to fix this yet. Maybe add code that always requires that
>>> the CDS archive base is the lower of the two
>>> bases. Not a problem with your code.
>>>
>>> Maybe you should assert that UseCompressedOops and KlassPtrs are set
>>> here though.
>> I added both a comment and an assert.
>>>
>>> 3012 if (using_class_space()) {
>>> 3013 _class_space_list = new VirtualSpaceList(rs);
>>> 3014 }
>>>
>>> This function initialize_class_space() is always called when you are
>>> using_class_space() so why this conditional?
>>> Shouldn't this also be moved to 2917 under where it's called (or
>>> above) in the ifdef LP64 since it's LP64 only now?
>> I changed the conditional to an assert.
>>>
>>> 2557 if ((mdtype == Metaspace::ClassType) &&
>>> !Metaspace::using_class_space()) {
>>> 2558 return 0;
>>> 2559 }
>>> One way to shorten this expression that appears a few times, is to
>>> add an inlined overloaded
>>> using_class_space(MetadataType).
>> I'd prefer to leave this code as is. This expression occurs only
>> twice and I think the existing code is more
>> descriptive than a new function would be.
>>>
>>> This looks really good. I've been through it a few times and I
>>> don't see any problems, other than these suggestions here.
>>>
>>> Thanks!
>>> Coleen
>>>
>>>>
>>>> 3. Method using_class_vsm() was renamed to using_class_space().
>>>>
>>>> 4. Type narrowKlass was added and replaces narrowOop, where
>>>> appropriate.
>>>>
>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>> unnecessary.
>>>>
>>>> 6. Metaspace::initialize_class_space() was made private.
>>>>
>>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>>>> updated.
>>>>
>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
>>>> and specjbb2013. The results showed no
>>>> significant performance difference in terms of scores and gc behavior.
>>>>
>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>>> SpecJBB2005 with -Xmx34g and
>>>> -XX:ObjectAlignmentInBytes=16 & 32.
>>>>
>>>> Please let me know what additional tests should be run.
>>>>
>>>> Thanks!
>>>> Harold
>>>>
>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>>> Hi Harold,
>>>>>
>>>>> > Usually the narrow_klass_base will be 32G and the
>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
>>>>> means that
>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>> unless
>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>> make sense?
>>>>>
>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
>>>>> and I am tempted to use may be bts (bit set) to
>>>>> avoid R12 usage (assuming or with check that class metaspace size
>>>>> < 32Gb).
>>>>>
>>>>> > Is there one prefix byte per instruction, or just for certain
>>>>> instructions?
>>>>>
>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>>> prefix is necessary only if an instruction references
>>>>> one of the extended registers or uses a 64-bit operand."
>>>>>
>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and
>>>>> =32 and big java heap. Recently we got several bugs
>>>>> which indicated that we did not separate cleanly oops and klass
>>>>> pointers en/decoding.
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>>> Hi Vladimir,
>>>>>>
>>>>>> Thank you for the review! Please see inline comments.
>>>>>>
>>>>>> Thanks, Harold
>>>>>>
>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>>>> Nice clean up, Harold
>>>>>>>>
>>>>>>>> Could you add the size of class metaspace in output with
>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>>>> remember an
>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>>> Will be done in next webrev.
>>>>>>>>
>>>>>>>> Also it would be nice to print these info line (and compressed
>>>>>>>> oops info
>>>>>>>> line) in hs_err files.
>>>>>> I filed an enhancement bug for this: 8021264
>>>>>> .
>>>>>>>>
>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>>>>> x86_64.ad.
>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
>>>>>>>> note
>>>>>>>> that code in .ad file does not check the encoding mode for narrow
>>>>>>>> klass/oop so it should be conservative and assume that arithmetic
>>>>>>>> instructions are used.
>>>>>> OK. Thanks.
>>>>>>>>
>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base
>>>>>>>> below 4Gb so
>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>>>> encoding/decoding without destroying R12.
>>>>>>>
>>>>>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>>>> But the base will normally be 32Gb. So this case won't happen
>>>>>> very often.
>>>>>>>
>>>>>>> You definitely should not use R12 in decode_klass_not_null(Register
>>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>>> Will be fixed in next webrev.
>>>>>>>
>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>>>
>>>>>>> decode:
>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>>>> }
>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>>>> }
>>>>>>>
>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>>>>>> (max positive int).
>>>>>> Usually the narrow_klass_base will be 32G and the
>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
>>>>>> means that
>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>> unless
>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>>> make sense?
>>>>>>>
>>>>>>> And you have general memory reservation problem. At least on
>>>>>>> Solaris,
>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>>>>>>> between
>>>>>>> different requested memory regions. That is why in jdk7 we first
>>>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>>>> compressed oops.
>>>>>>>
>>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>>>> compressed
>>>>>>> oops and with Xmx20Gb.
>>>>>> I verifed that we get either cds_address+cds_total as the
>>>>>> address, or
>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>>>> Windows
>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>>>> sizes and
>>>>>> -Xmx32G.
>>>>>>
>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>>>> desired
>>>>>> CDS address for class metaspace regardless of heap size.
>>>>>>>
>>>>>>>>
>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>>>>>> unfortunately we
>>>>>>>> can't do other way. I assume you use max size because depending on
>>>>>>>> registers used in instructions you will or will not get prefix
>>>>>>>> byte
>>>>>>>> (r8-r15).
>>>>>> Is there one prefix byte per instruction, or just for certain
>>>>>> instructions?
>>>>>>>>
>>>>>>>> I will look on changes in more details may be late.
>>>>>>>
>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>>>>>> which are not obvious.
>>>>>> I changed using_class_vsm() to using_class_space().
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Vladimir
>>>>>>>>
>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Please review this fix for bug 8003424.
>>>>>>>>>
>>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>>>
>>>>>>>>> Open bug links at:
>>>>>>>>>
>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>>>
>>>>>>>>> JBS Bug links at
>>>>>>>>>
>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> This fix provides support for using compressed klass pointers
>>>>>>>>> with CDS.
>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>>>>>> platforms when
>>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
>>>>>>>>> class
>>>>>>>>> metaspace as part of the Java Heap allocation and locating it
>>>>>>>>> at the
>>>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>>>> separately,
>>>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>>>> metaspace
>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>>>> being
>>>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>>>> heap and
>>>>>>>>> the metaspace.
>>>>>>>>>
>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>>>>>>> memory at
>>>>>>>>> 32G,
>>>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>>>> encoding
>>>>>>>>> and decoding of compressed klass pointers will always require
>>>>>>>>> use of a
>>>>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>>>>> pointers
>>>>>>>>> will differ from compressed oops.
>>>>>>>>>
>>>>>>>>> There are no class metaspace allocation changes if
>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>>>>>>>>> 32-bit
>>>>>>>>> platform.
>>>>>>>>>
>>>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>>>> 8016729,
>>>>>>>>> 8011610, and 8003424.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>>>> Modules
>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>>>>>>> changed to
>>>>>>>>> support the new encoding and decoding of compressed klass
>>>>>>>>> pointers.
>>>>>>>>>
>>>>>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>>>> compressed
>>>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>>>
>>>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>>>> related
>>>>>>>>> to allocating metaspace and remove code that considered
>>>>>>>>> compressed
>>>>>>>>> klass
>>>>>>>>> pointers when determining the compressed oops compression
>>>>>>>>> mechanism.
>>>>>>>>>
>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
>>>>>>>>> part of a
>>>>>>>>> cleanup requested by Coleen.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>>>>>>>>> tests,
>>>>>>>>> JPRT,
>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>>>>>>>>> -Xshare:off (with
>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>>>>>> 64-Bit
>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK
>>>>>>>>> tests were
>>>>>>>>> run on Solaris x86.
>>>>>>>>>
>>>>>>>>> The performance impact of these changes is TBD.
>>>>>>>>>
>>>>>>>>> Thanks, Harold
>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>
>>>
>>
From calvin.cheung at oracle.com Wed Aug 7 17:25:57 2013
From: calvin.cheung at oracle.com (Calvin Cheung)
Date: Wed, 07 Aug 2013 17:25:57 -0700
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill PDF&Image
Writer 10.0 Build 4
Message-ID: <5202E595.3090608@oracle.com>
Please review this small fix for fixing a fatal error in
~ExceptionMark() triggered by ClassNotFoundException in
ClassLoader::create_class_path_entry(). I could reproduce similar crash
by trying to load a class from an empty jar which is in the
bootclasspath. The following program can trigger the crash if the
jce.jar is invalid (e.g. 0-byte):
public class TestForName {
public static void main(String[] args) {
try {
Class cls = Class.forName("javax.crypto.KeyGenerator");
System.out.println("Class = " + cls.getName());
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
}
}
The fix also changes the assert() in LazyClassPathEntry::resolve_entry()
to a NULL check. Otherwise, the assert() will fail under the above test
scenario.
With the fix, the following ClassNotFoundException will be thrown
instead of a crash:
java.lang.ClassNotFoundException: javax.crypto.KeyGenerator
at java.net.URLClassLoader$1.run(URLClassLoader.java:365)
at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:353)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:258)
at TestForName.main(TestForName.java:6)
webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/
JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675
bug: http://bugs.sun.com/view_bug.do?bug_id=8020675
Tests:
jprt, vm.quick.testlist
thanks,
Calvin
From david.holmes at oracle.com Wed Aug 7 18:47:22 2013
From: david.holmes at oracle.com (David Holmes)
Date: Thu, 08 Aug 2013 11:47:22 +1000
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <5202E595.3090608@oracle.com>
References: <5202E595.3090608@oracle.com>
Message-ID: <5202F8AA.3000105@oracle.com>
Hi Calvin,
It seems to me that this code has a general problem with exceptions. If
exceptions can be posted then methods should be declared with a last
parameter of TRAPS and called with a CHECK_ macro. The way this code is
written it does not seem to expect any exceptions to be possible. I
would check with Karen on this.
This addition seems unused:
+ Thread* THREAD = thread;
Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
exceptions - don't know what the thought process was there :)
David
On 8/08/2013 10:25 AM, Calvin Cheung wrote:
> Please review this small fix for fixing a fatal error in
> ~ExceptionMark() triggered by ClassNotFoundException in
> ClassLoader::create_class_path_entry(). I could reproduce similar crash
> by trying to load a class from an empty jar which is in the
> bootclasspath. The following program can trigger the crash if the
> jce.jar is invalid (e.g. 0-byte):
>
> public class TestForName {
> public static void main(String[] args) {
> try {
> Class cls = Class.forName("javax.crypto.KeyGenerator");
> System.out.println("Class = " + cls.getName());
> } catch (ClassNotFoundException cnfe) {
> cnfe.printStackTrace();
> }
> }
> }
>
> The fix also changes the assert() in LazyClassPathEntry::resolve_entry()
> to a NULL check. Otherwise, the assert() will fail under the above test
> scenario.
>
> With the fix, the following ClassNotFoundException will be thrown
> instead of a crash:
> java.lang.ClassNotFoundException: javax.crypto.KeyGenerator
> at java.net.URLClassLoader$1.run(URLClassLoader.java:365)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:353)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:258)
> at TestForName.main(TestForName.java:6)
>
> webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/
>
> JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675
> bug: http://bugs.sun.com/view_bug.do?bug_id=8020675
>
> Tests:
> jprt, vm.quick.testlist
>
> thanks,
> Calvin
>
>
From ioi.lam at oracle.com Wed Aug 7 19:15:40 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Wed, 07 Aug 2013 19:15:40 -0700
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <5202F8AA.3000105@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
Message-ID: <5202FF4C.3020705@oracle.com>
|JDK6 seems to handle this better. I have written a simple stand-alone
test case that doesn't require truncating JAR files in the JDK:||
||
||=========================||
||/*||
||javac test2.java||
||rm -f foo.jar||
||java -cp . -Xbootclasspath/a:foo.jar test2||
||touch foo.jar||
||java -cp . -Xbootclasspath/a:foo.jar test2||
||*/||
||
||public class test2 {||
|| public static void main(String args[]) {||
|| try {||
||System.out.println(Class.forName("javax.crypto.MacSpi"));||
|| System.out.println(Class.forName("xxx"));||
|| } catch (Throwable t) {||
|| t.printStackTrace();||
|| }||
|| }||
||}||
||=========================||
| |
||JDK6 works fine, but JDK7 would crash with the second "java -cp .
-Xbootclasspath/a:foo.jar test2" command.||
||
||So I think the correct fix is to restore the JDK6 behavior (not sure
if it's already the same with your patch, but worth checking), and also
add a new jtreg test into hotspot.||
||
||Thanks||
||- Ioi||
||
||On 08/07/2013 06:47 PM, David Holmes wrote:||
|
> |Hi Calvin, ||
> | |
> ||It seems to me that this code has a general problem with exceptions.
> If exceptions can be posted then methods should be declared with a
> last parameter of TRAPS and called with a CHECK_ macro. The way this
> code is written it does not seem to expect any exceptions to be
> possible. I would check with Karen on this. ||
> | |
> ||This addition seems unused: ||
> | |
> ||+ Thread* THREAD = thread; ||
> | |
> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
> exceptions - don't know what the thought process was there :) ||
> | |
> ||David ||
> | |
> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
> |
>> |Please review this small fix for fixing a fatal error in ||
>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>> ||ClassLoader::create_class_path_entry(). I could reproduce similar
>> crash ||
>> ||by trying to load a class from an empty jar which is in the ||
>> ||bootclasspath. The following program can trigger the crash if the ||
>> ||jce.jar is invalid (e.g. 0-byte): ||
>> | |
>> ||public class TestForName { ||
>> || public static void main(String[] args) { ||
>> || try { ||
>> || Class cls = Class.forName("javax.crypto.KeyGenerator"); ||
>> || System.out.println("Class = " + cls.getName()); ||
>> || } catch (ClassNotFoundException cnfe) { ||
>> || cnfe.printStackTrace(); ||
>> || } ||
>> || } ||
>> ||} ||
>> | |
>> ||The fix also changes the assert() in
>> LazyClassPathEntry::resolve_entry() ||
>> ||to a NULL check. Otherwise, the assert() will fail under the above
>> test ||
>> ||scenario. ||
>> | |
>> ||With the fix, the following ClassNotFoundException will be thrown ||
>> ||instead of a crash: ||
>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>> || at java.security.AccessController.doPrivileged(Native
>> Method) ||
>> || at
>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>> || at
>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>> || at java.lang.Class.forName0(Native Method) ||
>> || at java.lang.Class.forName(Class.java:258) ||
>> || at TestForName.main(TestForName.java:6) ||
>> | |
>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>> | |
>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>> | |
>> ||Tests: ||
>> || jprt, vm.quick.testlist ||
>> | |
>> ||thanks, ||
>> ||Calvin ||
>> | |
>> | |
>> |
|
|
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130807/ef26289b/attachment-0001.html
From ioi.lam at oracle.com Wed Aug 7 19:30:04 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Wed, 07 Aug 2013 19:30:04 -0700
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
In-Reply-To: <52023E89.3060706@oracle.com>
References: <52017AC9.9040809@oracle.com> <52023E89.3060706@oracle.com>
Message-ID: <520302AC.3000201@oracle.com>
Hi Yumin,
David is right. The problem is with the "if" in the shell script.
The fix in JDK-7107135 makes sure that, even after loading a "bad" DLL,
Java's stack overflow check should still work.
Without the JDK-7107135, the JVM may crash, because stack overflow is no
longer caught and Java writes into unallocated space above the top of
the stack.
Therefore, the purpose of both Test.java and TestMT.java was to check
for the crash. As long as no crash happens, the JVM should return the
default 0 exit code. Any non-zero exit code means the VM has crashed and
thus the test has failed.
Thanks
- Ioi
On 08/07/2013 05:33 AM, David Holmes wrote:
> Hi Yumin,
>
> As I understand the bug report the issue is more with the shell script
> returning the value of $? which no longer refers to the execution of
> the test but the evaluation of the if [ $? == 0 ]
>
> David
>
> On 7/08/2013 8:38 AM, Yumin Qi wrote:
>> Please review:
>>
>> http://cr.openjdk.java.net/~minqi/8019583/webrev0/
>>
>>
>> Summary: The test will always pass since TestMT.java will always return
>> value 0 to shell. Fix by recording failure value and exit with it.
>>
>> Thanks
>> Yumin
From calvin.cheung at oracle.com Thu Aug 8 11:08:49 2013
From: calvin.cheung at oracle.com (Calvin Cheung)
Date: Thu, 08 Aug 2013 11:08:49 -0700
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <5202FF4C.3020705@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com>
Message-ID: <5203DEB1.9080808@oracle.com>
Hi Ioi, David,
On 8/7/2013 7:15 PM, Ioi Lam wrote:
> |JDK6 seems to handle this better. I have written a simple stand-alone
> test case that doesn't require truncating JAR files in the JDK:||
> ||
> ||=========================||
> ||/*||
> ||javac test2.java||
> ||rm -f foo.jar||
> ||java -cp . -Xbootclasspath/a:foo.jar test2||
> ||touch foo.jar||
> ||java -cp . -Xbootclasspath/a:foo.jar test2||
> ||*/||
> ||
> ||public class test2 {||
> || public static void main(String args[]) {||
> || try {||
> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
> ||System.out.println(Class.forName("xxx"));||
> || } catch (Throwable t) {||
> || t.printStackTrace();||
> || }||
> || }||
> ||}||
> ||=========================||
> | |
> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
> -Xbootclasspath/a:foo.jar test2" command.||
> |
|I saw crash with the latest 6 update release with both test cases.
The crash seems to be at the same spot.
|
> |||
> ||So I think the correct fix is to restore the JDK6 behavior (not sure
> if it's already the same with your patch, but worth checking), and
> also add a new jtreg test into hotspot.||
> |
|I checked the jdk 6 code and those 3 methods which I changed look the
same as jdk 8.
Sure, I can add a jtreg test.
|
> |||
> ||Thanks||
> ||- Ioi||
> ||
> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
> |
>> |Hi Calvin, ||
>> | |
>> ||It seems to me that this code has a general problem with
>> exceptions. If exceptions can be posted then methods should be
>> declared with a last parameter of TRAPS and called with a CHECK_
>> macro. The way this code is written it does not seem to expect any
>> exceptions to be possible. I would check with Karen on this. ||
>> |
|I was thinking about that but that would involves a bit more changes.
I can give it a try.
|
>> || |
>> ||This addition seems unused: ||
>> | |
>> ||+ Thread* THREAD = thread; ||
>> |
|It is required for the THROW_MSG().
It won't be needed if the method is declared with TRAPS as the last
parameter (I think).
thanks,
Calvin
|
>> || |
>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>> exceptions - don't know what the thought process was there :) ||
>> | |
>> ||David ||
>> | |
>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>> |
>>> |Please review this small fix for fixing a fatal error in ||
>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>> ||ClassLoader::create_class_path_entry(). I could reproduce similar
>>> crash ||
>>> ||by trying to load a class from an empty jar which is in the ||
>>> ||bootclasspath. The following program can trigger the crash if the ||
>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>> | |
>>> ||public class TestForName { ||
>>> || public static void main(String[] args) { ||
>>> || try { ||
>>> || Class cls =
>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>> || System.out.println("Class = " + cls.getName()); ||
>>> || } catch (ClassNotFoundException cnfe) { ||
>>> || cnfe.printStackTrace(); ||
>>> || } ||
>>> || } ||
>>> ||} ||
>>> | |
>>> ||The fix also changes the assert() in
>>> LazyClassPathEntry::resolve_entry() ||
>>> ||to a NULL check. Otherwise, the assert() will fail under the above
>>> test ||
>>> ||scenario. ||
>>> | |
>>> ||With the fix, the following ClassNotFoundException will be thrown ||
>>> ||instead of a crash: ||
>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>> || at java.security.AccessController.doPrivileged(Native
>>> Method) ||
>>> || at
>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>> || at
>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>> || at java.lang.Class.forName0(Native Method) ||
>>> || at java.lang.Class.forName(Class.java:258) ||
>>> || at TestForName.main(TestForName.java:6) ||
>>> | |
>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>> | |
>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>> | |
>>> ||Tests: ||
>>> || jprt, vm.quick.testlist ||
>>> | |
>>> ||thanks, ||
>>> ||Calvin ||
>>> | |
>>> | |
>>> |
> |
> |
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130808/5208b7a5/attachment.html
From coleen.phillimore at oracle.com Thu Aug 8 11:24:01 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Thu, 08 Aug 2013 14:24:01 -0400
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <5203DEB1.9080808@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
Message-ID: <5203E241.4040507@oracle.com>
I'm confused. You saw a crash?
On 08/08/2013 02:08 PM, Calvin Cheung wrote:
> Hi Ioi, David,
>
> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>> |JDK6 seems to handle this better. I have written a simple
>> stand-alone test case that doesn't require truncating JAR files in
>> the JDK:||
>> ||
>> ||=========================||
>> ||/*||
>> ||javac test2.java||
>> ||rm -f foo.jar||
>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>> ||touch foo.jar||
>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>> ||*/||
>> ||
>> ||public class test2 {||
>> || public static void main(String args[]) {||
>> || try {||
>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>> ||System.out.println(Class.forName("xxx"));||
>> || } catch (Throwable t) {||
>> || t.printStackTrace();||
>> || }||
>> || }||
>> ||}||
>> ||=========================||
>> | |
>> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
>> -Xbootclasspath/a:foo.jar test2" command.||
>> |
> |I saw crash with the latest 6 update release with both test cases.
> The crash seems to be at the same spot.
> |
>> |||
>> ||So I think the correct fix is to restore the JDK6 behavior (not
>> sure if it's already the same with your patch, but worth checking),
>> and also add a new jtreg test into hotspot.||
>> |
> |I checked the jdk 6 code and those 3 methods which I changed look the
> same as jdk 8.
> Sure, I can add a jtreg test.
> |
>> |||
>> ||Thanks||
>> ||- Ioi||
>> ||
>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>> |
>>> |Hi Calvin, ||
>>> | |
>>> ||It seems to me that this code has a general problem with
>>> exceptions. If exceptions can be posted then methods should be
>>> declared with a last parameter of TRAPS and called with a CHECK_
>>> macro. The way this code is written it does not seem to expect any
>>> exceptions to be possible. I would check with Karen on this. ||
>>> |
> |I was thinking about that but that would involves a bit more changes.
> I can give it a try.
> |
>>> || |
>>> ||This addition seems unused: ||
>>> | |
>>> ||+ Thread* THREAD = thread; ||
>>> |
> |It is required for the THROW_MSG().
> It won't be needed if the method is declared with TRAPS as the last
> parameter (I think).
>
> thanks,
> Calvin
> |
>>> || |
>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>>> exceptions - don't know what the thought process was there :) ||
>>> | |
>>> ||David ||
>>> | |
>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>> |
>>>> |Please review this small fix for fixing a fatal error in ||
>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>> ||ClassLoader::create_class_path_entry(). I could reproduce similar
>>>> crash ||
>>>> ||by trying to load a class from an empty jar which is in the ||
>>>> ||bootclasspath. The following program can trigger the crash if the ||
>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>> | |
>>>> ||public class TestForName { ||
>>>> || public static void main(String[] args) { ||
>>>> || try { ||
>>>> || Class cls =
>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>> || System.out.println("Class = " + cls.getName()); ||
>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>> || cnfe.printStackTrace(); ||
>>>> || } ||
>>>> || } ||
>>>> ||} ||
>>>> | |
>>>> ||The fix also changes the assert() in
>>>> LazyClassPathEntry::resolve_entry() ||
>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>> above test ||
>>>> ||scenario. ||
>>>> | |
>>>> ||With the fix, the following ClassNotFoundException will be thrown ||
>>>> ||instead of a crash: ||
>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>> || at java.security.AccessController.doPrivileged(Native
>>>> Method) ||
>>>> || at
>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>> || at
>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>> || at java.lang.Class.forName0(Native Method) ||
>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>> || at TestForName.main(TestForName.java:6) ||
>>>> | |
>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>> | |
>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>> | |
>>>> ||Tests: ||
>>>> || jprt, vm.quick.testlist ||
>>>> | |
>>>> ||thanks, ||
>>>> ||Calvin ||
>>>> | |
>>>> | |
>>>> |
>> |
>> |
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130808/c5092bd4/attachment-0001.html
From coleen.phillimore at oracle.com Thu Aug 8 11:28:30 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Thu, 08 Aug 2013 14:28:30 -0400
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <5203E241.4040507@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
<5203E241.4040507@oracle.com>
Message-ID: <5203E34E.8090502@oracle.com>
Sorry for the noise. I thought this was the another thread.
Coleen
On 08/08/2013 02:24 PM, Coleen Phillimore wrote:
>
> I'm confused. You saw a crash?
>
> On 08/08/2013 02:08 PM, Calvin Cheung wrote:
>> Hi Ioi, David,
>>
>> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>>> |JDK6 seems to handle this better. I have written a simple
>>> stand-alone test case that doesn't require truncating JAR files in
>>> the JDK:||
>>> ||
>>> ||=========================||
>>> ||/*||
>>> ||javac test2.java||
>>> ||rm -f foo.jar||
>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>> ||touch foo.jar||
>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>> ||*/||
>>> ||
>>> ||public class test2 {||
>>> || public static void main(String args[]) {||
>>> || try {||
>>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>>> ||System.out.println(Class.forName("xxx"));||
>>> || } catch (Throwable t) {||
>>> || t.printStackTrace();||
>>> || }||
>>> || }||
>>> ||}||
>>> ||=========================||
>>> | |
>>> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
>>> -Xbootclasspath/a:foo.jar test2" command.||
>>> |
>> |I saw crash with the latest 6 update release with both test cases.
>> The crash seems to be at the same spot.
>> |
>>> |||
>>> ||So I think the correct fix is to restore the JDK6 behavior (not
>>> sure if it's already the same with your patch, but worth checking),
>>> and also add a new jtreg test into hotspot.||
>>> |
>> |I checked the jdk 6 code and those 3 methods which I changed look
>> the same as jdk 8.
>> Sure, I can add a jtreg test.
>> |
>>> |||
>>> ||Thanks||
>>> ||- Ioi||
>>> ||
>>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>>> |
>>>> |Hi Calvin, ||
>>>> | |
>>>> ||It seems to me that this code has a general problem with
>>>> exceptions. If exceptions can be posted then methods should be
>>>> declared with a last parameter of TRAPS and called with a CHECK_
>>>> macro. The way this code is written it does not seem to expect any
>>>> exceptions to be possible. I would check with Karen on this. ||
>>>> |
>> |I was thinking about that but that would involves a bit more changes.
>> I can give it a try.
>> |
>>>> || |
>>>> ||This addition seems unused: ||
>>>> | |
>>>> ||+ Thread* THREAD = thread; ||
>>>> |
>> |It is required for the THROW_MSG().
>> It won't be needed if the method is declared with TRAPS as the last
>> parameter (I think).
>>
>> thanks,
>> Calvin
>> |
>>>> || |
>>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>>>> exceptions - don't know what the thought process was there :) ||
>>>> | |
>>>> ||David ||
>>>> | |
>>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>>> |
>>>>> |Please review this small fix for fixing a fatal error in ||
>>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>>> ||ClassLoader::create_class_path_entry(). I could reproduce
>>>>> similar crash ||
>>>>> ||by trying to load a class from an empty jar which is in the ||
>>>>> ||bootclasspath. The following program can trigger the crash if the ||
>>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>>> | |
>>>>> ||public class TestForName { ||
>>>>> || public static void main(String[] args) { ||
>>>>> || try { ||
>>>>> || Class cls =
>>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>>> || System.out.println("Class = " + cls.getName()); ||
>>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>>> || cnfe.printStackTrace(); ||
>>>>> || } ||
>>>>> || } ||
>>>>> ||} ||
>>>>> | |
>>>>> ||The fix also changes the assert() in
>>>>> LazyClassPathEntry::resolve_entry() ||
>>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>>> above test ||
>>>>> ||scenario. ||
>>>>> | |
>>>>> ||With the fix, the following ClassNotFoundException will be thrown ||
>>>>> ||instead of a crash: ||
>>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>>> || at
>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>>> || at
>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>>> || at java.security.AccessController.doPrivileged(Native
>>>>> Method) ||
>>>>> || at
>>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>>> || at
>>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>>> || at java.lang.Class.forName0(Native Method) ||
>>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>>> || at TestForName.main(TestForName.java:6) ||
>>>>> | |
>>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>>> | |
>>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>>> | |
>>>>> ||Tests: ||
>>>>> || jprt, vm.quick.testlist ||
>>>>> | |
>>>>> ||thanks, ||
>>>>> ||Calvin ||
>>>>> | |
>>>>> | |
>>>>> |
>>> |
>>> |
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130808/9a647775/attachment.html
From christian.tornqvist at oracle.com Thu Aug 8 11:43:04 2013
From: christian.tornqvist at oracle.com (Christian Tornqvist)
Date: Thu, 8 Aug 2013 14:43:04 -0400
Subject: Request for review: 7073961 [TESTBUG]
closed/runtime/4845371/DBB.java failed on solaris 10 x64
In-Reply-To: <51FAAE26.5030306@oracle.com>
References: <51FAAE26.5030306@oracle.com>
Message-ID: <00da01ce9467$1e29eed0$5a7dcc70$@oracle.com>
Change looks good, thanks for fixing this :)
Thanks,
Christian
-----Original Message-----
From: hotspot-runtime-dev-bounces at openjdk.java.net [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of harold seigel
Sent: den 1 augusti 2013 14:51
To: hotspot-runtime-dev at openjdk.java.net
Subject: Request for review: 7073961 [TESTBUG] closed/runtime/4845371/DBB.java failed on solaris 10 x64
Hi,
Please review this small change to help fix bug 7073961. This change adds a method that enables tests to distinguish between Solaris on Sparc and Solaris on X86.
Open webrev at: http://cr.openjdk.java.net/~hseigel/bug_7073961/
Bug link at: http://bugs.sun.com/view_bug.do?bug_id=7073961
JBB Bug at: https://jbs.oracle.com/bugs/browse/JDK-7073961
Thanks! Harold
From calvin.cheung at oracle.com Thu Aug 8 11:45:03 2013
From: calvin.cheung at oracle.com (Calvin Cheung)
Date: Thu, 08 Aug 2013 11:45:03 -0700
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <5203E241.4040507@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
<5203E241.4040507@oracle.com>
Message-ID: <5203E72F.9080608@oracle.com>
On 8/8/2013 11:24 AM, Coleen Phillimore wrote:
>
> I'm confused. You saw a crash?
The test cases triggered the following fatal() call in ~ExceptionMark():
fatal("ExceptionMark destructor expects no pending exceptions");
Calvin
>
> On 08/08/2013 02:08 PM, Calvin Cheung wrote:
>> Hi Ioi, David,
>>
>> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>>> |JDK6 seems to handle this better. I have written a simple
>>> stand-alone test case that doesn't require truncating JAR files in
>>> the JDK:||
>>> ||
>>> ||=========================||
>>> ||/*||
>>> ||javac test2.java||
>>> ||rm -f foo.jar||
>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>> ||touch foo.jar||
>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>> ||*/||
>>> ||
>>> ||public class test2 {||
>>> || public static void main(String args[]) {||
>>> || try {||
>>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>>> ||System.out.println(Class.forName("xxx"));||
>>> || } catch (Throwable t) {||
>>> || t.printStackTrace();||
>>> || }||
>>> || }||
>>> ||}||
>>> ||=========================||
>>> | |
>>> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
>>> -Xbootclasspath/a:foo.jar test2" command.||
>>> |
>> |I saw crash with the latest 6 update release with both test cases.
>> The crash seems to be at the same spot.
>> |
>>> |||
>>> ||So I think the correct fix is to restore the JDK6 behavior (not
>>> sure if it's already the same with your patch, but worth checking),
>>> and also add a new jtreg test into hotspot.||
>>> |
>> |I checked the jdk 6 code and those 3 methods which I changed look
>> the same as jdk 8.
>> Sure, I can add a jtreg test.
>> |
>>> |||
>>> ||Thanks||
>>> ||- Ioi||
>>> ||
>>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>>> |
>>>> |Hi Calvin, ||
>>>> | |
>>>> ||It seems to me that this code has a general problem with
>>>> exceptions. If exceptions can be posted then methods should be
>>>> declared with a last parameter of TRAPS and called with a CHECK_
>>>> macro. The way this code is written it does not seem to expect any
>>>> exceptions to be possible. I would check with Karen on this. ||
>>>> |
>> |I was thinking about that but that would involves a bit more changes.
>> I can give it a try.
>> |
>>>> || |
>>>> ||This addition seems unused: ||
>>>> | |
>>>> ||+ Thread* THREAD = thread; ||
>>>> |
>> |It is required for the THROW_MSG().
>> It won't be needed if the method is declared with TRAPS as the last
>> parameter (I think).
>>
>> thanks,
>> Calvin
>> |
>>>> || |
>>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>>>> exceptions - don't know what the thought process was there :) ||
>>>> | |
>>>> ||David ||
>>>> | |
>>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>>> |
>>>>> |Please review this small fix for fixing a fatal error in ||
>>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>>> ||ClassLoader::create_class_path_entry(). I could reproduce
>>>>> similar crash ||
>>>>> ||by trying to load a class from an empty jar which is in the ||
>>>>> ||bootclasspath. The following program can trigger the crash if the ||
>>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>>> | |
>>>>> ||public class TestForName { ||
>>>>> || public static void main(String[] args) { ||
>>>>> || try { ||
>>>>> || Class cls =
>>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>>> || System.out.println("Class = " + cls.getName()); ||
>>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>>> || cnfe.printStackTrace(); ||
>>>>> || } ||
>>>>> || } ||
>>>>> ||} ||
>>>>> | |
>>>>> ||The fix also changes the assert() in
>>>>> LazyClassPathEntry::resolve_entry() ||
>>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>>> above test ||
>>>>> ||scenario. ||
>>>>> | |
>>>>> ||With the fix, the following ClassNotFoundException will be thrown ||
>>>>> ||instead of a crash: ||
>>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>>> || at
>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>>> || at
>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>>> || at java.security.AccessController.doPrivileged(Native
>>>>> Method) ||
>>>>> || at
>>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>>> || at
>>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>>> || at java.lang.Class.forName0(Native Method) ||
>>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>>> || at TestForName.main(TestForName.java:6) ||
>>>>> | |
>>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>>> | |
>>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>>> | |
>>>>> ||Tests: ||
>>>>> || jprt, vm.quick.testlist ||
>>>>> | |
>>>>> ||thanks, ||
>>>>> ||Calvin ||
>>>>> | |
>>>>> | |
>>>>> |
>>> |
>>> |
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130808/4317436b/attachment-0001.html
From john.coomes at oracle.com Thu Aug 8 11:45:18 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 18:45:18 +0000
Subject: hg: hsx/hotspot-emb: Added tag jdk8-b102 for changeset 5eb3c1dc348f
Message-ID: <20130808184518.4F5AE48701@hg.openjdk.java.net>
Changeset: b7e64be81c8a
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/rev/b7e64be81c8a
Added tag jdk8-b102 for changeset 5eb3c1dc348f
! .hgtags
From john.coomes at oracle.com Thu Aug 8 11:45:22 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 18:45:22 +0000
Subject: hg: hsx/hotspot-emb/corba: Added tag jdk8-b102 for changeset
528c7e76eaee
Message-ID: <20130808184526.05A4C48702@hg.openjdk.java.net>
Changeset: f8ed09af1df6
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/corba/rev/f8ed09af1df6
Added tag jdk8-b102 for changeset 528c7e76eaee
! .hgtags
From john.coomes at oracle.com Thu Aug 8 11:45:30 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 18:45:30 +0000
Subject: hg: hsx/hotspot-emb/jaxp: 4 new changesets
Message-ID: <20130808184546.D27F248703@hg.openjdk.java.net>
Changeset: 251ca1e2ccd3
Author: joehw
Date: 2013-07-25 13:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jaxp/rev/251ca1e2ccd3
8021148: Regression in SAXParserImpl in 7u40 b34 (NPE)
Reviewed-by: chegar, lancea, dfuchs
! src/com/sun/org/apache/xerces/internal/jaxp/SAXParserImpl.java
Changeset: 467e1948612d
Author: lana
Date: 2013-07-26 14:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jaxp/rev/467e1948612d
Merge
Changeset: 7cffafa606e9
Author: lana
Date: 2013-08-06 10:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jaxp/rev/7cffafa606e9
Merge
Changeset: b1ceab582fc6
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jaxp/rev/b1ceab582fc6
Added tag jdk8-b102 for changeset 7cffafa606e9
! .hgtags
From john.coomes at oracle.com Thu Aug 8 11:45:53 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 18:45:53 +0000
Subject: hg: hsx/hotspot-emb/jaxws: Added tag jdk8-b102 for changeset
988a5f2ac559
Message-ID: <20130808184601.3C57948704@hg.openjdk.java.net>
Changeset: 6cdc6ed98780
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jaxws/rev/6cdc6ed98780
Added tag jdk8-b102 for changeset 988a5f2ac559
! .hgtags
From coleen.phillimore at oracle.com Thu Aug 8 11:43:28 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Thu, 08 Aug 2013 14:43:28 -0400
Subject: Request for review: 7073961 [TESTBUG]
closed/runtime/4845371/DBB.java failed on solaris 10 x64
In-Reply-To: <00da01ce9467$1e29eed0$5a7dcc70$@oracle.com>
References: <51FAAE26.5030306@oracle.com>
<00da01ce9467$1e29eed0$5a7dcc70$@oracle.com>
Message-ID: <5203E6D0.6030403@oracle.com>
Harold, This looks good.
Coleen
On 08/08/2013 02:43 PM, Christian Tornqvist wrote:
> Change looks good, thanks for fixing this :)
>
> Thanks,
> Christian
>
> -----Original Message-----
> From: hotspot-runtime-dev-bounces at openjdk.java.net [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of harold seigel
> Sent: den 1 augusti 2013 14:51
> To: hotspot-runtime-dev at openjdk.java.net
> Subject: Request for review: 7073961 [TESTBUG] closed/runtime/4845371/DBB.java failed on solaris 10 x64
>
> Hi,
>
> Please review this small change to help fix bug 7073961. This change adds a method that enables tests to distinguish between Solaris on Sparc and Solaris on X86.
>
> Open webrev at: http://cr.openjdk.java.net/~hseigel/bug_7073961/
>
>
> Bug link at: http://bugs.sun.com/view_bug.do?bug_id=7073961
>
> JBB Bug at: https://jbs.oracle.com/bugs/browse/JDK-7073961
>
> Thanks! Harold
>
From ioi.lam at oracle.com Thu Aug 8 11:52:07 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Thu, 08 Aug 2013 11:52:07 -0700
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <5203DEB1.9080808@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
Message-ID: <5203E8D7.107@oracle.com>
|Hmmm, I used JDK6 from OEL 6.0 (derived from RedHat), which apparently
works differently
(better?) than the official JDK6 build. Maybe Redhat fixed this in their
own repo??||
||
|
|==OEL6================================================
||
||sc11136754 ~$ uname -a||
||Linux sc11136754 2.6.39-100.5.1.el6uek.x86_64 #1 SMP Tue Mar 6
20:26:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux||
||sc11136754 ~$ type java||
||java is hashed (/usr/bin/java)||
||sc11136754 ~$ java -version||
||java version "1.6.0_22"||
||OpenJDK Runtime Environment (IcedTea6 1.10.4)
(rhel-1.41.1.10.4.el6-x86_64)||
||OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)||
||sc11136754 ~$ java -showversion -cp . -Xbootclasspath/a:foo.jar test2||
||Error occurred during initialization of VM||
||java/lang/ClassNotFoundException: error in opening JAR file foo.jar||
||
==OFFICIAL============================================
||
sc11136754 ~$ /java/re/jdk/6_22/latest/binaries/linux-amd64/bin/java
-showversion -cp . -Xbootclasspath/a:foo.jar test2
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (exceptions.cpp:367), pid=25167, tid=140510319580928
# Error: ExceptionMark destructor expects no pending exceptions
#
# JRE version: 6.0_22-b04
# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.1-b03 mixed mode
linux-amd64 )
# An error report file with more information is saved as:
# /home/iklam/hs_err_pid25167.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
|
|======================================================
||
||- Ioi|
On 08/08/2013 11:08 AM, Calvin Cheung wrote:
> Hi Ioi, David,
>
> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>> |JDK6 seems to handle this better. I have written a simple
>> stand-alone test case that doesn't require truncating JAR files in
>> the JDK:||
>> ||
>> ||=========================||
>> ||/*||
>> ||javac test2.java||
>> ||rm -f foo.jar||
>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>> ||touch foo.jar||
>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>> ||*/||
>> ||
>> ||public class test2 {||
>> || public static void main(String args[]) {||
>> || try {||
>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>> ||System.out.println(Class.forName("xxx"));||
>> || } catch (Throwable t) {||
>> || t.printStackTrace();||
>> || }||
>> || }||
>> ||}||
>> ||=========================||
>> | |
>> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
>> -Xbootclasspath/a:foo.jar test2" command.||
>> |
> |I saw crash with the latest 6 update release with both test cases.
> The crash seems to be at the same spot.
> |
>> |||
>> ||So I think the correct fix is to restore the JDK6 behavior (not
>> sure if it's already the same with your patch, but worth checking),
>> and also add a new jtreg test into hotspot.||
>> |
> |I checked the jdk 6 code and those 3 methods which I changed look the
> same as jdk 8.
> Sure, I can add a jtreg test.
> |
>> |||
>> ||Thanks||
>> ||- Ioi||
>> ||
>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>> |
>>> |Hi Calvin, ||
>>> | |
>>> ||It seems to me that this code has a general problem with
>>> exceptions. If exceptions can be posted then methods should be
>>> declared with a last parameter of TRAPS and called with a CHECK_
>>> macro. The way this code is written it does not seem to expect any
>>> exceptions to be possible. I would check with Karen on this. ||
>>> |
> |I was thinking about that but that would involves a bit more changes.
> I can give it a try.
> |
>>> || |
>>> ||This addition seems unused: ||
>>> | |
>>> ||+ Thread* THREAD = thread; ||
>>> |
> |It is required for the THROW_MSG().
> It won't be needed if the method is declared with TRAPS as the last
> parameter (I think).
>
> thanks,
> Calvin
> |
>>> || |
>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>>> exceptions - don't know what the thought process was there :) ||
>>> | |
>>> ||David ||
>>> | |
>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>> |
>>>> |Please review this small fix for fixing a fatal error in ||
>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>> ||ClassLoader::create_class_path_entry(). I could reproduce similar
>>>> crash ||
>>>> ||by trying to load a class from an empty jar which is in the ||
>>>> ||bootclasspath. The following program can trigger the crash if the ||
>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>> | |
>>>> ||public class TestForName { ||
>>>> || public static void main(String[] args) { ||
>>>> || try { ||
>>>> || Class cls =
>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>> || System.out.println("Class = " + cls.getName()); ||
>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>> || cnfe.printStackTrace(); ||
>>>> || } ||
>>>> || } ||
>>>> ||} ||
>>>> | |
>>>> ||The fix also changes the assert() in
>>>> LazyClassPathEntry::resolve_entry() ||
>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>> above test ||
>>>> ||scenario. ||
>>>> | |
>>>> ||With the fix, the following ClassNotFoundException will be thrown ||
>>>> ||instead of a crash: ||
>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>> || at java.security.AccessController.doPrivileged(Native
>>>> Method) ||
>>>> || at
>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>> || at
>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>> || at java.lang.Class.forName0(Native Method) ||
>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>> || at TestForName.main(TestForName.java:6) ||
>>>> | |
>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>> | |
>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>> | |
>>>> ||Tests: ||
>>>> || jprt, vm.quick.testlist ||
>>>> | |
>>>> ||thanks, ||
>>>> ||Calvin ||
>>>> | |
>>>> | |
>>>> |
>> |
>> |
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130808/571869e7/attachment-0001.html
From john.coomes at oracle.com Thu Aug 8 12:19:09 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 19:19:09 +0000
Subject: hg: hsx/hotspot-emb/langtools: 17 new changesets
Message-ID: <20130808192017.DBED04870A@hg.openjdk.java.net>
Changeset: 80e75aa6a707
Author: jjg
Date: 2013-07-17 18:18 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/80e75aa6a707
8014636: TestLiteralCodeInPre fails on windows
Reviewed-by: ksrini
! src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java
! src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java
! test/com/sun/javadoc/testCRLineSeparator/TestCRLineSeparator.java
! test/com/sun/javadoc/testLeadingSpaces/LeadingSpaces.java
! test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java
! test/com/sun/javadoc/testLiteralCodeInPre/TestLiteralCodeInPre.java
! test/com/sun/javadoc/testRelativeLinks/TestRelativeLinks.java
Changeset: 1e533c1bfb01
Author: jjg
Date: 2013-07-17 19:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/1e533c1bfb01
8020313: doclint doesn't reset HTML anchors correctly
Reviewed-by: mcimadamore
! src/share/classes/com/sun/tools/doclint/Checker.java
+ test/tools/doclint/AnchorTest2.java
+ test/tools/doclint/AnchorTest2.out
+ test/tools/doclint/AnchorTest2a.java
Changeset: 1476d54fdc61
Author: jjg
Date: 2013-07-17 19:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/1476d54fdc61
8020664: doclint gives incorrect warnings on normal package statements
Reviewed-by: mcimadamore
! src/share/classes/com/sun/tools/doclint/DocLint.java
! src/share/classes/com/sun/tools/doclint/resources/doclint.properties
! test/tools/doclint/BadPackageCommentTest.out
! test/tools/doclint/DocLintTester.java
+ test/tools/doclint/packageTests/bad/Test.java
+ test/tools/doclint/packageTests/bad/Test.out
+ test/tools/doclint/packageTests/bad/package-info.java
+ test/tools/doclint/packageTests/bad/package-info.out
+ test/tools/doclint/packageTests/good/Test.java
+ test/tools/doclint/packageTests/good/package-info.java
Changeset: 0a9f5cbe37d9
Author: ksrini
Date: 2013-07-19 07:22 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/0a9f5cbe37d9
8017216: javac doesn't fill in end position for some errors of type not found
8019421: Javac doesn't fill in end position for some annotation related errors
8019422: Javac doesn't fill in end position for uninitialized variable errors
Reviewed-by: jjg, mcimadamore
! src/share/classes/com/sun/tools/javac/comp/Annotate.java
! src/share/classes/com/sun/tools/javac/comp/Attr.java
! src/share/classes/com/sun/tools/javac/comp/Flow.java
! src/share/classes/com/sun/tools/javac/parser/JavacParser.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
! src/share/classes/com/sun/tools/javac/tree/EndPosTable.java
+ test/tools/javac/diags/examples/VarNotIntializedInDefaultConstructor.java
+ test/tools/javac/positions/TreeEndPosTest.java
Changeset: 129751018061
Author: jjg
Date: 2013-07-23 16:06 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/129751018061
8021215: javac gives incorrect doclint warnings on normal package statements
Reviewed-by: darcy
! src/share/classes/com/sun/tools/doclint/Checker.java
! src/share/classes/com/sun/tools/doclint/DocLint.java
! test/tools/doclint/packageTests/bad/Test.java
+ test/tools/doclint/packageTests/bad/Test.javac.out
! test/tools/doclint/packageTests/bad/Test.out
! test/tools/doclint/packageTests/bad/package-info.java
+ test/tools/doclint/packageTests/bad/package-info.javac.out
! test/tools/doclint/packageTests/bad/package-info.out
! test/tools/doclint/packageTests/good/Test.java
! test/tools/doclint/packageTests/good/package-info.java
Changeset: 558fe98d1ac0
Author: emc
Date: 2013-07-23 20:42 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/558fe98d1ac0
8016880: 42 tests in annot102* fail with compile-time errors.
Summary: Fixes error in type equality when bounds of type variables have annotations.
Reviewed-by: jjg, mcimadamore
! src/share/classes/com/sun/tools/javac/code/Types.java
+ test/tools/javac/annotations/typeAnnotations/ErasureTest.java
Changeset: 2fbe77c38802
Author: jjg
Date: 2013-07-24 17:35 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/2fbe77c38802
8020556: doclint does not check type variables for @throws
Reviewed-by: mcimadamore
! src/share/classes/com/sun/source/util/DocTrees.java
! src/share/classes/com/sun/tools/doclint/Checker.java
! src/share/classes/com/sun/tools/javac/api/JavacTrees.java
! src/share/classes/com/sun/tools/javac/comp/Env.java
! test/tools/doclint/ReferenceTest.java
Changeset: a218f7befd55
Author: jfranck
Date: 2013-07-25 11:02 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/a218f7befd55
8007961: javax.lang.model tests for repeating annotations fail in getAnnotationsByType
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/code/Symbol.java
! src/share/classes/com/sun/tools/javac/model/JavacAnnoConstructs.java
! test/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedA1Test.java
! test/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedB1Test.java
! test/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedB2Test.java
! test/tools/javac/processing/model/element/repeatingAnnotations/RepeatableOverrideATest.java
! test/tools/javac/processing/model/element/repeatingAnnotations/RepeatableOverrideBTest.java
+ test/tools/javac/processing/model/inheritedByType/EnsureOrder.java
Changeset: 3155e77d2676
Author: mcimadamore
Date: 2013-07-25 14:47 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/3155e77d2676
8020804: javac crashes when speculative attribution infers intersection type with array component
Summary: Assertion is causing javac to crash because of lack of support for arrays in intersection types
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/code/Types.java
! src/share/classes/com/sun/tools/javac/comp/Attr.java
! src/share/classes/com/sun/tools/javac/comp/Infer.java
+ test/tools/javac/lambda/8020804/T8020804.java
Changeset: b02f28bf7f1c
Author: mcimadamore
Date: 2013-07-25 14:49 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/b02f28bf7f1c
8016081: field initialized with lambda in annotation types doesn't compile
Summary: check for annotation attributes should skip over synthetic methods
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/comp/Check.java
+ test/tools/javac/lambda/8016081/T8016081.java
Changeset: dae52d74c1fc
Author: mcimadamore
Date: 2013-07-25 14:51 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/dae52d74c1fc
8020843: javac crashes on accessibility check with method reference with typevar receiver
Summary: method reference overload check doesn't walk through type-variable receivers
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/comp/Resolve.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
+ test/tools/javac/diags/examples/ReportAccessFragment.java
+ test/tools/javac/lambda/8020843/T8020843a.java
+ test/tools/javac/lambda/8020843/T8020843a.out
+ test/tools/javac/lambda/8020843/T8020843b.java
+ test/tools/javac/lambda/8020843/T8020843b.out
! test/tools/javac/lambda/MethodReference28.out
Changeset: 37048aa3ac19
Author: lana
Date: 2013-07-26 14:08 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/37048aa3ac19
Merge
Changeset: 8c4b2987edac
Author: jlahoda
Date: 2013-07-28 10:17 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/8c4b2987edac
8020689: Missing LineNumberTable entries in compiled class files
Reviewed-by: ksrini, mcimadamore
! src/share/classes/com/sun/tools/javac/jvm/Gen.java
+ test/tools/javac/jvm/T8020689.java
Changeset: cd9e8cea1b3c
Author: jlahoda
Date: 2013-07-28 10:17 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/cd9e8cea1b3c
8021338: Diamond finder may mark a required type argument as unnecessary
Reviewed-by: mcimadamore
! src/share/classes/com/sun/tools/javac/comp/Attr.java
! test/tools/javac/generics/diamond/6939780/T6939780.java
Changeset: 7696282873f6
Author: vromero
Date: 2013-07-31 10:52 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/7696282873f6
8013179: assertion failure in javac when compiling with -source 1.6 -target 1.6
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/comp/TransTypes.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
+ test/tools/javac/diags/examples/MethodInvokedWithWrongNumberOfArgs.java
Changeset: 453a305e1165
Author: lana
Date: 2013-08-06 10:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/453a305e1165
Merge
Changeset: 6718df4cd616
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/6718df4cd616
Added tag jdk8-b102 for changeset 453a305e1165
! .hgtags
From john.coomes at oracle.com Thu Aug 8 12:20:30 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 19:20:30 +0000
Subject: hg: hsx/hotspot-emb/nashorn: 29 new changesets
Message-ID: <20130808192059.CA31A4870B@hg.openjdk.java.net>
Changeset: e1d19f9fd5a9
Author: jlaskey
Date: 2013-07-16 17:40 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/e1d19f9fd5a9
8017585: Exclude two failing tests from Nashorn CC run
Reviewed-by: jlaskey, sundar, attila
Contributed-by: konstantin.shefov at oracle.com
+ exclude/exclude_list.txt
+ exclude/exclude_list_cc.txt
! make/build.xml
Changeset: 71cfe4e66bcb
Author: jlaskey
Date: 2013-07-17 11:53 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/71cfe4e66bcb
8020596: Initialization of white space strings in scanner should be done with \u strings
Reviewed-by: attila, hannesw
Contributed-by: james.laskey at oracle.com
! src/jdk/nashorn/internal/parser/Lexer.java
Changeset: 3d6f6b8d8bc8
Author: hannesw
Date: 2013-07-17 18:20 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/3d6f6b8d8bc8
8020356: ClassCastException Undefined->Scope on spiltter class generated for a large switch statement
Reviewed-by: jlaskey, attila
! src/jdk/nashorn/internal/codegen/CodeGenerator.java
! src/jdk/nashorn/internal/codegen/Label.java
! src/jdk/nashorn/internal/codegen/Splitter.java
! src/jdk/nashorn/internal/codegen/WeighNodes.java
! src/jdk/nashorn/internal/ir/Block.java
! src/jdk/nashorn/internal/ir/FunctionNode.java
! src/jdk/nashorn/internal/ir/LexicalContext.java
+ test/script/basic/JDK-8020356.js
+ test/script/basic/JDK-8020356.js.EXPECTED
Changeset: e3307f1a30e5
Author: sundar
Date: 2013-07-18 18:08 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/e3307f1a30e5
8020731: Revisit checkPermission calls in Context class
Reviewed-by: attila, hannesw
! src/jdk/nashorn/api/scripting/NashornScriptEngine.java
! src/jdk/nashorn/api/scripting/ScriptObjectMirror.java
! src/jdk/nashorn/internal/objects/Global.java
! src/jdk/nashorn/internal/runtime/Context.java
! src/jdk/nashorn/internal/runtime/NativeJavaPackage.java
! src/jdk/nashorn/internal/runtime/ScriptRuntime.java
! src/jdk/nashorn/internal/runtime/WithObject.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterClassLoader.java
- src/jdk/nashorn/internal/runtime/linker/JavaAdapterGeneratorBase.java
Changeset: 624f8be5c3fe
Author: attila
Date: 2013-07-18 16:22 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/624f8be5c3fe
8020809: Java adapter should not allow overriding of caller sensitive methods
Reviewed-by: jlaskey, sundar
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
+ test/script/trusted/JDK-8020809.js
+ test/script/trusted/JDK-8020809.js.EXPECTED
Changeset: 4b06441b7624
Author: attila
Date: 2013-07-18 16:47 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/4b06441b7624
8020820: Limit access to static members of reflective classes
Reviewed-by: jlaskey, sundar
! make/build.xml
! src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java
! test/script/basic/JDK-8010946-2.js
! test/script/basic/JDK-8010946-2.js.EXPECTED
! test/script/basic/NASHORN-473.js
+ test/script/basic/classloader.js
+ test/script/basic/classloader.js.EXPECTED
! test/script/basic/javaarray.js
! test/script/sandbox/classloader.js.EXPECTED
! test/script/sandbox/reflection.js
! test/src/jdk/nashorn/api/javaaccess/BooleanAccessTest.java
! test/src/jdk/nashorn/api/javaaccess/NumberAccessTest.java
! test/src/jdk/nashorn/api/javaaccess/ObjectAccessTest.java
! test/src/jdk/nashorn/api/javaaccess/StringAccessTest.java
Changeset: 0cfa27ed82fe
Author: sundar
Date: 2013-07-23 18:17 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/0cfa27ed82fe
8021122: Not all callables are handled for toString and other function valued properties
Reviewed-by: attila, hannesw, jlaskey
! src/jdk/nashorn/internal/ir/debug/ASTWriter.java
! src/jdk/nashorn/internal/objects/Global.java
! src/jdk/nashorn/internal/objects/NativeArray.java
! src/jdk/nashorn/internal/objects/NativeDate.java
! src/jdk/nashorn/internal/objects/NativeJSON.java
! src/jdk/nashorn/internal/objects/NativeObject.java
! src/jdk/nashorn/internal/runtime/Context.java
! src/jdk/nashorn/internal/runtime/ListAdapter.java
! src/jdk/nashorn/internal/runtime/ScriptRuntime.java
! src/jdk/nashorn/internal/runtime/arrays/IteratorAction.java
! src/jdk/nashorn/internal/runtime/linker/Bootstrap.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! src/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java
+ test/script/basic/JDK-8021122.js
+ test/script/basic/JDK-8021122.js.EXPECTED
Changeset: e86b297d26aa
Author: jlaskey
Date: 2013-07-23 12:00 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/e86b297d26aa
8021130: Comments need to be tokens
Reviewed-by: lagergren, attila
Contributed-by: james.laskey at oracle.com
! src/jdk/nashorn/internal/parser/AbstractParser.java
! src/jdk/nashorn/internal/parser/Lexer.java
! src/jdk/nashorn/internal/parser/TokenType.java
Changeset: ccbea9172aa5
Author: sundar
Date: 2013-07-23 21:45 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/ccbea9172aa5
8021164: REGRESSION: test262 failures after JDK-8021122
Reviewed-by: jlaskey, hannesw
! src/jdk/nashorn/internal/runtime/linker/Bootstrap.java
Changeset: 4cb1780bc385
Author: sundar
Date: 2013-07-23 21:51 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/4cb1780bc385
Merge
- src/jdk/nashorn/internal/runtime/linker/JavaAdapterGeneratorBase.java
Changeset: 8b97fe2b7c98
Author: attila
Date: 2013-07-23 18:28 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/8b97fe2b7c98
8021129: Use public lookup again
Reviewed-by: lagergren, sundar
! src/jdk/internal/dynalink/beans/AbstractJavaLinker.java
! src/jdk/internal/dynalink/beans/FacetIntrospector.java
- src/jdk/internal/dynalink/beans/SafeUnreflector.java
- src/jdk/internal/dynalink/beans/SafeUnreflectorImpl.java
- src/jdk/internal/dynalink/beans/SandboxClassLoader.java
- src/jdk/internal/dynalink/beans/sandbox/Unreflector.java
+ test/script/trusted/JDK-8021129.js
+ test/script/trusted/JDK-8021129.js.EXPECTED
+ test/src/jdk/nashorn/internal/test/models/InternalRunnable.java
+ test/src/jdk/nashorn/internal/test/models/RestrictedRunnable.java
+ test/src/jdk/nashorn/test/models/InternalRunnableSuperclass.java
Changeset: a58a07a00122
Author: attila
Date: 2013-07-24 11:13 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/a58a07a00122
8021189: Prevent access to constructors of restricted classes
Reviewed-by: lagergren, sundar
! src/jdk/internal/dynalink/beans/AbstractJavaLinker.java
! src/jdk/internal/dynalink/beans/FacetIntrospector.java
! src/jdk/internal/dynalink/beans/StaticClassLinker.java
! test/script/trusted/JDK-8006529.js
! test/script/trusted/JDK-8021129.js
+ test/script/trusted/JDK-8021189.js
+ test/script/trusted/JDK-8021189.js.EXPECTED
Changeset: e4efb3ce97b2
Author: attila
Date: 2013-07-24 12:48 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/e4efb3ce97b2
8021246: Fix regression for 8021189
Reviewed-by: lagergren, sundar
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! test/script/trusted/JDK-8006529.js
Changeset: 2a25917777f7
Author: hannesw
Date: 2013-07-24 13:16 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/2a25917777f7
8020718: RETURN symbol has wrong type in split functions
Reviewed-by: lagergren, attila
! src/jdk/nashorn/internal/codegen/CodeGenerator.java
! src/jdk/nashorn/internal/codegen/FinalizeTypes.java
! src/jdk/nashorn/internal/codegen/MethodEmitter.java
! src/jdk/nashorn/internal/codegen/SplitMethodEmitter.java
! src/jdk/nashorn/internal/ir/Block.java
! src/jdk/nashorn/internal/ir/FunctionNode.java
! src/jdk/nashorn/internal/ir/IdentNode.java
! src/jdk/nashorn/internal/ir/Symbol.java
Changeset: 573cc6eb66ae
Author: jlaskey
Date: 2013-07-24 08:25 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/573cc6eb66ae
Merge
- src/jdk/internal/dynalink/beans/SafeUnreflector.java
- src/jdk/internal/dynalink/beans/SafeUnreflectorImpl.java
- src/jdk/internal/dynalink/beans/SandboxClassLoader.java
- src/jdk/internal/dynalink/beans/sandbox/Unreflector.java
Changeset: dc54df348a58
Author: sundar
Date: 2013-07-24 20:28 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/dc54df348a58
8021262: Make nashorn access checks consistent with underlying dynalink
Reviewed-by: jlaskey, lagergren, attila
! make/code_coverage.xml
! src/jdk/nashorn/internal/codegen/SpillObjectCreator.java
! src/jdk/nashorn/internal/objects/NativeDate.java
! src/jdk/nashorn/internal/objects/NativeObject.java
! src/jdk/nashorn/internal/runtime/Context.java
! src/jdk/nashorn/internal/runtime/NashornLoader.java
! src/jdk/nashorn/internal/runtime/PropertyMap.java
! src/jdk/nashorn/internal/runtime/ScriptObject.java
! src/jdk/nashorn/internal/runtime/ScriptRuntime.java
! src/jdk/nashorn/internal/runtime/Source.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterClassLoader.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java
! src/jdk/nashorn/internal/runtime/linker/LinkerCallSite.java
! src/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java
! src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java
! src/jdk/nashorn/internal/runtime/linker/ReflectionCheckLinker.java
! test/script/sandbox/nashorninternals.js
! test/script/trusted/JDK-8006529.js
! test/script/trusted/JDK-8021129.js
! test/script/trusted/JDK-8021189.js
! test/script/trusted/JDK-8021189.js.EXPECTED
! test/src/jdk/nashorn/test/models/InternalRunnableSuperclass.java
Changeset: d203d68f6624
Author: sundar
Date: 2013-07-24 21:01 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/d203d68f6624
8021294: --verify-code option results in AnalyzerException
Reviewed-by: hannesw, jlaskey
! src/jdk/nashorn/internal/runtime/Context.java
Changeset: 5c035c4ccc61
Author: sundar
Date: 2013-07-25 14:05 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/5c035c4ccc61
8021252: invokeMethod throws NoSuchMethodException when script object is from different script context
Reviewed-by: lagergren, hannesw
! src/jdk/nashorn/api/scripting/NashornScriptEngine.java
! src/jdk/nashorn/api/scripting/ScriptObjectMirror.java
! test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
Changeset: f74faac51bfb
Author: hannesw
Date: 2013-07-25 11:56 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/f74faac51bfb
8021244: Inconsistent stackmap with splitter threshold set very low
Reviewed-by: sundar, lagergren
! src/jdk/nashorn/internal/codegen/Lower.java
! src/jdk/nashorn/internal/ir/Block.java
Changeset: f22ca0f9b6ee
Author: sundar
Date: 2013-07-25 20:10 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/f22ca0f9b6ee
8021361: ClassCastException:.ScriptObjectMirror -> ScriptObject when getInterface called on object from different ScriptContext
Reviewed-by: jlaskey, attila
! src/jdk/nashorn/api/scripting/NashornScriptEngine.java
! src/jdk/nashorn/api/scripting/ScriptObjectMirror.java
+ src/jdk/nashorn/api/scripting/resources/Messages.properties
! src/jdk/nashorn/internal/runtime/ScriptObject.java
! test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
Changeset: d55856f82352
Author: lana
Date: 2013-07-26 14:08 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/d55856f82352
Merge
Changeset: f6588f168d79
Author: hannesw
Date: 2013-07-26 13:50 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/f6588f168d79
8020719: Run tests with reduced splitter threshold
Reviewed-by: lagergren, sundar, jlaskey
! make/build.xml
! make/project.properties
+ test/script/basic/NASHORN-592-dual.js
+ test/script/basic/NASHORN-592-dual.js.EXPECTED
+ test/script/basic/compile-octane-splitter.js
+ test/script/basic/compile-octane-splitter.js.EXPECTED
+ test/script/basic/splitter.js
+ test/script/basic/splitter.js.EXPECTED
- test/script/representations/NASHORN-592a.js
! test/src/jdk/nashorn/internal/test/framework/AbstractScriptRunnable.java
! test/src/jdk/nashorn/internal/test/framework/ScriptRunnable.java
! test/src/jdk/nashorn/internal/test/framework/TestConfig.java
! test/src/jdk/nashorn/internal/test/framework/TestFinder.java
Changeset: 17a947418e65
Author: jlaskey
Date: 2013-07-26 09:17 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/17a947418e65
8021321: Two runsunspider tests fail after updating sunspider to 1.0
Reviewed-by: jlaskey, sundar
Contributed-by: michael.horowitz at oracle.com
! test/script/basic/runsunspider.js
Changeset: fbd21b00197b
Author: sundar
Date: 2013-07-26 20:10 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/fbd21b00197b
8021571: @fork tests should use VM options passed from project.properties
Reviewed-by: lagergren, hannesw, jlaskey
! buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/ClassGenerator.java
! buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/ConstructorGenerator.java
! buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/PrototypeGenerator.java
! make/project.properties
! src/jdk/nashorn/internal/objects/BoundScriptFunctionImpl.java
! src/jdk/nashorn/internal/objects/PrototypeObject.java
! src/jdk/nashorn/internal/runtime/AccessorProperty.java
! src/jdk/nashorn/internal/runtime/FinalScriptFunctionData.java
! src/jdk/nashorn/internal/runtime/ListAdapter.java
! src/jdk/nashorn/internal/runtime/Property.java
! src/jdk/nashorn/internal/runtime/PropertyListenerManager.java
! src/jdk/nashorn/internal/runtime/ScriptFunctionData.java
! src/jdk/nashorn/internal/runtime/UserAccessorProperty.java
! src/jdk/nashorn/internal/runtime/WithObject.java
! src/jdk/nashorn/internal/runtime/linker/AdaptationException.java
! src/jdk/nashorn/internal/runtime/linker/AdaptationResult.java
! src/jdk/nashorn/internal/runtime/linker/InvokeByName.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterServices.java
! src/jdk/nashorn/internal/runtime/linker/JavaArgumentConverters.java
! src/jdk/nashorn/internal/runtime/linker/NashornCallSiteDescriptor.java
! src/jdk/nashorn/internal/runtime/linker/NashornLinker.java
! src/jdk/nashorn/internal/runtime/linker/PrimitiveLookup.java
! src/jdk/nashorn/internal/runtime/options/KeyValueOption.java
! src/jdk/nashorn/internal/runtime/options/OptionTemplate.java
! test/src/jdk/nashorn/internal/test/framework/AbstractScriptRunnable.java
! test/src/jdk/nashorn/internal/test/framework/ScriptRunnable.java
! test/src/jdk/nashorn/internal/test/framework/TestConfig.java
Changeset: 5fc6b7f11289
Author: sundar
Date: 2013-07-29 10:28 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/5fc6b7f11289
Merge
- test/script/representations/NASHORN-592a.js
Changeset: 0532397d0732
Author: sundar
Date: 2013-07-29 18:07 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/0532397d0732
8012792: print function defined in engine.js does not handle multiple arguments
Reviewed-by: hannesw
! src/jdk/nashorn/api/scripting/resources/engine.js
! test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
Changeset: 7d5d24bdb671
Author: sundar
Date: 2013-07-29 21:56 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/7d5d24bdb671
Merge
Changeset: e966ff0a3ffe
Author: lana
Date: 2013-08-06 10:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/e966ff0a3ffe
Merge
Changeset: 795cff5c1b5c
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/795cff5c1b5c
Added tag jdk8-b102 for changeset e966ff0a3ffe
! .hgtags
From harold.seigel at oracle.com Thu Aug 8 12:23:16 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Thu, 08 Aug 2013 15:23:16 -0400
Subject: Request for Review 7121403: [TESTBUG] runtime/7051189/Xchecksig.sh
fails on 64-bit solaris
Message-ID: <5203F024.9040006@oracle.com>
Hi,
Please review this change to fix bug 7121403. The test was rewritten in
Java and modified to properly determine when it is running on 64-bit
Solaris.
The fix was tested by running the new test on 32-bit Linux, Solaris
Sparc, Solaris X86, and 64-bit Linux.
webrev: http://cr.openjdk.java.net/~hseigel/bug_7121403/
bug: http://bugs.sun.com/view_bug.do?bug_id=7121403
JBS bug: https://jbs.oracle.com/bugs/browse/JDK-7121403
Thanks! Harold
From yumin.qi at oracle.com Thu Aug 8 12:48:41 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Thu, 08 Aug 2013 12:48:41 -0700
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
In-Reply-To: <52017AC9.9040809@oracle.com>
References: <52017AC9.9040809@oracle.com>
Message-ID: <5203F619.3020308@oracle.com>
Hi,
Thanks for the comments from David and Ioi --- I misunderstand the
problem, the problem is in shell script in which
if [...]
will change result $? since it always be the result of last script
cmd. Now fix by recording the result in a variable.
http://cr.openjdk.java.net/~minqi/8019583/webrev1
Thanks
Yumin
On 8/6/2013 3:38 PM, Yumin Qi wrote:
> Please review:
>
> http://cr.openjdk.java.net/~minqi/8019583/webrev0/
>
>
> Summary: The test will always pass since TestMT.java will always
> return value 0 to shell. Fix by recording failure value and exit with it.
>
> Thanks
> Yumin
From john.coomes at oracle.com Thu Aug 8 13:18:01 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 20:18:01 +0000
Subject: hg: hsx/hotspot-rt/corba: Added tag jdk8-b102 for changeset
528c7e76eaee
Message-ID: <20130808201804.1AC454871D@hg.openjdk.java.net>
Changeset: f8ed09af1df6
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/corba/rev/f8ed09af1df6
Added tag jdk8-b102 for changeset 528c7e76eaee
! .hgtags
From john.coomes at oracle.com Thu Aug 8 13:17:52 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 20:17:52 +0000
Subject: hg: hsx/hotspot-rt: Added tag jdk8-b102 for changeset 5eb3c1dc348f
Message-ID: <20130808201753.28BF34871C@hg.openjdk.java.net>
Changeset: b7e64be81c8a
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/rev/b7e64be81c8a
Added tag jdk8-b102 for changeset 5eb3c1dc348f
! .hgtags
From john.coomes at oracle.com Thu Aug 8 13:18:42 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 20:18:42 +0000
Subject: hg: hsx/hotspot-rt/jaxws: Added tag jdk8-b102 for changeset
988a5f2ac559
Message-ID: <20130808201851.D019E4871F@hg.openjdk.java.net>
Changeset: 6cdc6ed98780
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jaxws/rev/6cdc6ed98780
Added tag jdk8-b102 for changeset 988a5f2ac559
! .hgtags
From john.coomes at oracle.com Thu Aug 8 13:18:12 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 20:18:12 +0000
Subject: hg: hsx/hotspot-rt/jaxp: 4 new changesets
Message-ID: <20130808201834.9F5E84871E@hg.openjdk.java.net>
Changeset: 251ca1e2ccd3
Author: joehw
Date: 2013-07-25 13:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jaxp/rev/251ca1e2ccd3
8021148: Regression in SAXParserImpl in 7u40 b34 (NPE)
Reviewed-by: chegar, lancea, dfuchs
! src/com/sun/org/apache/xerces/internal/jaxp/SAXParserImpl.java
Changeset: 467e1948612d
Author: lana
Date: 2013-07-26 14:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jaxp/rev/467e1948612d
Merge
Changeset: 7cffafa606e9
Author: lana
Date: 2013-08-06 10:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jaxp/rev/7cffafa606e9
Merge
Changeset: b1ceab582fc6
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jaxp/rev/b1ceab582fc6
Added tag jdk8-b102 for changeset 7cffafa606e9
! .hgtags
From daniel.daugherty at oracle.com Thu Aug 8 13:26:50 2013
From: daniel.daugherty at oracle.com (daniel.daugherty at oracle.com)
Date: Thu, 08 Aug 2013 20:26:50 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8016601: Unable to build hsx24 on Windows
using project creator and Visual Studio
Message-ID: <20130808202657.4FFBC48722@hg.openjdk.java.net>
Changeset: 31f3b1e1c5e5
Author: dcubed
Date: 2013-08-08 09:21 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/31f3b1e1c5e5
8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
Summary: ProjectCreator tool is modified to support two new options: '-relativeAltSrcInclude' and '-altRelativeInclude' which prevents IDE linker errors. Also fixed some cmd line build linker warnings. Misc cleanups.
Reviewed-by: rdurbin, coleenp
! make/windows/create.bat
! make/windows/create_obj_files.sh
! make/windows/makefiles/projectcreator.make
! make/windows/makefiles/trace.make
! make/windows/makefiles/vm.make
! src/share/tools/ProjectCreator/BuildConfig.java
! src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
! src/share/tools/ProjectCreator/ProjectCreator.java
! src/share/tools/ProjectCreator/WinGammaPlatform.java
! src/share/tools/ProjectCreator/WinGammaPlatformVC10.java
From ioi.lam at oracle.com Thu Aug 8 13:38:12 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Thu, 08 Aug 2013 13:38:12 -0700
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
In-Reply-To: <5203F619.3020308@oracle.com>
References: <52017AC9.9040809@oracle.com> <5203F619.3020308@oracle.com>
Message-ID: <520401B4.6020904@oracle.com>
Yumin,
The patch looks good (not a Reviewer).
Thanks
- Ioi
On 08/08/2013 12:48 PM, Yumin Qi wrote:
> Hi,
>
> Thanks for the comments from David and Ioi --- I misunderstand the
> problem, the problem is in shell script in which
>
> if [...]
>
> will change result $? since it always be the result of last script
> cmd. Now fix by recording the result in a variable.
>
> http://cr.openjdk.java.net/~minqi/8019583/webrev1
>
> Thanks
> Yumin
>
>
> On 8/6/2013 3:38 PM, Yumin Qi wrote:
>> Please review:
>>
>> http://cr.openjdk.java.net/~minqi/8019583/webrev0/
>>
>>
>> Summary: The test will always pass since TestMT.java will always
>> return value 0 to shell. Fix by recording failure value and exit with
>> it.
>>
>> Thanks
>> Yumin
>
From john.coomes at oracle.com Thu Aug 8 13:22:57 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 20:22:57 +0000
Subject: hg: hsx/hotspot-rt/jdk: 73 new changesets
Message-ID: <20130808204151.60BC248724@hg.openjdk.java.net>
Changeset: 2978c0a543ed
Author: prr
Date: 2013-07-22 12:52 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/2978c0a543ed
7196866: CTW fails on all Solaris platforms
Reviewed-by: prr, jrose, twisti, kvn
! src/solaris/native/sun/awt/awt_GraphicsEnv.c
! src/solaris/native/sun/java2d/x11/XRBackendNative.c
Changeset: 784589c7bc55
Author: vadim
Date: 2013-07-24 13:38 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/784589c7bc55
8008782: NPE in TrueTypeGlyphMapper
Reviewed-by: bae, prr
! src/share/classes/sun/font/TrueTypeFont.java
Changeset: db2e3a686cf3
Author: jchen
Date: 2013-07-24 12:40 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/db2e3a686cf3
8011709: [parfait] False positive: memory leak in jdk/src/share/native/sun/font/layout/CanonShaping.cpp
Reviewed-by: jgodinez, prr
! src/share/native/sun/font/layout/CanonShaping.cpp
Changeset: c2e27e7a42ae
Author: jchen
Date: 2013-07-24 13:05 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/c2e27e7a42ae
8005126: [parfait] #418 - #428 XRBackendNative.c Integer overflow
Reviewed-by: prr, vadim
! src/solaris/native/sun/java2d/x11/XRBackendNative.c
Changeset: 833f05116f7b
Author: bae
Date: 2013-07-25 17:14 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/833f05116f7b
8019201: Regression: java.awt.image.ConvolveOp throws java.awt.image.ImagingOpException
Reviewed-by: prr
! src/share/native/sun/awt/medialib/awt_ImagingLib.c
+ test/sun/awt/image/ImagingLib/SamePackingTypeTest.java
Changeset: a8b9df782017
Author: serb
Date: 2013-07-26 21:18 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/a8b9df782017
7190349: [macosx] Text (Label) is incorrectly drawn with a rotated g2d
8013569: [macosx] JLabel preferred size incorrect on retina displays with non-default font size
Reviewed-by: prr
! src/macosx/classes/sun/font/CStrike.java
! src/macosx/native/sun/font/AWTStrike.h
! src/macosx/native/sun/font/AWTStrike.m
! src/macosx/native/sun/font/CGGlyphImages.m
+ test/java/awt/Graphics2D/DrawString/DrawRotatedString.java
+ test/java/awt/Graphics2D/IncorrectTextSize/IncorrectTextSize.java
Changeset: 467a0c21790b
Author: jgodinez
Date: 2013-07-26 15:08 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/467a0c21790b
8020208: NullPointerException at sun.print.Win32PrintService.getMediaPrintables
Reviewed-by: jchen, prr
! src/windows/classes/sun/print/Win32PrintService.java
Changeset: 56c6f9a9653d
Author: jgodinez
Date: 2013-07-26 15:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/56c6f9a9653d
8016343: [macosx] Print job goes to default printer regardless of chosen printer
Reviewed-by: jchen, prr
! src/share/classes/sun/print/PSPrinterJob.java
! src/solaris/classes/sun/print/IPPPrintService.java
! src/solaris/classes/sun/print/UnixPrintJob.java
! test/javax/print/DialogMargins.java
Changeset: 1c48544c3da9
Author: lana
Date: 2013-07-26 15:46 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/1c48544c3da9
Merge
- src/share/classes/com/sun/org/apache/xml/internal/security/resource/log4j.properties
- src/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHereContext.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathAPIHolder.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathFuncHereAPI.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/XPathFuncHereAPI.java
- src/share/classes/java/util/stream/StreamBuilder.java
- src/share/classes/javax/security/auth/callback/package.html
- src/share/classes/javax/security/auth/kerberos/package.html
- src/share/classes/javax/security/auth/login/package.html
- src/share/classes/javax/security/auth/package.html
- src/share/classes/javax/security/auth/spi/package.html
- src/share/classes/javax/security/auth/x500/package.html
- src/share/classes/javax/security/cert/package.html
- src/share/classes/javax/security/sasl/package.html
- test/java/util/Collections/EmptySortedSet.java
Changeset: 921338e44ba7
Author: lana
Date: 2013-07-26 17:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/921338e44ba7
Merge
Changeset: 046025f78ea8
Author: jgodinez
Date: 2013-07-30 13:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/046025f78ea8
8021835: Fix for 8016343 will not compile on Windows.
Reviewed-by: jchen, prr
! src/share/classes/sun/print/PSPrinterJob.java
Changeset: 7f0e569c5a66
Author: bae
Date: 2013-07-31 13:11 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/7f0e569c5a66
8020983: OutOfMemoryError caused by non garbage collected JPEGImageWriter Instances
Reviewed-by: prr, flar
! src/share/native/sun/awt/image/jpeg/imageioJPEG.c
+ test/javax/imageio/plugins/jpeg/JpegWriterLeakTest.java
Changeset: 607ad960fe24
Author: malenkov
Date: 2013-07-22 15:36 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/607ad960fe24
8019975: closed/javax/swing/JFileChooser/4966171/bug4966171.java throws java.io.NotSerializableException: javax.swing.plaf.basic.BasicFileChooserUI$AcceptAllFileFilter
Reviewed-by: alexsch
! src/share/classes/javax/swing/JFileChooser.java
Changeset: 3cbe376233a9
Author: malenkov
Date: 2013-07-22 20:33 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/3cbe376233a9
8015926: NPE when using SynthTreeUI's expandPath()
Reviewed-by: alexsch
! src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java
+ test/javax/swing/plaf/synth/Test8015926.java
Changeset: bdad697c03aa
Author: pchelko
Date: 2013-07-23 13:09 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/bdad697c03aa
7184951: [macosx] Exception at java.awt.datatransfer on headless mode (only in GUI session)
Reviewed-by: art, anthony
! src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java
Changeset: 99ee6ddab113
Author: serb
Date: 2013-07-24 17:14 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/99ee6ddab113
8017189: [macosx] AWT program menu disabled on Mac
Reviewed-by: leonidr, anthony
! src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
! src/macosx/native/sun/awt/AWTWindow.h
! src/macosx/native/sun/awt/AWTWindow.m
! src/macosx/native/sun/awt/CMenuBar.m
Changeset: 7bd6eda2d217
Author: leonidr
Date: 2013-07-26 16:22 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/7bd6eda2d217
8007267: [macosx] com.apple.eawt.Application.setDefaultMenuBar is not working
Reviewed-by: anthony, serb
! src/macosx/classes/com/apple/eawt/_AppMenuBarHandler.java
! src/macosx/classes/sun/lwawt/macosx/CMenuComponent.java
! src/macosx/native/sun/awt/AWTWindow.m
! src/macosx/native/sun/awt/CMenuItem.m
Changeset: 65c90209edbb
Author: lana
Date: 2013-07-26 15:19 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/65c90209edbb
Merge
- src/share/classes/com/sun/org/apache/xml/internal/security/resource/log4j.properties
- src/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHereContext.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathAPIHolder.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathFuncHereAPI.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/XPathFuncHereAPI.java
- src/share/classes/java/util/stream/StreamBuilder.java
- src/share/classes/javax/security/auth/callback/package.html
- src/share/classes/javax/security/auth/kerberos/package.html
- src/share/classes/javax/security/auth/login/package.html
- src/share/classes/javax/security/auth/package.html
- src/share/classes/javax/security/auth/spi/package.html
- src/share/classes/javax/security/auth/x500/package.html
- src/share/classes/javax/security/cert/package.html
- src/share/classes/javax/security/sasl/package.html
- test/java/util/Collections/EmptySortedSet.java
Changeset: 37016eaea5d2
Author: serb
Date: 2013-07-29 16:57 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/37016eaea5d2
6230360: Spelling mistake in documentation for AWT: 1.4, 1.5, 1.6, 1.7
Reviewed-by: malenkov, art
! src/share/classes/java/awt/AWTException.java
Changeset: bf80c2965a84
Author: malenkov
Date: 2013-07-29 18:48 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/bf80c2965a84
8010782: clean up source files containing carriage return characters
Reviewed-by: alexsch, art
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties
! src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth.properties
Changeset: 1e482f58c747
Author: ant
Date: 2013-07-30 16:15 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/1e482f58c747
8020927: JLightweightFrame API should export layout properties change notifications
Reviewed-by: anthony
! src/share/classes/sun/swing/JLightweightFrame.java
! src/share/classes/sun/swing/LightweightContent.java
Changeset: 336a94dbecb5
Author: malenkov
Date: 2013-07-30 17:46 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/336a94dbecb5
8015300: JComboBox text sometimes become selected, sometimes not (Windows LAF)
Reviewed-by: alexsch, serb
! src/share/classes/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.java
+ test/javax/swing/JComboBox/8015300/Test8015300.java
Changeset: 726ac8f75b54
Author: lana
Date: 2013-07-31 12:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/726ac8f75b54
Merge
Changeset: 6e10d93273d0
Author: juh
Date: 2013-07-18 10:49 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/6e10d93273d0
8020426: Fix doclint accessibility issues in java.io
Reviewed-by: mduigou, darcy, chegar
! src/share/classes/java/io/DataInput.java
! src/share/classes/java/io/File.java
! src/share/classes/java/io/ObjectStreamField.java
! src/share/classes/java/io/RandomAccessFile.java
Changeset: b39797bb86c0
Author: sherman
Date: 2013-07-18 11:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/b39797bb86c0
8016025: JSR 310 DateTime API Updates IV
8020418: Cleanup of -Xlint warnings in java.time
8016623: test/java/time/format/TestDateTimeTextProvider.java failing
Summary: Integration of JSR310 Date/Time API update IV
Reviewed-by: sherman
Contributed-by: scolebourne at joda.org, roger.riggs at oracle.com, masayoshi.okutsu at oracle.com, patrick.zhang at oracle.com, chand.basha at oracle.com
! src/share/classes/java/time/DayOfWeek.java
! src/share/classes/java/time/Duration.java
! src/share/classes/java/time/Instant.java
! src/share/classes/java/time/LocalDate.java
! src/share/classes/java/time/LocalDateTime.java
! src/share/classes/java/time/LocalTime.java
! src/share/classes/java/time/Month.java
! src/share/classes/java/time/MonthDay.java
! src/share/classes/java/time/OffsetDateTime.java
! src/share/classes/java/time/OffsetTime.java
! src/share/classes/java/time/Period.java
! src/share/classes/java/time/Year.java
! src/share/classes/java/time/YearMonth.java
! src/share/classes/java/time/ZoneId.java
! src/share/classes/java/time/ZoneOffset.java
! src/share/classes/java/time/ZoneRegion.java
! src/share/classes/java/time/ZonedDateTime.java
! src/share/classes/java/time/chrono/ChronoDateImpl.java
! src/share/classes/java/time/chrono/ChronoLocalDate.java
! src/share/classes/java/time/chrono/ChronoLocalDateTime.java
! src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java
! src/share/classes/java/time/chrono/ChronoZonedDateTime.java
! src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java
! src/share/classes/java/time/chrono/Chronology.java
! src/share/classes/java/time/chrono/Era.java
! src/share/classes/java/time/chrono/HijrahChronology.java
! src/share/classes/java/time/chrono/HijrahDate.java
! src/share/classes/java/time/chrono/IsoChronology.java
! src/share/classes/java/time/chrono/JapaneseChronology.java
! src/share/classes/java/time/chrono/JapaneseDate.java
! src/share/classes/java/time/chrono/JapaneseEra.java
! src/share/classes/java/time/chrono/MinguoChronology.java
! src/share/classes/java/time/chrono/MinguoDate.java
! src/share/classes/java/time/chrono/ThaiBuddhistChronology.java
! src/share/classes/java/time/chrono/ThaiBuddhistDate.java
! src/share/classes/java/time/chrono/package-info.java
! src/share/classes/java/time/format/DateTimeFormatter.java
! src/share/classes/java/time/format/DateTimeFormatterBuilder.java
! src/share/classes/java/time/format/DateTimePrintContext.java
! src/share/classes/java/time/format/Parsed.java
! src/share/classes/java/time/temporal/ChronoField.java
! src/share/classes/java/time/temporal/ChronoUnit.java
! src/share/classes/java/time/temporal/IsoFields.java
! src/share/classes/java/time/temporal/JulianFields.java
! src/share/classes/java/time/temporal/Temporal.java
! src/share/classes/java/time/temporal/TemporalAccessor.java
! src/share/classes/java/time/temporal/TemporalField.java
! src/share/classes/java/time/temporal/TemporalUnit.java
! src/share/classes/java/time/temporal/ValueRange.java
! src/share/classes/java/time/temporal/WeekFields.java
! src/share/lib/hijrah-config-umalqura.properties
! test/java/time/tck/java/time/MockSimplePeriod.java
! test/java/time/tck/java/time/TCKClock_Fixed.java
! test/java/time/tck/java/time/TCKDayOfWeek.java
! test/java/time/tck/java/time/TCKInstant.java
! test/java/time/tck/java/time/TCKLocalDate.java
! test/java/time/tck/java/time/TCKLocalDateTime.java
! test/java/time/tck/java/time/TCKLocalTime.java
! test/java/time/tck/java/time/TCKMonth.java
! test/java/time/tck/java/time/TCKMonthDay.java
! test/java/time/tck/java/time/TCKOffsetDateTime.java
! test/java/time/tck/java/time/TCKOffsetTime.java
! test/java/time/tck/java/time/TCKPeriod.java
! test/java/time/tck/java/time/TCKYear.java
! test/java/time/tck/java/time/TCKYearMonth.java
! test/java/time/tck/java/time/TCKZoneId.java
! test/java/time/tck/java/time/TCKZonedDateTime.java
! test/java/time/tck/java/time/chrono/CopticDate.java
! test/java/time/tck/java/time/chrono/TCKChronoLocalDate.java
! test/java/time/tck/java/time/chrono/TCKChronoLocalDateTime.java
! test/java/time/tck/java/time/chrono/TCKChronoZonedDateTime.java
! test/java/time/tck/java/time/chrono/TCKChronology.java
! test/java/time/tck/java/time/chrono/TCKHijrahChronology.java
! test/java/time/tck/java/time/chrono/TCKHijrahEra.java
! test/java/time/tck/java/time/chrono/TCKIsoChronology.java
! test/java/time/tck/java/time/chrono/TCKJapaneseChronology.java
! test/java/time/tck/java/time/chrono/TCKJapaneseEra.java
! test/java/time/tck/java/time/chrono/TCKMinguoChronology.java
! test/java/time/tck/java/time/chrono/TCKThaiBuddhistChronology.java
+ test/java/time/tck/java/time/format/TCKFormatStyle.java
+ test/java/time/tck/java/time/format/TCKResolverStyle.java
+ test/java/time/tck/java/time/format/TCKSignStyle.java
! test/java/time/tck/java/time/format/TCKTextStyle.java
! test/java/time/tck/java/time/format/TCKZoneIdPrinterParser.java
+ test/java/time/tck/java/time/temporal/TCKChronoField.java
+ test/java/time/tck/java/time/temporal/TCKChronoUnit.java
! test/java/time/tck/java/time/temporal/TCKWeekFields.java
! test/java/time/tck/java/time/zone/TCKZoneRules.java
! test/java/time/test/java/time/MockSimplePeriod.java
! test/java/time/test/java/time/chrono/TestChronoLocalDate.java
! test/java/time/test/java/time/chrono/TestExampleCode.java
! test/java/time/test/java/time/chrono/TestJapaneseChronoImpl.java
! test/java/time/test/java/time/chrono/TestJapaneseChronology.java
! test/java/time/test/java/time/chrono/TestUmmAlQuraChronology.java
! test/java/time/test/java/time/format/TestDateTimeTextProvider.java
! test/java/time/test/java/time/format/TestNonIsoFormatter.java
! test/java/time/test/java/time/format/TestNumberPrinter.java
! test/java/time/test/java/time/format/TestReducedPrinter.java
! test/java/time/test/java/time/temporal/MockFieldNoValue.java
! test/java/time/test/java/time/temporal/MockFieldValue.java
Changeset: 2323b973adaa
Author: darcy
Date: 2013-07-18 23:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/2323b973adaa
8020810: Typo in javadoc for Class.toGenericString()
Reviewed-by: dholmes
! src/share/classes/java/lang/Class.java
! src/share/classes/java/lang/reflect/Parameter.java
Changeset: e6aeeec33e53
Author: uta
Date: 2013-07-19 12:53 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e6aeeec33e53
8016579: (process) IOException thrown by ProcessBuilder.start() method is incorrectly encoded
Reviewed-by: martin, dxu
! src/share/native/java/io/io_util.c
! src/windows/native/java/io/io_util_md.c
! src/windows/native/java/lang/ProcessImpl_md.c
Changeset: e013b32118af
Author: darcy
Date: 2013-07-19 09:42 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e013b32118af
8020948: Fix doclint issues in misc package-info.java files
Reviewed-by: dholmes, chegar
! src/share/classes/java/nio/file/attribute/package-info.java
! src/share/classes/java/util/function/package-info.java
Changeset: 4bd04969a228
Author: darcy
Date: 2013-07-20 11:39 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/4bd04969a228
8020971: Fix doclint issues in java.nio.*
Reviewed-by: lancea
! src/share/classes/java/nio/channels/package-info.java
! src/share/classes/java/nio/charset/Charset.java
! src/share/classes/java/nio/charset/MalformedInputException.java
! src/share/classes/java/nio/charset/UnmappableCharacterException.java
! src/share/classes/java/nio/file/package-info.java
Changeset: dcd89e60051a
Author: khazra
Date: 2013-07-22 15:24 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/dcd89e60051a
8020498: Crash when both libnet.so and libmawt.so are loaded
Reviewed-by: chegar, dsamersoff
! src/share/native/java/net/net_util.c
Changeset: a3a2889b1049
Author: dl
Date: 2013-07-22 15:26 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/a3a2889b1049
8020976: Ensure consistent insertion for ConcurrentHashMap
Reviewed-by: chegar
! src/share/classes/java/util/concurrent/ConcurrentHashMap.java
Changeset: a6cbb9808e4b
Author: mduigou
Date: 2013-07-22 12:59 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/a6cbb9808e4b
6799426: Adds constructor PriorityQueue(Comparator)
Reviewed-by: lancea
! src/share/classes/java/util/PriorityQueue.java
Changeset: 7716beb127d4
Author: darcy
Date: 2013-07-22 22:11 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/7716beb127d4
8021109: Add serialVersionUID to LambdaConversionException.java
Reviewed-by: jrose
! src/share/classes/java/lang/invoke/LambdaConversionException.java
Changeset: 6f3b940fe9f8
Author: igerasim
Date: 2013-07-23 18:57 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/6f3b940fe9f8
8016838: improvement of RedefineBigClass and RetransformBigClass tests
Reviewed-by: dcubed
! test/ProblemList.txt
! test/java/lang/instrument/RedefineBigClass.sh
! test/java/lang/instrument/RedefineBigClassApp.java
! test/java/lang/instrument/RetransformBigClass.sh
! test/java/lang/instrument/RetransformBigClassApp.java
Changeset: 8156630c1ed3
Author: mduigou
Date: 2013-07-23 13:20 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/8156630c1ed3
8019840: Spec updates for java.util.function
Reviewed-by: mduigou, chegar
Contributed-by: brian.goetz at oracle.com
! src/share/classes/java/util/function/BiConsumer.java
! src/share/classes/java/util/function/BiFunction.java
! src/share/classes/java/util/function/BiPredicate.java
! src/share/classes/java/util/function/BinaryOperator.java
! src/share/classes/java/util/function/BooleanSupplier.java
! src/share/classes/java/util/function/Consumer.java
! src/share/classes/java/util/function/DoubleBinaryOperator.java
! src/share/classes/java/util/function/DoubleConsumer.java
! src/share/classes/java/util/function/DoubleFunction.java
! src/share/classes/java/util/function/DoublePredicate.java
! src/share/classes/java/util/function/DoubleSupplier.java
! src/share/classes/java/util/function/DoubleToIntFunction.java
! src/share/classes/java/util/function/DoubleToLongFunction.java
! src/share/classes/java/util/function/DoubleUnaryOperator.java
! src/share/classes/java/util/function/Function.java
! src/share/classes/java/util/function/IntBinaryOperator.java
! src/share/classes/java/util/function/IntConsumer.java
! src/share/classes/java/util/function/IntFunction.java
! src/share/classes/java/util/function/IntPredicate.java
! src/share/classes/java/util/function/IntSupplier.java
! src/share/classes/java/util/function/IntToDoubleFunction.java
! src/share/classes/java/util/function/IntToLongFunction.java
! src/share/classes/java/util/function/IntUnaryOperator.java
! src/share/classes/java/util/function/LongBinaryOperator.java
! src/share/classes/java/util/function/LongConsumer.java
! src/share/classes/java/util/function/LongFunction.java
! src/share/classes/java/util/function/LongPredicate.java
! src/share/classes/java/util/function/LongSupplier.java
! src/share/classes/java/util/function/LongToDoubleFunction.java
! src/share/classes/java/util/function/LongToIntFunction.java
! src/share/classes/java/util/function/LongUnaryOperator.java
! src/share/classes/java/util/function/ObjDoubleConsumer.java
! src/share/classes/java/util/function/ObjIntConsumer.java
! src/share/classes/java/util/function/ObjLongConsumer.java
! src/share/classes/java/util/function/Predicate.java
! src/share/classes/java/util/function/Supplier.java
! src/share/classes/java/util/function/ToDoubleBiFunction.java
! src/share/classes/java/util/function/ToDoubleFunction.java
! src/share/classes/java/util/function/ToIntBiFunction.java
! src/share/classes/java/util/function/ToIntFunction.java
! src/share/classes/java/util/function/ToLongBiFunction.java
! src/share/classes/java/util/function/ToLongFunction.java
! src/share/classes/java/util/function/UnaryOperator.java
! src/share/classes/java/util/function/package-info.java
Changeset: 012996e9259f
Author: mduigou
Date: 2013-07-23 13:21 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/012996e9259f
Merge
Changeset: 187a1f2613c0
Author: sjiang
Date: 2013-07-24 15:47 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/187a1f2613c0
8016221: A unit test should not use a fix port to run a jmx connector
Reviewed-by: jbachorik, dfuchs
! test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanDoubleInvocationTest.java
! test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanInvocationTest.java
! test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanTest.java
Changeset: f9224fb49890
Author: juh
Date: 2013-07-24 12:48 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/f9224fb49890
8016916: UnstructuredName should support DirectoryString
Reviewed-by: mullan
! src/share/classes/sun/security/pkcs/PKCS9Attribute.java
! src/share/classes/sun/security/tools/keytool/Main.java
+ test/sun/security/pkcs/pkcs9/UnstructuredName.java
Changeset: fd1b5adcfdf0
Author: chegar
Date: 2013-07-24 22:52 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/fd1b5adcfdf0
8021261: ProblemList.txt updates (7/2013)
Reviewed-by: alanb, mcimadamore
! test/ProblemList.txt
Changeset: a834ab2c1354
Author: mullan
Date: 2013-07-25 10:58 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/a834ab2c1354
8010748: Add PKIXRevocationChecker NO_FALLBACK option and improve SOFT_FAIL option
Reviewed-by: vinnie
! src/share/classes/java/security/cert/PKIXRevocationChecker.java
! src/share/classes/sun/security/provider/certpath/OCSP.java
! src/share/classes/sun/security/provider/certpath/OCSPResponse.java
! src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java
! src/share/classes/sun/security/provider/certpath/ReverseState.java
! src/share/classes/sun/security/provider/certpath/RevocationChecker.java
! src/share/classes/sun/security/provider/certpath/SunCertPathBuilder.java
! test/java/security/cert/PKIXRevocationChecker/UnitTest.java
Changeset: 22a391706a0b
Author: mullan
Date: 2013-07-25 11:09 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/22a391706a0b
Merge
- make/sun/xawt/ToBin.java
- makefiles/sun/awt/X11/ToBin.java
- src/share/classes/com/sun/org/apache/xml/internal/security/resource/log4j.properties
- src/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHereContext.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathAPIHolder.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathFuncHereAPI.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/XPathFuncHereAPI.java
- src/share/classes/java/security/acl/package.html
- src/share/classes/java/security/cert/package.html
- src/share/classes/java/security/interfaces/package.html
- src/share/classes/java/security/package.html
- src/share/classes/java/security/spec/package.html
- src/share/classes/java/util/stream/StreamBuilder.java
- src/share/classes/javax/security/auth/callback/package.html
- src/share/classes/javax/security/auth/kerberos/package.html
- src/share/classes/javax/security/auth/login/package.html
- src/share/classes/javax/security/auth/package.html
- src/share/classes/javax/security/auth/spi/package.html
- src/share/classes/javax/security/auth/x500/package.html
- src/share/classes/javax/security/cert/package.html
- src/share/classes/javax/security/sasl/package.html
- src/share/classes/sun/misc/Hashing.java
- src/share/classes/sun/security/krb5/internal/rcache/CacheTable.java
- src/share/classes/sun/security/krb5/internal/rcache/ReplayCache.java
! src/share/classes/sun/security/provider/certpath/RevocationChecker.java
- src/solaris/classes/sun/awt/X11/XIconInfo.java
- src/solaris/classes/sun/awt/X11/security-icon-bw16.png
- src/solaris/classes/sun/awt/X11/security-icon-bw24.png
- src/solaris/classes/sun/awt/X11/security-icon-bw32.png
- src/solaris/classes/sun/awt/X11/security-icon-bw48.png
- src/solaris/classes/sun/awt/X11/security-icon-interim16.png
- src/solaris/classes/sun/awt/X11/security-icon-interim24.png
- src/solaris/classes/sun/awt/X11/security-icon-interim32.png
- src/solaris/classes/sun/awt/X11/security-icon-interim48.png
- src/solaris/classes/sun/awt/X11/security-icon-yellow16.png
- src/solaris/classes/sun/awt/X11/security-icon-yellow24.png
- src/solaris/classes/sun/awt/X11/security-icon-yellow32.png
- src/solaris/classes/sun/awt/X11/security-icon-yellow48.png
- src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties
- src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.SuSE.properties
- src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties
- src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.properties
- test/java/lang/invoke/7196190/MHProxyTest.java
- test/java/util/Collections/EmptySortedSet.java
- test/java/util/Comparators/BasicTest.java
- test/sun/misc/Hashing.java
- test/sun/security/krb5/auto/ReplayCache.java
Changeset: 21120e3682ef
Author: darcy
Date: 2013-07-25 09:59 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/21120e3682ef
8021408: Fix misc doclint issues in java.util and java.io
Reviewed-by: dholmes, chegar, psandoz
! src/share/classes/java/io/ObjectInputStream.java
! src/share/classes/java/io/ObjectOutputStream.java
! src/share/classes/java/util/jar/Attributes.java
! src/share/classes/java/util/jar/JarEntry.java
! src/share/classes/java/util/jar/JarFile.java
! src/share/classes/java/util/stream/StreamSupport.java
Changeset: 690dcbaa69b7
Author: chegar
Date: 2013-07-25 19:37 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/690dcbaa69b7
8021417: Fix doclint issues in java.util.concurrent
Reviewed-by: chegar, lancea
Contributed-by: Doug Lea
! src/share/classes/java/util/concurrent/AbstractExecutorService.java
! src/share/classes/java/util/concurrent/ExecutorService.java
! src/share/classes/java/util/concurrent/Executors.java
! src/share/classes/java/util/concurrent/ForkJoinPool.java
! src/share/classes/java/util/concurrent/ForkJoinTask.java
! src/share/classes/java/util/concurrent/ScheduledExecutorService.java
! src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java
! src/share/classes/java/util/concurrent/TimeUnit.java
! src/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java
! src/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java
! src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java
Changeset: 9cd5159fa870
Author: chegar
Date: 2013-07-25 19:45 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/9cd5159fa870
8021421: More doclint fixes in java.net
Reviewed-by: lancea, darcy
! src/share/classes/java/net/URI.java
Changeset: 662ec7782102
Author: joehw
Date: 2013-07-25 13:20 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/662ec7782102
8021148: Regression in SAXParserImpl in 7u40 b34 (NPE)
Reviewed-by: chegar, lancea, dfuchs
+ test/javax/xml/jaxp/parsers/8021148/JAXPSAXParserTest.java
+ test/javax/xml/jaxp/parsers/8021148/TestBase.java
Changeset: 1744a32d3db3
Author: mullan
Date: 2013-07-25 20:12 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/1744a32d3db3
8012288: XML DSig API allows wrong tag names and extra elements in SignedInfo
Reviewed-by: xuelei
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMReference.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java
Changeset: 4100ab44ba4f
Author: mullan
Date: 2013-07-25 20:30 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/4100ab44ba4f
Merge
Changeset: 86a827321c39
Author: darcy
Date: 2013-07-25 20:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/86a827321c39
8021429: Fix lint warnings in java.lang.ref
Reviewed-by: lancea, mduigou, alanb
! src/share/classes/java/lang/ref/FinalReference.java
! src/share/classes/java/lang/ref/Finalizer.java
! src/share/classes/java/lang/ref/Reference.java
! src/share/classes/java/lang/ref/ReferenceQueue.java
Changeset: 6cc15a808b93
Author: peytoia
Date: 2013-07-26 17:22 +0900
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/6cc15a808b93
8021108: Clean up doclint warnings and errors in java.text package
Reviewed-by: darcy, okutsu
! src/share/classes/java/text/Annotation.java
! src/share/classes/java/text/AttributedCharacterIterator.java
! src/share/classes/java/text/Bidi.java
! src/share/classes/java/text/BreakIterator.java
! src/share/classes/java/text/ChoiceFormat.java
! src/share/classes/java/text/CollationElementIterator.java
! src/share/classes/java/text/CollationKey.java
! src/share/classes/java/text/DateFormat.java
! src/share/classes/java/text/DateFormatSymbols.java
! src/share/classes/java/text/DecimalFormat.java
! src/share/classes/java/text/DecimalFormatSymbols.java
! src/share/classes/java/text/FieldPosition.java
! src/share/classes/java/text/Format.java
! src/share/classes/java/text/MessageFormat.java
! src/share/classes/java/text/Normalizer.java
! src/share/classes/java/text/NumberFormat.java
! src/share/classes/java/text/ParseException.java
! src/share/classes/java/text/ParsePosition.java
! src/share/classes/java/text/RuleBasedCollator.java
! src/share/classes/java/text/SimpleDateFormat.java
! src/share/classes/java/text/StringCharacterIterator.java
Changeset: 952476b80fa7
Author: jbachorik
Date: 2013-07-26 10:12 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/952476b80fa7
8020875: java/lang/management/ThreadMXBean/ResetPeakThreadCount.java fails intermittently
Reviewed-by: dfuchs, chegar
! test/java/lang/management/ThreadMXBean/ResetPeakThreadCount.java
Changeset: 7ae061cfd4be
Author: juh
Date: 2013-07-26 14:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/7ae061cfd4be
8019544: Need to run ProviderTest.java in othervm mode.
Reviewed-by: wetmore, xuelei, vinnie
Contributed-by: rajan.halade at oracle.com
! test/sun/security/ssl/com/sun/net/ssl/SSLSecurity/ProviderTest.java
Changeset: 25575c3c209d
Author: lana
Date: 2013-07-26 14:07 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/25575c3c209d
Merge
Changeset: 9f9ffe6be557
Author: lana
Date: 2013-07-26 15:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/9f9ffe6be557
Merge
Changeset: f056728871f8
Author: mduigou
Date: 2013-07-26 17:23 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/f056728871f8
8021601: Add unit test for PriorityQueue(Comparator) constructor
Reviewed-by: darcy, alanb
! src/share/classes/java/util/PriorityQueue.java
! test/java/util/PriorityQueue/RemoveContains.java
Changeset: d4b2436892c8
Author: bpb
Date: 2013-07-26 17:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/d4b2436892c8
8014319: Faster division of large integers
Summary: Implement Burnickel-Ziegler division algorithm in BigInteger
Reviewed-by: bpb, martin
Contributed-by: Tim Buktu
! src/share/classes/java/math/BigInteger.java
! src/share/classes/java/math/MutableBigInteger.java
! test/java/math/BigInteger/BigIntegerTest.java
Changeset: a1c01457cf6c
Author: bpb
Date: 2013-07-26 17:09 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/a1c01457cf6c
8020641: Clean up some code style in recent BigInteger contributions
Summary: Some minor cleanup to adhere better to Java coding conventions.
Reviewed-by: darcy
Contributed-by: Brian Burkhalter
! src/share/classes/java/math/BigInteger.java
! src/share/classes/java/math/MutableBigInteger.java
! test/java/math/BigInteger/BigIntegerTest.java
Changeset: eb1dc65162e8
Author: darcy
Date: 2013-07-27 10:27 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/eb1dc65162e8
8021609: Fix doclint issues in java.nio.charset
Reviewed-by: alanb
! src/share/classes/java/nio/charset/Charset-X-Coder.java.template
Changeset: 5d4a35823071
Author: mduigou
Date: 2013-07-27 12:26 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/5d4a35823071
8021588: Remove explicit othervm execution from jdk/test/Makefile
Reviewed-by: alanb
! test/Makefile
Changeset: 24bda55fca48
Author: sundar
Date: 2013-07-29 21:39 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/24bda55fca48
8021773: print function as defined by jrunscript's init.js script is incompatible with nashorn's definition
Reviewed-by: hannesw, lagergren
! src/share/classes/com/sun/tools/script/shell/init.js
Changeset: e83fc6d9cf03
Author: psandoz
Date: 2013-07-29 19:41 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e83fc6d9cf03
8020156: TreeMap.values().spliterator() does not report ORDERED
8020009: TreeMap.entrySet().spliterator() reports SORTED + null comparator but the elements are not Comparable
Reviewed-by: mduigou
! src/share/classes/java/util/TreeMap.java
+ test/java/util/Spliterator/SpliteratorCharacteristics.java
Changeset: c042fd498f79
Author: ascarpino
Date: 2013-07-19 11:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/c042fd498f79
8012971: PKCS11Test hiding exception failures
Reviewed-by: vinnie, valeriep
! test/ProblemList.txt
! test/sun/security/pkcs11/PKCS11Test.java
! test/sun/security/pkcs11/SecmodTest.java
Changeset: e47569593fa0
Author: ascarpino
Date: 2013-07-29 13:43 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e47569593fa0
8020424: The NSS version should be detected before running crypto tests
Reviewed-by: valeriep
! test/ProblemList.txt
! test/sun/security/pkcs11/KeyStore/SecretKeysBasic.java
! test/sun/security/pkcs11/PKCS11Test.java
+ test/sun/security/pkcs11/README
! test/sun/security/pkcs11/ec/ReadCertificates.java
! test/sun/security/pkcs11/ec/TestCurves.java
! test/sun/security/pkcs11/ec/TestECDH.java
! test/sun/security/pkcs11/ec/TestECDH2.java
! test/sun/security/pkcs11/ec/TestECDSA.java
! test/sun/security/pkcs11/ec/TestECDSA2.java
! test/sun/security/pkcs11/ec/TestECGenSpec.java
! test/sun/security/pkcs11/ec/TestKeyFactory.java
Changeset: 613cc7beba64
Author: xuelei
Date: 2013-07-29 19:36 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/613cc7beba64
8021841: Remove SSLEngineDeadlock.java from problem list
Reviewed-by: wetmore
! test/ProblemList.txt
Changeset: c76f89695c90
Author: juh
Date: 2013-07-30 11:04 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/c76f89695c90
8021833: javadoc cleanup in java.net
Summary: and converted to {@code }; package.html to package-info.java
Reviewed-by: darcy, chegar
! src/share/classes/java/net/Authenticator.java
! src/share/classes/java/net/ContentHandler.java
! src/share/classes/java/net/ContentHandlerFactory.java
! src/share/classes/java/net/CookieHandler.java
! src/share/classes/java/net/CookieManager.java
! src/share/classes/java/net/CookiePolicy.java
! src/share/classes/java/net/CookieStore.java
! src/share/classes/java/net/DatagramPacket.java
! src/share/classes/java/net/DatagramSocket.java
! src/share/classes/java/net/DatagramSocketImpl.java
! src/share/classes/java/net/DatagramSocketImplFactory.java
! src/share/classes/java/net/FileNameMap.java
! src/share/classes/java/net/HttpCookie.java
! src/share/classes/java/net/HttpRetryException.java
! src/share/classes/java/net/HttpURLConnection.java
! src/share/classes/java/net/IDN.java
! src/share/classes/java/net/Inet4Address.java
! src/share/classes/java/net/Inet6Address.java
! src/share/classes/java/net/InetAddress.java
! src/share/classes/java/net/InetSocketAddress.java
! src/share/classes/java/net/InterfaceAddress.java
! src/share/classes/java/net/JarURLConnection.java
! src/share/classes/java/net/MalformedURLException.java
! src/share/classes/java/net/MulticastSocket.java
! src/share/classes/java/net/NetPermission.java
! src/share/classes/java/net/NetworkInterface.java
! src/share/classes/java/net/PasswordAuthentication.java
! src/share/classes/java/net/PortUnreachableException.java
! src/share/classes/java/net/ProtocolException.java
! src/share/classes/java/net/Proxy.java
! src/share/classes/java/net/ProxySelector.java
! src/share/classes/java/net/ResponseCache.java
! src/share/classes/java/net/ServerSocket.java
! src/share/classes/java/net/Socket.java
! src/share/classes/java/net/SocketException.java
! src/share/classes/java/net/SocketImpl.java
! src/share/classes/java/net/SocketImplFactory.java
! src/share/classes/java/net/SocketInputStream.java
! src/share/classes/java/net/SocketOptions.java
! src/share/classes/java/net/SocketOutputStream.java
! src/share/classes/java/net/SocketPermission.java
! src/share/classes/java/net/SocksSocketImpl.java
! src/share/classes/java/net/URI.java
! src/share/classes/java/net/URISyntaxException.java
! src/share/classes/java/net/URL.java
! src/share/classes/java/net/URLClassLoader.java
! src/share/classes/java/net/URLConnection.java
! src/share/classes/java/net/URLDecoder.java
! src/share/classes/java/net/URLEncoder.java
! src/share/classes/java/net/URLStreamHandler.java
! src/share/classes/java/net/URLStreamHandlerFactory.java
! src/share/classes/java/net/UnknownHostException.java
! src/share/classes/java/net/UnknownServiceException.java
+ src/share/classes/java/net/package-info.java
- src/share/classes/java/net/package.html
Changeset: 8bc1bbd5b659
Author: sherman
Date: 2013-07-30 14:43 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/8bc1bbd5b659
8021767: test/java/time/tck/java/time/format/TCKFormatStyle.java failing
Summary: Correct to use fixed locale, not locale of test environment
Reviewed-by: alanb, okutsu
Contributed-by: roger.riggs at oracle.com
! test/java/time/tck/java/time/format/TCKFormatStyle.java
Changeset: 09a77a1bdbc3
Author: henryjen
Date: 2013-07-30 15:47 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/09a77a1bdbc3
8020977: StringJoiner merges with itself not as expected
Reviewed-by: psandoz, chegar, mduigou, smarks
! src/share/classes/java/util/StringJoiner.java
! test/java/util/StringJoiner/MergeTest.java
Changeset: 76d88a752a03
Author: psandoz
Date: 2013-07-30 11:32 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/76d88a752a03
8021863: Stream.concat incorrectly calculates unsized state
Reviewed-by: chegar
! src/share/classes/java/util/stream/Streams.java
! test/java/util/stream/test/org/openjdk/tests/java/util/stream/ConcatOpTest.java
Changeset: d30f357c6050
Author: psandoz
Date: 2013-07-30 14:03 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/d30f357c6050
8021883: j.u.Random/RandomStream.java test needs more robust timeout duration
Reviewed-by: chegar
! test/java/util/Random/RandomStreamTest.java
Changeset: 5561b34f6d4c
Author: bpb
Date: 2013-07-30 10:35 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/5561b34f6d4c
8020539: Clean up doclint problems in java.util package, part 2
Summary: Clean up doclint errors and warnings in classes in java.util
Reviewed-by: darcy, chegar
Contributed-by: Brian Burkhalter
! src/share/classes/java/util/List.java
! src/share/classes/java/util/Map.java
! src/share/classes/java/util/Optional.java
! src/share/classes/java/util/Random.java
! src/share/classes/java/util/Scanner.java
! src/share/classes/java/util/ServiceLoader.java
! src/share/classes/java/util/StringJoiner.java
! src/share/classes/java/util/TimeZone.java
! src/share/classes/java/util/UUID.java
! src/share/classes/java/util/Vector.java
Changeset: 4bd51f6268f4
Author: rbackman
Date: 2013-07-24 10:57 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/4bd51f6268f4
8006324: [TEST_BUG] sun/invoke/util/ValueConversionsTest.java should be modified
Reviewed-by: kvn, twisti
! test/sun/invoke/util/ValueConversionsTest.java
Changeset: 0741b19835b0
Author: lana
Date: 2013-07-31 13:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/0741b19835b0
Merge
- src/share/classes/java/net/package.html
Changeset: 8ed8e2b4b90e
Author: lana
Date: 2013-08-06 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/8ed8e2b4b90e
Merge
Changeset: e057cddf0d6c
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e057cddf0d6c
Added tag jdk8-b102 for changeset 8ed8e2b4b90e
! .hgtags
From john.coomes at oracle.com Thu Aug 8 13:44:31 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 20:44:31 +0000
Subject: hg: hsx/hotspot-rt/langtools: 17 new changesets
Message-ID: <20130808204528.DA19848725@hg.openjdk.java.net>
Changeset: 80e75aa6a707
Author: jjg
Date: 2013-07-17 18:18 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/80e75aa6a707
8014636: TestLiteralCodeInPre fails on windows
Reviewed-by: ksrini
! src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java
! src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java
! test/com/sun/javadoc/testCRLineSeparator/TestCRLineSeparator.java
! test/com/sun/javadoc/testLeadingSpaces/LeadingSpaces.java
! test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java
! test/com/sun/javadoc/testLiteralCodeInPre/TestLiteralCodeInPre.java
! test/com/sun/javadoc/testRelativeLinks/TestRelativeLinks.java
Changeset: 1e533c1bfb01
Author: jjg
Date: 2013-07-17 19:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/1e533c1bfb01
8020313: doclint doesn't reset HTML anchors correctly
Reviewed-by: mcimadamore
! src/share/classes/com/sun/tools/doclint/Checker.java
+ test/tools/doclint/AnchorTest2.java
+ test/tools/doclint/AnchorTest2.out
+ test/tools/doclint/AnchorTest2a.java
Changeset: 1476d54fdc61
Author: jjg
Date: 2013-07-17 19:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/1476d54fdc61
8020664: doclint gives incorrect warnings on normal package statements
Reviewed-by: mcimadamore
! src/share/classes/com/sun/tools/doclint/DocLint.java
! src/share/classes/com/sun/tools/doclint/resources/doclint.properties
! test/tools/doclint/BadPackageCommentTest.out
! test/tools/doclint/DocLintTester.java
+ test/tools/doclint/packageTests/bad/Test.java
+ test/tools/doclint/packageTests/bad/Test.out
+ test/tools/doclint/packageTests/bad/package-info.java
+ test/tools/doclint/packageTests/bad/package-info.out
+ test/tools/doclint/packageTests/good/Test.java
+ test/tools/doclint/packageTests/good/package-info.java
Changeset: 0a9f5cbe37d9
Author: ksrini
Date: 2013-07-19 07:22 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/0a9f5cbe37d9
8017216: javac doesn't fill in end position for some errors of type not found
8019421: Javac doesn't fill in end position for some annotation related errors
8019422: Javac doesn't fill in end position for uninitialized variable errors
Reviewed-by: jjg, mcimadamore
! src/share/classes/com/sun/tools/javac/comp/Annotate.java
! src/share/classes/com/sun/tools/javac/comp/Attr.java
! src/share/classes/com/sun/tools/javac/comp/Flow.java
! src/share/classes/com/sun/tools/javac/parser/JavacParser.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
! src/share/classes/com/sun/tools/javac/tree/EndPosTable.java
+ test/tools/javac/diags/examples/VarNotIntializedInDefaultConstructor.java
+ test/tools/javac/positions/TreeEndPosTest.java
Changeset: 129751018061
Author: jjg
Date: 2013-07-23 16:06 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/129751018061
8021215: javac gives incorrect doclint warnings on normal package statements
Reviewed-by: darcy
! src/share/classes/com/sun/tools/doclint/Checker.java
! src/share/classes/com/sun/tools/doclint/DocLint.java
! test/tools/doclint/packageTests/bad/Test.java
+ test/tools/doclint/packageTests/bad/Test.javac.out
! test/tools/doclint/packageTests/bad/Test.out
! test/tools/doclint/packageTests/bad/package-info.java
+ test/tools/doclint/packageTests/bad/package-info.javac.out
! test/tools/doclint/packageTests/bad/package-info.out
! test/tools/doclint/packageTests/good/Test.java
! test/tools/doclint/packageTests/good/package-info.java
Changeset: 558fe98d1ac0
Author: emc
Date: 2013-07-23 20:42 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/558fe98d1ac0
8016880: 42 tests in annot102* fail with compile-time errors.
Summary: Fixes error in type equality when bounds of type variables have annotations.
Reviewed-by: jjg, mcimadamore
! src/share/classes/com/sun/tools/javac/code/Types.java
+ test/tools/javac/annotations/typeAnnotations/ErasureTest.java
Changeset: 2fbe77c38802
Author: jjg
Date: 2013-07-24 17:35 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/2fbe77c38802
8020556: doclint does not check type variables for @throws
Reviewed-by: mcimadamore
! src/share/classes/com/sun/source/util/DocTrees.java
! src/share/classes/com/sun/tools/doclint/Checker.java
! src/share/classes/com/sun/tools/javac/api/JavacTrees.java
! src/share/classes/com/sun/tools/javac/comp/Env.java
! test/tools/doclint/ReferenceTest.java
Changeset: a218f7befd55
Author: jfranck
Date: 2013-07-25 11:02 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/a218f7befd55
8007961: javax.lang.model tests for repeating annotations fail in getAnnotationsByType
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/code/Symbol.java
! src/share/classes/com/sun/tools/javac/model/JavacAnnoConstructs.java
! test/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedA1Test.java
! test/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedB1Test.java
! test/tools/javac/processing/model/element/repeatingAnnotations/MixRepeatableAndOfficialContainerInheritedB2Test.java
! test/tools/javac/processing/model/element/repeatingAnnotations/RepeatableOverrideATest.java
! test/tools/javac/processing/model/element/repeatingAnnotations/RepeatableOverrideBTest.java
+ test/tools/javac/processing/model/inheritedByType/EnsureOrder.java
Changeset: 3155e77d2676
Author: mcimadamore
Date: 2013-07-25 14:47 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/3155e77d2676
8020804: javac crashes when speculative attribution infers intersection type with array component
Summary: Assertion is causing javac to crash because of lack of support for arrays in intersection types
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/code/Types.java
! src/share/classes/com/sun/tools/javac/comp/Attr.java
! src/share/classes/com/sun/tools/javac/comp/Infer.java
+ test/tools/javac/lambda/8020804/T8020804.java
Changeset: b02f28bf7f1c
Author: mcimadamore
Date: 2013-07-25 14:49 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/b02f28bf7f1c
8016081: field initialized with lambda in annotation types doesn't compile
Summary: check for annotation attributes should skip over synthetic methods
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/comp/Check.java
+ test/tools/javac/lambda/8016081/T8016081.java
Changeset: dae52d74c1fc
Author: mcimadamore
Date: 2013-07-25 14:51 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/dae52d74c1fc
8020843: javac crashes on accessibility check with method reference with typevar receiver
Summary: method reference overload check doesn't walk through type-variable receivers
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/comp/Resolve.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
+ test/tools/javac/diags/examples/ReportAccessFragment.java
+ test/tools/javac/lambda/8020843/T8020843a.java
+ test/tools/javac/lambda/8020843/T8020843a.out
+ test/tools/javac/lambda/8020843/T8020843b.java
+ test/tools/javac/lambda/8020843/T8020843b.out
! test/tools/javac/lambda/MethodReference28.out
Changeset: 37048aa3ac19
Author: lana
Date: 2013-07-26 14:08 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/37048aa3ac19
Merge
Changeset: 8c4b2987edac
Author: jlahoda
Date: 2013-07-28 10:17 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/8c4b2987edac
8020689: Missing LineNumberTable entries in compiled class files
Reviewed-by: ksrini, mcimadamore
! src/share/classes/com/sun/tools/javac/jvm/Gen.java
+ test/tools/javac/jvm/T8020689.java
Changeset: cd9e8cea1b3c
Author: jlahoda
Date: 2013-07-28 10:17 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/cd9e8cea1b3c
8021338: Diamond finder may mark a required type argument as unnecessary
Reviewed-by: mcimadamore
! src/share/classes/com/sun/tools/javac/comp/Attr.java
! test/tools/javac/generics/diamond/6939780/T6939780.java
Changeset: 7696282873f6
Author: vromero
Date: 2013-07-31 10:52 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/7696282873f6
8013179: assertion failure in javac when compiling with -source 1.6 -target 1.6
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/comp/TransTypes.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
+ test/tools/javac/diags/examples/MethodInvokedWithWrongNumberOfArgs.java
Changeset: 453a305e1165
Author: lana
Date: 2013-08-06 10:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/453a305e1165
Merge
Changeset: 6718df4cd616
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/6718df4cd616
Added tag jdk8-b102 for changeset 453a305e1165
! .hgtags
From john.coomes at oracle.com Thu Aug 8 13:45:38 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 20:45:38 +0000
Subject: hg: hsx/hotspot-rt/nashorn: 29 new changesets
Message-ID: <20130808204605.3668E48726@hg.openjdk.java.net>
Changeset: e1d19f9fd5a9
Author: jlaskey
Date: 2013-07-16 17:40 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/e1d19f9fd5a9
8017585: Exclude two failing tests from Nashorn CC run
Reviewed-by: jlaskey, sundar, attila
Contributed-by: konstantin.shefov at oracle.com
+ exclude/exclude_list.txt
+ exclude/exclude_list_cc.txt
! make/build.xml
Changeset: 71cfe4e66bcb
Author: jlaskey
Date: 2013-07-17 11:53 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/71cfe4e66bcb
8020596: Initialization of white space strings in scanner should be done with \u strings
Reviewed-by: attila, hannesw
Contributed-by: james.laskey at oracle.com
! src/jdk/nashorn/internal/parser/Lexer.java
Changeset: 3d6f6b8d8bc8
Author: hannesw
Date: 2013-07-17 18:20 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/3d6f6b8d8bc8
8020356: ClassCastException Undefined->Scope on spiltter class generated for a large switch statement
Reviewed-by: jlaskey, attila
! src/jdk/nashorn/internal/codegen/CodeGenerator.java
! src/jdk/nashorn/internal/codegen/Label.java
! src/jdk/nashorn/internal/codegen/Splitter.java
! src/jdk/nashorn/internal/codegen/WeighNodes.java
! src/jdk/nashorn/internal/ir/Block.java
! src/jdk/nashorn/internal/ir/FunctionNode.java
! src/jdk/nashorn/internal/ir/LexicalContext.java
+ test/script/basic/JDK-8020356.js
+ test/script/basic/JDK-8020356.js.EXPECTED
Changeset: e3307f1a30e5
Author: sundar
Date: 2013-07-18 18:08 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/e3307f1a30e5
8020731: Revisit checkPermission calls in Context class
Reviewed-by: attila, hannesw
! src/jdk/nashorn/api/scripting/NashornScriptEngine.java
! src/jdk/nashorn/api/scripting/ScriptObjectMirror.java
! src/jdk/nashorn/internal/objects/Global.java
! src/jdk/nashorn/internal/runtime/Context.java
! src/jdk/nashorn/internal/runtime/NativeJavaPackage.java
! src/jdk/nashorn/internal/runtime/ScriptRuntime.java
! src/jdk/nashorn/internal/runtime/WithObject.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterClassLoader.java
- src/jdk/nashorn/internal/runtime/linker/JavaAdapterGeneratorBase.java
Changeset: 624f8be5c3fe
Author: attila
Date: 2013-07-18 16:22 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/624f8be5c3fe
8020809: Java adapter should not allow overriding of caller sensitive methods
Reviewed-by: jlaskey, sundar
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
+ test/script/trusted/JDK-8020809.js
+ test/script/trusted/JDK-8020809.js.EXPECTED
Changeset: 4b06441b7624
Author: attila
Date: 2013-07-18 16:47 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/4b06441b7624
8020820: Limit access to static members of reflective classes
Reviewed-by: jlaskey, sundar
! make/build.xml
! src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java
! test/script/basic/JDK-8010946-2.js
! test/script/basic/JDK-8010946-2.js.EXPECTED
! test/script/basic/NASHORN-473.js
+ test/script/basic/classloader.js
+ test/script/basic/classloader.js.EXPECTED
! test/script/basic/javaarray.js
! test/script/sandbox/classloader.js.EXPECTED
! test/script/sandbox/reflection.js
! test/src/jdk/nashorn/api/javaaccess/BooleanAccessTest.java
! test/src/jdk/nashorn/api/javaaccess/NumberAccessTest.java
! test/src/jdk/nashorn/api/javaaccess/ObjectAccessTest.java
! test/src/jdk/nashorn/api/javaaccess/StringAccessTest.java
Changeset: 0cfa27ed82fe
Author: sundar
Date: 2013-07-23 18:17 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/0cfa27ed82fe
8021122: Not all callables are handled for toString and other function valued properties
Reviewed-by: attila, hannesw, jlaskey
! src/jdk/nashorn/internal/ir/debug/ASTWriter.java
! src/jdk/nashorn/internal/objects/Global.java
! src/jdk/nashorn/internal/objects/NativeArray.java
! src/jdk/nashorn/internal/objects/NativeDate.java
! src/jdk/nashorn/internal/objects/NativeJSON.java
! src/jdk/nashorn/internal/objects/NativeObject.java
! src/jdk/nashorn/internal/runtime/Context.java
! src/jdk/nashorn/internal/runtime/ListAdapter.java
! src/jdk/nashorn/internal/runtime/ScriptRuntime.java
! src/jdk/nashorn/internal/runtime/arrays/IteratorAction.java
! src/jdk/nashorn/internal/runtime/linker/Bootstrap.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! src/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java
+ test/script/basic/JDK-8021122.js
+ test/script/basic/JDK-8021122.js.EXPECTED
Changeset: e86b297d26aa
Author: jlaskey
Date: 2013-07-23 12:00 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/e86b297d26aa
8021130: Comments need to be tokens
Reviewed-by: lagergren, attila
Contributed-by: james.laskey at oracle.com
! src/jdk/nashorn/internal/parser/AbstractParser.java
! src/jdk/nashorn/internal/parser/Lexer.java
! src/jdk/nashorn/internal/parser/TokenType.java
Changeset: ccbea9172aa5
Author: sundar
Date: 2013-07-23 21:45 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/ccbea9172aa5
8021164: REGRESSION: test262 failures after JDK-8021122
Reviewed-by: jlaskey, hannesw
! src/jdk/nashorn/internal/runtime/linker/Bootstrap.java
Changeset: 4cb1780bc385
Author: sundar
Date: 2013-07-23 21:51 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/4cb1780bc385
Merge
- src/jdk/nashorn/internal/runtime/linker/JavaAdapterGeneratorBase.java
Changeset: 8b97fe2b7c98
Author: attila
Date: 2013-07-23 18:28 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/8b97fe2b7c98
8021129: Use public lookup again
Reviewed-by: lagergren, sundar
! src/jdk/internal/dynalink/beans/AbstractJavaLinker.java
! src/jdk/internal/dynalink/beans/FacetIntrospector.java
- src/jdk/internal/dynalink/beans/SafeUnreflector.java
- src/jdk/internal/dynalink/beans/SafeUnreflectorImpl.java
- src/jdk/internal/dynalink/beans/SandboxClassLoader.java
- src/jdk/internal/dynalink/beans/sandbox/Unreflector.java
+ test/script/trusted/JDK-8021129.js
+ test/script/trusted/JDK-8021129.js.EXPECTED
+ test/src/jdk/nashorn/internal/test/models/InternalRunnable.java
+ test/src/jdk/nashorn/internal/test/models/RestrictedRunnable.java
+ test/src/jdk/nashorn/test/models/InternalRunnableSuperclass.java
Changeset: a58a07a00122
Author: attila
Date: 2013-07-24 11:13 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/a58a07a00122
8021189: Prevent access to constructors of restricted classes
Reviewed-by: lagergren, sundar
! src/jdk/internal/dynalink/beans/AbstractJavaLinker.java
! src/jdk/internal/dynalink/beans/FacetIntrospector.java
! src/jdk/internal/dynalink/beans/StaticClassLinker.java
! test/script/trusted/JDK-8006529.js
! test/script/trusted/JDK-8021129.js
+ test/script/trusted/JDK-8021189.js
+ test/script/trusted/JDK-8021189.js.EXPECTED
Changeset: e4efb3ce97b2
Author: attila
Date: 2013-07-24 12:48 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/e4efb3ce97b2
8021246: Fix regression for 8021189
Reviewed-by: lagergren, sundar
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! test/script/trusted/JDK-8006529.js
Changeset: 2a25917777f7
Author: hannesw
Date: 2013-07-24 13:16 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/2a25917777f7
8020718: RETURN symbol has wrong type in split functions
Reviewed-by: lagergren, attila
! src/jdk/nashorn/internal/codegen/CodeGenerator.java
! src/jdk/nashorn/internal/codegen/FinalizeTypes.java
! src/jdk/nashorn/internal/codegen/MethodEmitter.java
! src/jdk/nashorn/internal/codegen/SplitMethodEmitter.java
! src/jdk/nashorn/internal/ir/Block.java
! src/jdk/nashorn/internal/ir/FunctionNode.java
! src/jdk/nashorn/internal/ir/IdentNode.java
! src/jdk/nashorn/internal/ir/Symbol.java
Changeset: 573cc6eb66ae
Author: jlaskey
Date: 2013-07-24 08:25 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/573cc6eb66ae
Merge
- src/jdk/internal/dynalink/beans/SafeUnreflector.java
- src/jdk/internal/dynalink/beans/SafeUnreflectorImpl.java
- src/jdk/internal/dynalink/beans/SandboxClassLoader.java
- src/jdk/internal/dynalink/beans/sandbox/Unreflector.java
Changeset: dc54df348a58
Author: sundar
Date: 2013-07-24 20:28 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/dc54df348a58
8021262: Make nashorn access checks consistent with underlying dynalink
Reviewed-by: jlaskey, lagergren, attila
! make/code_coverage.xml
! src/jdk/nashorn/internal/codegen/SpillObjectCreator.java
! src/jdk/nashorn/internal/objects/NativeDate.java
! src/jdk/nashorn/internal/objects/NativeObject.java
! src/jdk/nashorn/internal/runtime/Context.java
! src/jdk/nashorn/internal/runtime/NashornLoader.java
! src/jdk/nashorn/internal/runtime/PropertyMap.java
! src/jdk/nashorn/internal/runtime/ScriptObject.java
! src/jdk/nashorn/internal/runtime/ScriptRuntime.java
! src/jdk/nashorn/internal/runtime/Source.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterClassLoader.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java
! src/jdk/nashorn/internal/runtime/linker/LinkerCallSite.java
! src/jdk/nashorn/internal/runtime/linker/NashornBottomLinker.java
! src/jdk/nashorn/internal/runtime/linker/NashornStaticClassLinker.java
! src/jdk/nashorn/internal/runtime/linker/ReflectionCheckLinker.java
! test/script/sandbox/nashorninternals.js
! test/script/trusted/JDK-8006529.js
! test/script/trusted/JDK-8021129.js
! test/script/trusted/JDK-8021189.js
! test/script/trusted/JDK-8021189.js.EXPECTED
! test/src/jdk/nashorn/test/models/InternalRunnableSuperclass.java
Changeset: d203d68f6624
Author: sundar
Date: 2013-07-24 21:01 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/d203d68f6624
8021294: --verify-code option results in AnalyzerException
Reviewed-by: hannesw, jlaskey
! src/jdk/nashorn/internal/runtime/Context.java
Changeset: 5c035c4ccc61
Author: sundar
Date: 2013-07-25 14:05 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/5c035c4ccc61
8021252: invokeMethod throws NoSuchMethodException when script object is from different script context
Reviewed-by: lagergren, hannesw
! src/jdk/nashorn/api/scripting/NashornScriptEngine.java
! src/jdk/nashorn/api/scripting/ScriptObjectMirror.java
! test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
Changeset: f74faac51bfb
Author: hannesw
Date: 2013-07-25 11:56 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/f74faac51bfb
8021244: Inconsistent stackmap with splitter threshold set very low
Reviewed-by: sundar, lagergren
! src/jdk/nashorn/internal/codegen/Lower.java
! src/jdk/nashorn/internal/ir/Block.java
Changeset: f22ca0f9b6ee
Author: sundar
Date: 2013-07-25 20:10 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/f22ca0f9b6ee
8021361: ClassCastException:.ScriptObjectMirror -> ScriptObject when getInterface called on object from different ScriptContext
Reviewed-by: jlaskey, attila
! src/jdk/nashorn/api/scripting/NashornScriptEngine.java
! src/jdk/nashorn/api/scripting/ScriptObjectMirror.java
+ src/jdk/nashorn/api/scripting/resources/Messages.properties
! src/jdk/nashorn/internal/runtime/ScriptObject.java
! test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
Changeset: d55856f82352
Author: lana
Date: 2013-07-26 14:08 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/d55856f82352
Merge
Changeset: f6588f168d79
Author: hannesw
Date: 2013-07-26 13:50 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/f6588f168d79
8020719: Run tests with reduced splitter threshold
Reviewed-by: lagergren, sundar, jlaskey
! make/build.xml
! make/project.properties
+ test/script/basic/NASHORN-592-dual.js
+ test/script/basic/NASHORN-592-dual.js.EXPECTED
+ test/script/basic/compile-octane-splitter.js
+ test/script/basic/compile-octane-splitter.js.EXPECTED
+ test/script/basic/splitter.js
+ test/script/basic/splitter.js.EXPECTED
- test/script/representations/NASHORN-592a.js
! test/src/jdk/nashorn/internal/test/framework/AbstractScriptRunnable.java
! test/src/jdk/nashorn/internal/test/framework/ScriptRunnable.java
! test/src/jdk/nashorn/internal/test/framework/TestConfig.java
! test/src/jdk/nashorn/internal/test/framework/TestFinder.java
Changeset: 17a947418e65
Author: jlaskey
Date: 2013-07-26 09:17 -0300
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/17a947418e65
8021321: Two runsunspider tests fail after updating sunspider to 1.0
Reviewed-by: jlaskey, sundar
Contributed-by: michael.horowitz at oracle.com
! test/script/basic/runsunspider.js
Changeset: fbd21b00197b
Author: sundar
Date: 2013-07-26 20:10 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/fbd21b00197b
8021571: @fork tests should use VM options passed from project.properties
Reviewed-by: lagergren, hannesw, jlaskey
! buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/ClassGenerator.java
! buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/ConstructorGenerator.java
! buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen/PrototypeGenerator.java
! make/project.properties
! src/jdk/nashorn/internal/objects/BoundScriptFunctionImpl.java
! src/jdk/nashorn/internal/objects/PrototypeObject.java
! src/jdk/nashorn/internal/runtime/AccessorProperty.java
! src/jdk/nashorn/internal/runtime/FinalScriptFunctionData.java
! src/jdk/nashorn/internal/runtime/ListAdapter.java
! src/jdk/nashorn/internal/runtime/Property.java
! src/jdk/nashorn/internal/runtime/PropertyListenerManager.java
! src/jdk/nashorn/internal/runtime/ScriptFunctionData.java
! src/jdk/nashorn/internal/runtime/UserAccessorProperty.java
! src/jdk/nashorn/internal/runtime/WithObject.java
! src/jdk/nashorn/internal/runtime/linker/AdaptationException.java
! src/jdk/nashorn/internal/runtime/linker/AdaptationResult.java
! src/jdk/nashorn/internal/runtime/linker/InvokeByName.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java
! src/jdk/nashorn/internal/runtime/linker/JavaAdapterServices.java
! src/jdk/nashorn/internal/runtime/linker/JavaArgumentConverters.java
! src/jdk/nashorn/internal/runtime/linker/NashornCallSiteDescriptor.java
! src/jdk/nashorn/internal/runtime/linker/NashornLinker.java
! src/jdk/nashorn/internal/runtime/linker/PrimitiveLookup.java
! src/jdk/nashorn/internal/runtime/options/KeyValueOption.java
! src/jdk/nashorn/internal/runtime/options/OptionTemplate.java
! test/src/jdk/nashorn/internal/test/framework/AbstractScriptRunnable.java
! test/src/jdk/nashorn/internal/test/framework/ScriptRunnable.java
! test/src/jdk/nashorn/internal/test/framework/TestConfig.java
Changeset: 5fc6b7f11289
Author: sundar
Date: 2013-07-29 10:28 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/5fc6b7f11289
Merge
- test/script/representations/NASHORN-592a.js
Changeset: 0532397d0732
Author: sundar
Date: 2013-07-29 18:07 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/0532397d0732
8012792: print function defined in engine.js does not handle multiple arguments
Reviewed-by: hannesw
! src/jdk/nashorn/api/scripting/resources/engine.js
! test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java
Changeset: 7d5d24bdb671
Author: sundar
Date: 2013-07-29 21:56 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/7d5d24bdb671
Merge
Changeset: e966ff0a3ffe
Author: lana
Date: 2013-08-06 10:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/e966ff0a3ffe
Merge
Changeset: 795cff5c1b5c
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/795cff5c1b5c
Added tag jdk8-b102 for changeset e966ff0a3ffe
! .hgtags
From coleen.phillimore at oracle.com Thu Aug 8 13:56:01 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Thu, 08 Aug 2013 16:56:01 -0400
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
In-Reply-To: <5203F619.3020308@oracle.com>
References: <52017AC9.9040809@oracle.com> <5203F619.3020308@oracle.com>
Message-ID: <520405E1.20503@oracle.com>
Hi Yumin,
With the test_env.sh script a lot of things in the case statement are
now set by that script, so you don't need lines 56-58.
Also lines 90 and 91 don't match - it doesn't echo what it does.
Otherwise, it looks fine. I don't need to see the code again after you
fix these (but verify the changes don't break anything!)
Thanks,
Coleen
On 08/08/2013 03:48 PM, Yumin Qi wrote:
> Hi,
>
> Thanks for the comments from David and Ioi --- I misunderstand the
> problem, the problem is in shell script in which
>
> if [...]
>
> will change result $? since it always be the result of last script
> cmd. Now fix by recording the result in a variable.
>
> http://cr.openjdk.java.net/~minqi/8019583/webrev1
>
> Thanks
> Yumin
>
>
> On 8/6/2013 3:38 PM, Yumin Qi wrote:
>> Please review:
>>
>> http://cr.openjdk.java.net/~minqi/8019583/webrev0/
>>
>>
>> Summary: The test will always pass since TestMT.java will always
>> return value 0 to shell. Fix by recording failure value and exit with
>> it.
>>
>> Thanks
>> Yumin
>
From yumin.qi at oracle.com Thu Aug 8 14:16:09 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Thu, 08 Aug 2013 14:16:09 -0700
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
In-Reply-To: <520405E1.20503@oracle.com>
References: <52017AC9.9040809@oracle.com> <5203F619.3020308@oracle.com>
<520405E1.20503@oracle.com>
Message-ID: <52040A99.6010902@oracle.com>
Thanks Coleen and Ioi for the review!
Yumin
On 8/8/2013 1:56 PM, Coleen Phillimore wrote:
>
> Hi Yumin,
> With the test_env.sh script a lot of things in the case statement are
> now set by that script, so you don't need lines 56-58.
>
> Also lines 90 and 91 don't match - it doesn't echo what it does.
>
> Otherwise, it looks fine. I don't need to see the code again after
> you fix these (but verify the changes don't break anything!)
>
> Thanks,
> Coleen
>
> On 08/08/2013 03:48 PM, Yumin Qi wrote:
>> Hi,
>>
>> Thanks for the comments from David and Ioi --- I misunderstand
>> the problem, the problem is in shell script in which
>>
>> if [...]
>>
>> will change result $? since it always be the result of last script
>> cmd. Now fix by recording the result in a variable.
>>
>> http://cr.openjdk.java.net/~minqi/8019583/webrev1
>>
>> Thanks
>> Yumin
>>
>>
>> On 8/6/2013 3:38 PM, Yumin Qi wrote:
>>> Please review:
>>>
>>> http://cr.openjdk.java.net/~minqi/8019583/webrev0/
>>>
>>>
>>> Summary: The test will always pass since TestMT.java will always
>>> return value 0 to shell. Fix by recording failure value and exit
>>> with it.
>>>
>>> Thanks
>>> Yumin
>>
>
From david.holmes at oracle.com Thu Aug 8 14:18:00 2013
From: david.holmes at oracle.com (David Holmes)
Date: Fri, 09 Aug 2013 07:18:00 +1000
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <5203E8D7.107@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
<5203E8D7.107@oracle.com>
Message-ID: <52040B08.8020401@oracle.com>
On 9/08/2013 4:52 AM, Ioi Lam wrote:
> |Hmmm, I used JDK6 from OEL 6.0 (derived from RedHat), which apparently
> works differently
> (better?) than the official JDK6 build. Maybe Redhat fixed this in their
> own repo??||
Their hotspot version is much later - hs20 vs hs17
David
-----
> ||
> |
> |==OEL6================================================
> ||
> ||sc11136754 ~$ uname -a||
> ||Linux sc11136754 2.6.39-100.5.1.el6uek.x86_64 #1 SMP Tue Mar 6
> 20:26:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux||
> ||sc11136754 ~$ type java||
> ||java is hashed (/usr/bin/java)||
> ||sc11136754 ~$ java -version||
> ||java version "1.6.0_22"||
> ||OpenJDK Runtime Environment (IcedTea6 1.10.4)
> (rhel-1.41.1.10.4.el6-x86_64)||
> ||OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)||
> ||sc11136754 ~$ java -showversion -cp . -Xbootclasspath/a:foo.jar test2||
> ||Error occurred during initialization of VM||
> ||java/lang/ClassNotFoundException: error in opening JAR file foo.jar||
> ||
> ==OFFICIAL============================================
> ||
> sc11136754 ~$ /java/re/jdk/6_22/latest/binaries/linux-amd64/bin/java
> -showversion -cp . -Xbootclasspath/a:foo.jar test2
> java version "1.6.0_22"
> Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
> Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
>
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # Internal Error (exceptions.cpp:367), pid=25167, tid=140510319580928
> # Error: ExceptionMark destructor expects no pending exceptions
> #
> # JRE version: 6.0_22-b04
> # Java VM: Java HotSpot(TM) 64-Bit Server VM (17.1-b03 mixed mode
> linux-amd64 )
> # An error report file with more information is saved as:
> # /home/iklam/hs_err_pid25167.log
> #
> # If you would like to submit a bug report, please visit:
> # http://java.sun.com/webapps/bugreport/crash.jsp
> #
> |
> |======================================================
> ||
> ||- Ioi|
>
> On 08/08/2013 11:08 AM, Calvin Cheung wrote:
>> Hi Ioi, David,
>>
>> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>>> |JDK6 seems to handle this better. I have written a simple
>>> stand-alone test case that doesn't require truncating JAR files in
>>> the JDK:||
>>> ||
>>> ||=========================||
>>> ||/*||
>>> ||javac test2.java||
>>> ||rm -f foo.jar||
>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>> ||touch foo.jar||
>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>> ||*/||
>>> ||
>>> ||public class test2 {||
>>> || public static void main(String args[]) {||
>>> || try {||
>>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>>> ||System.out.println(Class.forName("xxx"));||
>>> || } catch (Throwable t) {||
>>> || t.printStackTrace();||
>>> || }||
>>> || }||
>>> ||}||
>>> ||=========================||
>>> | |
>>> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
>>> -Xbootclasspath/a:foo.jar test2" command.||
>>> |
>> |I saw crash with the latest 6 update release with both test cases.
>> The crash seems to be at the same spot.
>> |
>>> |||
>>> ||So I think the correct fix is to restore the JDK6 behavior (not
>>> sure if it's already the same with your patch, but worth checking),
>>> and also add a new jtreg test into hotspot.||
>>> |
>> |I checked the jdk 6 code and those 3 methods which I changed look the
>> same as jdk 8.
>> Sure, I can add a jtreg test.
>> |
>>> |||
>>> ||Thanks||
>>> ||- Ioi||
>>> ||
>>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>>> |
>>>> |Hi Calvin, ||
>>>> | |
>>>> ||It seems to me that this code has a general problem with
>>>> exceptions. If exceptions can be posted then methods should be
>>>> declared with a last parameter of TRAPS and called with a CHECK_
>>>> macro. The way this code is written it does not seem to expect any
>>>> exceptions to be possible. I would check with Karen on this. ||
>>>> |
>> |I was thinking about that but that would involves a bit more changes.
>> I can give it a try.
>> |
>>>> || |
>>>> ||This addition seems unused: ||
>>>> | |
>>>> ||+ Thread* THREAD = thread; ||
>>>> |
>> |It is required for the THROW_MSG().
>> It won't be needed if the method is declared with TRAPS as the last
>> parameter (I think).
>>
>> thanks,
>> Calvin
>> |
>>>> || |
>>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>>>> exceptions - don't know what the thought process was there :) ||
>>>> | |
>>>> ||David ||
>>>> | |
>>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>>> |
>>>>> |Please review this small fix for fixing a fatal error in ||
>>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>>> ||ClassLoader::create_class_path_entry(). I could reproduce similar
>>>>> crash ||
>>>>> ||by trying to load a class from an empty jar which is in the ||
>>>>> ||bootclasspath. The following program can trigger the crash if the ||
>>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>>> | |
>>>>> ||public class TestForName { ||
>>>>> || public static void main(String[] args) { ||
>>>>> || try { ||
>>>>> || Class cls =
>>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>>> || System.out.println("Class = " + cls.getName()); ||
>>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>>> || cnfe.printStackTrace(); ||
>>>>> || } ||
>>>>> || } ||
>>>>> ||} ||
>>>>> | |
>>>>> ||The fix also changes the assert() in
>>>>> LazyClassPathEntry::resolve_entry() ||
>>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>>> above test ||
>>>>> ||scenario. ||
>>>>> | |
>>>>> ||With the fix, the following ClassNotFoundException will be thrown ||
>>>>> ||instead of a crash: ||
>>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>>> || at java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>>> || at java.security.AccessController.doPrivileged(Native
>>>>> Method) ||
>>>>> || at
>>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>>> || at
>>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>>> || at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>>> || at java.lang.Class.forName0(Native Method) ||
>>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>>> || at TestForName.main(TestForName.java:6) ||
>>>>> | |
>>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>>> | |
>>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>>> | |
>>>>> ||Tests: ||
>>>>> || jprt, vm.quick.testlist ||
>>>>> | |
>>>>> ||thanks, ||
>>>>> ||Calvin ||
>>>>> | |
>>>>> | |
>>>>> |
>>> |
>>> |
>>
>
From david.holmes at oracle.com Thu Aug 8 14:25:04 2013
From: david.holmes at oracle.com (David Holmes)
Date: Fri, 09 Aug 2013 07:25:04 +1000
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
In-Reply-To: <520405E1.20503@oracle.com>
References: <52017AC9.9040809@oracle.com> <5203F619.3020308@oracle.com>
<520405E1.20503@oracle.com>
Message-ID: <52040CB0.2040107@oracle.com>
+1 from me.
On 9/08/2013 6:56 AM, Coleen Phillimore wrote:
>
> Hi Yumin,
> With the test_env.sh script a lot of things in the case statement are
> now set by that script, so you don't need lines 56-58.
Regardless of test_env.sh setting variables before you do an exit is
kind of completely pointless ;-)
Cheers,
David
> Also lines 90 and 91 don't match - it doesn't echo what it does.
>
> Otherwise, it looks fine. I don't need to see the code again after you
> fix these (but verify the changes don't break anything!)
>
> Thanks,
> Coleen
>
> On 08/08/2013 03:48 PM, Yumin Qi wrote:
>> Hi,
>>
>> Thanks for the comments from David and Ioi --- I misunderstand the
>> problem, the problem is in shell script in which
>>
>> if [...]
>>
>> will change result $? since it always be the result of last script
>> cmd. Now fix by recording the result in a variable.
>>
>> http://cr.openjdk.java.net/~minqi/8019583/webrev1
>>
>> Thanks
>> Yumin
>>
>>
>> On 8/6/2013 3:38 PM, Yumin Qi wrote:
>>> Please review:
>>>
>>> http://cr.openjdk.java.net/~minqi/8019583/webrev0/
>>>
>>>
>>> Summary: The test will always pass since TestMT.java will always
>>> return value 0 to shell. Fix by recording failure value and exit with
>>> it.
>>>
>>> Thanks
>>> Yumin
>>
>
From yumin.qi at oracle.com Thu Aug 8 14:26:36 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Thu, 08 Aug 2013 14:26:36 -0700
Subject: RFR: 8019583: [TESTBUG] runtime/7107135 always passes
In-Reply-To: <52040CB0.2040107@oracle.com>
References: <52017AC9.9040809@oracle.com> <5203F619.3020308@oracle.com>
<520405E1.20503@oracle.com> <52040CB0.2040107@oracle.com>
Message-ID: <52040D0C.9010901@oracle.com>
On 8/8/2013 2:25 PM, David Holmes wrote:
> +1 from me.
>
> On 9/08/2013 6:56 AM, Coleen Phillimore wrote:
>>
>> Hi Yumin,
>> With the test_env.sh script a lot of things in the case statement are
>> now set by that script, so you don't need lines 56-58.
>
> Regardless of test_env.sh setting variables before you do an exit is
> kind of completely pointless ;-)
>
Thanks, agree that does not make sense.
Yumin
> Cheers,
> David
>
>> Also lines 90 and 91 don't match - it doesn't echo what it does.
>>
>> Otherwise, it looks fine. I don't need to see the code again after you
>> fix these (but verify the changes don't break anything!)
>>
>> Thanks,
>> Coleen
>>
>> On 08/08/2013 03:48 PM, Yumin Qi wrote:
>>> Hi,
>>>
>>> Thanks for the comments from David and Ioi --- I misunderstand the
>>> problem, the problem is in shell script in which
>>>
>>> if [...]
>>>
>>> will change result $? since it always be the result of last script
>>> cmd. Now fix by recording the result in a variable.
>>>
>>> http://cr.openjdk.java.net/~minqi/8019583/webrev1
>>>
>>> Thanks
>>> Yumin
>>>
>>>
>>> On 8/6/2013 3:38 PM, Yumin Qi wrote:
>>>> Please review:
>>>>
>>>> http://cr.openjdk.java.net/~minqi/8019583/webrev0/
>>>>
>>>>
>>>> Summary: The test will always pass since TestMT.java will always
>>>> return value 0 to shell. Fix by recording failure value and exit with
>>>> it.
>>>>
>>>> Thanks
>>>> Yumin
>>>
>>
From ioi.lam at oracle.com Thu Aug 8 14:26:54 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Thu, 08 Aug 2013 14:26:54 -0700
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <52040B08.8020401@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
<5203E8D7.107@oracle.com> <52040B08.8020401@oracle.com>
Message-ID: <52040D1E.9000101@oracle.com>
|I found an official version that's closest to the Redhat version
(OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode). It still crashes.||
||
||sc11136754 ~$ /java/re/jdk/6_25/latest/binaries/linux-amd64/bin/java
-showversion -cp . -Xbootclasspath/a:foo.jar test2||
||java version "1.6.0_25"||
||Java(TM) SE Runtime Environment (build 1.6.0_25-b06)||
||Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)||
||
||java.lang.ClassNotFoundException ||
|| - klass: 'java/lang/ClassNotFoundException'||
||#||
||# A fatal error has been detected by the Java Runtime Environment:||
||#||
||# Internal Error (exceptions.cpp:397), pid=29955, tid=140608485558016||
||# fatal error: ExceptionMark destructor expects no pending exceptions||
||#||
||# JRE version: 6.0_25-b06||
||# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.0-b11 mixed mode
linux-amd64 compressed oops)||
||# An error report file with more information is saved as:||
||# /home/iklam/hs_err_pid29955.log||
||#||
||# If you would like to submit a bug report, please visit:||
||# http://java.sun.com/webapps/bugreport/crash.jsp||
||#||
||Aborted (core dumped)||
|
- Ioi
On 08/08/2013 02:18 PM, David Holmes wrote:
> On 9/08/2013 4:52 AM, Ioi Lam wrote:
>> |Hmmm, I used JDK6 from OEL 6.0 (derived from RedHat), which apparently
>> works differently
>> (better?) than the official JDK6 build. Maybe Redhat fixed this in their
>> own repo??||
>
> Their hotspot version is much later - hs20 vs hs17
>
> David
> -----
>
>> ||
>> |
>> |==OEL6================================================
>> ||
>> ||sc11136754 ~$ uname -a||
>> ||Linux sc11136754 2.6.39-100.5.1.el6uek.x86_64 #1 SMP Tue Mar 6
>> 20:26:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux||
>> ||sc11136754 ~$ type java||
>> ||java is hashed (/usr/bin/java)||
>> ||sc11136754 ~$ java -version||
>> ||java version "1.6.0_22"||
>> ||OpenJDK Runtime Environment (IcedTea6 1.10.4)
>> (rhel-1.41.1.10.4.el6-x86_64)||
>> ||OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)||
>> ||sc11136754 ~$ java -showversion -cp . -Xbootclasspath/a:foo.jar
>> test2||
>> ||Error occurred during initialization of VM||
>> ||java/lang/ClassNotFoundException: error in opening JAR file foo.jar||
>> ||
>> ==OFFICIAL============================================
>> ||
>> sc11136754 ~$ /java/re/jdk/6_22/latest/binaries/linux-amd64/bin/java
>> -showversion -cp . -Xbootclasspath/a:foo.jar test2
>> java version "1.6.0_22"
>> Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
>> Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
>>
>> #
>> # A fatal error has been detected by the Java Runtime Environment:
>> #
>> # Internal Error (exceptions.cpp:367), pid=25167, tid=140510319580928
>> # Error: ExceptionMark destructor expects no pending exceptions
>> #
>> # JRE version: 6.0_22-b04
>> # Java VM: Java HotSpot(TM) 64-Bit Server VM (17.1-b03 mixed mode
>> linux-amd64 )
>> # An error report file with more information is saved as:
>> # /home/iklam/hs_err_pid25167.log
>> #
>> # If you would like to submit a bug report, please visit:
>> # http://java.sun.com/webapps/bugreport/crash.jsp
>> #
>> |
>> |======================================================
>> ||
>> ||- Ioi|
>>
>> On 08/08/2013 11:08 AM, Calvin Cheung wrote:
>>> Hi Ioi, David,
>>>
>>> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>>>> |JDK6 seems to handle this better. I have written a simple
>>>> stand-alone test case that doesn't require truncating JAR files in
>>>> the JDK:||
>>>> ||
>>>> ||=========================||
>>>> ||/*||
>>>> ||javac test2.java||
>>>> ||rm -f foo.jar||
>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>> ||touch foo.jar||
>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>> ||*/||
>>>> ||
>>>> ||public class test2 {||
>>>> || public static void main(String args[]) {||
>>>> || try {||
>>>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>>>> ||System.out.println(Class.forName("xxx"));||
>>>> || } catch (Throwable t) {||
>>>> || t.printStackTrace();||
>>>> || }||
>>>> || }||
>>>> ||}||
>>>> ||=========================||
>>>> | |
>>>> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
>>>> -Xbootclasspath/a:foo.jar test2" command.||
>>>> |
>>> |I saw crash with the latest 6 update release with both test cases.
>>> The crash seems to be at the same spot.
>>> |
>>>> |||
>>>> ||So I think the correct fix is to restore the JDK6 behavior (not
>>>> sure if it's already the same with your patch, but worth checking),
>>>> and also add a new jtreg test into hotspot.||
>>>> |
>>> |I checked the jdk 6 code and those 3 methods which I changed look the
>>> same as jdk 8.
>>> Sure, I can add a jtreg test.
>>> |
>>>> |||
>>>> ||Thanks||
>>>> ||- Ioi||
>>>> ||
>>>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>>>> |
>>>>> |Hi Calvin, ||
>>>>> | |
>>>>> ||It seems to me that this code has a general problem with
>>>>> exceptions. If exceptions can be posted then methods should be
>>>>> declared with a last parameter of TRAPS and called with a CHECK_
>>>>> macro. The way this code is written it does not seem to expect any
>>>>> exceptions to be possible. I would check with Karen on this. ||
>>>>> |
>>> |I was thinking about that but that would involves a bit more changes.
>>> I can give it a try.
>>> |
>>>>> || |
>>>>> ||This addition seems unused: ||
>>>>> | |
>>>>> ||+ Thread* THREAD = thread; ||
>>>>> |
>>> |It is required for the THROW_MSG().
>>> It won't be needed if the method is declared with TRAPS as the last
>>> parameter (I think).
>>>
>>> thanks,
>>> Calvin
>>> |
>>>>> || |
>>>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>>>>> exceptions - don't know what the thought process was there :) ||
>>>>> | |
>>>>> ||David ||
>>>>> | |
>>>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>>>> |
>>>>>> |Please review this small fix for fixing a fatal error in ||
>>>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>>>> ||ClassLoader::create_class_path_entry(). I could reproduce similar
>>>>>> crash ||
>>>>>> ||by trying to load a class from an empty jar which is in the ||
>>>>>> ||bootclasspath. The following program can trigger the crash if
>>>>>> the ||
>>>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>>>> | |
>>>>>> ||public class TestForName { ||
>>>>>> || public static void main(String[] args) { ||
>>>>>> || try { ||
>>>>>> || Class cls =
>>>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>>>> || System.out.println("Class = " + cls.getName()); ||
>>>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>>>> || cnfe.printStackTrace(); ||
>>>>>> || } ||
>>>>>> || } ||
>>>>>> ||} ||
>>>>>> | |
>>>>>> ||The fix also changes the assert() in
>>>>>> LazyClassPathEntry::resolve_entry() ||
>>>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>>>> above test ||
>>>>>> ||scenario. ||
>>>>>> | |
>>>>>> ||With the fix, the following ClassNotFoundException will be
>>>>>> thrown ||
>>>>>> ||instead of a crash: ||
>>>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>>>> || at
>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>>>> || at
>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>>>> || at java.security.AccessController.doPrivileged(Native
>>>>>> Method) ||
>>>>>> || at
>>>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>>>> || at
>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>>>> || at
>>>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>>>> || at
>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>>>> || at java.lang.Class.forName0(Native Method) ||
>>>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>>>> || at TestForName.main(TestForName.java:6) ||
>>>>>> | |
>>>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>>>> | |
>>>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>>>> | |
>>>>>> ||Tests: ||
>>>>>> || jprt, vm.quick.testlist ||
>>>>>> | |
>>>>>> ||thanks, ||
>>>>>> ||Calvin ||
>>>>>> | |
>>>>>> | |
>>>>>> |
>>>> |
>>>> |
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130808/3c942d69/attachment-0001.html
From john.coomes at oracle.com Thu Aug 8 11:50:48 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 08 Aug 2013 18:50:48 +0000
Subject: hg: hsx/hotspot-emb/jdk: 73 new changesets
Message-ID: <20130808191623.C33ED48708@hg.openjdk.java.net>
Changeset: 2978c0a543ed
Author: prr
Date: 2013-07-22 12:52 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/2978c0a543ed
7196866: CTW fails on all Solaris platforms
Reviewed-by: prr, jrose, twisti, kvn
! src/solaris/native/sun/awt/awt_GraphicsEnv.c
! src/solaris/native/sun/java2d/x11/XRBackendNative.c
Changeset: 784589c7bc55
Author: vadim
Date: 2013-07-24 13:38 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/784589c7bc55
8008782: NPE in TrueTypeGlyphMapper
Reviewed-by: bae, prr
! src/share/classes/sun/font/TrueTypeFont.java
Changeset: db2e3a686cf3
Author: jchen
Date: 2013-07-24 12:40 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/db2e3a686cf3
8011709: [parfait] False positive: memory leak in jdk/src/share/native/sun/font/layout/CanonShaping.cpp
Reviewed-by: jgodinez, prr
! src/share/native/sun/font/layout/CanonShaping.cpp
Changeset: c2e27e7a42ae
Author: jchen
Date: 2013-07-24 13:05 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/c2e27e7a42ae
8005126: [parfait] #418 - #428 XRBackendNative.c Integer overflow
Reviewed-by: prr, vadim
! src/solaris/native/sun/java2d/x11/XRBackendNative.c
Changeset: 833f05116f7b
Author: bae
Date: 2013-07-25 17:14 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/833f05116f7b
8019201: Regression: java.awt.image.ConvolveOp throws java.awt.image.ImagingOpException
Reviewed-by: prr
! src/share/native/sun/awt/medialib/awt_ImagingLib.c
+ test/sun/awt/image/ImagingLib/SamePackingTypeTest.java
Changeset: a8b9df782017
Author: serb
Date: 2013-07-26 21:18 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/a8b9df782017
7190349: [macosx] Text (Label) is incorrectly drawn with a rotated g2d
8013569: [macosx] JLabel preferred size incorrect on retina displays with non-default font size
Reviewed-by: prr
! src/macosx/classes/sun/font/CStrike.java
! src/macosx/native/sun/font/AWTStrike.h
! src/macosx/native/sun/font/AWTStrike.m
! src/macosx/native/sun/font/CGGlyphImages.m
+ test/java/awt/Graphics2D/DrawString/DrawRotatedString.java
+ test/java/awt/Graphics2D/IncorrectTextSize/IncorrectTextSize.java
Changeset: 467a0c21790b
Author: jgodinez
Date: 2013-07-26 15:08 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/467a0c21790b
8020208: NullPointerException at sun.print.Win32PrintService.getMediaPrintables
Reviewed-by: jchen, prr
! src/windows/classes/sun/print/Win32PrintService.java
Changeset: 56c6f9a9653d
Author: jgodinez
Date: 2013-07-26 15:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/56c6f9a9653d
8016343: [macosx] Print job goes to default printer regardless of chosen printer
Reviewed-by: jchen, prr
! src/share/classes/sun/print/PSPrinterJob.java
! src/solaris/classes/sun/print/IPPPrintService.java
! src/solaris/classes/sun/print/UnixPrintJob.java
! test/javax/print/DialogMargins.java
Changeset: 1c48544c3da9
Author: lana
Date: 2013-07-26 15:46 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/1c48544c3da9
Merge
- src/share/classes/com/sun/org/apache/xml/internal/security/resource/log4j.properties
- src/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHereContext.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathAPIHolder.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathFuncHereAPI.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/XPathFuncHereAPI.java
- src/share/classes/java/util/stream/StreamBuilder.java
- src/share/classes/javax/security/auth/callback/package.html
- src/share/classes/javax/security/auth/kerberos/package.html
- src/share/classes/javax/security/auth/login/package.html
- src/share/classes/javax/security/auth/package.html
- src/share/classes/javax/security/auth/spi/package.html
- src/share/classes/javax/security/auth/x500/package.html
- src/share/classes/javax/security/cert/package.html
- src/share/classes/javax/security/sasl/package.html
- test/java/util/Collections/EmptySortedSet.java
Changeset: 921338e44ba7
Author: lana
Date: 2013-07-26 17:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/921338e44ba7
Merge
Changeset: 046025f78ea8
Author: jgodinez
Date: 2013-07-30 13:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/046025f78ea8
8021835: Fix for 8016343 will not compile on Windows.
Reviewed-by: jchen, prr
! src/share/classes/sun/print/PSPrinterJob.java
Changeset: 7f0e569c5a66
Author: bae
Date: 2013-07-31 13:11 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/7f0e569c5a66
8020983: OutOfMemoryError caused by non garbage collected JPEGImageWriter Instances
Reviewed-by: prr, flar
! src/share/native/sun/awt/image/jpeg/imageioJPEG.c
+ test/javax/imageio/plugins/jpeg/JpegWriterLeakTest.java
Changeset: 607ad960fe24
Author: malenkov
Date: 2013-07-22 15:36 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/607ad960fe24
8019975: closed/javax/swing/JFileChooser/4966171/bug4966171.java throws java.io.NotSerializableException: javax.swing.plaf.basic.BasicFileChooserUI$AcceptAllFileFilter
Reviewed-by: alexsch
! src/share/classes/javax/swing/JFileChooser.java
Changeset: 3cbe376233a9
Author: malenkov
Date: 2013-07-22 20:33 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/3cbe376233a9
8015926: NPE when using SynthTreeUI's expandPath()
Reviewed-by: alexsch
! src/share/classes/javax/swing/plaf/synth/SynthTreeUI.java
+ test/javax/swing/plaf/synth/Test8015926.java
Changeset: bdad697c03aa
Author: pchelko
Date: 2013-07-23 13:09 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/bdad697c03aa
7184951: [macosx] Exception at java.awt.datatransfer on headless mode (only in GUI session)
Reviewed-by: art, anthony
! src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java
Changeset: 99ee6ddab113
Author: serb
Date: 2013-07-24 17:14 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/99ee6ddab113
8017189: [macosx] AWT program menu disabled on Mac
Reviewed-by: leonidr, anthony
! src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
! src/macosx/native/sun/awt/AWTWindow.h
! src/macosx/native/sun/awt/AWTWindow.m
! src/macosx/native/sun/awt/CMenuBar.m
Changeset: 7bd6eda2d217
Author: leonidr
Date: 2013-07-26 16:22 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/7bd6eda2d217
8007267: [macosx] com.apple.eawt.Application.setDefaultMenuBar is not working
Reviewed-by: anthony, serb
! src/macosx/classes/com/apple/eawt/_AppMenuBarHandler.java
! src/macosx/classes/sun/lwawt/macosx/CMenuComponent.java
! src/macosx/native/sun/awt/AWTWindow.m
! src/macosx/native/sun/awt/CMenuItem.m
Changeset: 65c90209edbb
Author: lana
Date: 2013-07-26 15:19 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/65c90209edbb
Merge
- src/share/classes/com/sun/org/apache/xml/internal/security/resource/log4j.properties
- src/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHereContext.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathAPIHolder.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathFuncHereAPI.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/XPathFuncHereAPI.java
- src/share/classes/java/util/stream/StreamBuilder.java
- src/share/classes/javax/security/auth/callback/package.html
- src/share/classes/javax/security/auth/kerberos/package.html
- src/share/classes/javax/security/auth/login/package.html
- src/share/classes/javax/security/auth/package.html
- src/share/classes/javax/security/auth/spi/package.html
- src/share/classes/javax/security/auth/x500/package.html
- src/share/classes/javax/security/cert/package.html
- src/share/classes/javax/security/sasl/package.html
- test/java/util/Collections/EmptySortedSet.java
Changeset: 37016eaea5d2
Author: serb
Date: 2013-07-29 16:57 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/37016eaea5d2
6230360: Spelling mistake in documentation for AWT: 1.4, 1.5, 1.6, 1.7
Reviewed-by: malenkov, art
! src/share/classes/java/awt/AWTException.java
Changeset: bf80c2965a84
Author: malenkov
Date: 2013-07-29 18:48 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/bf80c2965a84
8010782: clean up source files containing carriage return characters
Reviewed-by: alexsch, art
! src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties
! src/share/classes/com/sun/swing/internal/plaf/synth/resources/synth.properties
Changeset: 1e482f58c747
Author: ant
Date: 2013-07-30 16:15 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/1e482f58c747
8020927: JLightweightFrame API should export layout properties change notifications
Reviewed-by: anthony
! src/share/classes/sun/swing/JLightweightFrame.java
! src/share/classes/sun/swing/LightweightContent.java
Changeset: 336a94dbecb5
Author: malenkov
Date: 2013-07-30 17:46 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/336a94dbecb5
8015300: JComboBox text sometimes become selected, sometimes not (Windows LAF)
Reviewed-by: alexsch, serb
! src/share/classes/com/sun/java/swing/plaf/windows/WindowsComboBoxUI.java
+ test/javax/swing/JComboBox/8015300/Test8015300.java
Changeset: 726ac8f75b54
Author: lana
Date: 2013-07-31 12:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/726ac8f75b54
Merge
Changeset: 6e10d93273d0
Author: juh
Date: 2013-07-18 10:49 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/6e10d93273d0
8020426: Fix doclint accessibility issues in java.io
Reviewed-by: mduigou, darcy, chegar
! src/share/classes/java/io/DataInput.java
! src/share/classes/java/io/File.java
! src/share/classes/java/io/ObjectStreamField.java
! src/share/classes/java/io/RandomAccessFile.java
Changeset: b39797bb86c0
Author: sherman
Date: 2013-07-18 11:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/b39797bb86c0
8016025: JSR 310 DateTime API Updates IV
8020418: Cleanup of -Xlint warnings in java.time
8016623: test/java/time/format/TestDateTimeTextProvider.java failing
Summary: Integration of JSR310 Date/Time API update IV
Reviewed-by: sherman
Contributed-by: scolebourne at joda.org, roger.riggs at oracle.com, masayoshi.okutsu at oracle.com, patrick.zhang at oracle.com, chand.basha at oracle.com
! src/share/classes/java/time/DayOfWeek.java
! src/share/classes/java/time/Duration.java
! src/share/classes/java/time/Instant.java
! src/share/classes/java/time/LocalDate.java
! src/share/classes/java/time/LocalDateTime.java
! src/share/classes/java/time/LocalTime.java
! src/share/classes/java/time/Month.java
! src/share/classes/java/time/MonthDay.java
! src/share/classes/java/time/OffsetDateTime.java
! src/share/classes/java/time/OffsetTime.java
! src/share/classes/java/time/Period.java
! src/share/classes/java/time/Year.java
! src/share/classes/java/time/YearMonth.java
! src/share/classes/java/time/ZoneId.java
! src/share/classes/java/time/ZoneOffset.java
! src/share/classes/java/time/ZoneRegion.java
! src/share/classes/java/time/ZonedDateTime.java
! src/share/classes/java/time/chrono/ChronoDateImpl.java
! src/share/classes/java/time/chrono/ChronoLocalDate.java
! src/share/classes/java/time/chrono/ChronoLocalDateTime.java
! src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java
! src/share/classes/java/time/chrono/ChronoZonedDateTime.java
! src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java
! src/share/classes/java/time/chrono/Chronology.java
! src/share/classes/java/time/chrono/Era.java
! src/share/classes/java/time/chrono/HijrahChronology.java
! src/share/classes/java/time/chrono/HijrahDate.java
! src/share/classes/java/time/chrono/IsoChronology.java
! src/share/classes/java/time/chrono/JapaneseChronology.java
! src/share/classes/java/time/chrono/JapaneseDate.java
! src/share/classes/java/time/chrono/JapaneseEra.java
! src/share/classes/java/time/chrono/MinguoChronology.java
! src/share/classes/java/time/chrono/MinguoDate.java
! src/share/classes/java/time/chrono/ThaiBuddhistChronology.java
! src/share/classes/java/time/chrono/ThaiBuddhistDate.java
! src/share/classes/java/time/chrono/package-info.java
! src/share/classes/java/time/format/DateTimeFormatter.java
! src/share/classes/java/time/format/DateTimeFormatterBuilder.java
! src/share/classes/java/time/format/DateTimePrintContext.java
! src/share/classes/java/time/format/Parsed.java
! src/share/classes/java/time/temporal/ChronoField.java
! src/share/classes/java/time/temporal/ChronoUnit.java
! src/share/classes/java/time/temporal/IsoFields.java
! src/share/classes/java/time/temporal/JulianFields.java
! src/share/classes/java/time/temporal/Temporal.java
! src/share/classes/java/time/temporal/TemporalAccessor.java
! src/share/classes/java/time/temporal/TemporalField.java
! src/share/classes/java/time/temporal/TemporalUnit.java
! src/share/classes/java/time/temporal/ValueRange.java
! src/share/classes/java/time/temporal/WeekFields.java
! src/share/lib/hijrah-config-umalqura.properties
! test/java/time/tck/java/time/MockSimplePeriod.java
! test/java/time/tck/java/time/TCKClock_Fixed.java
! test/java/time/tck/java/time/TCKDayOfWeek.java
! test/java/time/tck/java/time/TCKInstant.java
! test/java/time/tck/java/time/TCKLocalDate.java
! test/java/time/tck/java/time/TCKLocalDateTime.java
! test/java/time/tck/java/time/TCKLocalTime.java
! test/java/time/tck/java/time/TCKMonth.java
! test/java/time/tck/java/time/TCKMonthDay.java
! test/java/time/tck/java/time/TCKOffsetDateTime.java
! test/java/time/tck/java/time/TCKOffsetTime.java
! test/java/time/tck/java/time/TCKPeriod.java
! test/java/time/tck/java/time/TCKYear.java
! test/java/time/tck/java/time/TCKYearMonth.java
! test/java/time/tck/java/time/TCKZoneId.java
! test/java/time/tck/java/time/TCKZonedDateTime.java
! test/java/time/tck/java/time/chrono/CopticDate.java
! test/java/time/tck/java/time/chrono/TCKChronoLocalDate.java
! test/java/time/tck/java/time/chrono/TCKChronoLocalDateTime.java
! test/java/time/tck/java/time/chrono/TCKChronoZonedDateTime.java
! test/java/time/tck/java/time/chrono/TCKChronology.java
! test/java/time/tck/java/time/chrono/TCKHijrahChronology.java
! test/java/time/tck/java/time/chrono/TCKHijrahEra.java
! test/java/time/tck/java/time/chrono/TCKIsoChronology.java
! test/java/time/tck/java/time/chrono/TCKJapaneseChronology.java
! test/java/time/tck/java/time/chrono/TCKJapaneseEra.java
! test/java/time/tck/java/time/chrono/TCKMinguoChronology.java
! test/java/time/tck/java/time/chrono/TCKThaiBuddhistChronology.java
+ test/java/time/tck/java/time/format/TCKFormatStyle.java
+ test/java/time/tck/java/time/format/TCKResolverStyle.java
+ test/java/time/tck/java/time/format/TCKSignStyle.java
! test/java/time/tck/java/time/format/TCKTextStyle.java
! test/java/time/tck/java/time/format/TCKZoneIdPrinterParser.java
+ test/java/time/tck/java/time/temporal/TCKChronoField.java
+ test/java/time/tck/java/time/temporal/TCKChronoUnit.java
! test/java/time/tck/java/time/temporal/TCKWeekFields.java
! test/java/time/tck/java/time/zone/TCKZoneRules.java
! test/java/time/test/java/time/MockSimplePeriod.java
! test/java/time/test/java/time/chrono/TestChronoLocalDate.java
! test/java/time/test/java/time/chrono/TestExampleCode.java
! test/java/time/test/java/time/chrono/TestJapaneseChronoImpl.java
! test/java/time/test/java/time/chrono/TestJapaneseChronology.java
! test/java/time/test/java/time/chrono/TestUmmAlQuraChronology.java
! test/java/time/test/java/time/format/TestDateTimeTextProvider.java
! test/java/time/test/java/time/format/TestNonIsoFormatter.java
! test/java/time/test/java/time/format/TestNumberPrinter.java
! test/java/time/test/java/time/format/TestReducedPrinter.java
! test/java/time/test/java/time/temporal/MockFieldNoValue.java
! test/java/time/test/java/time/temporal/MockFieldValue.java
Changeset: 2323b973adaa
Author: darcy
Date: 2013-07-18 23:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/2323b973adaa
8020810: Typo in javadoc for Class.toGenericString()
Reviewed-by: dholmes
! src/share/classes/java/lang/Class.java
! src/share/classes/java/lang/reflect/Parameter.java
Changeset: e6aeeec33e53
Author: uta
Date: 2013-07-19 12:53 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e6aeeec33e53
8016579: (process) IOException thrown by ProcessBuilder.start() method is incorrectly encoded
Reviewed-by: martin, dxu
! src/share/native/java/io/io_util.c
! src/windows/native/java/io/io_util_md.c
! src/windows/native/java/lang/ProcessImpl_md.c
Changeset: e013b32118af
Author: darcy
Date: 2013-07-19 09:42 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e013b32118af
8020948: Fix doclint issues in misc package-info.java files
Reviewed-by: dholmes, chegar
! src/share/classes/java/nio/file/attribute/package-info.java
! src/share/classes/java/util/function/package-info.java
Changeset: 4bd04969a228
Author: darcy
Date: 2013-07-20 11:39 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/4bd04969a228
8020971: Fix doclint issues in java.nio.*
Reviewed-by: lancea
! src/share/classes/java/nio/channels/package-info.java
! src/share/classes/java/nio/charset/Charset.java
! src/share/classes/java/nio/charset/MalformedInputException.java
! src/share/classes/java/nio/charset/UnmappableCharacterException.java
! src/share/classes/java/nio/file/package-info.java
Changeset: dcd89e60051a
Author: khazra
Date: 2013-07-22 15:24 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/dcd89e60051a
8020498: Crash when both libnet.so and libmawt.so are loaded
Reviewed-by: chegar, dsamersoff
! src/share/native/java/net/net_util.c
Changeset: a3a2889b1049
Author: dl
Date: 2013-07-22 15:26 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/a3a2889b1049
8020976: Ensure consistent insertion for ConcurrentHashMap
Reviewed-by: chegar
! src/share/classes/java/util/concurrent/ConcurrentHashMap.java
Changeset: a6cbb9808e4b
Author: mduigou
Date: 2013-07-22 12:59 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/a6cbb9808e4b
6799426: Adds constructor PriorityQueue(Comparator)
Reviewed-by: lancea
! src/share/classes/java/util/PriorityQueue.java
Changeset: 7716beb127d4
Author: darcy
Date: 2013-07-22 22:11 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/7716beb127d4
8021109: Add serialVersionUID to LambdaConversionException.java
Reviewed-by: jrose
! src/share/classes/java/lang/invoke/LambdaConversionException.java
Changeset: 6f3b940fe9f8
Author: igerasim
Date: 2013-07-23 18:57 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/6f3b940fe9f8
8016838: improvement of RedefineBigClass and RetransformBigClass tests
Reviewed-by: dcubed
! test/ProblemList.txt
! test/java/lang/instrument/RedefineBigClass.sh
! test/java/lang/instrument/RedefineBigClassApp.java
! test/java/lang/instrument/RetransformBigClass.sh
! test/java/lang/instrument/RetransformBigClassApp.java
Changeset: 8156630c1ed3
Author: mduigou
Date: 2013-07-23 13:20 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/8156630c1ed3
8019840: Spec updates for java.util.function
Reviewed-by: mduigou, chegar
Contributed-by: brian.goetz at oracle.com
! src/share/classes/java/util/function/BiConsumer.java
! src/share/classes/java/util/function/BiFunction.java
! src/share/classes/java/util/function/BiPredicate.java
! src/share/classes/java/util/function/BinaryOperator.java
! src/share/classes/java/util/function/BooleanSupplier.java
! src/share/classes/java/util/function/Consumer.java
! src/share/classes/java/util/function/DoubleBinaryOperator.java
! src/share/classes/java/util/function/DoubleConsumer.java
! src/share/classes/java/util/function/DoubleFunction.java
! src/share/classes/java/util/function/DoublePredicate.java
! src/share/classes/java/util/function/DoubleSupplier.java
! src/share/classes/java/util/function/DoubleToIntFunction.java
! src/share/classes/java/util/function/DoubleToLongFunction.java
! src/share/classes/java/util/function/DoubleUnaryOperator.java
! src/share/classes/java/util/function/Function.java
! src/share/classes/java/util/function/IntBinaryOperator.java
! src/share/classes/java/util/function/IntConsumer.java
! src/share/classes/java/util/function/IntFunction.java
! src/share/classes/java/util/function/IntPredicate.java
! src/share/classes/java/util/function/IntSupplier.java
! src/share/classes/java/util/function/IntToDoubleFunction.java
! src/share/classes/java/util/function/IntToLongFunction.java
! src/share/classes/java/util/function/IntUnaryOperator.java
! src/share/classes/java/util/function/LongBinaryOperator.java
! src/share/classes/java/util/function/LongConsumer.java
! src/share/classes/java/util/function/LongFunction.java
! src/share/classes/java/util/function/LongPredicate.java
! src/share/classes/java/util/function/LongSupplier.java
! src/share/classes/java/util/function/LongToDoubleFunction.java
! src/share/classes/java/util/function/LongToIntFunction.java
! src/share/classes/java/util/function/LongUnaryOperator.java
! src/share/classes/java/util/function/ObjDoubleConsumer.java
! src/share/classes/java/util/function/ObjIntConsumer.java
! src/share/classes/java/util/function/ObjLongConsumer.java
! src/share/classes/java/util/function/Predicate.java
! src/share/classes/java/util/function/Supplier.java
! src/share/classes/java/util/function/ToDoubleBiFunction.java
! src/share/classes/java/util/function/ToDoubleFunction.java
! src/share/classes/java/util/function/ToIntBiFunction.java
! src/share/classes/java/util/function/ToIntFunction.java
! src/share/classes/java/util/function/ToLongBiFunction.java
! src/share/classes/java/util/function/ToLongFunction.java
! src/share/classes/java/util/function/UnaryOperator.java
! src/share/classes/java/util/function/package-info.java
Changeset: 012996e9259f
Author: mduigou
Date: 2013-07-23 13:21 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/012996e9259f
Merge
Changeset: 187a1f2613c0
Author: sjiang
Date: 2013-07-24 15:47 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/187a1f2613c0
8016221: A unit test should not use a fix port to run a jmx connector
Reviewed-by: jbachorik, dfuchs
! test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanDoubleInvocationTest.java
! test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanInvocationTest.java
! test/com/sun/management/DiagnosticCommandMBean/DcmdMBeanTest.java
Changeset: f9224fb49890
Author: juh
Date: 2013-07-24 12:48 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/f9224fb49890
8016916: UnstructuredName should support DirectoryString
Reviewed-by: mullan
! src/share/classes/sun/security/pkcs/PKCS9Attribute.java
! src/share/classes/sun/security/tools/keytool/Main.java
+ test/sun/security/pkcs/pkcs9/UnstructuredName.java
Changeset: fd1b5adcfdf0
Author: chegar
Date: 2013-07-24 22:52 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/fd1b5adcfdf0
8021261: ProblemList.txt updates (7/2013)
Reviewed-by: alanb, mcimadamore
! test/ProblemList.txt
Changeset: a834ab2c1354
Author: mullan
Date: 2013-07-25 10:58 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/a834ab2c1354
8010748: Add PKIXRevocationChecker NO_FALLBACK option and improve SOFT_FAIL option
Reviewed-by: vinnie
! src/share/classes/java/security/cert/PKIXRevocationChecker.java
! src/share/classes/sun/security/provider/certpath/OCSP.java
! src/share/classes/sun/security/provider/certpath/OCSPResponse.java
! src/share/classes/sun/security/provider/certpath/PKIXCertPathValidator.java
! src/share/classes/sun/security/provider/certpath/ReverseState.java
! src/share/classes/sun/security/provider/certpath/RevocationChecker.java
! src/share/classes/sun/security/provider/certpath/SunCertPathBuilder.java
! test/java/security/cert/PKIXRevocationChecker/UnitTest.java
Changeset: 22a391706a0b
Author: mullan
Date: 2013-07-25 11:09 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/22a391706a0b
Merge
- make/sun/xawt/ToBin.java
- makefiles/sun/awt/X11/ToBin.java
- src/share/classes/com/sun/org/apache/xml/internal/security/resource/log4j.properties
- src/share/classes/com/sun/org/apache/xml/internal/security/transforms/implementations/FuncHereContext.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathAPIHolder.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/CachedXPathFuncHereAPI.java
- src/share/classes/com/sun/org/apache/xml/internal/security/utils/XPathFuncHereAPI.java
- src/share/classes/java/security/acl/package.html
- src/share/classes/java/security/cert/package.html
- src/share/classes/java/security/interfaces/package.html
- src/share/classes/java/security/package.html
- src/share/classes/java/security/spec/package.html
- src/share/classes/java/util/stream/StreamBuilder.java
- src/share/classes/javax/security/auth/callback/package.html
- src/share/classes/javax/security/auth/kerberos/package.html
- src/share/classes/javax/security/auth/login/package.html
- src/share/classes/javax/security/auth/package.html
- src/share/classes/javax/security/auth/spi/package.html
- src/share/classes/javax/security/auth/x500/package.html
- src/share/classes/javax/security/cert/package.html
- src/share/classes/javax/security/sasl/package.html
- src/share/classes/sun/misc/Hashing.java
- src/share/classes/sun/security/krb5/internal/rcache/CacheTable.java
- src/share/classes/sun/security/krb5/internal/rcache/ReplayCache.java
! src/share/classes/sun/security/provider/certpath/RevocationChecker.java
- src/solaris/classes/sun/awt/X11/XIconInfo.java
- src/solaris/classes/sun/awt/X11/security-icon-bw16.png
- src/solaris/classes/sun/awt/X11/security-icon-bw24.png
- src/solaris/classes/sun/awt/X11/security-icon-bw32.png
- src/solaris/classes/sun/awt/X11/security-icon-bw48.png
- src/solaris/classes/sun/awt/X11/security-icon-interim16.png
- src/solaris/classes/sun/awt/X11/security-icon-interim24.png
- src/solaris/classes/sun/awt/X11/security-icon-interim32.png
- src/solaris/classes/sun/awt/X11/security-icon-interim48.png
- src/solaris/classes/sun/awt/X11/security-icon-yellow16.png
- src/solaris/classes/sun/awt/X11/security-icon-yellow24.png
- src/solaris/classes/sun/awt/X11/security-icon-yellow32.png
- src/solaris/classes/sun/awt/X11/security-icon-yellow48.png
- src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Fedora.properties
- src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.SuSE.properties
- src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties
- src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.properties
- test/java/lang/invoke/7196190/MHProxyTest.java
- test/java/util/Collections/EmptySortedSet.java
- test/java/util/Comparators/BasicTest.java
- test/sun/misc/Hashing.java
- test/sun/security/krb5/auto/ReplayCache.java
Changeset: 21120e3682ef
Author: darcy
Date: 2013-07-25 09:59 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/21120e3682ef
8021408: Fix misc doclint issues in java.util and java.io
Reviewed-by: dholmes, chegar, psandoz
! src/share/classes/java/io/ObjectInputStream.java
! src/share/classes/java/io/ObjectOutputStream.java
! src/share/classes/java/util/jar/Attributes.java
! src/share/classes/java/util/jar/JarEntry.java
! src/share/classes/java/util/jar/JarFile.java
! src/share/classes/java/util/stream/StreamSupport.java
Changeset: 690dcbaa69b7
Author: chegar
Date: 2013-07-25 19:37 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/690dcbaa69b7
8021417: Fix doclint issues in java.util.concurrent
Reviewed-by: chegar, lancea
Contributed-by: Doug Lea
! src/share/classes/java/util/concurrent/AbstractExecutorService.java
! src/share/classes/java/util/concurrent/ExecutorService.java
! src/share/classes/java/util/concurrent/Executors.java
! src/share/classes/java/util/concurrent/ForkJoinPool.java
! src/share/classes/java/util/concurrent/ForkJoinTask.java
! src/share/classes/java/util/concurrent/ScheduledExecutorService.java
! src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java
! src/share/classes/java/util/concurrent/TimeUnit.java
! src/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java
! src/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java
! src/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java
Changeset: 9cd5159fa870
Author: chegar
Date: 2013-07-25 19:45 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/9cd5159fa870
8021421: More doclint fixes in java.net
Reviewed-by: lancea, darcy
! src/share/classes/java/net/URI.java
Changeset: 662ec7782102
Author: joehw
Date: 2013-07-25 13:20 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/662ec7782102
8021148: Regression in SAXParserImpl in 7u40 b34 (NPE)
Reviewed-by: chegar, lancea, dfuchs
+ test/javax/xml/jaxp/parsers/8021148/JAXPSAXParserTest.java
+ test/javax/xml/jaxp/parsers/8021148/TestBase.java
Changeset: 1744a32d3db3
Author: mullan
Date: 2013-07-25 20:12 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/1744a32d3db3
8012288: XML DSig API allows wrong tag names and extra elements in SignedInfo
Reviewed-by: xuelei
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMManifest.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMReference.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMUtils.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java
Changeset: 4100ab44ba4f
Author: mullan
Date: 2013-07-25 20:30 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/4100ab44ba4f
Merge
Changeset: 86a827321c39
Author: darcy
Date: 2013-07-25 20:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/86a827321c39
8021429: Fix lint warnings in java.lang.ref
Reviewed-by: lancea, mduigou, alanb
! src/share/classes/java/lang/ref/FinalReference.java
! src/share/classes/java/lang/ref/Finalizer.java
! src/share/classes/java/lang/ref/Reference.java
! src/share/classes/java/lang/ref/ReferenceQueue.java
Changeset: 6cc15a808b93
Author: peytoia
Date: 2013-07-26 17:22 +0900
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/6cc15a808b93
8021108: Clean up doclint warnings and errors in java.text package
Reviewed-by: darcy, okutsu
! src/share/classes/java/text/Annotation.java
! src/share/classes/java/text/AttributedCharacterIterator.java
! src/share/classes/java/text/Bidi.java
! src/share/classes/java/text/BreakIterator.java
! src/share/classes/java/text/ChoiceFormat.java
! src/share/classes/java/text/CollationElementIterator.java
! src/share/classes/java/text/CollationKey.java
! src/share/classes/java/text/DateFormat.java
! src/share/classes/java/text/DateFormatSymbols.java
! src/share/classes/java/text/DecimalFormat.java
! src/share/classes/java/text/DecimalFormatSymbols.java
! src/share/classes/java/text/FieldPosition.java
! src/share/classes/java/text/Format.java
! src/share/classes/java/text/MessageFormat.java
! src/share/classes/java/text/Normalizer.java
! src/share/classes/java/text/NumberFormat.java
! src/share/classes/java/text/ParseException.java
! src/share/classes/java/text/ParsePosition.java
! src/share/classes/java/text/RuleBasedCollator.java
! src/share/classes/java/text/SimpleDateFormat.java
! src/share/classes/java/text/StringCharacterIterator.java
Changeset: 952476b80fa7
Author: jbachorik
Date: 2013-07-26 10:12 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/952476b80fa7
8020875: java/lang/management/ThreadMXBean/ResetPeakThreadCount.java fails intermittently
Reviewed-by: dfuchs, chegar
! test/java/lang/management/ThreadMXBean/ResetPeakThreadCount.java
Changeset: 7ae061cfd4be
Author: juh
Date: 2013-07-26 14:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/7ae061cfd4be
8019544: Need to run ProviderTest.java in othervm mode.
Reviewed-by: wetmore, xuelei, vinnie
Contributed-by: rajan.halade at oracle.com
! test/sun/security/ssl/com/sun/net/ssl/SSLSecurity/ProviderTest.java
Changeset: 25575c3c209d
Author: lana
Date: 2013-07-26 14:07 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/25575c3c209d
Merge
Changeset: 9f9ffe6be557
Author: lana
Date: 2013-07-26 15:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/9f9ffe6be557
Merge
Changeset: f056728871f8
Author: mduigou
Date: 2013-07-26 17:23 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/f056728871f8
8021601: Add unit test for PriorityQueue(Comparator) constructor
Reviewed-by: darcy, alanb
! src/share/classes/java/util/PriorityQueue.java
! test/java/util/PriorityQueue/RemoveContains.java
Changeset: d4b2436892c8
Author: bpb
Date: 2013-07-26 17:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/d4b2436892c8
8014319: Faster division of large integers
Summary: Implement Burnickel-Ziegler division algorithm in BigInteger
Reviewed-by: bpb, martin
Contributed-by: Tim Buktu
! src/share/classes/java/math/BigInteger.java
! src/share/classes/java/math/MutableBigInteger.java
! test/java/math/BigInteger/BigIntegerTest.java
Changeset: a1c01457cf6c
Author: bpb
Date: 2013-07-26 17:09 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/a1c01457cf6c
8020641: Clean up some code style in recent BigInteger contributions
Summary: Some minor cleanup to adhere better to Java coding conventions.
Reviewed-by: darcy
Contributed-by: Brian Burkhalter
! src/share/classes/java/math/BigInteger.java
! src/share/classes/java/math/MutableBigInteger.java
! test/java/math/BigInteger/BigIntegerTest.java
Changeset: eb1dc65162e8
Author: darcy
Date: 2013-07-27 10:27 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/eb1dc65162e8
8021609: Fix doclint issues in java.nio.charset
Reviewed-by: alanb
! src/share/classes/java/nio/charset/Charset-X-Coder.java.template
Changeset: 5d4a35823071
Author: mduigou
Date: 2013-07-27 12:26 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/5d4a35823071
8021588: Remove explicit othervm execution from jdk/test/Makefile
Reviewed-by: alanb
! test/Makefile
Changeset: 24bda55fca48
Author: sundar
Date: 2013-07-29 21:39 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/24bda55fca48
8021773: print function as defined by jrunscript's init.js script is incompatible with nashorn's definition
Reviewed-by: hannesw, lagergren
! src/share/classes/com/sun/tools/script/shell/init.js
Changeset: e83fc6d9cf03
Author: psandoz
Date: 2013-07-29 19:41 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e83fc6d9cf03
8020156: TreeMap.values().spliterator() does not report ORDERED
8020009: TreeMap.entrySet().spliterator() reports SORTED + null comparator but the elements are not Comparable
Reviewed-by: mduigou
! src/share/classes/java/util/TreeMap.java
+ test/java/util/Spliterator/SpliteratorCharacteristics.java
Changeset: c042fd498f79
Author: ascarpino
Date: 2013-07-19 11:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/c042fd498f79
8012971: PKCS11Test hiding exception failures
Reviewed-by: vinnie, valeriep
! test/ProblemList.txt
! test/sun/security/pkcs11/PKCS11Test.java
! test/sun/security/pkcs11/SecmodTest.java
Changeset: e47569593fa0
Author: ascarpino
Date: 2013-07-29 13:43 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e47569593fa0
8020424: The NSS version should be detected before running crypto tests
Reviewed-by: valeriep
! test/ProblemList.txt
! test/sun/security/pkcs11/KeyStore/SecretKeysBasic.java
! test/sun/security/pkcs11/PKCS11Test.java
+ test/sun/security/pkcs11/README
! test/sun/security/pkcs11/ec/ReadCertificates.java
! test/sun/security/pkcs11/ec/TestCurves.java
! test/sun/security/pkcs11/ec/TestECDH.java
! test/sun/security/pkcs11/ec/TestECDH2.java
! test/sun/security/pkcs11/ec/TestECDSA.java
! test/sun/security/pkcs11/ec/TestECDSA2.java
! test/sun/security/pkcs11/ec/TestECGenSpec.java
! test/sun/security/pkcs11/ec/TestKeyFactory.java
Changeset: 613cc7beba64
Author: xuelei
Date: 2013-07-29 19:36 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/613cc7beba64
8021841: Remove SSLEngineDeadlock.java from problem list
Reviewed-by: wetmore
! test/ProblemList.txt
Changeset: c76f89695c90
Author: juh
Date: 2013-07-30 11:04 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/c76f89695c90
8021833: javadoc cleanup in java.net
Summary: and converted to {@code }; package.html to package-info.java
Reviewed-by: darcy, chegar
! src/share/classes/java/net/Authenticator.java
! src/share/classes/java/net/ContentHandler.java
! src/share/classes/java/net/ContentHandlerFactory.java
! src/share/classes/java/net/CookieHandler.java
! src/share/classes/java/net/CookieManager.java
! src/share/classes/java/net/CookiePolicy.java
! src/share/classes/java/net/CookieStore.java
! src/share/classes/java/net/DatagramPacket.java
! src/share/classes/java/net/DatagramSocket.java
! src/share/classes/java/net/DatagramSocketImpl.java
! src/share/classes/java/net/DatagramSocketImplFactory.java
! src/share/classes/java/net/FileNameMap.java
! src/share/classes/java/net/HttpCookie.java
! src/share/classes/java/net/HttpRetryException.java
! src/share/classes/java/net/HttpURLConnection.java
! src/share/classes/java/net/IDN.java
! src/share/classes/java/net/Inet4Address.java
! src/share/classes/java/net/Inet6Address.java
! src/share/classes/java/net/InetAddress.java
! src/share/classes/java/net/InetSocketAddress.java
! src/share/classes/java/net/InterfaceAddress.java
! src/share/classes/java/net/JarURLConnection.java
! src/share/classes/java/net/MalformedURLException.java
! src/share/classes/java/net/MulticastSocket.java
! src/share/classes/java/net/NetPermission.java
! src/share/classes/java/net/NetworkInterface.java
! src/share/classes/java/net/PasswordAuthentication.java
! src/share/classes/java/net/PortUnreachableException.java
! src/share/classes/java/net/ProtocolException.java
! src/share/classes/java/net/Proxy.java
! src/share/classes/java/net/ProxySelector.java
! src/share/classes/java/net/ResponseCache.java
! src/share/classes/java/net/ServerSocket.java
! src/share/classes/java/net/Socket.java
! src/share/classes/java/net/SocketException.java
! src/share/classes/java/net/SocketImpl.java
! src/share/classes/java/net/SocketImplFactory.java
! src/share/classes/java/net/SocketInputStream.java
! src/share/classes/java/net/SocketOptions.java
! src/share/classes/java/net/SocketOutputStream.java
! src/share/classes/java/net/SocketPermission.java
! src/share/classes/java/net/SocksSocketImpl.java
! src/share/classes/java/net/URI.java
! src/share/classes/java/net/URISyntaxException.java
! src/share/classes/java/net/URL.java
! src/share/classes/java/net/URLClassLoader.java
! src/share/classes/java/net/URLConnection.java
! src/share/classes/java/net/URLDecoder.java
! src/share/classes/java/net/URLEncoder.java
! src/share/classes/java/net/URLStreamHandler.java
! src/share/classes/java/net/URLStreamHandlerFactory.java
! src/share/classes/java/net/UnknownHostException.java
! src/share/classes/java/net/UnknownServiceException.java
+ src/share/classes/java/net/package-info.java
- src/share/classes/java/net/package.html
Changeset: 8bc1bbd5b659
Author: sherman
Date: 2013-07-30 14:43 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/8bc1bbd5b659
8021767: test/java/time/tck/java/time/format/TCKFormatStyle.java failing
Summary: Correct to use fixed locale, not locale of test environment
Reviewed-by: alanb, okutsu
Contributed-by: roger.riggs at oracle.com
! test/java/time/tck/java/time/format/TCKFormatStyle.java
Changeset: 09a77a1bdbc3
Author: henryjen
Date: 2013-07-30 15:47 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/09a77a1bdbc3
8020977: StringJoiner merges with itself not as expected
Reviewed-by: psandoz, chegar, mduigou, smarks
! src/share/classes/java/util/StringJoiner.java
! test/java/util/StringJoiner/MergeTest.java
Changeset: 76d88a752a03
Author: psandoz
Date: 2013-07-30 11:32 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/76d88a752a03
8021863: Stream.concat incorrectly calculates unsized state
Reviewed-by: chegar
! src/share/classes/java/util/stream/Streams.java
! test/java/util/stream/test/org/openjdk/tests/java/util/stream/ConcatOpTest.java
Changeset: d30f357c6050
Author: psandoz
Date: 2013-07-30 14:03 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/d30f357c6050
8021883: j.u.Random/RandomStream.java test needs more robust timeout duration
Reviewed-by: chegar
! test/java/util/Random/RandomStreamTest.java
Changeset: 5561b34f6d4c
Author: bpb
Date: 2013-07-30 10:35 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/5561b34f6d4c
8020539: Clean up doclint problems in java.util package, part 2
Summary: Clean up doclint errors and warnings in classes in java.util
Reviewed-by: darcy, chegar
Contributed-by: Brian Burkhalter
! src/share/classes/java/util/List.java
! src/share/classes/java/util/Map.java
! src/share/classes/java/util/Optional.java
! src/share/classes/java/util/Random.java
! src/share/classes/java/util/Scanner.java
! src/share/classes/java/util/ServiceLoader.java
! src/share/classes/java/util/StringJoiner.java
! src/share/classes/java/util/TimeZone.java
! src/share/classes/java/util/UUID.java
! src/share/classes/java/util/Vector.java
Changeset: 4bd51f6268f4
Author: rbackman
Date: 2013-07-24 10:57 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/4bd51f6268f4
8006324: [TEST_BUG] sun/invoke/util/ValueConversionsTest.java should be modified
Reviewed-by: kvn, twisti
! test/sun/invoke/util/ValueConversionsTest.java
Changeset: 0741b19835b0
Author: lana
Date: 2013-07-31 13:02 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/0741b19835b0
Merge
- src/share/classes/java/net/package.html
Changeset: 8ed8e2b4b90e
Author: lana
Date: 2013-08-06 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/8ed8e2b4b90e
Merge
Changeset: e057cddf0d6c
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e057cddf0d6c
Added tag jdk8-b102 for changeset 8ed8e2b4b90e
! .hgtags
From vladimir.kozlov at oracle.com Thu Aug 8 14:37:12 2013
From: vladimir.kozlov at oracle.com (Vladimir Kozlov)
Date: Thu, 08 Aug 2013 14:37:12 -0700
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <5202691E.6020500@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
<52002E68.6080901@oracle.com> <5202691E.6020500@oracle.com>
Message-ID: <52040F88.9070406@oracle.com>
On 8/7/13 8:34 AM, harold seigel wrote:
> Hi Vladimir,
>
> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>> Harold,
>>
>> Note, on SPARC set() could generate up to 8 instructions to load
>> 64-bit constant into register. So I am not sure that it will be faster
>> than load.
> We thought it would be faster because it doesn't need to load anything
> from memory.
For good value (0x800000000) it should use only 2-3 instructions.
I think you can keep using set().
>>
>> I can't find where in CDS you store information about compressed klass
>> pointers and compressed oops parameters which were used during dump?
>> How you verify that correct parameters/flags are ussed when such CDS
>> is used later?
> No compressed klass pointers nor compressed oops get written to the
> archive. So, the compressed klass pointers and compressed oops
> parameters do not need to be recorded in the archive.
So you are saying that all klass pointers (references to klasses) in
metadata structures in metaspace are full. And klass pointers are only
compressed in java object headers (which are not part of CDS). Right?
And you don't care about UseCompressedOops and
UseCompressedKlassPointers flags settings when you dump it into archive.
The only limit is:
Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
Then I don't understand why you can't use/load CDS archive when coop or
compklass are off:
> If coop is turned off then CDS cannot be used. CDS will only be
> supported if both UseCompressedOops and UseCompressedKlassPointers are
> TRUE.
Also based on code in arguments.cpp it is allowed to specify
-XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command line:
1466 // Turn on UseCompressedKlassPointers too
1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
1469 }
Did you tested such combination?
>>
>> set_narrow_klass_base_and_shift() and
>> can_use_cds_with_metaspace_addr() have the same code for
>> UseSharedSpaces. It would be nice to have only one copy. Call
>> can_use_cds_with_metaspace_addr() from
>> set_narrow_klass_base_and_shift() ?
> I could add new inlined methods that determine the higher_address and
> lower_base when UseSharedSpaces is true and have them called from
> set_narrow_klass_base_and_shift() and
> can_use_cds_with_metaspace_addr(). Would that be worth doing?
I tried several approaches but your implementation is more clean. So I
agree to keep what you have now.
Also I found strange assert which should always fail (old code in
global_initialize() in metaspace.cpp):
2959 if (UseSharedSpaces) {
...
2969 } else {
2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
2971 "archive file not closed or shared spaces not
disabled.");
Thanks,
Vladimir
>>
>> I see that you unconditionally set comp klass ptr base and shift for
>> DumpSharedSpaces. Should you do the check similar to
>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>> don't even check UseCompressedKlassPointers.
> I don't think the checks are needed because the information written to
> the archive is not affected by the size of the class metaspace.
>
> Also, I recently added code to arguments.cpp that will generate an error
> if UseCompressedOops or UseCompressedKlassPointers is turned off and
> DumpSharedSpaces is on.
>>
>> Why you have next limitation? What if coop can't be used because of
>> big heap?:
>>
>> + // UseCompressedOops and UseCompressedKlassPointers must be on
>> for UseSharedSpaces.
>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>> + no_shared_spaces();
> If coop is turned off then CDS cannot be used. CDS will only be
> supported if both UseCompressedOops and UseCompressedKlassPointers are
> TRUE.
>>
>> Could you move UseCompressedKlassPointers code in arguments.cpp into
>> separate method similar to set_use_compressed_oops()?
> Done.
>>
>> About new tests.
>> The first test in CDSCompressedKPtrsError misses
>> -XX:+UseCompressedOops flag.
> Fixed.
>>
>> Could you also test cross flags combinations?:
>>
>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
> Done.
>>
>> It would be nice to have test to check ClassMetaspaceSize value range.
>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
>> or maxuint.
> A member of our runtime SQE group is writing additional tests. I'll ask
> him to write a ClassMetaspaceSize range test.
>
> We chose 3Gb because we thought it was a sufficiently large size.
>>
>>
>> About code style, indention. We align next line to corresponding part
>> of previous line if we need to split a line. And sometimes it is
>> better to keep one long line. I understand some of them were before
>> your changes but, please, clean up at lest ones you touched.
> Done.
>>
>> Cases in metaspace.cpp:
>>
>> 2263 assert(raw_word_size >= min_size,
>> 2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
>> SIZE_FORMAT, word_size, min_size));
>>
>>
>> 2485 if (Metaspace::using_class_space() &&
>> 2486 (Metaspace::class_space_list() != NULL)) {
>>
>>
>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>> 2575 (Metaspace::using_class_space() ?
>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>> 2577 Metaspace::space_list()->virtual_space_total();
>>
>>
>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>> SIZE_FORMAT ", "
>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT ", "
>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>> ", "
>> 2697 "large count " SIZE_FORMAT,
>> 2698 cls_specialized_count, cls_specialized_waste,
>> 2699 cls_small_count, cls_small_waste,
>> 2700 cls_medium_count, cls_medium_waste,
>> cls_humongous_count);
>>
>>
>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G > addr) &&
>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>
>>
>> 2889 vm_exit_during_initialization(err_msg(
>> 2890 "Could not allocate metaspace: %d bytes",
>> 2891 class_metaspace_size()));
>>
>>
>> 3107 return using_class_space() ?
>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>
>>
>> 3157 if (is_class && using_class_space()) {
>> 3158 class_vsm()->deallocate(ptr, word_size);
>>
>>
>> 3305 return space_list()->contains(ptr) ||
>> 3306 (using_class_space() && class_space_list()->contains(ptr));
>>
>> metaspace.hpp:
>>
>> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
>> 271 (Metaspace::using_class_space() ?
>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>
>> 285 return _allocated_used_words[Metaspace::NonClassType] +
>> 286 (Metaspace::using_class_space() ?
>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>
>> universe.cpp:
>>
>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>> (intptr_t)(Universe::heap()->base() -
>> 850 os::vm_page_size()) ||
>> 851 Universe::narrow_oop_base() == NULL, "invalid value");
>>
>>
>> Thanks,
>> Vladimir
>>
>> On 8/2/13 1:31 PM, harold seigel wrote:
>>> Hi,
>>>
>>> Please review this updated webrev for bug 8003424:
>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>
>>>
>>> The updated webrev has a lot of changes from the previous webrev,
>>> including the following:
>>>
>>> 1. Class metaspace information is now output when
>>> -XX:+PrintCompressedOopsMode is specified.
>>>
>>> 2. decode_klass_not_null(Register dst, Register src) no longer
>>> clobbers R12.
>>>
>>> 3. Method using_class_vsm() was renamed to using_class_space().
>>>
>>> 4. Type narrowKlass was added and replaces narrowOop, where
>>> appropriate.
>>>
>>> 5. The Metaspace:: qualifier was removed, where it was unnecessary.
>>>
>>> 6. Metaspace::initialize_class_space() was made private.
>>>
>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>>> updated.
>>>
>>> Performance tests were run by Jenny using specjvm2008, specjbb2005, and
>>> specjbb2013. The results showed no significant performance difference
>>> in terms of scores and gc behavior.
>>>
>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>>
>>> Please let me know what additional tests should be run.
>>>
>>> Thanks!
>>> Harold
>>>
>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>> Hi Harold,
>>>>
>>>> > Usually the narrow_klass_base will be 32G and the
>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>> that
>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>> unless
>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>>> sense?
>>>>
>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000 and I
>>>> am tempted to use may be bts (bit set) to avoid R12 usage (assuming or
>>>> with check that class metaspace size < 32Gb).
>>>>
>>>> > Is there one prefix byte per instruction, or just for certain
>>>> instructions?
>>>>
>>>> "Not all instructions require a REX prefix in 64-bit mode. A prefix is
>>>> necessary only if an instruction references one of the extended
>>>> registers or uses a 64-bit operand."
>>>>
>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and =32
>>>> and big java heap. Recently we got several bugs which indicated that
>>>> we did not separate cleanly oops and klass pointers en/decoding.
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>> Hi Vladimir,
>>>>>
>>>>> Thank you for the review! Please see inline comments.
>>>>>
>>>>> Thanks, Harold
>>>>>
>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>>> Nice clean up, Harold
>>>>>>>
>>>>>>> Could you add the size of class metaspace in output with
>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>>> remember an
>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>> Will be done in next webrev.
>>>>>>>
>>>>>>> Also it would be nice to print these info line (and compressed oops
>>>>>>> info
>>>>>>> line) in hs_err files.
>>>>> I filed an enhancement bug for this: 8021264
>>>>> .
>>>>>>>
>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>>>> x86_64.ad.
>>>>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also note
>>>>>>> that code in .ad file does not check the encoding mode for narrow
>>>>>>> klass/oop so it should be conservative and assume that arithmetic
>>>>>>> instructions are used.
>>>>> OK. Thanks.
>>>>>>>
>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>>>> 4Gb so
>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>>> encoding/decoding without destroying R12.
>>>>>>
>>>>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>>> But the base will normally be 32Gb. So this case won't happen very
>>>>> often.
>>>>>>
>>>>>> You definitely should not use R12 in decode_klass_not_null(Register
>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>> Will be fixed in next webrev.
>>>>>>
>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>>
>>>>>> decode:
>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>>> }
>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>>> }
>>>>>>
>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>>>>> (max positive int).
>>>>> Usually the narrow_klass_base will be 32G and the
>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>>> that
>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>> unless
>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>>>> sense?
>>>>>>
>>>>>> And you have general memory reservation problem. At least on Solaris,
>>>>>> as I remember, OS will always try to keep protected 4Kb pages between
>>>>>> different requested memory regions. That is why in jdk7 we first
>>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>>> compressed oops.
>>>>>>
>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>>> compressed
>>>>>> oops and with Xmx20Gb.
>>>>> I verifed that we get either cds_address+cds_total as the address, or
>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>>> Windows
>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap sizes and
>>>>> -Xmx32G.
>>>>>
>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>>> desired
>>>>> CDS address for class metaspace regardless of heap size.
>>>>>>
>>>>>>>
>>>>>>> instr_size_for_decode_klass_not_null() is ugly but unfortunately we
>>>>>>> can't do other way. I assume you use max size because depending on
>>>>>>> registers used in instructions you will or will not get prefix byte
>>>>>>> (r8-r15).
>>>>> Is there one prefix byte per instruction, or just for certain
>>>>> instructions?
>>>>>>>
>>>>>>> I will look on changes in more details may be late.
>>>>>>
>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>>>>> which are not obvious.
>>>>> I changed using_class_vsm() to using_class_space().
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Vladimir
>>>>>>>
>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Please review this fix for bug 8003424.
>>>>>>>>
>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>>
>>>>>>>> Open bug links at:
>>>>>>>>
>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>>
>>>>>>>> JBS Bug links at
>>>>>>>>
>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>>
>>>>>>>>
>>>>>>>> This fix provides support for using compressed klass pointers with
>>>>>>>> CDS.
>>>>>>>> It also changes the class metaspace allocation on 64-bit platforms
>>>>>>>> when
>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
>>>>>>>> class
>>>>>>>> metaspace as part of the Java Heap allocation and locating it at
>>>>>>>> the
>>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>>> separately,
>>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>>> metaspace
>>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>>> being
>>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>>> heap and
>>>>>>>> the metaspace.
>>>>>>>>
>>>>>>>> The new class metaspace allocation code tries to allocate memory at
>>>>>>>> 32G,
>>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>>> encoding
>>>>>>>> and decoding of compressed klass pointers will always require use
>>>>>>>> of a
>>>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>>>> pointers
>>>>>>>> will differ from compressed oops.
>>>>>>>>
>>>>>>>> There are no class metaspace allocation changes if
>>>>>>>> UseCompressedKlassPointers is turned off or if running on a 32-bit
>>>>>>>> platform.
>>>>>>>>
>>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>>> 8016729,
>>>>>>>> 8011610, and 8003424.
>>>>>>>>
>>>>>>>>
>>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>>> Modules
>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were changed to
>>>>>>>> support the new encoding and decoding of compressed klass pointers.
>>>>>>>>
>>>>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>>> compressed
>>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>>
>>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>>> related
>>>>>>>> to allocating metaspace and remove code that considered compressed
>>>>>>>> klass
>>>>>>>> pointers when determining the compressed oops compression
>>>>>>>> mechanism.
>>>>>>>>
>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as part
>>>>>>>> of a
>>>>>>>> cleanup requested by Coleen.
>>>>>>>>
>>>>>>>>
>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg tests,
>>>>>>>> JPRT,
>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>>>>> tests. Most of the test were run with -Xshare:on and -Xshare:off
>>>>>>>> (with
>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>>>>> 64-Bit
>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
>>>>>>>> were
>>>>>>>> run on Solaris x86.
>>>>>>>>
>>>>>>>> The performance impact of these changes is TBD.
>>>>>>>>
>>>>>>>> Thanks, Harold
>>>>>>>>
>>>>>>>>
>>>>>
>>>
>
From mikael.vidstedt at oracle.com Thu Aug 8 15:25:05 2013
From: mikael.vidstedt at oracle.com (Mikael Vidstedt)
Date: Thu, 08 Aug 2013 15:25:05 -0700
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <52028A69.8010207@oracle.com>
References: <5201886C.1030206@oracle.com> <52024E1A.4000908@oracle.com>
<520275B8.5010101@oracle.com> <52028A69.8010207@oracle.com>
Message-ID: <52041AC1.4000803@oracle.com>
Coleen,
After having tried numerous different versions I ended up with this:
http://cr.openjdk.java.net/~mikael/webrevs/8022452.3/webrev
Summary of the changes:
* The GetNativeSystemInfo call has been moved up before the switch, but
is only called if the os version is recent enough, and we actually care
about the si.wProcessorArchitecture field.
* The true/else branches in the if-diamond have been switch to avoid the
negation of the condition.
* While at it I added support for recognizing "Windows Server 2008 R2"
(6.1 non-workstation) which we apparently haven't recognized earlier,
but which is something the JDK code recognizes [1].
* The " , 64 bit" has been move out below the switch, but is only
relevant/tested for on recent enough Windows versions, just like the old
code did.
Feedback much appreciated! I'm also investigating if it would be
possible to unify/share the code with the java_props_md.c logic [1] to
avoid the duplication, but for now this may have to do. In addition to
that the code can be cleaned up further if we only support VS2010+,
which I believe is de facto since JDK 7 anyway; I will investigate that
as a separate improvement.
Thanks,
Mikael
[1]
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/e057cddf0d6c/src/windows/native/java/lang/java_props_md.c
(line 451).
On 2013-08-07 10:56, Coleen Phillimore wrote:
>
> Mikael,
>
> I do like your new version better but because you changed so much, it
> should be verified on all versions of windows. Which you might not
> want to do. My suggestion to make this code nicer (fix case stmt and
> outline common code) was really simple and I think can be verified by
> code inspection, which might be less work and easier to review.
>
> Coleen
>
> On 8/7/2013 12:28 PM, Mikael Vidstedt wrote:
>>
>> Coleen,
>>
>> Funny you should mention that, and since I fully agree with you I
>> actually did prepare another version of the patch which is heavily
>> inspired by the java_props_md.c implementation:
>>
>> http://cr.openjdk.java.net/~mikael/webrevs/winvercleanup2/webrev/
>>
>> I personally like this version better, but the one thing that held me
>> back was the fact that I will basically want to dig up machines with
>> all the different (supported) Windows versions and verify that the
>> code is still correct in all cases. If you think this is the way to
>> go I more than willing to will do so. Let me know what you think
>> about the new version of the patch!
>>
>> There's no real urgency here - I'd rather do it correct once than...
>>
>> Cheers,
>> Mikael
>>
>>
>> On 2013-08-07 06:39, Coleen Phillimore wrote:
>>>
>>> It looks like the code under the case for all these releases, should
>>> be different case statements for each, rather than these cascading
>>> 'if' statements. And make 1668-1673 a new function returning si.
>>> So if we have a new release, in general it will work because the
>>> default will print out something. But a better default would be
>>> lines 1712-1717 which are dead code now.
>>>
>>> Sorry, I know it's simple and urgent but this seems to be getting
>>> increasingly ugly.
>>>
>>> Thanks,
>>> Coleen
>>>
>>> On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>>>>
>>>> Please review the following change:
>>>>
>>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>>>>
>>>> The patch adds support to os_windows.cpp for recognizing the
>>>> upcoming Windows versions: Windows 8.1 and Windows Server 2012 R2.
>>>>
>>>> The changed is based on the corresponding code on the JDK
>>>> side[1][2][3].
>>>>
>>>> Thanks,
>>>> Mikael
>>>>
>>>> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
>>>> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
>>>> [3]
>>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>>>>
>>>
>>
>
From coleen.phillimore at oracle.com Thu Aug 8 15:34:24 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Thu, 08 Aug 2013 18:34:24 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <52040F88.9070406@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
<52002E68.6080901@oracle.com> <5202691E.6020500@oracle.com>
<52040F88.9070406@oracle.com>
Message-ID: <52041CF0.4000801@oracle.com>
Hi Vladimir,
I have a couple of answers and I'll let Harold answer the rest.
On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
> On 8/7/13 8:34 AM, harold seigel wrote:
>> Hi Vladimir,
>>
>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>> Harold,
>>>
>>> Note, on SPARC set() could generate up to 8 instructions to load
>>> 64-bit constant into register. So I am not sure that it will be faster
>>> than load.
>> We thought it would be faster because it doesn't need to load anything
>> from memory.
>
> For good value (0x800000000) it should use only 2-3 instructions.
> I think you can keep using set().
>
>>>
>>> I can't find where in CDS you store information about compressed klass
>>> pointers and compressed oops parameters which were used during dump?
>>> How you verify that correct parameters/flags are ussed when such CDS
>>> is used later?
>> No compressed klass pointers nor compressed oops get written to the
>> archive. So, the compressed klass pointers and compressed oops
>> parameters do not need to be recorded in the archive.
>
> So you are saying that all klass pointers (references to klasses) in
> metadata structures in metaspace are full.
Yes, they are. (methodOops weren't in the InstanceKlass::_methods array
with Permgen but they are uncompressed now).
> And klass pointers are only compressed in java object headers (which
> are not part of CDS). Right?
The InstanceKlass has offsets to fields in the instance, and they depend
on both compressed oops and compressed klass pointers. So both have to
be on for the offsets to be valid.
But the base and compressed values are not stored anywhere in the CDS
archive.
> And you don't care about UseCompressedOops and
> UseCompressedKlassPointers flags settings when you dump it into
> archive. The only limit is:
>
> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
>
> Then I don't understand why you can't use/load CDS archive when coop
> or compklass are off:
>
> > If coop is turned off then CDS cannot be used. CDS will only be
> > supported if both UseCompressedOops and UseCompressedKlassPointers are
> > TRUE.
>
> Also based on code in arguments.cpp it is allowed to specify
> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command line:
>
> 1466 // Turn on UseCompressedKlassPointers too
> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
> 1469 }
>
> Did you tested such combination?
I should let Harold answer this but I believe this is what his test
does. For CDS on 64 bit, both must be on. We didn't want to create 4
different archives. And it wouldn't make too much sense since CDS for
64 bit is a footprint savings so why would you use it without
compressing oops and class pointers? It's not a startup savings on
server because we turn off interpreter bytecode quickening.
Coleen
>
>>>
>>> set_narrow_klass_base_and_shift() and
>>> can_use_cds_with_metaspace_addr() have the same code for
>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>> can_use_cds_with_metaspace_addr() from
>>> set_narrow_klass_base_and_shift() ?
>> I could add new inlined methods that determine the higher_address and
>> lower_base when UseSharedSpaces is true and have them called from
>> set_narrow_klass_base_and_shift() and
>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>
> I tried several approaches but your implementation is more clean. So I
> agree to keep what you have now.
>
>
> Also I found strange assert which should always fail (old code in
> global_initialize() in metaspace.cpp):
>
> 2959 if (UseSharedSpaces) {
> ...
> 2969 } else {
> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
> 2971 "archive file not closed or shared spaces not
> disabled.");
>
> Thanks,
> Vladimir
>
>>>
>>> I see that you unconditionally set comp klass ptr base and shift for
>>> DumpSharedSpaces. Should you do the check similar to
>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>>> don't even check UseCompressedKlassPointers.
>> I don't think the checks are needed because the information written to
>> the archive is not affected by the size of the class metaspace.
>>
>> Also, I recently added code to arguments.cpp that will generate an error
>> if UseCompressedOops or UseCompressedKlassPointers is turned off and
>> DumpSharedSpaces is on.
>>>
>>> Why you have next limitation? What if coop can't be used because of
>>> big heap?:
>>>
>>> + // UseCompressedOops and UseCompressedKlassPointers must be on
>>> for UseSharedSpaces.
>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>> + no_shared_spaces();
>> If coop is turned off then CDS cannot be used. CDS will only be
>> supported if both UseCompressedOops and UseCompressedKlassPointers are
>> TRUE.
>>>
>>> Could you move UseCompressedKlassPointers code in arguments.cpp into
>>> separate method similar to set_use_compressed_oops()?
>> Done.
>>>
>>> About new tests.
>>> The first test in CDSCompressedKPtrsError misses
>>> -XX:+UseCompressedOops flag.
>> Fixed.
>>>
>>> Could you also test cross flags combinations?:
>>>
>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>> Done.
>>>
>>> It would be nice to have test to check ClassMetaspaceSize value range.
>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
>>> or maxuint.
>> A member of our runtime SQE group is writing additional tests. I'll ask
>> him to write a ClassMetaspaceSize range test.
>>
>> We chose 3Gb because we thought it was a sufficiently large size.
>>>
>>>
>>> About code style, indention. We align next line to corresponding part
>>> of previous line if we need to split a line. And sometimes it is
>>> better to keep one long line. I understand some of them were before
>>> your changes but, please, clean up at lest ones you touched.
>> Done.
>>>
>>> Cases in metaspace.cpp:
>>>
>>> 2263 assert(raw_word_size >= min_size,
>>> 2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
>>> SIZE_FORMAT, word_size, min_size));
>>>
>>>
>>> 2485 if (Metaspace::using_class_space() &&
>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>>
>>>
>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>> 2575 (Metaspace::using_class_space() ?
>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>
>>>
>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>> SIZE_FORMAT ", "
>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>> ", "
>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>> ", "
>>> 2697 "large count " SIZE_FORMAT,
>>> 2698 cls_specialized_count, cls_specialized_waste,
>>> 2699 cls_small_count, cls_small_waste,
>>> 2700 cls_medium_count, cls_medium_waste,
>>> cls_humongous_count);
>>>
>>>
>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G > addr) &&
>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>
>>>
>>> 2889 vm_exit_during_initialization(err_msg(
>>> 2890 "Could not allocate metaspace: %d bytes",
>>> 2891 class_metaspace_size()));
>>>
>>>
>>> 3107 return using_class_space() ?
>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>
>>>
>>> 3157 if (is_class && using_class_space()) {
>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>>
>>>
>>> 3305 return space_list()->contains(ptr) ||
>>> 3306 (using_class_space() && class_space_list()->contains(ptr));
>>>
>>> metaspace.hpp:
>>>
>>> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
>>> 271 (Metaspace::using_class_space() ?
>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>
>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
>>> 286 (Metaspace::using_class_space() ?
>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>>
>>> universe.cpp:
>>>
>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>> (intptr_t)(Universe::heap()->base() -
>>> 850 os::vm_page_size()) ||
>>> 851 Universe::narrow_oop_base() == NULL, "invalid value");
>>>
>>>
>>> Thanks,
>>> Vladimir
>>>
>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>> Hi,
>>>>
>>>> Please review this updated webrev for bug 8003424:
>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>>
>>>>
>>>> The updated webrev has a lot of changes from the previous webrev,
>>>> including the following:
>>>>
>>>> 1. Class metaspace information is now output when
>>>> -XX:+PrintCompressedOopsMode is specified.
>>>>
>>>> 2. decode_klass_not_null(Register dst, Register src) no longer
>>>> clobbers R12.
>>>>
>>>> 3. Method using_class_vsm() was renamed to using_class_space().
>>>>
>>>> 4. Type narrowKlass was added and replaces narrowOop, where
>>>> appropriate.
>>>>
>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>> unnecessary.
>>>>
>>>> 6. Metaspace::initialize_class_space() was made private.
>>>>
>>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>>>> updated.
>>>>
>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
>>>> and
>>>> specjbb2013. The results showed no significant performance difference
>>>> in terms of scores and gc behavior.
>>>>
>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>>>
>>>> Please let me know what additional tests should be run.
>>>>
>>>> Thanks!
>>>> Harold
>>>>
>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>>> Hi Harold,
>>>>>
>>>>> > Usually the narrow_klass_base will be 32G and the
>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>>> that
>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>> unless
>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>>>> sense?
>>>>>
>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
>>>>> and I
>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>>> (assuming or
>>>>> with check that class metaspace size < 32Gb).
>>>>>
>>>>> > Is there one prefix byte per instruction, or just for certain
>>>>> instructions?
>>>>>
>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>>> prefix is
>>>>> necessary only if an instruction references one of the extended
>>>>> registers or uses a 64-bit operand."
>>>>>
>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and =32
>>>>> and big java heap. Recently we got several bugs which indicated that
>>>>> we did not separate cleanly oops and klass pointers en/decoding.
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>>> Hi Vladimir,
>>>>>>
>>>>>> Thank you for the review! Please see inline comments.
>>>>>>
>>>>>> Thanks, Harold
>>>>>>
>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>>>> Nice clean up, Harold
>>>>>>>>
>>>>>>>> Could you add the size of class metaspace in output with
>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>>>> remember an
>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>>> Will be done in next webrev.
>>>>>>>>
>>>>>>>> Also it would be nice to print these info line (and compressed
>>>>>>>> oops
>>>>>>>> info
>>>>>>>> line) in hs_err files.
>>>>>> I filed an enhancement bug for this: 8021264
>>>>>> .
>>>>>>>>
>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>>>>> x86_64.ad.
>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
>>>>>>>> note
>>>>>>>> that code in .ad file does not check the encoding mode for narrow
>>>>>>>> klass/oop so it should be conservative and assume that arithmetic
>>>>>>>> instructions are used.
>>>>>> OK. Thanks.
>>>>>>>>
>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>>>>> 4Gb so
>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>>>> encoding/decoding without destroying R12.
>>>>>>>
>>>>>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>>>> But the base will normally be 32Gb. So this case won't happen very
>>>>>> often.
>>>>>>>
>>>>>>> You definitely should not use R12 in decode_klass_not_null(Register
>>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>>> Will be fixed in next webrev.
>>>>>>>
>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>>>
>>>>>>> decode:
>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>>>> }
>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>>>> }
>>>>>>>
>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>>>>>> (max positive int).
>>>>>> Usually the narrow_klass_base will be 32G and the
>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>>>> that
>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>> unless
>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>>>>> sense?
>>>>>>>
>>>>>>> And you have general memory reservation problem. At least on
>>>>>>> Solaris,
>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>>>>>>> between
>>>>>>> different requested memory regions. That is why in jdk7 we first
>>>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>>>> compressed oops.
>>>>>>>
>>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>>>> compressed
>>>>>>> oops and with Xmx20Gb.
>>>>>> I verifed that we get either cds_address+cds_total as the
>>>>>> address, or
>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>>>> Windows
>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>>>> sizes and
>>>>>> -Xmx32G.
>>>>>>
>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>>>> desired
>>>>>> CDS address for class metaspace regardless of heap size.
>>>>>>>
>>>>>>>>
>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>>>>>> unfortunately we
>>>>>>>> can't do other way. I assume you use max size because depending on
>>>>>>>> registers used in instructions you will or will not get prefix
>>>>>>>> byte
>>>>>>>> (r8-r15).
>>>>>> Is there one prefix byte per instruction, or just for certain
>>>>>> instructions?
>>>>>>>>
>>>>>>>> I will look on changes in more details may be late.
>>>>>>>
>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>>>>>> which are not obvious.
>>>>>> I changed using_class_vsm() to using_class_space().
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Vladimir
>>>>>>>>
>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Please review this fix for bug 8003424.
>>>>>>>>>
>>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>>>
>>>>>>>>> Open bug links at:
>>>>>>>>>
>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>>>
>>>>>>>>> JBS Bug links at
>>>>>>>>>
>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> This fix provides support for using compressed klass pointers
>>>>>>>>> with
>>>>>>>>> CDS.
>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>>>>>> platforms
>>>>>>>>> when
>>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
>>>>>>>>> class
>>>>>>>>> metaspace as part of the Java Heap allocation and locating it at
>>>>>>>>> the
>>>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>>>> separately,
>>>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>>>> metaspace
>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>>>> being
>>>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>>>> heap and
>>>>>>>>> the metaspace.
>>>>>>>>>
>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>>>>>>> memory at
>>>>>>>>> 32G,
>>>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>>>> encoding
>>>>>>>>> and decoding of compressed klass pointers will always require use
>>>>>>>>> of a
>>>>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>>>>> pointers
>>>>>>>>> will differ from compressed oops.
>>>>>>>>>
>>>>>>>>> There are no class metaspace allocation changes if
>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>>>>>>>>> 32-bit
>>>>>>>>> platform.
>>>>>>>>>
>>>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>>>> 8016729,
>>>>>>>>> 8011610, and 8003424.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>>>> Modules
>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>>>>>>> changed to
>>>>>>>>> support the new encoding and decoding of compressed klass
>>>>>>>>> pointers.
>>>>>>>>>
>>>>>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>>>> compressed
>>>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>>>
>>>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>>>> related
>>>>>>>>> to allocating metaspace and remove code that considered
>>>>>>>>> compressed
>>>>>>>>> klass
>>>>>>>>> pointers when determining the compressed oops compression
>>>>>>>>> mechanism.
>>>>>>>>>
>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as part
>>>>>>>>> of a
>>>>>>>>> cleanup requested by Coleen.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>>>>>>>>> tests,
>>>>>>>>> JPRT,
>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>>>>>> tests. Most of the test were run with -Xshare:on and -Xshare:off
>>>>>>>>> (with
>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>>>>>> 64-Bit
>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
>>>>>>>>> were
>>>>>>>>> run on Solaris x86.
>>>>>>>>>
>>>>>>>>> The performance impact of these changes is TBD.
>>>>>>>>>
>>>>>>>>> Thanks, Harold
>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>
>>
From vladimir.kozlov at oracle.com Thu Aug 8 15:55:02 2013
From: vladimir.kozlov at oracle.com (Vladimir Kozlov)
Date: Thu, 08 Aug 2013 15:55:02 -0700
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <52041CF0.4000801@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
<52002E68.6080901@oracle.com> <5202691E.6020500@oracle.com>
<52040F88.9070406@oracle.com> <52041CF0.4000801@oracle.com>
Message-ID: <520421C6.8050609@oracle.com>
Coleen, Harold
> The InstanceKlass has offsets to fields in the instance, and they depend
> on both compressed oops and compressed klass pointers. So both have to
> be on for the offsets to be valid.
So there is dependency on UseCompressedOops and
UseCompressedKlassPointers flags during dump.
Then why the check is done only for UseSharedSpaces and not for
DumpSharedSpaces?:
if (DumpSharedSpaces) {
if (RequireSharedSpaces) {
warning("cannot dump shared archive while using shared archive");
}
UseSharedSpaces = false;
+ #ifdef _LP64
+ } else {
+ // UseCompressedOops and UseCompressedKlassPointers must be on for
UseSharedSpaces.
+ if (!UseCompressedOops || !UseCompressedKlassPointers) {
+ no_shared_spaces();
+ }
+ #endif
}
Thanks,
Vladimir
On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>
> Hi Vladimir,
>
> I have a couple of answers and I'll let Harold answer the rest.
>
> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>> On 8/7/13 8:34 AM, harold seigel wrote:
>>> Hi Vladimir,
>>>
>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>>> Harold,
>>>>
>>>> Note, on SPARC set() could generate up to 8 instructions to load
>>>> 64-bit constant into register. So I am not sure that it will be faster
>>>> than load.
>>> We thought it would be faster because it doesn't need to load anything
>>> from memory.
>>
>> For good value (0x800000000) it should use only 2-3 instructions.
>> I think you can keep using set().
>>
>>>>
>>>> I can't find where in CDS you store information about compressed klass
>>>> pointers and compressed oops parameters which were used during dump?
>>>> How you verify that correct parameters/flags are ussed when such CDS
>>>> is used later?
>>> No compressed klass pointers nor compressed oops get written to the
>>> archive. So, the compressed klass pointers and compressed oops
>>> parameters do not need to be recorded in the archive.
>>
>> So you are saying that all klass pointers (references to klasses) in
>> metadata structures in metaspace are full.
>
> Yes, they are. (methodOops weren't in the InstanceKlass::_methods array
> with Permgen but they are uncompressed now).
>
>> And klass pointers are only compressed in java object headers (which
>> are not part of CDS). Right?
>
> The InstanceKlass has offsets to fields in the instance, and they depend
> on both compressed oops and compressed klass pointers. So both have to
> be on for the offsets to be valid.
>
> But the base and compressed values are not stored anywhere in the CDS
> archive.
>
>> And you don't care about UseCompressedOops and
>> UseCompressedKlassPointers flags settings when you dump it into
>> archive. The only limit is:
>>
>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
>>
>> Then I don't understand why you can't use/load CDS archive when coop
>> or compklass are off:
>>
>> > If coop is turned off then CDS cannot be used. CDS will only be
>> > supported if both UseCompressedOops and UseCompressedKlassPointers are
>> > TRUE.
>>
>> Also based on code in arguments.cpp it is allowed to specify
>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command line:
>>
>> 1466 // Turn on UseCompressedKlassPointers too
>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>> 1469 }
>>
>> Did you tested such combination?
>
> I should let Harold answer this but I believe this is what his test
> does. For CDS on 64 bit, both must be on. We didn't want to create 4
> different archives. And it wouldn't make too much sense since CDS for
> 64 bit is a footprint savings so why would you use it without
> compressing oops and class pointers? It's not a startup savings on
> server because we turn off interpreter bytecode quickening.
>
> Coleen
>
>>
>>>>
>>>> set_narrow_klass_base_and_shift() and
>>>> can_use_cds_with_metaspace_addr() have the same code for
>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>>> can_use_cds_with_metaspace_addr() from
>>>> set_narrow_klass_base_and_shift() ?
>>> I could add new inlined methods that determine the higher_address and
>>> lower_base when UseSharedSpaces is true and have them called from
>>> set_narrow_klass_base_and_shift() and
>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>>
>> I tried several approaches but your implementation is more clean. So I
>> agree to keep what you have now.
>>
>>
>> Also I found strange assert which should always fail (old code in
>> global_initialize() in metaspace.cpp):
>>
>> 2959 if (UseSharedSpaces) {
>> ...
>> 2969 } else {
>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>> 2971 "archive file not closed or shared spaces not
>> disabled.");
>>
>> Thanks,
>> Vladimir
>>
>>>>
>>>> I see that you unconditionally set comp klass ptr base and shift for
>>>> DumpSharedSpaces. Should you do the check similar to
>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>>>> don't even check UseCompressedKlassPointers.
>>> I don't think the checks are needed because the information written to
>>> the archive is not affected by the size of the class metaspace.
>>>
>>> Also, I recently added code to arguments.cpp that will generate an error
>>> if UseCompressedOops or UseCompressedKlassPointers is turned off and
>>> DumpSharedSpaces is on.
>>>>
>>>> Why you have next limitation? What if coop can't be used because of
>>>> big heap?:
>>>>
>>>> + // UseCompressedOops and UseCompressedKlassPointers must be on
>>>> for UseSharedSpaces.
>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>> + no_shared_spaces();
>>> If coop is turned off then CDS cannot be used. CDS will only be
>>> supported if both UseCompressedOops and UseCompressedKlassPointers are
>>> TRUE.
>>>>
>>>> Could you move UseCompressedKlassPointers code in arguments.cpp into
>>>> separate method similar to set_use_compressed_oops()?
>>> Done.
>>>>
>>>> About new tests.
>>>> The first test in CDSCompressedKPtrsError misses
>>>> -XX:+UseCompressedOops flag.
>>> Fixed.
>>>>
>>>> Could you also test cross flags combinations?:
>>>>
>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>> Done.
>>>>
>>>> It would be nice to have test to check ClassMetaspaceSize value range.
>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
>>>> or maxuint.
>>> A member of our runtime SQE group is writing additional tests. I'll ask
>>> him to write a ClassMetaspaceSize range test.
>>>
>>> We chose 3Gb because we thought it was a sufficiently large size.
>>>>
>>>>
>>>> About code style, indention. We align next line to corresponding part
>>>> of previous line if we need to split a line. And sometimes it is
>>>> better to keep one long line. I understand some of them were before
>>>> your changes but, please, clean up at lest ones you touched.
>>> Done.
>>>>
>>>> Cases in metaspace.cpp:
>>>>
>>>> 2263 assert(raw_word_size >= min_size,
>>>> 2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
>>>> SIZE_FORMAT, word_size, min_size));
>>>>
>>>>
>>>> 2485 if (Metaspace::using_class_space() &&
>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>>>
>>>>
>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>>> 2575 (Metaspace::using_class_space() ?
>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>>
>>>>
>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>>> SIZE_FORMAT ", "
>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>>> ", "
>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>>> ", "
>>>> 2697 "large count " SIZE_FORMAT,
>>>> 2698 cls_specialized_count, cls_specialized_waste,
>>>> 2699 cls_small_count, cls_small_waste,
>>>> 2700 cls_medium_count, cls_medium_waste,
>>>> cls_humongous_count);
>>>>
>>>>
>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G > addr) &&
>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>>
>>>>
>>>> 2889 vm_exit_during_initialization(err_msg(
>>>> 2890 "Could not allocate metaspace: %d bytes",
>>>> 2891 class_metaspace_size()));
>>>>
>>>>
>>>> 3107 return using_class_space() ?
>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>>
>>>>
>>>> 3157 if (is_class && using_class_space()) {
>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>>>
>>>>
>>>> 3305 return space_list()->contains(ptr) ||
>>>> 3306 (using_class_space() && class_space_list()->contains(ptr));
>>>>
>>>> metaspace.hpp:
>>>>
>>>> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
>>>> 271 (Metaspace::using_class_space() ?
>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>>
>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
>>>> 286 (Metaspace::using_class_space() ?
>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>>>
>>>> universe.cpp:
>>>>
>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>>> (intptr_t)(Universe::heap()->base() -
>>>> 850 os::vm_page_size()) ||
>>>> 851 Universe::narrow_oop_base() == NULL, "invalid value");
>>>>
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>>> Hi,
>>>>>
>>>>> Please review this updated webrev for bug 8003424:
>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>>>
>>>>>
>>>>> The updated webrev has a lot of changes from the previous webrev,
>>>>> including the following:
>>>>>
>>>>> 1. Class metaspace information is now output when
>>>>> -XX:+PrintCompressedOopsMode is specified.
>>>>>
>>>>> 2. decode_klass_not_null(Register dst, Register src) no longer
>>>>> clobbers R12.
>>>>>
>>>>> 3. Method using_class_vsm() was renamed to using_class_space().
>>>>>
>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
>>>>> appropriate.
>>>>>
>>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>>> unnecessary.
>>>>>
>>>>> 6. Metaspace::initialize_class_space() was made private.
>>>>>
>>>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>>>>> updated.
>>>>>
>>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
>>>>> and
>>>>> specjbb2013. The results showed no significant performance difference
>>>>> in terms of scores and gc behavior.
>>>>>
>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>>>>
>>>>> Please let me know what additional tests should be run.
>>>>>
>>>>> Thanks!
>>>>> Harold
>>>>>
>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>>>> Hi Harold,
>>>>>>
>>>>>> > Usually the narrow_klass_base will be 32G and the
>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>>>> that
>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>> unless
>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>>>>> sense?
>>>>>>
>>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
>>>>>> and I
>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>>>> (assuming or
>>>>>> with check that class metaspace size < 32Gb).
>>>>>>
>>>>>> > Is there one prefix byte per instruction, or just for certain
>>>>>> instructions?
>>>>>>
>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>>>> prefix is
>>>>>> necessary only if an instruction references one of the extended
>>>>>> registers or uses a 64-bit operand."
>>>>>>
>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and =32
>>>>>> and big java heap. Recently we got several bugs which indicated that
>>>>>> we did not separate cleanly oops and klass pointers en/decoding.
>>>>>>
>>>>>> Thanks,
>>>>>> Vladimir
>>>>>>
>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>>>> Hi Vladimir,
>>>>>>>
>>>>>>> Thank you for the review! Please see inline comments.
>>>>>>>
>>>>>>> Thanks, Harold
>>>>>>>
>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>>>>> Nice clean up, Harold
>>>>>>>>>
>>>>>>>>> Could you add the size of class metaspace in output with
>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>>>>> remember an
>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>>>> Will be done in next webrev.
>>>>>>>>>
>>>>>>>>> Also it would be nice to print these info line (and compressed
>>>>>>>>> oops
>>>>>>>>> info
>>>>>>>>> line) in hs_err files.
>>>>>>> I filed an enhancement bug for this: 8021264
>>>>>>> .
>>>>>>>>>
>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>>>>>> x86_64.ad.
>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use arithmetic
>>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
>>>>>>>>> note
>>>>>>>>> that code in .ad file does not check the encoding mode for narrow
>>>>>>>>> klass/oop so it should be conservative and assume that arithmetic
>>>>>>>>> instructions are used.
>>>>>>> OK. Thanks.
>>>>>>>>>
>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>>>>>> 4Gb so
>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>>>>> encoding/decoding without destroying R12.
>>>>>>>>
>>>>>>>> Correction. You can do it only if base < 2Gb max positive int (sign
>>>>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>>>>> But the base will normally be 32Gb. So this case won't happen very
>>>>>>> often.
>>>>>>>>
>>>>>>>> You definitely should not use R12 in decode_klass_not_null(Register
>>>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>>>> Will be fixed in next webrev.
>>>>>>>>
>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be 64Gb.
>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>>>>
>>>>>>>> decode:
>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>>>>> }
>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>>>>> }
>>>>>>>>
>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <= maxint
>>>>>>>> (max positive int).
>>>>>>> Usually the narrow_klass_base will be 32G and the
>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>>>>> that
>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>>> unless
>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that make
>>>>>>> sense?
>>>>>>>>
>>>>>>>> And you have general memory reservation problem. At least on
>>>>>>>> Solaris,
>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>>>>>>>> between
>>>>>>>> different requested memory regions. That is why in jdk7 we first
>>>>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>>>>> compressed oops.
>>>>>>>>
>>>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>>>>> compressed
>>>>>>>> oops and with Xmx20Gb.
>>>>>>> I verifed that we get either cds_address+cds_total as the
>>>>>>> address, or
>>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>>>>> Windows
>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>>>>> sizes and
>>>>>>> -Xmx32G.
>>>>>>>
>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>>>>> desired
>>>>>>> CDS address for class metaspace regardless of heap size.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>>>>>>> unfortunately we
>>>>>>>>> can't do other way. I assume you use max size because depending on
>>>>>>>>> registers used in instructions you will or will not get prefix
>>>>>>>>> byte
>>>>>>>>> (r8-r15).
>>>>>>> Is there one prefix byte per instruction, or just for certain
>>>>>>> instructions?
>>>>>>>>>
>>>>>>>>> I will look on changes in more details may be late.
>>>>>>>>
>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use abbreviations
>>>>>>>> which are not obvious.
>>>>>>> I changed using_class_vsm() to using_class_space().
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Vladimir
>>>>>>>>>
>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> Please review this fix for bug 8003424.
>>>>>>>>>>
>>>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>>>>
>>>>>>>>>> Open bug links at:
>>>>>>>>>>
>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>>>>
>>>>>>>>>> JBS Bug links at
>>>>>>>>>>
>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> This fix provides support for using compressed klass pointers
>>>>>>>>>> with
>>>>>>>>>> CDS.
>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>>>>>>> platforms
>>>>>>>>>> when
>>>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
>>>>>>>>>> class
>>>>>>>>>> metaspace as part of the Java Heap allocation and locating it at
>>>>>>>>>> the
>>>>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>>>>> separately,
>>>>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>>>>> metaspace
>>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>>>>> being
>>>>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>>>>> heap and
>>>>>>>>>> the metaspace.
>>>>>>>>>>
>>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>>>>>>>> memory at
>>>>>>>>>> 32G,
>>>>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>>>>> encoding
>>>>>>>>>> and decoding of compressed klass pointers will always require use
>>>>>>>>>> of a
>>>>>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>>>>>> pointers
>>>>>>>>>> will differ from compressed oops.
>>>>>>>>>>
>>>>>>>>>> There are no class metaspace allocation changes if
>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>>>>>>>>>> 32-bit
>>>>>>>>>> platform.
>>>>>>>>>>
>>>>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>>>>> 8016729,
>>>>>>>>>> 8011610, and 8003424.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>>>>> Modules
>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>>>>>>>> changed to
>>>>>>>>>> support the new encoding and decoding of compressed klass
>>>>>>>>>> pointers.
>>>>>>>>>>
>>>>>>>>>> Module metaspace.cpp was changed significantly to support the new
>>>>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>>>>> compressed
>>>>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>>>>
>>>>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>>>>> related
>>>>>>>>>> to allocating metaspace and remove code that considered
>>>>>>>>>> compressed
>>>>>>>>>> klass
>>>>>>>>>> pointers when determining the compressed oops compression
>>>>>>>>>> mechanism.
>>>>>>>>>>
>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as part
>>>>>>>>>> of a
>>>>>>>>>> cleanup requested by Coleen.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>>>>>>>>>> tests,
>>>>>>>>>> JPRT,
>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and vm.mlvm.testlist
>>>>>>>>>> tests. Most of the test were run with -Xshare:on and -Xshare:off
>>>>>>>>>> (with
>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit Linux and
>>>>>>>>>> 64-Bit
>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
>>>>>>>>>> were
>>>>>>>>>> run on Solaris x86.
>>>>>>>>>>
>>>>>>>>>> The performance impact of these changes is TBD.
>>>>>>>>>>
>>>>>>>>>> Thanks, Harold
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>
>>>>>
>>>
>
From serguei.spitsyn at oracle.com Thu Aug 8 16:03:18 2013
From: serguei.spitsyn at oracle.com (serguei.spitsyn at oracle.com)
Date: Thu, 08 Aug 2013 16:03:18 -0700
Subject: RFR 8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
In-Reply-To: <52016BBB.3040907@oracle.com>
References: <52016BBB.3040907@oracle.com>
Message-ID: <520423B6.3050009@oracle.com>
Coleen,
The fix looks good, I do not see any issues.
Thanks,
Serguei
On 8/6/13 2:33 PM, Coleen Phillimore wrote:
> Summary: ActiveMethodOopsCache was used to keep track of old versions
> of some methods that are cached in Universe but is buggy with permgen
> removal and not needed anymore
>
> There was a crash in this function that I couldn't reproduce. It was
> likely that the crash was for something else, but this is a lurking bug.
>
> open webrev at http://cr.openjdk.java.net/~coleenp/8009728/
> bug link at http://bugs.sun.com/view_bug.do?bug_id=8009728
> local bug link https://jbs.oracle.com/bugs/browse/JDK-8009728
>
> Tested with vm.quick.testlist which includes redefine classes tests
> and jck lang and vm tests.
>
> Thanks,
> Coleen
From coleen.phillimore at oracle.com Thu Aug 8 16:01:27 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Thu, 08 Aug 2013 19:01:27 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <520421C6.8050609@oracle.com>
References: <51E82BC1.9010202@oracle.com> <51E86638.8040407@oracle.com>
<51E9D23E.4080907@oracle.com> <51F01E6C.7060806@oracle.com>
<51F03ABE.2090002@oracle.com> <51FC173B.6070205@oracle.com>
<52002E68.6080901@oracle.com> <5202691E.6020500@oracle.com>
<52040F88.9070406@oracle.com> <52041CF0.4000801@oracle.com>
<520421C6.8050609@oracle.com>
Message-ID: <52042347.5040005@oracle.com>
Yes, there should be a check for that too. Now I'll really let Harold
answer.
Thanks,
Coleen
On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
> Coleen, Harold
>
> > The InstanceKlass has offsets to fields in the instance, and they
> depend
> > on both compressed oops and compressed klass pointers. So both
> have to
> > be on for the offsets to be valid.
>
> So there is dependency on UseCompressedOops and
> UseCompressedKlassPointers flags during dump.
>
> Then why the check is done only for UseSharedSpaces and not for
> DumpSharedSpaces?:
>
> if (DumpSharedSpaces) {
> if (RequireSharedSpaces) {
> warning("cannot dump shared archive while using shared archive");
> }
> UseSharedSpaces = false;
> + #ifdef _LP64
> + } else {
> + // UseCompressedOops and UseCompressedKlassPointers must be on
> for UseSharedSpaces.
> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> + no_shared_spaces();
> + }
> + #endif
> }
>
> Thanks,
> Vladimir
>
> On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>>
>> Hi Vladimir,
>>
>> I have a couple of answers and I'll let Harold answer the rest.
>>
>> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>>> On 8/7/13 8:34 AM, harold seigel wrote:
>>>> Hi Vladimir,
>>>>
>>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>>>> Harold,
>>>>>
>>>>> Note, on SPARC set() could generate up to 8 instructions to load
>>>>> 64-bit constant into register. So I am not sure that it will be
>>>>> faster
>>>>> than load.
>>>> We thought it would be faster because it doesn't need to load anything
>>>> from memory.
>>>
>>> For good value (0x800000000) it should use only 2-3 instructions.
>>> I think you can keep using set().
>>>
>>>>>
>>>>> I can't find where in CDS you store information about compressed
>>>>> klass
>>>>> pointers and compressed oops parameters which were used during dump?
>>>>> How you verify that correct parameters/flags are ussed when such CDS
>>>>> is used later?
>>>> No compressed klass pointers nor compressed oops get written to the
>>>> archive. So, the compressed klass pointers and compressed oops
>>>> parameters do not need to be recorded in the archive.
>>>
>>> So you are saying that all klass pointers (references to klasses) in
>>> metadata structures in metaspace are full.
>>
>> Yes, they are. (methodOops weren't in the InstanceKlass::_methods array
>> with Permgen but they are uncompressed now).
>>
>>> And klass pointers are only compressed in java object headers (which
>>> are not part of CDS). Right?
>>
>> The InstanceKlass has offsets to fields in the instance, and they depend
>> on both compressed oops and compressed klass pointers. So both have to
>> be on for the offsets to be valid.
>>
>> But the base and compressed values are not stored anywhere in the CDS
>> archive.
>>
>>> And you don't care about UseCompressedOops and
>>> UseCompressedKlassPointers flags settings when you dump it into
>>> archive. The only limit is:
>>>
>>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
>>>
>>> Then I don't understand why you can't use/load CDS archive when coop
>>> or compklass are off:
>>>
>>> > If coop is turned off then CDS cannot be used. CDS will only be
>>> > supported if both UseCompressedOops and UseCompressedKlassPointers
>>> are
>>> > TRUE.
>>>
>>> Also based on code in arguments.cpp it is allowed to specify
>>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command line:
>>>
>>> 1466 // Turn on UseCompressedKlassPointers too
>>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>>> 1469 }
>>>
>>> Did you tested such combination?
>>
>> I should let Harold answer this but I believe this is what his test
>> does. For CDS on 64 bit, both must be on. We didn't want to create 4
>> different archives. And it wouldn't make too much sense since CDS for
>> 64 bit is a footprint savings so why would you use it without
>> compressing oops and class pointers? It's not a startup savings on
>> server because we turn off interpreter bytecode quickening.
>>
>> Coleen
>>
>>>
>>>>>
>>>>> set_narrow_klass_base_and_shift() and
>>>>> can_use_cds_with_metaspace_addr() have the same code for
>>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>>>> can_use_cds_with_metaspace_addr() from
>>>>> set_narrow_klass_base_and_shift() ?
>>>> I could add new inlined methods that determine the higher_address and
>>>> lower_base when UseSharedSpaces is true and have them called from
>>>> set_narrow_klass_base_and_shift() and
>>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>>>
>>> I tried several approaches but your implementation is more clean. So I
>>> agree to keep what you have now.
>>>
>>>
>>> Also I found strange assert which should always fail (old code in
>>> global_initialize() in metaspace.cpp):
>>>
>>> 2959 if (UseSharedSpaces) {
>>> ...
>>> 2969 } else {
>>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>>> 2971 "archive file not closed or shared spaces not
>>> disabled.");
>>>
>>> Thanks,
>>> Vladimir
>>>
>>>>>
>>>>> I see that you unconditionally set comp klass ptr base and shift for
>>>>> DumpSharedSpaces. Should you do the check similar to
>>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>>>>> don't even check UseCompressedKlassPointers.
>>>> I don't think the checks are needed because the information written to
>>>> the archive is not affected by the size of the class metaspace.
>>>>
>>>> Also, I recently added code to arguments.cpp that will generate an
>>>> error
>>>> if UseCompressedOops or UseCompressedKlassPointers is turned off and
>>>> DumpSharedSpaces is on.
>>>>>
>>>>> Why you have next limitation? What if coop can't be used because of
>>>>> big heap?:
>>>>>
>>>>> + // UseCompressedOops and UseCompressedKlassPointers must be on
>>>>> for UseSharedSpaces.
>>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> + no_shared_spaces();
>>>> If coop is turned off then CDS cannot be used. CDS will only be
>>>> supported if both UseCompressedOops and UseCompressedKlassPointers are
>>>> TRUE.
>>>>>
>>>>> Could you move UseCompressedKlassPointers code in arguments.cpp into
>>>>> separate method similar to set_use_compressed_oops()?
>>>> Done.
>>>>>
>>>>> About new tests.
>>>>> The first test in CDSCompressedKPtrsError misses
>>>>> -XX:+UseCompressedOops flag.
>>>> Fixed.
>>>>>
>>>>> Could you also test cross flags combinations?:
>>>>>
>>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>>> Done.
>>>>>
>>>>> It would be nice to have test to check ClassMetaspaceSize value
>>>>> range.
>>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
>>>>> or maxuint.
>>>> A member of our runtime SQE group is writing additional tests. I'll
>>>> ask
>>>> him to write a ClassMetaspaceSize range test.
>>>>
>>>> We chose 3Gb because we thought it was a sufficiently large size.
>>>>>
>>>>>
>>>>> About code style, indention. We align next line to corresponding part
>>>>> of previous line if we need to split a line. And sometimes it is
>>>>> better to keep one long line. I understand some of them were before
>>>>> your changes but, please, clean up at lest ones you touched.
>>>> Done.
>>>>>
>>>>> Cases in metaspace.cpp:
>>>>>
>>>>> 2263 assert(raw_word_size >= min_size,
>>>>> 2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
>>>>> SIZE_FORMAT, word_size, min_size));
>>>>>
>>>>>
>>>>> 2485 if (Metaspace::using_class_space() &&
>>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>>>>
>>>>>
>>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>>>> 2575 (Metaspace::using_class_space() ?
>>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>>>
>>>>>
>>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>>>> SIZE_FORMAT ", "
>>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>>>> ", "
>>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>>>> ", "
>>>>> 2697 "large count " SIZE_FORMAT,
>>>>> 2698 cls_specialized_count, cls_specialized_waste,
>>>>> 2699 cls_small_count, cls_small_waste,
>>>>> 2700 cls_medium_count, cls_medium_waste,
>>>>> cls_humongous_count);
>>>>>
>>>>>
>>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
>>>>> addr) &&
>>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>>>
>>>>>
>>>>> 2889 vm_exit_during_initialization(err_msg(
>>>>> 2890 "Could not allocate metaspace: %d bytes",
>>>>> 2891 class_metaspace_size()));
>>>>>
>>>>>
>>>>> 3107 return using_class_space() ?
>>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>>>
>>>>>
>>>>> 3157 if (is_class && using_class_space()) {
>>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>>>>
>>>>>
>>>>> 3305 return space_list()->contains(ptr) ||
>>>>> 3306 (using_class_space() && class_space_list()->contains(ptr));
>>>>>
>>>>> metaspace.hpp:
>>>>>
>>>>> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
>>>>> 271 (Metaspace::using_class_space() ?
>>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>>>
>>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
>>>>> 286 (Metaspace::using_class_space() ?
>>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>>>>
>>>>> universe.cpp:
>>>>>
>>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>>>> (intptr_t)(Universe::heap()->base() -
>>>>> 850 os::vm_page_size()) ||
>>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
>>>>> value");
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Please review this updated webrev for bug 8003424:
>>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>>>>
>>>>>>
>>>>>> The updated webrev has a lot of changes from the previous webrev,
>>>>>> including the following:
>>>>>>
>>>>>> 1. Class metaspace information is now output when
>>>>>> -XX:+PrintCompressedOopsMode is specified.
>>>>>>
>>>>>> 2. decode_klass_not_null(Register dst, Register src) no longer
>>>>>> clobbers R12.
>>>>>>
>>>>>> 3. Method using_class_vsm() was renamed to using_class_space().
>>>>>>
>>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
>>>>>> appropriate.
>>>>>>
>>>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>>>> unnecessary.
>>>>>>
>>>>>> 6. Metaspace::initialize_class_space() was made private.
>>>>>>
>>>>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>>>>>> updated.
>>>>>>
>>>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
>>>>>> and
>>>>>> specjbb2013. The results showed no significant performance
>>>>>> difference
>>>>>> in terms of scores and gc behavior.
>>>>>>
>>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>>>>>
>>>>>> Please let me know what additional tests should be run.
>>>>>>
>>>>>> Thanks!
>>>>>> Harold
>>>>>>
>>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>>>>> Hi Harold,
>>>>>>>
>>>>>>> > Usually the narrow_klass_base will be 32G and the
>>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
>>>>>>> means
>>>>>>> that
>>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>>> unless
>>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>>>> make
>>>>>>> sense?
>>>>>>>
>>>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
>>>>>>> and I
>>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>>>>> (assuming or
>>>>>>> with check that class metaspace size < 32Gb).
>>>>>>>
>>>>>>> > Is there one prefix byte per instruction, or just for certain
>>>>>>> instructions?
>>>>>>>
>>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>>>>> prefix is
>>>>>>> necessary only if an instruction references one of the extended
>>>>>>> registers or uses a 64-bit operand."
>>>>>>>
>>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and
>>>>>>> =32
>>>>>>> and big java heap. Recently we got several bugs which indicated
>>>>>>> that
>>>>>>> we did not separate cleanly oops and klass pointers en/decoding.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Vladimir
>>>>>>>
>>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>>>>> Hi Vladimir,
>>>>>>>>
>>>>>>>> Thank you for the review! Please see inline comments.
>>>>>>>>
>>>>>>>> Thanks, Harold
>>>>>>>>
>>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>>>>>> Nice clean up, Harold
>>>>>>>>>>
>>>>>>>>>> Could you add the size of class metaspace in output with
>>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>>>>>> remember an
>>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>>>>> Will be done in next webrev.
>>>>>>>>>>
>>>>>>>>>> Also it would be nice to print these info line (and compressed
>>>>>>>>>> oops
>>>>>>>>>> info
>>>>>>>>>> line) in hs_err files.
>>>>>>>> I filed an enhancement bug for this: 8021264
>>>>>>>> .
>>>>>>>>>>
>>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>>>>>>> x86_64.ad.
>>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>>>>>>>>>> arithmetic
>>>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
>>>>>>>>>> note
>>>>>>>>>> that code in .ad file does not check the encoding mode for
>>>>>>>>>> narrow
>>>>>>>>>> klass/oop so it should be conservative and assume that
>>>>>>>>>> arithmetic
>>>>>>>>>> instructions are used.
>>>>>>>> OK. Thanks.
>>>>>>>>>>
>>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>>>>>>> 4Gb so
>>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>>>>>> encoding/decoding without destroying R12.
>>>>>>>>>
>>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
>>>>>>>>> (sign
>>>>>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>>>>>> But the base will normally be 32Gb. So this case won't happen
>>>>>>>> very
>>>>>>>> often.
>>>>>>>>>
>>>>>>>>> You definitely should not use R12 in
>>>>>>>>> decode_klass_not_null(Register
>>>>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>>>>> Will be fixed in next webrev.
>>>>>>>>>
>>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
>>>>>>>>> 64Gb.
>>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>>>>>
>>>>>>>>> decode:
>>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>>>>>> }
>>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
>>>>>>>>> maxint
>>>>>>>>> (max positive int).
>>>>>>>> Usually the narrow_klass_base will be 32G and the
>>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>>>>>> that
>>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>>>> unless
>>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>>>>> make
>>>>>>>> sense?
>>>>>>>>>
>>>>>>>>> And you have general memory reservation problem. At least on
>>>>>>>>> Solaris,
>>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>>>>>>>>> between
>>>>>>>>> different requested memory regions. That is why in jdk7 we first
>>>>>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>>>>>> compressed oops.
>>>>>>>>>
>>>>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>>>>>> compressed
>>>>>>>>> oops and with Xmx20Gb.
>>>>>>>> I verifed that we get either cds_address+cds_total as the
>>>>>>>> address, or
>>>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>>>>>> Windows
>>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>>>>>> sizes and
>>>>>>>> -Xmx32G.
>>>>>>>>
>>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>>>>>> desired
>>>>>>>> CDS address for class metaspace regardless of heap size.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>>>>>>>> unfortunately we
>>>>>>>>>> can't do other way. I assume you use max size because
>>>>>>>>>> depending on
>>>>>>>>>> registers used in instructions you will or will not get prefix
>>>>>>>>>> byte
>>>>>>>>>> (r8-r15).
>>>>>>>> Is there one prefix byte per instruction, or just for certain
>>>>>>>> instructions?
>>>>>>>>>>
>>>>>>>>>> I will look on changes in more details may be late.
>>>>>>>>>
>>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>>>>>>>>> abbreviations
>>>>>>>>> which are not obvious.
>>>>>>>> I changed using_class_vsm() to using_class_space().
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Vladimir
>>>>>>>>>>
>>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> Please review this fix for bug 8003424.
>>>>>>>>>>>
>>>>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>>>>>
>>>>>>>>>>> Open bug links at:
>>>>>>>>>>>
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>>>>>
>>>>>>>>>>> JBS Bug links at
>>>>>>>>>>>
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> This fix provides support for using compressed klass pointers
>>>>>>>>>>> with
>>>>>>>>>>> CDS.
>>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>>>>>>>> platforms
>>>>>>>>>>> when
>>>>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
>>>>>>>>>>> class
>>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
>>>>>>>>>>> it at
>>>>>>>>>>> the
>>>>>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>>>>>> separately,
>>>>>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>>>>>> metaspace
>>>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>>>>>> being
>>>>>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>>>>>> heap and
>>>>>>>>>>> the metaspace.
>>>>>>>>>>>
>>>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>>>>>>>>> memory at
>>>>>>>>>>> 32G,
>>>>>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>>>>>> encoding
>>>>>>>>>>> and decoding of compressed klass pointers will always
>>>>>>>>>>> require use
>>>>>>>>>>> of a
>>>>>>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>>>>>>> pointers
>>>>>>>>>>> will differ from compressed oops.
>>>>>>>>>>>
>>>>>>>>>>> There are no class metaspace allocation changes if
>>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>>>>>>>>>>> 32-bit
>>>>>>>>>>> platform.
>>>>>>>>>>>
>>>>>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>>>>>> 8016729,
>>>>>>>>>>> 8011610, and 8003424.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>>>>>> Modules
>>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>>>>>>>>> changed to
>>>>>>>>>>> support the new encoding and decoding of compressed klass
>>>>>>>>>>> pointers.
>>>>>>>>>>>
>>>>>>>>>>> Module metaspace.cpp was changed significantly to support
>>>>>>>>>>> the new
>>>>>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>>>>>> compressed
>>>>>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>>>>>
>>>>>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>>>>>> related
>>>>>>>>>>> to allocating metaspace and remove code that considered
>>>>>>>>>>> compressed
>>>>>>>>>>> klass
>>>>>>>>>>> pointers when determining the compressed oops compression
>>>>>>>>>>> mechanism.
>>>>>>>>>>>
>>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
>>>>>>>>>>> part
>>>>>>>>>>> of a
>>>>>>>>>>> cleanup requested by Coleen.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>>>>>>>>>>> tests,
>>>>>>>>>>> JPRT,
>>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>>>>>>>>>>> vm.mlvm.testlist
>>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>>>>>>>>>>> -Xshare:off
>>>>>>>>>>> (with
>>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>>>>>>>>>>> Linux and
>>>>>>>>>>> 64-Bit
>>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
>>>>>>>>>>> were
>>>>>>>>>>> run on Solaris x86.
>>>>>>>>>>>
>>>>>>>>>>> The performance impact of these changes is TBD.
>>>>>>>>>>>
>>>>>>>>>>> Thanks, Harold
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>
>>
From ioi.lam at oracle.com Thu Aug 8 16:11:57 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Thu, 08 Aug 2013 16:11:57 -0700
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <52040D1E.9000101@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
<5203E8D7.107@oracle.com> <52040B08.8020401@oracle.com>
<52040D1E.9000101@oracle.com>
Message-ID: <520425BD.6090605@oracle.com>
|I found one version of JDK7 that does not crash:||
||
sc11136754 ~$
/net/jre.us.oracle.com/p/v31/jdk/7/all/b24/binaries/linux-amd64/bin/java
-showversion -cp . -Xbootclasspath/a:foo.jar test2
Error occurred during initialization of VM
java/lang/ClassNotFoundException: error in opening JAR file foo.jar
||
||
||- Ioi
|
On 08/08/2013 02:26 PM, Ioi Lam wrote:
> |I found an official version that's closest to the Redhat version
> (OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode). It still
> crashes.||
> ||
> ||sc11136754 ~$ /java/re/jdk/6_25/latest/binaries/linux-amd64/bin/java
> -showversion -cp . -Xbootclasspath/a:foo.jar test2||
> ||java version "1.6.0_25"||
> ||Java(TM) SE Runtime Environment (build 1.6.0_25-b06)||
> ||Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)||
> ||
> ||java.lang.ClassNotFoundException ||
> || - klass: 'java/lang/ClassNotFoundException'||
> ||#||
> ||# A fatal error has been detected by the Java Runtime Environment:||
> ||#||
> ||# Internal Error (exceptions.cpp:397), pid=29955, tid=140608485558016||
> ||# fatal error: ExceptionMark destructor expects no pending exceptions||
> ||#||
> ||# JRE version: 6.0_25-b06||
> ||# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.0-b11 mixed mode
> linux-amd64 compressed oops)||
> ||# An error report file with more information is saved as:||
> ||# /home/iklam/hs_err_pid29955.log||
> ||#||
> ||# If you would like to submit a bug report, please visit:||
> ||# http://java.sun.com/webapps/bugreport/crash.jsp||
> ||#||
> ||Aborted (core dumped)||
> |
> - Ioi
>
> On 08/08/2013 02:18 PM, David Holmes wrote:
>> On 9/08/2013 4:52 AM, Ioi Lam wrote:
>>> |Hmmm, I used JDK6 from OEL 6.0 (derived from RedHat), which apparently
>>> works differently
>>> (better?) than the official JDK6 build. Maybe Redhat fixed this in
>>> their
>>> own repo??||
>>
>> Their hotspot version is much later - hs20 vs hs17
>>
>> David
>> -----
>>
>>> ||
>>> |
>>> |==OEL6================================================
>>> ||
>>> ||sc11136754 ~$ uname -a||
>>> ||Linux sc11136754 2.6.39-100.5.1.el6uek.x86_64 #1 SMP Tue Mar 6
>>> 20:26:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux||
>>> ||sc11136754 ~$ type java||
>>> ||java is hashed (/usr/bin/java)||
>>> ||sc11136754 ~$ java -version||
>>> ||java version "1.6.0_22"||
>>> ||OpenJDK Runtime Environment (IcedTea6 1.10.4)
>>> (rhel-1.41.1.10.4.el6-x86_64)||
>>> ||OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)||
>>> ||sc11136754 ~$ java -showversion -cp . -Xbootclasspath/a:foo.jar
>>> test2||
>>> ||Error occurred during initialization of VM||
>>> ||java/lang/ClassNotFoundException: error in opening JAR file foo.jar||
>>> ||
>>> ==OFFICIAL============================================
>>> ||
>>> sc11136754 ~$ /java/re/jdk/6_22/latest/binaries/linux-amd64/bin/java
>>> -showversion -cp . -Xbootclasspath/a:foo.jar test2
>>> java version "1.6.0_22"
>>> Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
>>> Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
>>>
>>> #
>>> # A fatal error has been detected by the Java Runtime Environment:
>>> #
>>> # Internal Error (exceptions.cpp:367), pid=25167, tid=140510319580928
>>> # Error: ExceptionMark destructor expects no pending exceptions
>>> #
>>> # JRE version: 6.0_22-b04
>>> # Java VM: Java HotSpot(TM) 64-Bit Server VM (17.1-b03 mixed mode
>>> linux-amd64 )
>>> # An error report file with more information is saved as:
>>> # /home/iklam/hs_err_pid25167.log
>>> #
>>> # If you would like to submit a bug report, please visit:
>>> # http://java.sun.com/webapps/bugreport/crash.jsp
>>> #
>>> |
>>> |======================================================
>>> ||
>>> ||- Ioi|
>>>
>>> On 08/08/2013 11:08 AM, Calvin Cheung wrote:
>>>> Hi Ioi, David,
>>>>
>>>> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>>>>> |JDK6 seems to handle this better. I have written a simple
>>>>> stand-alone test case that doesn't require truncating JAR files in
>>>>> the JDK:||
>>>>> ||
>>>>> ||=========================||
>>>>> ||/*||
>>>>> ||javac test2.java||
>>>>> ||rm -f foo.jar||
>>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>>> ||touch foo.jar||
>>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>>> ||*/||
>>>>> ||
>>>>> ||public class test2 {||
>>>>> || public static void main(String args[]) {||
>>>>> || try {||
>>>>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>>>>> ||System.out.println(Class.forName("xxx"));||
>>>>> || } catch (Throwable t) {||
>>>>> || t.printStackTrace();||
>>>>> || }||
>>>>> || }||
>>>>> ||}||
>>>>> ||=========================||
>>>>> | |
>>>>> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
>>>>> -Xbootclasspath/a:foo.jar test2" command.||
>>>>> |
>>>> |I saw crash with the latest 6 update release with both test cases.
>>>> The crash seems to be at the same spot.
>>>> |
>>>>> |||
>>>>> ||So I think the correct fix is to restore the JDK6 behavior (not
>>>>> sure if it's already the same with your patch, but worth checking),
>>>>> and also add a new jtreg test into hotspot.||
>>>>> |
>>>> |I checked the jdk 6 code and those 3 methods which I changed look the
>>>> same as jdk 8.
>>>> Sure, I can add a jtreg test.
>>>> |
>>>>> |||
>>>>> ||Thanks||
>>>>> ||- Ioi||
>>>>> ||
>>>>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>>>>> |
>>>>>> |Hi Calvin, ||
>>>>>> | |
>>>>>> ||It seems to me that this code has a general problem with
>>>>>> exceptions. If exceptions can be posted then methods should be
>>>>>> declared with a last parameter of TRAPS and called with a CHECK_
>>>>>> macro. The way this code is written it does not seem to expect any
>>>>>> exceptions to be possible. I would check with Karen on this. ||
>>>>>> |
>>>> |I was thinking about that but that would involves a bit more changes.
>>>> I can give it a try.
>>>> |
>>>>>> || |
>>>>>> ||This addition seems unused: ||
>>>>>> | |
>>>>>> ||+ Thread* THREAD = thread; ||
>>>>>> |
>>>> |It is required for the THROW_MSG().
>>>> It won't be needed if the method is declared with TRAPS as the last
>>>> parameter (I think).
>>>>
>>>> thanks,
>>>> Calvin
>>>> |
>>>>>> || |
>>>>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>>>>>> exceptions - don't know what the thought process was there :) ||
>>>>>> | |
>>>>>> ||David ||
>>>>>> | |
>>>>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>>>>> |
>>>>>>> |Please review this small fix for fixing a fatal error in ||
>>>>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>>>>> ||ClassLoader::create_class_path_entry(). I could reproduce similar
>>>>>>> crash ||
>>>>>>> ||by trying to load a class from an empty jar which is in the ||
>>>>>>> ||bootclasspath. The following program can trigger the crash if
>>>>>>> the ||
>>>>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>>>>> | |
>>>>>>> ||public class TestForName { ||
>>>>>>> || public static void main(String[] args) { ||
>>>>>>> || try { ||
>>>>>>> || Class cls =
>>>>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>>>>> || System.out.println("Class = " + cls.getName()); ||
>>>>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>>>>> || cnfe.printStackTrace(); ||
>>>>>>> || } ||
>>>>>>> || } ||
>>>>>>> ||} ||
>>>>>>> | |
>>>>>>> ||The fix also changes the assert() in
>>>>>>> LazyClassPathEntry::resolve_entry() ||
>>>>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>>>>> above test ||
>>>>>>> ||scenario. ||
>>>>>>> | |
>>>>>>> ||With the fix, the following ClassNotFoundException will be
>>>>>>> thrown ||
>>>>>>> ||instead of a crash: ||
>>>>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>>>>> || at
>>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>>>>> || at
>>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>>>>> || at java.security.AccessController.doPrivileged(Native
>>>>>>> Method) ||
>>>>>>> || at
>>>>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>>>>> || at
>>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>>>>> || at
>>>>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>>>>> || at
>>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>>>>> || at java.lang.Class.forName0(Native Method) ||
>>>>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>>>>> || at TestForName.main(TestForName.java:6) ||
>>>>>>> | |
>>>>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>>>>> | |
>>>>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>>>>> | |
>>>>>>> ||Tests: ||
>>>>>>> || jprt, vm.quick.testlist ||
>>>>>>> | |
>>>>>>> ||thanks, ||
>>>>>>> ||Calvin ||
>>>>>>> | |
>>>>>>> | |
>>>>>>> |
>>>>> |
>>>>> |
>>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130808/fa7d3c01/attachment.html
From coleen.phillimore at oracle.com Thu Aug 8 16:21:29 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Thu, 08 Aug 2013 19:21:29 -0400
Subject: RFR 8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
In-Reply-To: <520423B6.3050009@oracle.com>
References: <52016BBB.3040907@oracle.com> <520423B6.3050009@oracle.com>
Message-ID: <520427F9.8030805@oracle.com>
Thanks, Serguei!
Coleen
On 08/08/2013 07:03 PM, serguei.spitsyn at oracle.com wrote:
> Coleen,
>
> The fix looks good, I do not see any issues.
>
> Thanks,
> Serguei
>
>
> On 8/6/13 2:33 PM, Coleen Phillimore wrote:
>> Summary: ActiveMethodOopsCache was used to keep track of old versions
>> of some methods that are cached in Universe but is buggy with permgen
>> removal and not needed anymore
>>
>> There was a crash in this function that I couldn't reproduce. It was
>> likely that the crash was for something else, but this is a lurking bug.
>>
>> open webrev at http://cr.openjdk.java.net/~coleenp/8009728/
>> bug link at http://bugs.sun.com/view_bug.do?bug_id=8009728
>> local bug link https://jbs.oracle.com/bugs/browse/JDK-8009728
>>
>> Tested with vm.quick.testlist which includes redefine classes tests
>> and jck lang and vm tests.
>>
>> Thanks,
>> Coleen
>
From coleen.phillimore at oracle.com Thu Aug 8 16:59:47 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Thu, 08 Aug 2013 19:59:47 -0400
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <52041AC1.4000803@oracle.com>
References: <5201886C.1030206@oracle.com> <52024E1A.4000908@oracle.com>
<520275B8.5010101@oracle.com> <52028A69.8010207@oracle.com>
<52041AC1.4000803@oracle.com>
Message-ID: <520430F3.4040306@oracle.com>
Mikael,
I think this looks great. It's a lot cleaner (more red than blue changes).
thanks for humoring me,
Coleen
On 08/08/2013 06:25 PM, Mikael Vidstedt wrote:
>
> Coleen,
>
> After having tried numerous different versions I ended up with this:
>
> http://cr.openjdk.java.net/~mikael/webrevs/8022452.3/webrev
>
> Summary of the changes:
>
> * The GetNativeSystemInfo call has been moved up before the switch,
> but is only called if the os version is recent enough, and we
> actually care about the si.wProcessorArchitecture field.
>
> * The true/else branches in the if-diamond have been switch to avoid
> the negation of the condition.
>
> * While at it I added support for recognizing "Windows Server 2008 R2"
> (6.1 non-workstation) which we apparently haven't recognized earlier,
> but which is something the JDK code recognizes [1].
>
> * The " , 64 bit" has been move out below the switch, but is only
> relevant/tested for on recent enough Windows versions, just like the
> old code did.
>
> Feedback much appreciated! I'm also investigating if it would be
> possible to unify/share the code with the java_props_md.c logic [1] to
> avoid the duplication, but for now this may have to do. In addition to
> that the code can be cleaned up further if we only support VS2010+,
> which I believe is de facto since JDK 7 anyway; I will investigate
> that as a separate improvement.
>
> Thanks,
> Mikael
>
> [1]
> http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/e057cddf0d6c/src/windows/native/java/lang/java_props_md.c
> (line 451).
>
> On 2013-08-07 10:56, Coleen Phillimore wrote:
>>
>> Mikael,
>>
>> I do like your new version better but because you changed so much, it
>> should be verified on all versions of windows. Which you might not
>> want to do. My suggestion to make this code nicer (fix case stmt
>> and outline common code) was really simple and I think can be
>> verified by code inspection, which might be less work and easier to
>> review.
>>
>> Coleen
>>
>> On 8/7/2013 12:28 PM, Mikael Vidstedt wrote:
>>>
>>> Coleen,
>>>
>>> Funny you should mention that, and since I fully agree with you I
>>> actually did prepare another version of the patch which is heavily
>>> inspired by the java_props_md.c implementation:
>>>
>>> http://cr.openjdk.java.net/~mikael/webrevs/winvercleanup2/webrev/
>>>
>>> I personally like this version better, but the one thing that held
>>> me back was the fact that I will basically want to dig up machines
>>> with all the different (supported) Windows versions and verify that
>>> the code is still correct in all cases. If you think this is the way
>>> to go I more than willing to will do so. Let me know what you think
>>> about the new version of the patch!
>>>
>>> There's no real urgency here - I'd rather do it correct once than...
>>>
>>> Cheers,
>>> Mikael
>>>
>>>
>>> On 2013-08-07 06:39, Coleen Phillimore wrote:
>>>>
>>>> It looks like the code under the case for all these releases,
>>>> should be different case statements for each, rather than these
>>>> cascading 'if' statements. And make 1668-1673 a new function
>>>> returning si. So if we have a new release, in general it will
>>>> work because the default will print out something. But a better
>>>> default would be lines 1712-1717 which are dead code now.
>>>>
>>>> Sorry, I know it's simple and urgent but this seems to be getting
>>>> increasingly ugly.
>>>>
>>>> Thanks,
>>>> Coleen
>>>>
>>>> On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>>>>>
>>>>> Please review the following change:
>>>>>
>>>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>>>>>
>>>>> The patch adds support to os_windows.cpp for recognizing the
>>>>> upcoming Windows versions: Windows 8.1 and Windows Server 2012 R2.
>>>>>
>>>>> The changed is based on the corresponding code on the JDK
>>>>> side[1][2][3].
>>>>>
>>>>> Thanks,
>>>>> Mikael
>>>>>
>>>>> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
>>>>> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
>>>>> [3]
>>>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>>>>>
>>>>
>>>
>>
>
From ioi.lam at oracle.com Thu Aug 8 20:05:50 2013
From: ioi.lam at oracle.com (ioi.lam at oracle.com)
Date: Fri, 09 Aug 2013 03:05:50 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8022093: syntax error near
"umpiconninfo_t" -- when building on Solaris 10
Message-ID: <20130809030555.BC59C48734@hg.openjdk.java.net>
Changeset: c661fa2e5189
Author: iklam
Date: 2013-08-08 14:45 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/c661fa2e5189
8022093: syntax error near "umpiconninfo_t" -- when building on Solaris 10
Summary: Added extra help message in make/solaris/makefiles/dtrace.make
Reviewed-by: dholmes, sspitsyn
! make/solaris/makefiles/dtrace.make
From dmitry.samersoff at oracle.com Fri Aug 9 04:15:42 2013
From: dmitry.samersoff at oracle.com (Dmitry Samersoff)
Date: Fri, 09 Aug 2013 15:15:42 +0400
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <520430F3.4040306@oracle.com>
References: <5201886C.1030206@oracle.com> <52024E1A.4000908@oracle.com>
<520275B8.5010101@oracle.com> <52028A69.8010207@oracle.com>
<52041AC1.4000803@oracle.com> <520430F3.4040306@oracle.com>
Message-ID: <5204CF5E.30705@oracle.com>
Mikael,
Does we still support Win 95/98/Me ?
PS: Comments seems redundant to me
1660 // find out whether we are running on 64 bit processor or not.
-Dmitry
On 2013-08-09 03:59, Coleen Phillimore wrote:
>
> Mikael,
>
> I think this looks great. It's a lot cleaner (more red than blue changes).
>
> thanks for humoring me,
> Coleen
>
> On 08/08/2013 06:25 PM, Mikael Vidstedt wrote:
>>
>> Coleen,
>>
>> After having tried numerous different versions I ended up with this:
>>
>> http://cr.openjdk.java.net/~mikael/webrevs/8022452.3/webrev
>>
>> Summary of the changes:
>>
>> * The GetNativeSystemInfo call has been moved up before the switch,
>> but is only called if the os version is recent enough, and we
>> actually care about the si.wProcessorArchitecture field.
>>
>> * The true/else branches in the if-diamond have been switch to avoid
>> the negation of the condition.
>>
>> * While at it I added support for recognizing "Windows Server 2008 R2"
>> (6.1 non-workstation) which we apparently haven't recognized earlier,
>> but which is something the JDK code recognizes [1].
>>
>> * The " , 64 bit" has been move out below the switch, but is only
>> relevant/tested for on recent enough Windows versions, just like the
>> old code did.
>>
>> Feedback much appreciated! I'm also investigating if it would be
>> possible to unify/share the code with the java_props_md.c logic [1] to
>> avoid the duplication, but for now this may have to do. In addition to
>> that the code can be cleaned up further if we only support VS2010+,
>> which I believe is de facto since JDK 7 anyway; I will investigate
>> that as a separate improvement.
>>
>> Thanks,
>> Mikael
>>
>> [1]
>> http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/e057cddf0d6c/src/windows/native/java/lang/java_props_md.c
>> (line 451).
>>
>> On 2013-08-07 10:56, Coleen Phillimore wrote:
>>>
>>> Mikael,
>>>
>>> I do like your new version better but because you changed so much, it
>>> should be verified on all versions of windows. Which you might not
>>> want to do. My suggestion to make this code nicer (fix case stmt
>>> and outline common code) was really simple and I think can be
>>> verified by code inspection, which might be less work and easier to
>>> review.
>>>
>>> Coleen
>>>
>>> On 8/7/2013 12:28 PM, Mikael Vidstedt wrote:
>>>>
>>>> Coleen,
>>>>
>>>> Funny you should mention that, and since I fully agree with you I
>>>> actually did prepare another version of the patch which is heavily
>>>> inspired by the java_props_md.c implementation:
>>>>
>>>> http://cr.openjdk.java.net/~mikael/webrevs/winvercleanup2/webrev/
>>>>
>>>> I personally like this version better, but the one thing that held
>>>> me back was the fact that I will basically want to dig up machines
>>>> with all the different (supported) Windows versions and verify that
>>>> the code is still correct in all cases. If you think this is the way
>>>> to go I more than willing to will do so. Let me know what you think
>>>> about the new version of the patch!
>>>>
>>>> There's no real urgency here - I'd rather do it correct once than...
>>>>
>>>> Cheers,
>>>> Mikael
>>>>
>>>>
>>>> On 2013-08-07 06:39, Coleen Phillimore wrote:
>>>>>
>>>>> It looks like the code under the case for all these releases,
>>>>> should be different case statements for each, rather than these
>>>>> cascading 'if' statements. And make 1668-1673 a new function
>>>>> returning si. So if we have a new release, in general it will
>>>>> work because the default will print out something. But a better
>>>>> default would be lines 1712-1717 which are dead code now.
>>>>>
>>>>> Sorry, I know it's simple and urgent but this seems to be getting
>>>>> increasingly ugly.
>>>>>
>>>>> Thanks,
>>>>> Coleen
>>>>>
>>>>> On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>>>>>>
>>>>>> Please review the following change:
>>>>>>
>>>>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>>>>>>
>>>>>> The patch adds support to os_windows.cpp for recognizing the
>>>>>> upcoming Windows versions: Windows 8.1 and Windows Server 2012 R2.
>>>>>>
>>>>>> The changed is based on the corresponding code on the JDK
>>>>>> side[1][2][3].
>>>>>>
>>>>>> Thanks,
>>>>>> Mikael
>>>>>>
>>>>>> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
>>>>>> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
>>>>>> [3]
>>>>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.
From harold.seigel at oracle.com Fri Aug 9 05:28:02 2013
From: harold.seigel at oracle.com (Harold Seigel)
Date: Fri, 9 Aug 2013 05:28:02 -0700 (PDT)
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
Message-ID: <60b2b73e-03f0-48d9-ac20-35f43b0f221b@default>
This is a bug that Stefan Karlsson also discovered. To fix it, I've changed the code to this:
if (DumpSharedSpaces) {
if (RequireSharedSpaces) {
warning("cannot dump shared archive while using shared archive");
}
UseSharedSpaces = false;
#ifdef _LP64
if (!UseCompressedOops || !UseCompressedKlassPointers) {
vm_exit_during_initialization(
"Cannot dump shared archive when UseCompressedOops or UseCompressedKlassPointers is off.", NULL);
}
Harold
----- Original Message -----
From: coleen.phillimore at oracle.com
To: hotspot-runtime-dev at openjdk.java.net
Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops
Yes, there should be a check for that too. Now I'll really let Harold
answer.
Thanks,
Coleen
On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
> Coleen, Harold
>
> > The InstanceKlass has offsets to fields in the instance, and they
> depend
> > on both compressed oops and compressed klass pointers. So both
> have to
> > be on for the offsets to be valid.
>
> So there is dependency on UseCompressedOops and
> UseCompressedKlassPointers flags during dump.
>
> Then why the check is done only for UseSharedSpaces and not for
> DumpSharedSpaces?:
>
> if (DumpSharedSpaces) {
> if (RequireSharedSpaces) {
> warning("cannot dump shared archive while using shared archive");
> }
> UseSharedSpaces = false;
> + #ifdef _LP64
> + } else {
> + // UseCompressedOops and UseCompressedKlassPointers must be on
> for UseSharedSpaces.
> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> + no_shared_spaces();
> + }
> + #endif
> }
>
> Thanks,
> Vladimir
>
> On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>>
>> Hi Vladimir,
>>
>> I have a couple of answers and I'll let Harold answer the rest.
>>
>> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>>> On 8/7/13 8:34 AM, harold seigel wrote:
>>>> Hi Vladimir,
>>>>
>>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>>>> Harold,
>>>>>
>>>>> Note, on SPARC set() could generate up to 8 instructions to load
>>>>> 64-bit constant into register. So I am not sure that it will be
>>>>> faster
>>>>> than load.
>>>> We thought it would be faster because it doesn't need to load anything
>>>> from memory.
>>>
>>> For good value (0x800000000) it should use only 2-3 instructions.
>>> I think you can keep using set().
>>>
>>>>>
>>>>> I can't find where in CDS you store information about compressed
>>>>> klass
>>>>> pointers and compressed oops parameters which were used during dump?
>>>>> How you verify that correct parameters/flags are ussed when such CDS
>>>>> is used later?
>>>> No compressed klass pointers nor compressed oops get written to the
>>>> archive. So, the compressed klass pointers and compressed oops
>>>> parameters do not need to be recorded in the archive.
>>>
>>> So you are saying that all klass pointers (references to klasses) in
>>> metadata structures in metaspace are full.
>>
>> Yes, they are. (methodOops weren't in the InstanceKlass::_methods array
>> with Permgen but they are uncompressed now).
>>
>>> And klass pointers are only compressed in java object headers (which
>>> are not part of CDS). Right?
>>
>> The InstanceKlass has offsets to fields in the instance, and they depend
>> on both compressed oops and compressed klass pointers. So both have to
>> be on for the offsets to be valid.
>>
>> But the base and compressed values are not stored anywhere in the CDS
>> archive.
>>
>>> And you don't care about UseCompressedOops and
>>> UseCompressedKlassPointers flags settings when you dump it into
>>> archive. The only limit is:
>>>
>>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
>>>
>>> Then I don't understand why you can't use/load CDS archive when coop
>>> or compklass are off:
>>>
>>> > If coop is turned off then CDS cannot be used. CDS will only be
>>> > supported if both UseCompressedOops and UseCompressedKlassPointers
>>> are
>>> > TRUE.
>>>
>>> Also based on code in arguments.cpp it is allowed to specify
>>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command line:
>>>
>>> 1466 // Turn on UseCompressedKlassPointers too
>>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>>> 1469 }
>>>
>>> Did you tested such combination?
>>
>> I should let Harold answer this but I believe this is what his test
>> does. For CDS on 64 bit, both must be on. We didn't want to create 4
>> different archives. And it wouldn't make too much sense since CDS for
>> 64 bit is a footprint savings so why would you use it without
>> compressing oops and class pointers? It's not a startup savings on
>> server because we turn off interpreter bytecode quickening.
>>
>> Coleen
>>
>>>
>>>>>
>>>>> set_narrow_klass_base_and_shift() and
>>>>> can_use_cds_with_metaspace_addr() have the same code for
>>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>>>> can_use_cds_with_metaspace_addr() from
>>>>> set_narrow_klass_base_and_shift() ?
>>>> I could add new inlined methods that determine the higher_address and
>>>> lower_base when UseSharedSpaces is true and have them called from
>>>> set_narrow_klass_base_and_shift() and
>>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>>>
>>> I tried several approaches but your implementation is more clean. So I
>>> agree to keep what you have now.
>>>
>>>
>>> Also I found strange assert which should always fail (old code in
>>> global_initialize() in metaspace.cpp):
>>>
>>> 2959 if (UseSharedSpaces) {
>>> ...
>>> 2969 } else {
>>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>>> 2971 "archive file not closed or shared spaces not
>>> disabled.");
>>>
>>> Thanks,
>>> Vladimir
>>>
>>>>>
>>>>> I see that you unconditionally set comp klass ptr base and shift for
>>>>> DumpSharedSpaces. Should you do the check similar to
>>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>>>>> don't even check UseCompressedKlassPointers.
>>>> I don't think the checks are needed because the information written to
>>>> the archive is not affected by the size of the class metaspace.
>>>>
>>>> Also, I recently added code to arguments.cpp that will generate an
>>>> error
>>>> if UseCompressedOops or UseCompressedKlassPointers is turned off and
>>>> DumpSharedSpaces is on.
>>>>>
>>>>> Why you have next limitation? What if coop can't be used because of
>>>>> big heap?:
>>>>>
>>>>> + // UseCompressedOops and UseCompressedKlassPointers must be on
>>>>> for UseSharedSpaces.
>>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> + no_shared_spaces();
>>>> If coop is turned off then CDS cannot be used. CDS will only be
>>>> supported if both UseCompressedOops and UseCompressedKlassPointers are
>>>> TRUE.
>>>>>
>>>>> Could you move UseCompressedKlassPointers code in arguments.cpp into
>>>>> separate method similar to set_use_compressed_oops()?
>>>> Done.
>>>>>
>>>>> About new tests.
>>>>> The first test in CDSCompressedKPtrsError misses
>>>>> -XX:+UseCompressedOops flag.
>>>> Fixed.
>>>>>
>>>>> Could you also test cross flags combinations?:
>>>>>
>>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>>> Done.
>>>>>
>>>>> It would be nice to have test to check ClassMetaspaceSize value
>>>>> range.
>>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
>>>>> or maxuint.
>>>> A member of our runtime SQE group is writing additional tests. I'll
>>>> ask
>>>> him to write a ClassMetaspaceSize range test.
>>>>
>>>> We chose 3Gb because we thought it was a sufficiently large size.
>>>>>
>>>>>
>>>>> About code style, indention. We align next line to corresponding part
>>>>> of previous line if we need to split a line. And sometimes it is
>>>>> better to keep one long line. I understand some of them were before
>>>>> your changes but, please, clean up at lest ones you touched.
>>>> Done.
>>>>>
>>>>> Cases in metaspace.cpp:
>>>>>
>>>>> 2263 assert(raw_word_size >= min_size,
>>>>> 2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
>>>>> SIZE_FORMAT, word_size, min_size));
>>>>>
>>>>>
>>>>> 2485 if (Metaspace::using_class_space() &&
>>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>>>>
>>>>>
>>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>>>> 2575 (Metaspace::using_class_space() ?
>>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>>>
>>>>>
>>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>>>> SIZE_FORMAT ", "
>>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>>>> ", "
>>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>>>> ", "
>>>>> 2697 "large count " SIZE_FORMAT,
>>>>> 2698 cls_specialized_count, cls_specialized_waste,
>>>>> 2699 cls_small_count, cls_small_waste,
>>>>> 2700 cls_medium_count, cls_medium_waste,
>>>>> cls_humongous_count);
>>>>>
>>>>>
>>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
>>>>> addr) &&
>>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>>>
>>>>>
>>>>> 2889 vm_exit_during_initialization(err_msg(
>>>>> 2890 "Could not allocate metaspace: %d bytes",
>>>>> 2891 class_metaspace_size()));
>>>>>
>>>>>
>>>>> 3107 return using_class_space() ?
>>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>>>
>>>>>
>>>>> 3157 if (is_class && using_class_space()) {
>>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>>>>
>>>>>
>>>>> 3305 return space_list()->contains(ptr) ||
>>>>> 3306 (using_class_space() && class_space_list()->contains(ptr));
>>>>>
>>>>> metaspace.hpp:
>>>>>
>>>>> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
>>>>> 271 (Metaspace::using_class_space() ?
>>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>>>
>>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
>>>>> 286 (Metaspace::using_class_space() ?
>>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>>>>
>>>>> universe.cpp:
>>>>>
>>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>>>> (intptr_t)(Universe::heap()->base() -
>>>>> 850 os::vm_page_size()) ||
>>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
>>>>> value");
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Please review this updated webrev for bug 8003424:
>>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>>>>
>>>>>>
>>>>>> The updated webrev has a lot of changes from the previous webrev,
>>>>>> including the following:
>>>>>>
>>>>>> 1. Class metaspace information is now output when
>>>>>> -XX:+PrintCompressedOopsMode is specified.
>>>>>>
>>>>>> 2. decode_klass_not_null(Register dst, Register src) no longer
>>>>>> clobbers R12.
>>>>>>
>>>>>> 3. Method using_class_vsm() was renamed to using_class_space().
>>>>>>
>>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
>>>>>> appropriate.
>>>>>>
>>>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>>>> unnecessary.
>>>>>>
>>>>>> 6. Metaspace::initialize_class_space() was made private.
>>>>>>
>>>>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>>>>>> updated.
>>>>>>
>>>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
>>>>>> and
>>>>>> specjbb2013. The results showed no significant performance
>>>>>> difference
>>>>>> in terms of scores and gc behavior.
>>>>>>
>>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>>>>>
>>>>>> Please let me know what additional tests should be run.
>>>>>>
>>>>>> Thanks!
>>>>>> Harold
>>>>>>
>>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>>>>> Hi Harold,
>>>>>>>
>>>>>>> > Usually the narrow_klass_base will be 32G and the
>>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
>>>>>>> means
>>>>>>> that
>>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>>> unless
>>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>>>> make
>>>>>>> sense?
>>>>>>>
>>>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
>>>>>>> and I
>>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>>>>> (assuming or
>>>>>>> with check that class metaspace size < 32Gb).
>>>>>>>
>>>>>>> > Is there one prefix byte per instruction, or just for certain
>>>>>>> instructions?
>>>>>>>
>>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>>>>> prefix is
>>>>>>> necessary only if an instruction references one of the extended
>>>>>>> registers or uses a 64-bit operand."
>>>>>>>
>>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and
>>>>>>> =32
>>>>>>> and big java heap. Recently we got several bugs which indicated
>>>>>>> that
>>>>>>> we did not separate cleanly oops and klass pointers en/decoding.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Vladimir
>>>>>>>
>>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>>>>> Hi Vladimir,
>>>>>>>>
>>>>>>>> Thank you for the review! Please see inline comments.
>>>>>>>>
>>>>>>>> Thanks, Harold
>>>>>>>>
>>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>>>>>> Nice clean up, Harold
>>>>>>>>>>
>>>>>>>>>> Could you add the size of class metaspace in output with
>>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>>>>>> remember an
>>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>>>>> Will be done in next webrev.
>>>>>>>>>>
>>>>>>>>>> Also it would be nice to print these info line (and compressed
>>>>>>>>>> oops
>>>>>>>>>> info
>>>>>>>>>> line) in hs_err files.
>>>>>>>> I filed an enhancement bug for this: 8021264
>>>>>>>> .
>>>>>>>>>>
>>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>>>>>>> x86_64.ad.
>>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>>>>>>>>>> arithmetic
>>>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
>>>>>>>>>> note
>>>>>>>>>> that code in .ad file does not check the encoding mode for
>>>>>>>>>> narrow
>>>>>>>>>> klass/oop so it should be conservative and assume that
>>>>>>>>>> arithmetic
>>>>>>>>>> instructions are used.
>>>>>>>> OK. Thanks.
>>>>>>>>>>
>>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>>>>>>> 4Gb so
>>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>>>>>> encoding/decoding without destroying R12.
>>>>>>>>>
>>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
>>>>>>>>> (sign
>>>>>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>>>>>> But the base will normally be 32Gb. So this case won't happen
>>>>>>>> very
>>>>>>>> often.
>>>>>>>>>
>>>>>>>>> You definitely should not use R12 in
>>>>>>>>> decode_klass_not_null(Register
>>>>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>>>>> Will be fixed in next webrev.
>>>>>>>>>
>>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
>>>>>>>>> 64Gb.
>>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>>>>>
>>>>>>>>> decode:
>>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>>>>>> }
>>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
>>>>>>>>> maxint
>>>>>>>>> (max positive int).
>>>>>>>> Usually the narrow_klass_base will be 32G and the
>>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>>>>>> that
>>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>>>> unless
>>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>>>>> make
>>>>>>>> sense?
>>>>>>>>>
>>>>>>>>> And you have general memory reservation problem. At least on
>>>>>>>>> Solaris,
>>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>>>>>>>>> between
>>>>>>>>> different requested memory regions. That is why in jdk7 we first
>>>>>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>>>>>> compressed oops.
>>>>>>>>>
>>>>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>>>>>> compressed
>>>>>>>>> oops and with Xmx20Gb.
>>>>>>>> I verifed that we get either cds_address+cds_total as the
>>>>>>>> address, or
>>>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>>>>>> Windows
>>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>>>>>> sizes and
>>>>>>>> -Xmx32G.
>>>>>>>>
>>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>>>>>> desired
>>>>>>>> CDS address for class metaspace regardless of heap size.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>>>>>>>> unfortunately we
>>>>>>>>>> can't do other way. I assume you use max size because
>>>>>>>>>> depending on
>>>>>>>>>> registers used in instructions you will or will not get prefix
>>>>>>>>>> byte
>>>>>>>>>> (r8-r15).
>>>>>>>> Is there one prefix byte per instruction, or just for certain
>>>>>>>> instructions?
>>>>>>>>>>
>>>>>>>>>> I will look on changes in more details may be late.
>>>>>>>>>
>>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>>>>>>>>> abbreviations
>>>>>>>>> which are not obvious.
>>>>>>>> I changed using_class_vsm() to using_class_space().
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Vladimir
>>>>>>>>>>
>>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> Please review this fix for bug 8003424.
>>>>>>>>>>>
>>>>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>>>>>
>>>>>>>>>>> Open bug links at:
>>>>>>>>>>>
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>>>>>
>>>>>>>>>>> JBS Bug links at
>>>>>>>>>>>
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> This fix provides support for using compressed klass pointers
>>>>>>>>>>> with
>>>>>>>>>>> CDS.
>>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>>>>>>>> platforms
>>>>>>>>>>> when
>>>>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
>>>>>>>>>>> class
>>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
>>>>>>>>>>> it at
>>>>>>>>>>> the
>>>>>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>>>>>> separately,
>>>>>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>>>>>> metaspace
>>>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>>>>>> being
>>>>>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>>>>>> heap and
>>>>>>>>>>> the metaspace.
>>>>>>>>>>>
>>>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>>>>>>>>> memory at
>>>>>>>>>>> 32G,
>>>>>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>>>>>> encoding
>>>>>>>>>>> and decoding of compressed klass pointers will always
>>>>>>>>>>> require use
>>>>>>>>>>> of a
>>>>>>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>>>>>>> pointers
>>>>>>>>>>> will differ from compressed oops.
>>>>>>>>>>>
>>>>>>>>>>> There are no class metaspace allocation changes if
>>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>>>>>>>>>>> 32-bit
>>>>>>>>>>> platform.
>>>>>>>>>>>
>>>>>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>>>>>> 8016729,
>>>>>>>>>>> 8011610, and 8003424.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>>>>>> Modules
>>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>>>>>>>>> changed to
>>>>>>>>>>> support the new encoding and decoding of compressed klass
>>>>>>>>>>> pointers.
>>>>>>>>>>>
>>>>>>>>>>> Module metaspace.cpp was changed significantly to support
>>>>>>>>>>> the new
>>>>>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>>>>>> compressed
>>>>>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>>>>>
>>>>>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>>>>>> related
>>>>>>>>>>> to allocating metaspace and remove code that considered
>>>>>>>>>>> compressed
>>>>>>>>>>> klass
>>>>>>>>>>> pointers when determining the compressed oops compression
>>>>>>>>>>> mechanism.
>>>>>>>>>>>
>>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
>>>>>>>>>>> part
>>>>>>>>>>> of a
>>>>>>>>>>> cleanup requested by Coleen.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>>>>>>>>>>> tests,
>>>>>>>>>>> JPRT,
>>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>>>>>>>>>>> vm.mlvm.testlist
>>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>>>>>>>>>>> -Xshare:off
>>>>>>>>>>> (with
>>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>>>>>>>>>>> Linux and
>>>>>>>>>>> 64-Bit
>>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
>>>>>>>>>>> were
>>>>>>>>>>> run on Solaris x86.
>>>>>>>>>>>
>>>>>>>>>>> The performance impact of these changes is TBD.
>>>>>>>>>>>
>>>>>>>>>>> Thanks, Harold
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>
>>
From harold.seigel at oracle.com Fri Aug 9 05:42:44 2013
From: harold.seigel at oracle.com (Harold Seigel)
Date: Fri, 9 Aug 2013 05:42:44 -0700 (PDT)
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
Message-ID: <42ed9a54-9c79-4362-8ed2-fe146eb29446@default>
The purpose of this assert is to verify that the two methods in the 'if' clause closed the map file and disabled UseSharedSpaces if they detected a problem when trying to use CDS.
if (mapinfo->initialize() && MetaspaceShared::map_shared_spaces(mapinfo)) {
FileMapInfo::set_current_info(mapinfo);
} else {
assert(!mapinfo->is_open() && !UseSharedSpaces,
"archive file not closed or shared spaces not disabled.");
}
----- Original Message -----
From: harold.seigel at oracle.com
To: coleen.phillimore at oracle.com
Cc: hotspot-runtime-dev at openjdk.java.net
Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops
This is a bug that Stefan Karlsson also discovered. To fix it, I've changed the code to this:
if (DumpSharedSpaces) {
if (RequireSharedSpaces) {
warning("cannot dump shared archive while using shared archive");
}
UseSharedSpaces = false;
#ifdef _LP64
if (!UseCompressedOops || !UseCompressedKlassPointers) {
vm_exit_during_initialization(
"Cannot dump shared archive when UseCompressedOops or UseCompressedKlassPointers is off.", NULL);
}
Harold
----- Original Message -----
From: coleen.phillimore at oracle.com
To: hotspot-runtime-dev at openjdk.java.net
Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops
Yes, there should be a check for that too. Now I'll really let Harold
answer.
Thanks,
Coleen
On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
> Coleen, Harold
>
> > The InstanceKlass has offsets to fields in the instance, and they
> depend
> > on both compressed oops and compressed klass pointers. So both
> have to
> > be on for the offsets to be valid.
>
> So there is dependency on UseCompressedOops and
> UseCompressedKlassPointers flags during dump.
>
> Then why the check is done only for UseSharedSpaces and not for
> DumpSharedSpaces?:
>
> if (DumpSharedSpaces) {
> if (RequireSharedSpaces) {
> warning("cannot dump shared archive while using shared archive");
> }
> UseSharedSpaces = false;
> + #ifdef _LP64
> + } else {
> + // UseCompressedOops and UseCompressedKlassPointers must be on
> for UseSharedSpaces.
> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> + no_shared_spaces();
> + }
> + #endif
> }
>
> Thanks,
> Vladimir
>
> On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>>
>> Hi Vladimir,
>>
>> I have a couple of answers and I'll let Harold answer the rest.
>>
>> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>>> On 8/7/13 8:34 AM, harold seigel wrote:
>>>> Hi Vladimir,
>>>>
>>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>>>> Harold,
>>>>>
>>>>> Note, on SPARC set() could generate up to 8 instructions to load
>>>>> 64-bit constant into register. So I am not sure that it will be
>>>>> faster
>>>>> than load.
>>>> We thought it would be faster because it doesn't need to load anything
>>>> from memory.
>>>
>>> For good value (0x800000000) it should use only 2-3 instructions.
>>> I think you can keep using set().
>>>
>>>>>
>>>>> I can't find where in CDS you store information about compressed
>>>>> klass
>>>>> pointers and compressed oops parameters which were used during dump?
>>>>> How you verify that correct parameters/flags are ussed when such CDS
>>>>> is used later?
>>>> No compressed klass pointers nor compressed oops get written to the
>>>> archive. So, the compressed klass pointers and compressed oops
>>>> parameters do not need to be recorded in the archive.
>>>
>>> So you are saying that all klass pointers (references to klasses) in
>>> metadata structures in metaspace are full.
>>
>> Yes, they are. (methodOops weren't in the InstanceKlass::_methods array
>> with Permgen but they are uncompressed now).
>>
>>> And klass pointers are only compressed in java object headers (which
>>> are not part of CDS). Right?
>>
>> The InstanceKlass has offsets to fields in the instance, and they depend
>> on both compressed oops and compressed klass pointers. So both have to
>> be on for the offsets to be valid.
>>
>> But the base and compressed values are not stored anywhere in the CDS
>> archive.
>>
>>> And you don't care about UseCompressedOops and
>>> UseCompressedKlassPointers flags settings when you dump it into
>>> archive. The only limit is:
>>>
>>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
>>>
>>> Then I don't understand why you can't use/load CDS archive when coop
>>> or compklass are off:
>>>
>>> > If coop is turned off then CDS cannot be used. CDS will only be
>>> > supported if both UseCompressedOops and UseCompressedKlassPointers
>>> are
>>> > TRUE.
>>>
>>> Also based on code in arguments.cpp it is allowed to specify
>>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command line:
>>>
>>> 1466 // Turn on UseCompressedKlassPointers too
>>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>>> 1469 }
>>>
>>> Did you tested such combination?
>>
>> I should let Harold answer this but I believe this is what his test
>> does. For CDS on 64 bit, both must be on. We didn't want to create 4
>> different archives. And it wouldn't make too much sense since CDS for
>> 64 bit is a footprint savings so why would you use it without
>> compressing oops and class pointers? It's not a startup savings on
>> server because we turn off interpreter bytecode quickening.
>>
>> Coleen
>>
>>>
>>>>>
>>>>> set_narrow_klass_base_and_shift() and
>>>>> can_use_cds_with_metaspace_addr() have the same code for
>>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>>>> can_use_cds_with_metaspace_addr() from
>>>>> set_narrow_klass_base_and_shift() ?
>>>> I could add new inlined methods that determine the higher_address and
>>>> lower_base when UseSharedSpaces is true and have them called from
>>>> set_narrow_klass_base_and_shift() and
>>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>>>
>>> I tried several approaches but your implementation is more clean. So I
>>> agree to keep what you have now.
>>>
>>>
>>> Also I found strange assert which should always fail (old code in
>>> global_initialize() in metaspace.cpp):
>>>
>>> 2959 if (UseSharedSpaces) {
>>> ...
>>> 2969 } else {
>>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>>> 2971 "archive file not closed or shared spaces not
>>> disabled.");
>>>
>>> Thanks,
>>> Vladimir
>>>
>>>>>
>>>>> I see that you unconditionally set comp klass ptr base and shift for
>>>>> DumpSharedSpaces. Should you do the check similar to
>>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>>>>> don't even check UseCompressedKlassPointers.
>>>> I don't think the checks are needed because the information written to
>>>> the archive is not affected by the size of the class metaspace.
>>>>
>>>> Also, I recently added code to arguments.cpp that will generate an
>>>> error
>>>> if UseCompressedOops or UseCompressedKlassPointers is turned off and
>>>> DumpSharedSpaces is on.
>>>>>
>>>>> Why you have next limitation? What if coop can't be used because of
>>>>> big heap?:
>>>>>
>>>>> + // UseCompressedOops and UseCompressedKlassPointers must be on
>>>>> for UseSharedSpaces.
>>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> + no_shared_spaces();
>>>> If coop is turned off then CDS cannot be used. CDS will only be
>>>> supported if both UseCompressedOops and UseCompressedKlassPointers are
>>>> TRUE.
>>>>>
>>>>> Could you move UseCompressedKlassPointers code in arguments.cpp into
>>>>> separate method similar to set_use_compressed_oops()?
>>>> Done.
>>>>>
>>>>> About new tests.
>>>>> The first test in CDSCompressedKPtrsError misses
>>>>> -XX:+UseCompressedOops flag.
>>>> Fixed.
>>>>>
>>>>> Could you also test cross flags combinations?:
>>>>>
>>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>>> Done.
>>>>>
>>>>> It would be nice to have test to check ClassMetaspaceSize value
>>>>> range.
>>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
>>>>> or maxuint.
>>>> A member of our runtime SQE group is writing additional tests. I'll
>>>> ask
>>>> him to write a ClassMetaspaceSize range test.
>>>>
>>>> We chose 3Gb because we thought it was a sufficiently large size.
>>>>>
>>>>>
>>>>> About code style, indention. We align next line to corresponding part
>>>>> of previous line if we need to split a line. And sometimes it is
>>>>> better to keep one long line. I understand some of them were before
>>>>> your changes but, please, clean up at lest ones you touched.
>>>> Done.
>>>>>
>>>>> Cases in metaspace.cpp:
>>>>>
>>>>> 2263 assert(raw_word_size >= min_size,
>>>>> 2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
>>>>> SIZE_FORMAT, word_size, min_size));
>>>>>
>>>>>
>>>>> 2485 if (Metaspace::using_class_space() &&
>>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>>>>
>>>>>
>>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>>>> 2575 (Metaspace::using_class_space() ?
>>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>>>
>>>>>
>>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>>>> SIZE_FORMAT ", "
>>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>>>> ", "
>>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>>>> ", "
>>>>> 2697 "large count " SIZE_FORMAT,
>>>>> 2698 cls_specialized_count, cls_specialized_waste,
>>>>> 2699 cls_small_count, cls_small_waste,
>>>>> 2700 cls_medium_count, cls_medium_waste,
>>>>> cls_humongous_count);
>>>>>
>>>>>
>>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
>>>>> addr) &&
>>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>>>
>>>>>
>>>>> 2889 vm_exit_during_initialization(err_msg(
>>>>> 2890 "Could not allocate metaspace: %d bytes",
>>>>> 2891 class_metaspace_size()));
>>>>>
>>>>>
>>>>> 3107 return using_class_space() ?
>>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>>>
>>>>>
>>>>> 3157 if (is_class && using_class_space()) {
>>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>>>>
>>>>>
>>>>> 3305 return space_list()->contains(ptr) ||
>>>>> 3306 (using_class_space() && class_space_list()->contains(ptr));
>>>>>
>>>>> metaspace.hpp:
>>>>>
>>>>> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
>>>>> 271 (Metaspace::using_class_space() ?
>>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>>>
>>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
>>>>> 286 (Metaspace::using_class_space() ?
>>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>>>>
>>>>> universe.cpp:
>>>>>
>>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>>>> (intptr_t)(Universe::heap()->base() -
>>>>> 850 os::vm_page_size()) ||
>>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
>>>>> value");
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Please review this updated webrev for bug 8003424:
>>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>>>>
>>>>>>
>>>>>> The updated webrev has a lot of changes from the previous webrev,
>>>>>> including the following:
>>>>>>
>>>>>> 1. Class metaspace information is now output when
>>>>>> -XX:+PrintCompressedOopsMode is specified.
>>>>>>
>>>>>> 2. decode_klass_not_null(Register dst, Register src) no longer
>>>>>> clobbers R12.
>>>>>>
>>>>>> 3. Method using_class_vsm() was renamed to using_class_space().
>>>>>>
>>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
>>>>>> appropriate.
>>>>>>
>>>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>>>> unnecessary.
>>>>>>
>>>>>> 6. Metaspace::initialize_class_space() was made private.
>>>>>>
>>>>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>>>>>> updated.
>>>>>>
>>>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
>>>>>> and
>>>>>> specjbb2013. The results showed no significant performance
>>>>>> difference
>>>>>> in terms of scores and gc behavior.
>>>>>>
>>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>>>>>
>>>>>> Please let me know what additional tests should be run.
>>>>>>
>>>>>> Thanks!
>>>>>> Harold
>>>>>>
>>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>>>>> Hi Harold,
>>>>>>>
>>>>>>> > Usually the narrow_klass_base will be 32G and the
>>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
>>>>>>> means
>>>>>>> that
>>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>>> unless
>>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>>>> make
>>>>>>> sense?
>>>>>>>
>>>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
>>>>>>> and I
>>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>>>>> (assuming or
>>>>>>> with check that class metaspace size < 32Gb).
>>>>>>>
>>>>>>> > Is there one prefix byte per instruction, or just for certain
>>>>>>> instructions?
>>>>>>>
>>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>>>>> prefix is
>>>>>>> necessary only if an instruction references one of the extended
>>>>>>> registers or uses a 64-bit operand."
>>>>>>>
>>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and
>>>>>>> =32
>>>>>>> and big java heap. Recently we got several bugs which indicated
>>>>>>> that
>>>>>>> we did not separate cleanly oops and klass pointers en/decoding.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Vladimir
>>>>>>>
>>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>>>>> Hi Vladimir,
>>>>>>>>
>>>>>>>> Thank you for the review! Please see inline comments.
>>>>>>>>
>>>>>>>> Thanks, Harold
>>>>>>>>
>>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>>>>>> Nice clean up, Harold
>>>>>>>>>>
>>>>>>>>>> Could you add the size of class metaspace in output with
>>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>>>>>> remember an
>>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>>>>> Will be done in next webrev.
>>>>>>>>>>
>>>>>>>>>> Also it would be nice to print these info line (and compressed
>>>>>>>>>> oops
>>>>>>>>>> info
>>>>>>>>>> line) in hs_err files.
>>>>>>>> I filed an enhancement bug for this: 8021264
>>>>>>>> .
>>>>>>>>>>
>>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>>>>>>> x86_64.ad.
>>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>>>>>>>>>> arithmetic
>>>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
>>>>>>>>>> note
>>>>>>>>>> that code in .ad file does not check the encoding mode for
>>>>>>>>>> narrow
>>>>>>>>>> klass/oop so it should be conservative and assume that
>>>>>>>>>> arithmetic
>>>>>>>>>> instructions are used.
>>>>>>>> OK. Thanks.
>>>>>>>>>>
>>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>>>>>>> 4Gb so
>>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>>>>>> encoding/decoding without destroying R12.
>>>>>>>>>
>>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
>>>>>>>>> (sign
>>>>>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>>>>>> But the base will normally be 32Gb. So this case won't happen
>>>>>>>> very
>>>>>>>> often.
>>>>>>>>>
>>>>>>>>> You definitely should not use R12 in
>>>>>>>>> decode_klass_not_null(Register
>>>>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>>>>> Will be fixed in next webrev.
>>>>>>>>>
>>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
>>>>>>>>> 64Gb.
>>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>>>>>
>>>>>>>>> decode:
>>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>>>>>> }
>>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
>>>>>>>>> maxint
>>>>>>>>> (max positive int).
>>>>>>>> Usually the narrow_klass_base will be 32G and the
>>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>>>>>> that
>>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>>>> unless
>>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>>>>> make
>>>>>>>> sense?
>>>>>>>>>
>>>>>>>>> And you have general memory reservation problem. At least on
>>>>>>>>> Solaris,
>>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>>>>>>>>> between
>>>>>>>>> different requested memory regions. That is why in jdk7 we first
>>>>>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>>>>>> compressed oops.
>>>>>>>>>
>>>>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>>>>>> compressed
>>>>>>>>> oops and with Xmx20Gb.
>>>>>>>> I verifed that we get either cds_address+cds_total as the
>>>>>>>> address, or
>>>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>>>>>> Windows
>>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>>>>>> sizes and
>>>>>>>> -Xmx32G.
>>>>>>>>
>>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>>>>>> desired
>>>>>>>> CDS address for class metaspace regardless of heap size.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>>>>>>>> unfortunately we
>>>>>>>>>> can't do other way. I assume you use max size because
>>>>>>>>>> depending on
>>>>>>>>>> registers used in instructions you will or will not get prefix
>>>>>>>>>> byte
>>>>>>>>>> (r8-r15).
>>>>>>>> Is there one prefix byte per instruction, or just for certain
>>>>>>>> instructions?
>>>>>>>>>>
>>>>>>>>>> I will look on changes in more details may be late.
>>>>>>>>>
>>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>>>>>>>>> abbreviations
>>>>>>>>> which are not obvious.
>>>>>>>> I changed using_class_vsm() to using_class_space().
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Vladimir
>>>>>>>>>>
>>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> Please review this fix for bug 8003424.
>>>>>>>>>>>
>>>>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>>>>>
>>>>>>>>>>> Open bug links at:
>>>>>>>>>>>
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>>>>>
>>>>>>>>>>> JBS Bug links at
>>>>>>>>>>>
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> This fix provides support for using compressed klass pointers
>>>>>>>>>>> with
>>>>>>>>>>> CDS.
>>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>>>>>>>> platforms
>>>>>>>>>>> when
>>>>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
>>>>>>>>>>> class
>>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
>>>>>>>>>>> it at
>>>>>>>>>>> the
>>>>>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>>>>>> separately,
>>>>>>>>>>> above the Java heap. This will enable future expansion of the
>>>>>>>>>>> metaspace
>>>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>>>>>> being
>>>>>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>>>>>> heap and
>>>>>>>>>>> the metaspace.
>>>>>>>>>>>
>>>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>>>>>>>>> memory at
>>>>>>>>>>> 32G,
>>>>>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>>>>>> encoding
>>>>>>>>>>> and decoding of compressed klass pointers will always
>>>>>>>>>>> require use
>>>>>>>>>>> of a
>>>>>>>>>>> base register. So, encoding and decoding of compressed klass
>>>>>>>>>>> pointers
>>>>>>>>>>> will differ from compressed oops.
>>>>>>>>>>>
>>>>>>>>>>> There are no class metaspace allocation changes if
>>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>>>>>>>>>>> 32-bit
>>>>>>>>>>> platform.
>>>>>>>>>>>
>>>>>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>>>>>> 8016729,
>>>>>>>>>>> 8011610, and 8003424.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>>>>>> Modules
>>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>>>>>>>>> changed to
>>>>>>>>>>> support the new encoding and decoding of compressed klass
>>>>>>>>>>> pointers.
>>>>>>>>>>>
>>>>>>>>>>> Module metaspace.cpp was changed significantly to support
>>>>>>>>>>> the new
>>>>>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>>>>>> compressed
>>>>>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>>>>>
>>>>>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>>>>>> related
>>>>>>>>>>> to allocating metaspace and remove code that considered
>>>>>>>>>>> compressed
>>>>>>>>>>> klass
>>>>>>>>>>> pointers when determining the compressed oops compression
>>>>>>>>>>> mechanism.
>>>>>>>>>>>
>>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
>>>>>>>>>>> part
>>>>>>>>>>> of a
>>>>>>>>>>> cleanup requested by Coleen.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>>>>>>>>>>> tests,
>>>>>>>>>>> JPRT,
>>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>>>>>>>>>>> vm.mlvm.testlist
>>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>>>>>>>>>>> -Xshare:off
>>>>>>>>>>> (with
>>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>>>>>>>>>>> Linux and
>>>>>>>>>>> 64-Bit
>>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
>>>>>>>>>>> were
>>>>>>>>>>> run on Solaris x86.
>>>>>>>>>>>
>>>>>>>>>>> The performance impact of these changes is TBD.
>>>>>>>>>>>
>>>>>>>>>>> Thanks, Harold
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>
>>
From yumin.qi at oracle.com Fri Aug 9 06:52:19 2013
From: yumin.qi at oracle.com (yumin.qi at oracle.com)
Date: Fri, 09 Aug 2013 13:52:19 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 2 new changesets
Message-ID: <20130809135229.C27824874D@hg.openjdk.java.net>
Changeset: 57ac7245594c
Author: minqi
Date: 2013-08-08 15:19 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/57ac7245594c
8019583: [TESTBUG] runtime/7107135 always passes
Summary: If java test return none zero, the value will be override by 'if' statement, the exit value will always '0' and pass. Fix by recording the result in a variable.
Reviewed-by: coleenp, dholmes, iklam
Contributed-by: yumin.qi at oracle.com
! test/runtime/7107135/Test7107135.sh
Changeset: 6222a021d582
Author: minqi
Date: 2013-08-08 20:13 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/6222a021d582
Merge
From harold.seigel at oracle.com Fri Aug 9 07:57:29 2013
From: harold.seigel at oracle.com (Harold Seigel)
Date: Fri, 9 Aug 2013 07:57:29 -0700 (PDT)
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
Message-ID: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
Hi,
Please review this latest version of the bug fix for 8003424:? http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
This new version?includes the following changes:
1. macroAssembler_sparc.cpp
?? a. Merged two versions of reinit_heapbase() into one.
?? b. Improved decode_klass_not_null(src, dst) to not use G6 if shift == 0.
2. macroAssembler_x86.cpp
?? a. Merged two versions of reinit_heapbase() into one.
?? b. Improved encode_klass_not_null(src, dst) to not use R12.
?? c. Replaced leaq with addq in decode_klass_not_null(src, dst).
3. Improved variable names in heap.cpp.
4. metaspace.cpp
?? a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more understandable.
?? b. Moved set_narrow_klass_base_and_shift() near can_use_cds_with_metaspace_addr().
?? c. Changed unneeded conditional in initialize_class_space() into an assert.
5. arguments.cpp
?? a. Fixed problem with -Xshare:dump and disabled compression.
?? b. Moved UseCompressedKlassPointers code into new function: set_use_compressed_klass_ptrs().
?? c. Fixed bug 8005933 that turned off CDS for -server even if -Xshare:auto was explicitly specified.
6. Increased default value of ClassMetaspaceSize to 1*G in globals.hpp.
7. Fixed indentation issues in metaspace.cpp and other modules.
Thanks, Harold
----- Original Message -----
From: harold.seigel at oracle.com
To: coleen.phillimore at oracle.com
Cc: hotspot-runtime-dev at openjdk.java.net
Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops
The purpose of this assert is to verify that the two methods in the 'if' clause closed the map file and disabled UseSharedSpaces if they detected a problem when trying to use CDS. ?
?? ? ?if (mapinfo->initialize() && MetaspaceShared::map_shared_spaces(mapinfo)) {
?? ? ? ?FileMapInfo::set_current_info(mapinfo);
?? ? ?} else {
?? ? ? ?assert(!mapinfo->is_open() && !UseSharedSpaces,
?? ? ? ? ? ? ? "archive file not closed or shared spaces not disabled.");
?? ? ?}
----- Original Message -----
From: harold.seigel at oracle.com
To: coleen.phillimore at oracle.com
Cc: hotspot-runtime-dev at openjdk.java.net
Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops
This is a bug that Stefan Karlsson also discovered. ?To fix it, I've changed the code to this:
??if (DumpSharedSpaces) {
?? ?if (RequireSharedSpaces) {
?? ? ?warning("cannot dump shared archive while using shared archive");
?? ?}
?? ?UseSharedSpaces = false;
#ifdef _LP64
?? ?if (!UseCompressedOops || !UseCompressedKlassPointers) {
?? ? ?vm_exit_during_initialization(
?? ? ? ?"Cannot dump shared archive when UseCompressedOops or UseCompressedKlassPointers is off.", NULL);
?? ?}
Harold
----- Original Message -----
From: coleen.phillimore at oracle.com
To: hotspot-runtime-dev at openjdk.java.net
Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops
Yes, there should be a check for that too. ?Now I'll really let Harold
answer.
Thanks,
Coleen
On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
> Coleen, Harold
>
> > The InstanceKlass has offsets to fields in the instance, and they
> depend
> > on both compressed oops and compressed klass pointers. ? So both
> have to
> > be on for the offsets to be valid.
>
> So there is dependency on UseCompressedOops and
> UseCompressedKlassPointers flags during dump.
>
> Then why the check is done only for UseSharedSpaces and not for
> DumpSharedSpaces?:
>
> ? ? if (DumpSharedSpaces) {
> ? ? ? if (RequireSharedSpaces) {
> ? ? ? ? warning("cannot dump shared archive while using shared archive");
> ? ? ? }
> ? ? ? UseSharedSpaces = false;
> + #ifdef _LP64
> + ? } else {
> + ? ? // UseCompressedOops and UseCompressedKlassPointers must be on
> for UseSharedSpaces.
> + ? ? if (!UseCompressedOops || !UseCompressedKlassPointers) {
> + ? ? ? no_shared_spaces();
> + ? ? }
> + #endif
> ? ? }
>
> Thanks,
> Vladimir
>
> On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>>
>> Hi Vladimir,
>>
>> I have a couple of answers and I'll let Harold answer the rest.
>>
>> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>>> On 8/7/13 8:34 AM, harold seigel wrote:
>>>> Hi Vladimir,
>>>>
>>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>>>> Harold,
>>>>>
>>>>> Note, on SPARC set() could generate up to 8 instructions to load
>>>>> 64-bit constant into register. So I am not sure that it will be
>>>>> faster
>>>>> than load.
>>>> We thought it would be faster because it doesn't need to load anything
>>>> from memory.
>>>
>>> For good value (0x800000000) it should use only 2-3 instructions.
>>> I think you can keep using set().
>>>
>>>>>
>>>>> I can't find where in CDS you store information about compressed
>>>>> klass
>>>>> pointers and compressed oops parameters which were used during dump?
>>>>> How you verify that correct parameters/flags are ussed when such CDS
>>>>> is used later?
>>>> No compressed klass pointers nor compressed oops get written to the
>>>> archive. ?So, the compressed klass pointers and compressed oops
>>>> parameters do not need to be recorded in the archive.
>>>
>>> So you are saying that all klass pointers (references to klasses) in
>>> metadata structures in metaspace are full.
>>
>> Yes, they are. ?(methodOops weren't in the InstanceKlass::_methods array
>> with Permgen but they are uncompressed now).
>>
>>> And klass pointers are only compressed in java object headers (which
>>> are not part of CDS). Right?
>>
>> The InstanceKlass has offsets to fields in the instance, and they depend
>> on both compressed oops and compressed klass pointers. ? So both have to
>> be on for the offsets to be valid.
>>
>> But the base and compressed values are not stored anywhere in the CDS
>> archive.
>>
>>> And you don't care about UseCompressedOops and
>>> UseCompressedKlassPointers flags settings when you dump it into
>>> archive. The only limit is:
>>>
>>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
>>>
>>> Then I don't understand why you can't use/load CDS archive when coop
>>> or compklass are off:
>>>
>>> > If coop is turned off then CDS cannot be used. ?CDS will only be
>>> > supported if both UseCompressedOops and UseCompressedKlassPointers
>>> are
>>> > TRUE.
>>>
>>> Also based on code in arguments.cpp it is allowed to specify
>>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command line:
>>>
>>> 1466 ? ? // Turn on UseCompressedKlassPointers too
>>> 1467 ? ? if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>>> 1468 ? ? ? FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>>> 1469 ? ? }
>>>
>>> Did you tested such combination?
>>
>> I should let Harold answer this but I believe this is what his test
>> does. ?For CDS on 64 bit, both must be on. ? We didn't want to create 4
>> different archives. ? And it wouldn't make too much sense since CDS for
>> 64 bit is a footprint savings so why would you use it without
>> compressing oops and class pointers? ?It's not a startup savings on
>> server because we turn off interpreter bytecode quickening.
>>
>> Coleen
>>
>>>
>>>>>
>>>>> set_narrow_klass_base_and_shift() and
>>>>> can_use_cds_with_metaspace_addr() have the same code for
>>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>>>> can_use_cds_with_metaspace_addr() from
>>>>> set_narrow_klass_base_and_shift() ?
>>>> I could add new inlined methods that determine the higher_address and
>>>> lower_base when UseSharedSpaces is true and have them called from
>>>> set_narrow_klass_base_and_shift() and
>>>> can_use_cds_with_metaspace_addr(). ?Would that be worth doing?
>>>
>>> I tried several approaches but your implementation is more clean. So I
>>> agree to keep what you have now.
>>>
>>>
>>> Also I found strange assert which should always fail (old code in
>>> global_initialize() in metaspace.cpp):
>>>
>>> 2959 ? ? if (UseSharedSpaces) {
>>> ...
>>> 2969 ? ? ? } else {
>>> 2970 ? ? ? ? assert(!mapinfo->is_open() && !UseSharedSpaces,
>>> 2971 ? ? ? ? ? ? ? ?"archive file not closed or shared spaces not
>>> disabled.");
>>>
>>> Thanks,
>>> Vladimir
>>>
>>>>>
>>>>> I see that you unconditionally set comp klass ptr base and shift for
>>>>> DumpSharedSpaces. Should you do the check similar to
>>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>>>>> don't even check UseCompressedKlassPointers.
>>>> I don't think the checks are needed because the information written to
>>>> the archive is not affected by the size of the class metaspace.
>>>>
>>>> Also, I recently added code to arguments.cpp that will generate an
>>>> error
>>>> if UseCompressedOops or UseCompressedKlassPointers is turned off and
>>>> DumpSharedSpaces is on.
>>>>>
>>>>> Why you have next limitation? What if coop can't be used because of
>>>>> big heap?:
>>>>>
>>>>> + ? ? // UseCompressedOops and UseCompressedKlassPointers must be on
>>>>> for UseSharedSpaces.
>>>>> + ? ? if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> + ? ? ? no_shared_spaces();
>>>> If coop is turned off then CDS cannot be used. ?CDS will only be
>>>> supported if both UseCompressedOops and UseCompressedKlassPointers are
>>>> TRUE.
>>>>>
>>>>> Could you move UseCompressedKlassPointers code in arguments.cpp into
>>>>> separate method similar to set_use_compressed_oops()?
>>>> Done.
>>>>>
>>>>> About new tests.
>>>>> The first test in CDSCompressedKPtrsError misses
>>>>> -XX:+UseCompressedOops flag.
>>>> Fixed.
>>>>>
>>>>> Could you also test cross flags combinations?:
>>>>>
>>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>>> Done.
>>>>>
>>>>> It would be nice to have test to check ClassMetaspaceSize value
>>>>> range.
>>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
>>>>> or maxuint.
>>>> A member of our runtime SQE group is writing additional tests. I'll
>>>> ask
>>>> him to write a ClassMetaspaceSize range test.
>>>>
>>>> We chose 3Gb because we thought it was a sufficiently large size.
>>>>>
>>>>>
>>>>> About code style, indention. We align next line to corresponding part
>>>>> of previous line if we need to split a line. And sometimes it is
>>>>> better to keep one long line. I understand some of them were before
>>>>> your changes but, please, clean up at lest ones you touched.
>>>> Done.
>>>>>
>>>>> Cases in metaspace.cpp:
>>>>>
>>>>> 2263 ? assert(raw_word_size >= min_size,
>>>>> 2264 ? ? err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
>>>>> SIZE_FORMAT, word_size, min_size));
>>>>>
>>>>>
>>>>> 2485 ? if (Metaspace::using_class_space() &&
>>>>> 2486 ? ? (Metaspace::class_space_list() != NULL)) {
>>>>>
>>>>>
>>>>> 2574 ? size_t reserved = (mdtype == Metaspace::ClassType) ?
>>>>> 2575 ? ? ? ? ? ? ? ? ? ? ? (Metaspace::using_class_space() ?
>>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>>>
>>>>>
>>>>> 2694 ? out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>>>> SIZE_FORMAT ", "
>>>>> 2695 ? ? ? ? ? ? ? ? ? ? ? ? ? ?SIZE_FORMAT " small(s) " SIZE_FORMAT
>>>>> ", "
>>>>> 2696 ? ? ? ? ? ? ? ? ? ? ? ? ? ?SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>>>> ", "
>>>>> 2697 ? ? ? ? ? ? ? ? ? ? ? ? ? ?"large count " SIZE_FORMAT,
>>>>> 2698 ? ? ? ? ? ? ?cls_specialized_count, cls_specialized_waste,
>>>>> 2699 ? ? ? ? ? ? ?cls_small_count, cls_small_waste,
>>>>> 2700 ? ? ? ? ? ? ?cls_medium_count, cls_medium_waste,
>>>>> cls_humongous_count);
>>>>>
>>>>>
>>>>> 2872 ? ? ? while (!metaspace_rs.is_reserved() && (addr + 1*G >
>>>>> addr) &&
>>>>> 2873 ? ? ? ? can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>>>
>>>>>
>>>>> 2889 ? ? ? ? vm_exit_during_initialization(err_msg(
>>>>> 2890 ? ? ? ? ? "Could not allocate metaspace: %d bytes",
>>>>> 2891 ? ? ? ? ? class_metaspace_size()));
>>>>>
>>>>>
>>>>> 3107 ? ? return using_class_space() ?
>>>>> 3108 ? ? ? class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>>>
>>>>>
>>>>> 3157 ? ? if (is_class && using_class_space()) {
>>>>> 3158 ? ? ? ?class_vsm()->deallocate(ptr, word_size);
>>>>>
>>>>>
>>>>> 3305 ? return space_list()->contains(ptr) ||
>>>>> 3306 ? ? (using_class_space() && class_space_list()->contains(ptr));
>>>>>
>>>>> metaspace.hpp:
>>>>>
>>>>> ?270 ? ? return _allocated_capacity_words[Metaspace::NonClassType] +
>>>>> ?271 ? ? ? (Metaspace::using_class_space() ?
>>>>> ?272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>>>
>>>>> ?285 ? ? return _allocated_used_words[Metaspace::NonClassType] +
>>>>> ?286 ? ? ? (Metaspace::using_class_space() ?
>>>>> ?287 ? ? ? ? _allocated_used_words[Metaspace::ClassType] : 0);
>>>>>
>>>>> universe.cpp:
>>>>>
>>>>> ?849 ? assert((intptr_t)Universe::narrow_oop_base() <=
>>>>> (intptr_t)(Universe::heap()->base() -
>>>>> ?850 ? ? os::vm_page_size()) ||
>>>>> ?851 ? ? ? ? ? ?Universe::narrow_oop_base() == NULL, "invalid
>>>>> value");
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Please review this updated webrev for bug 8003424:
>>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>>>>
>>>>>>
>>>>>> The updated webrev has a lot of changes from the previous webrev,
>>>>>> including the following:
>>>>>>
>>>>>> ? ? 1. Class metaspace information is now output when
>>>>>> ? ? -XX:+PrintCompressedOopsMode is specified.
>>>>>>
>>>>>> ? ? 2. decode_klass_not_null(Register dst, Register src) no longer
>>>>>> ? ? clobbers R12.
>>>>>>
>>>>>> ? ? 3. Method using_class_vsm() was renamed to using_class_space().
>>>>>>
>>>>>> ? ? 4. Type narrowKlass was added and replaces narrowOop, where
>>>>>> appropriate.
>>>>>>
>>>>>> ? ? 5. The Metaspace:: qualifier was removed, where it was
>>>>>> unnecessary.
>>>>>>
>>>>>> ? ? 6. Metaspace::initialize_class_space() was made private.
>>>>>>
>>>>>> ? ? 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
>>>>>> updated.
>>>>>>
>>>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
>>>>>> and
>>>>>> specjbb2013. ?The results showed no significant performance
>>>>>> difference
>>>>>> in terms of scores and gc behavior.
>>>>>>
>>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>>>>>
>>>>>> Please let me know what additional tests should be run.
>>>>>>
>>>>>> Thanks!
>>>>>> Harold
>>>>>>
>>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>>>>> Hi Harold,
>>>>>>>
>>>>>>> > Usually the narrow_klass_base will be 32G and the
>>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
>>>>>>> means
>>>>>>> that
>>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>>> unless
>>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>>>> make
>>>>>>> sense?
>>>>>>>
>>>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
>>>>>>> and I
>>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>>>>> (assuming or
>>>>>>> with check that class metaspace size < 32Gb).
>>>>>>>
>>>>>>> > Is there one prefix byte per instruction, or just for certain
>>>>>>> instructions?
>>>>>>>
>>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>>>>> prefix is
>>>>>>> necessary only if an instruction references one of the extended
>>>>>>> registers or uses a 64-bit operand."
>>>>>>>
>>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and
>>>>>>> =32
>>>>>>> and big java heap. Recently we got several bugs which indicated
>>>>>>> that
>>>>>>> we did not separate cleanly oops and klass pointers en/decoding.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Vladimir
>>>>>>>
>>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>>>>> Hi Vladimir,
>>>>>>>>
>>>>>>>> Thank you for the review! ?Please see inline comments.
>>>>>>>>
>>>>>>>> Thanks, Harold
>>>>>>>>
>>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>>>>>>> Nice clean up, Harold
>>>>>>>>>>
>>>>>>>>>> Could you add the size of class metaspace in output with
>>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>>>>>>> remember an
>>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>>>>> Will be done in next webrev.
>>>>>>>>>>
>>>>>>>>>> Also it would be nice to print these info line (and compressed
>>>>>>>>>> oops
>>>>>>>>>> info
>>>>>>>>>> line) in hs_err files.
>>>>>>>> I filed an enhancement bug for this: 8021264
>>>>>>>> .
>>>>>>>>>>
>>>>>>>>>> About "effect(KILL cr); ? /// ???? is this KILL needed?" in
>>>>>>>>>> x86_64.ad.
>>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>>>>>>>>>> arithmetic
>>>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
>>>>>>>>>> note
>>>>>>>>>> that code in .ad file does not check the encoding mode for
>>>>>>>>>> narrow
>>>>>>>>>> klass/oop so it should be conservative and assume that
>>>>>>>>>> arithmetic
>>>>>>>>>> instructions are used.
>>>>>>>> OK. Thanks.
>>>>>>>>>>
>>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
>>>>>>>>>> 4Gb so
>>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>>>>>>> encoding/decoding without destroying R12.
>>>>>>>>>
>>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
>>>>>>>>> (sign
>>>>>>>>> bit is extended so you will get wrong result with address > 2gb).
>>>>>>>> But the base will normally be 32Gb. ?So this case won't happen
>>>>>>>> very
>>>>>>>> often.
>>>>>>>>>
>>>>>>>>> You definitely should not use R12 in
>>>>>>>>> decode_klass_not_null(Register
>>>>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>>>>> Will be fixed in next webrev.
>>>>>>>>>
>>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
>>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
>>>>>>>>> 64Gb.
>>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>>>>>>
>>>>>>>>> decode:
>>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>>>>>> ? if (Universe::set_narrow_klass_shift() == 0) {
>>>>>>>>> ? ? shrq(r, LogKlassAlignmentInBytes);
>>>>>>>>> ? }
>>>>>>>>> ? addq(r, Universe::narrow_klass_base_shifted());
>>>>>>>>> ? shlq(r, LogKlassAlignmentInBytes);
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
>>>>>>>>> maxint
>>>>>>>>> (max positive int).
>>>>>>>> Usually the narrow_klass_base will be 32G and the
>>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
>>>>>>>> that
>>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
>>>>>>>> unless
>>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>>>>> make
>>>>>>>> sense?
>>>>>>>>>
>>>>>>>>> And you have general memory reservation problem. At least on
>>>>>>>>> Solaris,
>>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>>>>>>>>> between
>>>>>>>>> different requested memory regions. That is why in jdk7 we first
>>>>>>>>> reserve one huge space and then cut it on java heap, perm gen and
>>>>>>>>> protection page below heap to catch implicit NULL exceptions with
>>>>>>>>> compressed oops.
>>>>>>>>>
>>>>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
>>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>>>>>> compressed
>>>>>>>>> oops and with Xmx20Gb.
>>>>>>>> I verifed that we get either cds_address+cds_total as the
>>>>>>>> address, or
>>>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
>>>>>>>> Windows
>>>>>>>> 7, Mac OS, and Solaris 5.11. ?This is true with default heap
>>>>>>>> sizes and
>>>>>>>> -Xmx32G.
>>>>>>>>
>>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
>>>>>>>> desired
>>>>>>>> CDS address for class metaspace regardless of heap size.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>>>>>>>> unfortunately we
>>>>>>>>>> can't do other way. I assume you use max size because
>>>>>>>>>> depending on
>>>>>>>>>> registers used in instructions you will or will not get prefix
>>>>>>>>>> byte
>>>>>>>>>> (r8-r15).
>>>>>>>> Is there one prefix byte per instruction, or just for certain
>>>>>>>> instructions?
>>>>>>>>>>
>>>>>>>>>> I will look on changes in more details may be late.
>>>>>>>>>
>>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>>>>>>>>> abbreviations
>>>>>>>>> which are not obvious.
>>>>>>>> I changed using_class_vsm() to using_class_space().
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Vladimir
>>>>>>>>>>
>>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> Please review this fix for bug 8003424.
>>>>>>>>>>>
>>>>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>>>>>>>>
>>>>>>>>>>> Open bug links at:
>>>>>>>>>>>
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>>>>>>>>
>>>>>>>>>>> JBS Bug links at
>>>>>>>>>>>
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> This fix provides support for using compressed klass pointers
>>>>>>>>>>> with
>>>>>>>>>>> CDS.
>>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>>>>>>>> platforms
>>>>>>>>>>> when
>>>>>>>>>>> UseCompressedKlassPointers is true. ?Instead of allocating the
>>>>>>>>>>> class
>>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
>>>>>>>>>>> it at
>>>>>>>>>>> the
>>>>>>>>>>> base of that allocation, the metaspace will now be allocated
>>>>>>>>>>> separately,
>>>>>>>>>>> above the Java heap. ?This will enable future expansion of the
>>>>>>>>>>> metaspace
>>>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
>>>>>>>>>>> being
>>>>>>>>>>> used, then the CDS region will be allocated between the Java
>>>>>>>>>>> heap and
>>>>>>>>>>> the metaspace.
>>>>>>>>>>>
>>>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>>>>>>>>> memory at
>>>>>>>>>>> 32G,
>>>>>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>>>>>>>> encoding
>>>>>>>>>>> and decoding of compressed klass pointers will always
>>>>>>>>>>> require use
>>>>>>>>>>> of a
>>>>>>>>>>> base register. ?So, encoding and decoding of compressed klass
>>>>>>>>>>> pointers
>>>>>>>>>>> will differ from compressed oops.
>>>>>>>>>>>
>>>>>>>>>>> There are no class metaspace allocation changes if
>>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>>>>>>>>>>> 32-bit
>>>>>>>>>>> platform.
>>>>>>>>>>>
>>>>>>>>>>> The code changes also include some cleanup and will fix bugs
>>>>>>>>>>> 8016729,
>>>>>>>>>>> 8011610, and 8003424.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
>>>>>>>>>>> Modules
>>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>>>>>>>>> changed to
>>>>>>>>>>> support the new encoding and decoding of compressed klass
>>>>>>>>>>> pointers.
>>>>>>>>>>>
>>>>>>>>>>> Module metaspace.cpp was changed significantly to support
>>>>>>>>>>> the new
>>>>>>>>>>> allocation for metaspace and the CDS region and to determine
>>>>>>>>>>> compressed
>>>>>>>>>>> klass pointer encoding base and shifting values.
>>>>>>>>>>>
>>>>>>>>>>> Most of the changes to module universe.cpp were to remove code
>>>>>>>>>>> related
>>>>>>>>>>> to allocating metaspace and remove code that considered
>>>>>>>>>>> compressed
>>>>>>>>>>> klass
>>>>>>>>>>> pointers when determining the compressed oops compression
>>>>>>>>>>> mechanism.
>>>>>>>>>>>
>>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
>>>>>>>>>>> part
>>>>>>>>>>> of a
>>>>>>>>>>> cleanup requested by Coleen.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>>>>>>>>>>> tests,
>>>>>>>>>>> JPRT,
>>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>>>>>>>>>>> vm.mlvm.testlist
>>>>>>>>>>> tests. ?Most of the test were run with -Xshare:on and
>>>>>>>>>>> -Xshare:off
>>>>>>>>>>> (with
>>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>>>>>>>>>>> Linux and
>>>>>>>>>>> 64-Bit
>>>>>>>>>>> Linux. ?Jtreg tests were run on Windows 7 and Mac OS. JCK tests
>>>>>>>>>>> were
>>>>>>>>>>> run on Solaris x86.
>>>>>>>>>>>
>>>>>>>>>>> The performance impact of these changes is TBD.
>>>>>>>>>>>
>>>>>>>>>>> Thanks, Harold
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/1a31b339/attachment-0001.html
From mikael.vidstedt at oracle.com Fri Aug 9 09:18:23 2013
From: mikael.vidstedt at oracle.com (Mikael Vidstedt)
Date: Fri, 09 Aug 2013 09:18:23 -0700
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <5204CF5E.30705@oracle.com>
References: <5201886C.1030206@oracle.com> <52024E1A.4000908@oracle.com>
<520275B8.5010101@oracle.com> <52028A69.8010207@oracle.com>
<52041AC1.4000803@oracle.com> <520430F3.4040306@oracle.com>
<5204CF5E.30705@oracle.com>
Message-ID: <5205164F.4040607@oracle.com>
The Oracle JDK does not support the older Windows versions in JDK 7.
However, in an attempt to keep this change small I will keep those
checks in there and queue up a future cleanup task.
Unless the comment is annoying you all too much I'll keep it in there too.
Cheers,
Mikael
On 2013-08-09 04:15, Dmitry Samersoff wrote:
> Mikael,
>
> Does we still support Win 95/98/Me ?
>
> PS: Comments seems redundant to me
>
> 1660 // find out whether we are running on 64 bit processor or not.
>
> -Dmitry
>
> On 2013-08-09 03:59, Coleen Phillimore wrote:
>> Mikael,
>>
>> I think this looks great. It's a lot cleaner (more red than blue changes).
>>
>> thanks for humoring me,
>> Coleen
>>
>> On 08/08/2013 06:25 PM, Mikael Vidstedt wrote:
>>> Coleen,
>>>
>>> After having tried numerous different versions I ended up with this:
>>>
>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452.3/webrev
>>>
>>> Summary of the changes:
>>>
>>> * The GetNativeSystemInfo call has been moved up before the switch,
>>> but is only called if the os version is recent enough, and we
>>> actually care about the si.wProcessorArchitecture field.
>>>
>>> * The true/else branches in the if-diamond have been switch to avoid
>>> the negation of the condition.
>>>
>>> * While at it I added support for recognizing "Windows Server 2008 R2"
>>> (6.1 non-workstation) which we apparently haven't recognized earlier,
>>> but which is something the JDK code recognizes [1].
>>>
>>> * The " , 64 bit" has been move out below the switch, but is only
>>> relevant/tested for on recent enough Windows versions, just like the
>>> old code did.
>>>
>>> Feedback much appreciated! I'm also investigating if it would be
>>> possible to unify/share the code with the java_props_md.c logic [1] to
>>> avoid the duplication, but for now this may have to do. In addition to
>>> that the code can be cleaned up further if we only support VS2010+,
>>> which I believe is de facto since JDK 7 anyway; I will investigate
>>> that as a separate improvement.
>>>
>>> Thanks,
>>> Mikael
>>>
>>> [1]
>>> http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/e057cddf0d6c/src/windows/native/java/lang/java_props_md.c
>>> (line 451).
>>>
>>> On 2013-08-07 10:56, Coleen Phillimore wrote:
>>>> Mikael,
>>>>
>>>> I do like your new version better but because you changed so much, it
>>>> should be verified on all versions of windows. Which you might not
>>>> want to do. My suggestion to make this code nicer (fix case stmt
>>>> and outline common code) was really simple and I think can be
>>>> verified by code inspection, which might be less work and easier to
>>>> review.
>>>>
>>>> Coleen
>>>>
>>>> On 8/7/2013 12:28 PM, Mikael Vidstedt wrote:
>>>>> Coleen,
>>>>>
>>>>> Funny you should mention that, and since I fully agree with you I
>>>>> actually did prepare another version of the patch which is heavily
>>>>> inspired by the java_props_md.c implementation:
>>>>>
>>>>> http://cr.openjdk.java.net/~mikael/webrevs/winvercleanup2/webrev/
>>>>>
>>>>> I personally like this version better, but the one thing that held
>>>>> me back was the fact that I will basically want to dig up machines
>>>>> with all the different (supported) Windows versions and verify that
>>>>> the code is still correct in all cases. If you think this is the way
>>>>> to go I more than willing to will do so. Let me know what you think
>>>>> about the new version of the patch!
>>>>>
>>>>> There's no real urgency here - I'd rather do it correct once than...
>>>>>
>>>>> Cheers,
>>>>> Mikael
>>>>>
>>>>>
>>>>> On 2013-08-07 06:39, Coleen Phillimore wrote:
>>>>>> It looks like the code under the case for all these releases,
>>>>>> should be different case statements for each, rather than these
>>>>>> cascading 'if' statements. And make 1668-1673 a new function
>>>>>> returning si. So if we have a new release, in general it will
>>>>>> work because the default will print out something. But a better
>>>>>> default would be lines 1712-1717 which are dead code now.
>>>>>>
>>>>>> Sorry, I know it's simple and urgent but this seems to be getting
>>>>>> increasingly ugly.
>>>>>>
>>>>>> Thanks,
>>>>>> Coleen
>>>>>>
>>>>>> On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>>>>>>> Please review the following change:
>>>>>>>
>>>>>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>>>>>>>
>>>>>>> The patch adds support to os_windows.cpp for recognizing the
>>>>>>> upcoming Windows versions: Windows 8.1 and Windows Server 2012 R2.
>>>>>>>
>>>>>>> The changed is based on the corresponding code on the JDK
>>>>>>> side[1][2][3].
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Mikael
>>>>>>>
>>>>>>> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
>>>>>>> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
>>>>>>> [3]
>>>>>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>>>>>>>
>>>>>>>
>
From dmitry.samersoff at oracle.com Fri Aug 9 09:33:02 2013
From: dmitry.samersoff at oracle.com (Dmitry Samersoff)
Date: Fri, 09 Aug 2013 20:33:02 +0400
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <5205164F.4040607@oracle.com>
References: <5201886C.1030206@oracle.com> <52024E1A.4000908@oracle.com>
<520275B8.5010101@oracle.com> <52028A69.8010207@oracle.com>
<52041AC1.4000803@oracle.com> <520430F3.4040306@oracle.com>
<5204CF5E.30705@oracle.com> <5205164F.4040607@oracle.com>
Message-ID: <520519BE.9020805@oracle.com>
Mikael,
Fill free to continue.
Changes looks OK for me.
-Dmitry
On 2013-08-09 20:18, Mikael Vidstedt wrote:
>
> The Oracle JDK does not support the older Windows versions in JDK 7.
> However, in an attempt to keep this change small I will keep those
> checks in there and queue up a future cleanup task.
>
> Unless the comment is annoying you all too much I'll keep it in there too.
>
> Cheers,
> Mikael
>
> On 2013-08-09 04:15, Dmitry Samersoff wrote:
>> Mikael,
>>
>> Does we still support Win 95/98/Me ?
>>
>> PS: Comments seems redundant to me
>>
>> 1660 // find out whether we are running on 64 bit processor or not.
>>
>> -Dmitry
>>
>> On 2013-08-09 03:59, Coleen Phillimore wrote:
>>> Mikael,
>>>
>>> I think this looks great. It's a lot cleaner (more red than blue
>>> changes).
>>>
>>> thanks for humoring me,
>>> Coleen
>>>
>>> On 08/08/2013 06:25 PM, Mikael Vidstedt wrote:
>>>> Coleen,
>>>>
>>>> After having tried numerous different versions I ended up with this:
>>>>
>>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452.3/webrev
>>>>
>>>> Summary of the changes:
>>>>
>>>> * The GetNativeSystemInfo call has been moved up before the switch,
>>>> but is only called if the os version is recent enough, and we
>>>> actually care about the si.wProcessorArchitecture field.
>>>>
>>>> * The true/else branches in the if-diamond have been switch to avoid
>>>> the negation of the condition.
>>>>
>>>> * While at it I added support for recognizing "Windows Server 2008 R2"
>>>> (6.1 non-workstation) which we apparently haven't recognized earlier,
>>>> but which is something the JDK code recognizes [1].
>>>>
>>>> * The " , 64 bit" has been move out below the switch, but is only
>>>> relevant/tested for on recent enough Windows versions, just like the
>>>> old code did.
>>>>
>>>> Feedback much appreciated! I'm also investigating if it would be
>>>> possible to unify/share the code with the java_props_md.c logic [1] to
>>>> avoid the duplication, but for now this may have to do. In addition to
>>>> that the code can be cleaned up further if we only support VS2010+,
>>>> which I believe is de facto since JDK 7 anyway; I will investigate
>>>> that as a separate improvement.
>>>>
>>>> Thanks,
>>>> Mikael
>>>>
>>>> [1]
>>>> http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/e057cddf0d6c/src/windows/native/java/lang/java_props_md.c
>>>>
>>>> (line 451).
>>>>
>>>> On 2013-08-07 10:56, Coleen Phillimore wrote:
>>>>> Mikael,
>>>>>
>>>>> I do like your new version better but because you changed so much, it
>>>>> should be verified on all versions of windows. Which you might not
>>>>> want to do. My suggestion to make this code nicer (fix case stmt
>>>>> and outline common code) was really simple and I think can be
>>>>> verified by code inspection, which might be less work and easier to
>>>>> review.
>>>>>
>>>>> Coleen
>>>>>
>>>>> On 8/7/2013 12:28 PM, Mikael Vidstedt wrote:
>>>>>> Coleen,
>>>>>>
>>>>>> Funny you should mention that, and since I fully agree with you I
>>>>>> actually did prepare another version of the patch which is heavily
>>>>>> inspired by the java_props_md.c implementation:
>>>>>>
>>>>>> http://cr.openjdk.java.net/~mikael/webrevs/winvercleanup2/webrev/
>>>>>>
>>>>>> I personally like this version better, but the one thing that held
>>>>>> me back was the fact that I will basically want to dig up machines
>>>>>> with all the different (supported) Windows versions and verify that
>>>>>> the code is still correct in all cases. If you think this is the way
>>>>>> to go I more than willing to will do so. Let me know what you think
>>>>>> about the new version of the patch!
>>>>>>
>>>>>> There's no real urgency here - I'd rather do it correct once than...
>>>>>>
>>>>>> Cheers,
>>>>>> Mikael
>>>>>>
>>>>>>
>>>>>> On 2013-08-07 06:39, Coleen Phillimore wrote:
>>>>>>> It looks like the code under the case for all these releases,
>>>>>>> should be different case statements for each, rather than these
>>>>>>> cascading 'if' statements. And make 1668-1673 a new function
>>>>>>> returning si. So if we have a new release, in general it will
>>>>>>> work because the default will print out something. But a better
>>>>>>> default would be lines 1712-1717 which are dead code now.
>>>>>>>
>>>>>>> Sorry, I know it's simple and urgent but this seems to be getting
>>>>>>> increasingly ugly.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Coleen
>>>>>>>
>>>>>>> On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>>>>>>>> Please review the following change:
>>>>>>>>
>>>>>>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>>>>>>>>
>>>>>>>> The patch adds support to os_windows.cpp for recognizing the
>>>>>>>> upcoming Windows versions: Windows 8.1 and Windows Server 2012 R2.
>>>>>>>>
>>>>>>>> The changed is based on the corresponding code on the JDK
>>>>>>>> side[1][2][3].
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Mikael
>>>>>>>>
>>>>>>>> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
>>>>>>>> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
>>>>>>>> [3]
>>>>>>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.
From mikael.vidstedt at oracle.com Fri Aug 9 09:47:24 2013
From: mikael.vidstedt at oracle.com (Mikael Vidstedt)
Date: Fri, 09 Aug 2013 09:47:24 -0700
Subject: RFR (S): 8022452: Hotspot needs to know about Windows 8.1 and
Windows Server 2012 R2
In-Reply-To: <520519BE.9020805@oracle.com>
References: <5201886C.1030206@oracle.com> <52024E1A.4000908@oracle.com>
<520275B8.5010101@oracle.com> <52028A69.8010207@oracle.com>
<52041AC1.4000803@oracle.com> <520430F3.4040306@oracle.com>
<5204CF5E.30705@oracle.com> <5205164F.4040607@oracle.com>
<520519BE.9020805@oracle.com>
Message-ID: <52051D1C.9040508@oracle.com>
Dmitry/Coleen/everybody else - thanks for the feedback!
Cheers,
Mikael
On 2013-08-09 09:33, Dmitry Samersoff wrote:
> Mikael,
>
> Fill free to continue.
>
> Changes looks OK for me.
>
> -Dmitry
>
> On 2013-08-09 20:18, Mikael Vidstedt wrote:
>> The Oracle JDK does not support the older Windows versions in JDK 7.
>> However, in an attempt to keep this change small I will keep those
>> checks in there and queue up a future cleanup task.
>>
>> Unless the comment is annoying you all too much I'll keep it in there too.
>>
>> Cheers,
>> Mikael
>>
>> On 2013-08-09 04:15, Dmitry Samersoff wrote:
>>> Mikael,
>>>
>>> Does we still support Win 95/98/Me ?
>>>
>>> PS: Comments seems redundant to me
>>>
>>> 1660 // find out whether we are running on 64 bit processor or not.
>>>
>>> -Dmitry
>>>
>>> On 2013-08-09 03:59, Coleen Phillimore wrote:
>>>> Mikael,
>>>>
>>>> I think this looks great. It's a lot cleaner (more red than blue
>>>> changes).
>>>>
>>>> thanks for humoring me,
>>>> Coleen
>>>>
>>>> On 08/08/2013 06:25 PM, Mikael Vidstedt wrote:
>>>>> Coleen,
>>>>>
>>>>> After having tried numerous different versions I ended up with this:
>>>>>
>>>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452.3/webrev
>>>>>
>>>>> Summary of the changes:
>>>>>
>>>>> * The GetNativeSystemInfo call has been moved up before the switch,
>>>>> but is only called if the os version is recent enough, and we
>>>>> actually care about the si.wProcessorArchitecture field.
>>>>>
>>>>> * The true/else branches in the if-diamond have been switch to avoid
>>>>> the negation of the condition.
>>>>>
>>>>> * While at it I added support for recognizing "Windows Server 2008 R2"
>>>>> (6.1 non-workstation) which we apparently haven't recognized earlier,
>>>>> but which is something the JDK code recognizes [1].
>>>>>
>>>>> * The " , 64 bit" has been move out below the switch, but is only
>>>>> relevant/tested for on recent enough Windows versions, just like the
>>>>> old code did.
>>>>>
>>>>> Feedback much appreciated! I'm also investigating if it would be
>>>>> possible to unify/share the code with the java_props_md.c logic [1] to
>>>>> avoid the duplication, but for now this may have to do. In addition to
>>>>> that the code can be cleaned up further if we only support VS2010+,
>>>>> which I believe is de facto since JDK 7 anyway; I will investigate
>>>>> that as a separate improvement.
>>>>>
>>>>> Thanks,
>>>>> Mikael
>>>>>
>>>>> [1]
>>>>> http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/e057cddf0d6c/src/windows/native/java/lang/java_props_md.c
>>>>>
>>>>> (line 451).
>>>>>
>>>>> On 2013-08-07 10:56, Coleen Phillimore wrote:
>>>>>> Mikael,
>>>>>>
>>>>>> I do like your new version better but because you changed so much, it
>>>>>> should be verified on all versions of windows. Which you might not
>>>>>> want to do. My suggestion to make this code nicer (fix case stmt
>>>>>> and outline common code) was really simple and I think can be
>>>>>> verified by code inspection, which might be less work and easier to
>>>>>> review.
>>>>>>
>>>>>> Coleen
>>>>>>
>>>>>> On 8/7/2013 12:28 PM, Mikael Vidstedt wrote:
>>>>>>> Coleen,
>>>>>>>
>>>>>>> Funny you should mention that, and since I fully agree with you I
>>>>>>> actually did prepare another version of the patch which is heavily
>>>>>>> inspired by the java_props_md.c implementation:
>>>>>>>
>>>>>>> http://cr.openjdk.java.net/~mikael/webrevs/winvercleanup2/webrev/
>>>>>>>
>>>>>>> I personally like this version better, but the one thing that held
>>>>>>> me back was the fact that I will basically want to dig up machines
>>>>>>> with all the different (supported) Windows versions and verify that
>>>>>>> the code is still correct in all cases. If you think this is the way
>>>>>>> to go I more than willing to will do so. Let me know what you think
>>>>>>> about the new version of the patch!
>>>>>>>
>>>>>>> There's no real urgency here - I'd rather do it correct once than...
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Mikael
>>>>>>>
>>>>>>>
>>>>>>> On 2013-08-07 06:39, Coleen Phillimore wrote:
>>>>>>>> It looks like the code under the case for all these releases,
>>>>>>>> should be different case statements for each, rather than these
>>>>>>>> cascading 'if' statements. And make 1668-1673 a new function
>>>>>>>> returning si. So if we have a new release, in general it will
>>>>>>>> work because the default will print out something. But a better
>>>>>>>> default would be lines 1712-1717 which are dead code now.
>>>>>>>>
>>>>>>>> Sorry, I know it's simple and urgent but this seems to be getting
>>>>>>>> increasingly ugly.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Coleen
>>>>>>>>
>>>>>>>> On 8/6/2013 7:36 PM, Mikael Vidstedt wrote:
>>>>>>>>> Please review the following change:
>>>>>>>>>
>>>>>>>>> http://cr.openjdk.java.net/~mikael/webrevs/8022452/webrev
>>>>>>>>>
>>>>>>>>> The patch adds support to os_windows.cpp for recognizing the
>>>>>>>>> upcoming Windows versions: Windows 8.1 and Windows Server 2012 R2.
>>>>>>>>>
>>>>>>>>> The changed is based on the corresponding code on the JDK
>>>>>>>>> side[1][2][3].
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Mikael
>>>>>>>>>
>>>>>>>>> [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8020191
>>>>>>>>> [2] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/40221b09812f
>>>>>>>>> [3]
>>>>>>>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-July/019463.html
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>
From mikhailo.seledtsov at oracle.com Fri Aug 9 09:49:14 2013
From: mikhailo.seledtsov at oracle.com (Mikhailo Seledtsov)
Date: Fri, 09 Aug 2013 12:49:14 -0400
Subject: RFR 8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
In-Reply-To: <520427F9.8030805@oracle.com>
References: <52016BBB.3040907@oracle.com> <520423B6.3050009@oracle.com>
<520427F9.8030805@oracle.com>
Message-ID: <52051D8A.20009@oracle.com>
Hi Coleen,
I have reviewed only the test portion of your change-set.
It was a good learning exercise for me on class transformation.
I have several comments:
1. Agent.java: redefine()
With your change, the block of code
Agent transformer = new Agent();
instrumentation.addTransformer(transformer, true);
will be called 3 times, thus adding the transformer 3 times.
Was it intended? If not, you could move this code to premain()
2. WalkThroughInvoke.java: stackWalk()
If the AccessControlException() is always expected, and making sure it occurs is one of the test checks, I recommend throwing an exception
right after sm.checkMemberAccess(b, Member.DECLARED);
Such as:
try {
28 Class b = Object.class;
29 SecurityManager sm = new SecurityManager();
30 // walks the stack before it gets this exception.
31 // testing the stack walk with Method.invoke in the stack
32 sm.checkMemberAccess(b, Member.DECLARED);
* Misha>> throw new Exception("Test failed, the expected AccessControlException did not occur");*
33 } catch (java.security.AccessControlException e) {
34 System.out.println("This exception is expected");
35 }
3. Style comment:
The style for Java code is to use 4 spaces for tabulation/indent
(please see the attached discussion with David Holmes).
Misha
On 8/8/2013 7:21 PM, Coleen Phillimore wrote:
>
> Thanks, Serguei!
> Coleen
>
> On 08/08/2013 07:03 PM, serguei.spitsyn at oracle.com wrote:
>> Coleen,
>>
>> The fix looks good, I do not see any issues.
>>
>> Thanks,
>> Serguei
>>
>>
>> On 8/6/13 2:33 PM, Coleen Phillimore wrote:
>>> Summary: ActiveMethodOopsCache was used to keep track of old
>>> versions of some methods that are cached in Universe but is buggy
>>> with permgen removal and not needed anymore
>>>
>>> There was a crash in this function that I couldn't reproduce. It was
>>> likely that the crash was for something else, but this is a lurking
>>> bug.
>>>
>>> open webrev at http://cr.openjdk.java.net/~coleenp/8009728/
>>> bug link at http://bugs.sun.com/view_bug.do?bug_id=8009728
>>> local bug link https://jbs.oracle.com/bugs/browse/JDK-8009728
>>>
>>> Tested with vm.quick.testlist which includes redefine classes tests
>>> and jck lang and vm tests.
>>>
>>> Thanks,
>>> Coleen
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/0f5a251a/attachment-0001.html
-------------- next part --------------
An embedded message was scrubbed...
From: David Holmes
Subject: Re: RFR (S): 6726963: multi_allocate() call does not CHECK_NULL and
causes crash in fastdebug bits
Date: Mon, 03 Jun 2013 22:28:05 +1000
Size: 3628
Url: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/0f5a251a/Code_Tabulation_Style__Email01-0001.eml
From mikhailo.seledtsov at oracle.com Fri Aug 9 10:36:24 2013
From: mikhailo.seledtsov at oracle.com (Mikhailo Seledtsov)
Date: Fri, 09 Aug 2013 13:36:24 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
Message-ID: <52052898.4000702@oracle.com>
Hi Harold,
I have reviewed only the test portion of the change. It looks good, I
have couple of comments:
- style comment: we should try to use 4 spaces for indent/tabulation in
Java code
- this comment may be coming too late in the checking process: what do
you think about keeping all the CDS tests in the same place, under
test/runtime/SharedArchiveFile ?
If you agree, but it is too late to make this change, I could make
this change later as a separate trivial check-in.
Misha
On 8/9/2013 10:57 AM, Harold Seigel wrote:
> Hi,
>
> Please review this latest version of the bug fix for 8003424:
> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
>
>
>
> This new version includes the following changes:
>
> 1. macroAssembler_sparc.cpp
>
> a. Merged two versions of reinit_heapbase() into one.
>
> b. Improved decode_klass_not_null(src, dst) to not use G6 if shift
> == 0.
>
>
> 2. macroAssembler_x86.cpp
>
> a. Merged two versions of reinit_heapbase() into one.
>
> b. Improved encode_klass_not_null(src, dst) to not use R12.
>
> c. Replaced leaq with addq in decode_klass_not_null(src, dst).
>
>
> 3. Improved variable names in heap.cpp.
>
>
> 4. metaspace.cpp
>
> a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more
> understandable.
>
> b. Moved set_narrow_klass_base_and_shift() near
> can_use_cds_with_metaspace_addr().
>
> c. Changed unneeded conditional in initialize_class_space() into an
> assert.
>
>
> 5. arguments.cpp
>
> a. Fixed problem with -Xshare:dump and disabled compression.
>
> b. Moved UseCompressedKlassPointers code into new function:
> set_use_compressed_klass_ptrs().
>
> c. Fixed bug 8005933 that turned off CDS for -server even if
> -Xshare:auto was explicitly specified.
>
>
> 6. Increased default value of ClassMetaspaceSize to 1*G in globals.hpp.
>
>
> 7. Fixed indentation issues in metaspace.cpp and other modules.
>
>
> Thanks, Harold
>
> ----- Original Message -----
> From: harold.seigel at oracle.com
> To: coleen.phillimore at oracle.com
> Cc: hotspot-runtime-dev at openjdk.java.net
> Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing
> for CompressedOops
>
> The purpose of this assert is to verify that the two methods in the
> 'if' clause closed the map file and disabled UseSharedSpaces if they
> detected a problem when trying to use CDS.
>
> if (mapinfo->initialize() &&
> MetaspaceShared::map_shared_spaces(mapinfo)) {
> FileMapInfo::set_current_info(mapinfo);
> } else {
> assert(!mapinfo->is_open() && !UseSharedSpaces,
> "archive file not closed or shared spaces not disabled.");
> }
>
> ----- Original Message -----
> From: harold.seigel at oracle.com
> To: coleen.phillimore at oracle.com
> Cc: hotspot-runtime-dev at openjdk.java.net
> Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing
> for CompressedOops
>
> This is a bug that Stefan Karlsson also discovered. To fix it, I've
> changed the code to this:
>
> if (DumpSharedSpaces) {
> if (RequireSharedSpaces) {
> warning("cannot dump shared archive while using shared archive");
> }
> UseSharedSpaces = false;
> #ifdef _LP64
> if (!UseCompressedOops || !UseCompressedKlassPointers) {
> vm_exit_during_initialization(
> "Cannot dump shared archive when UseCompressedOops or
> UseCompressedKlassPointers is off.", NULL);
> }
>
> Harold
>
>
> ----- Original Message -----
> From: coleen.phillimore at oracle.com
> To: hotspot-runtime-dev at openjdk.java.net
> Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing
> for CompressedOops
>
>
> Yes, there should be a check for that too. Now I'll really let Harold
> answer.
>
> Thanks,
> Coleen
>
> On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
> > Coleen, Harold
> >
> > > The InstanceKlass has offsets to fields in the instance, and they
> > depend
> > > on both compressed oops and compressed klass pointers. So both
> > have to
> > > be on for the offsets to be valid.
> >
> > So there is dependency on UseCompressedOops and
> > UseCompressedKlassPointers flags during dump.
> >
> > Then why the check is done only for UseSharedSpaces and not for
> > DumpSharedSpaces?:
> >
> > if (DumpSharedSpaces) {
> > if (RequireSharedSpaces) {
> > warning("cannot dump shared archive while using shared
> archive");
> > }
> > UseSharedSpaces = false;
> > + #ifdef _LP64
> > + } else {
> > + // UseCompressedOops and UseCompressedKlassPointers must be on
> > for UseSharedSpaces.
> > + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> > + no_shared_spaces();
> > + }
> > + #endif
> > }
> >
> > Thanks,
> > Vladimir
> >
> > On 8/8/13 3:34 PM, Coleen Phillimore wrote:
> >>
> >> Hi Vladimir,
> >>
> >> I have a couple of answers and I'll let Harold answer the rest.
> >>
> >> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
> >>> On 8/7/13 8:34 AM, harold seigel wrote:
> >>>> Hi Vladimir,
> >>>>
> >>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
> >>>>> Harold,
> >>>>>
> >>>>> Note, on SPARC set() could generate up to 8 instructions to load
> >>>>> 64-bit constant into register. So I am not sure that it will be
> >>>>> faster
> >>>>> than load.
> >>>> We thought it would be faster because it doesn't need to load
> anything
> >>>> from memory.
> >>>
> >>> For good value (0x800000000) it should use only 2-3 instructions.
> >>> I think you can keep using set().
> >>>
> >>>>>
> >>>>> I can't find where in CDS you store information about compressed
> >>>>> klass
> >>>>> pointers and compressed oops parameters which were used during dump?
> >>>>> How you verify that correct parameters/flags are ussed when such CDS
> >>>>> is used later?
> >>>> No compressed klass pointers nor compressed oops get written to the
> >>>> archive. So, the compressed klass pointers and compressed oops
> >>>> parameters do not need to be recorded in the archive.
> >>>
> >>> So you are saying that all klass pointers (references to klasses) in
> >>> metadata structures in metaspace are full.
> >>
> >> Yes, they are. (methodOops weren't in the InstanceKlass::_methods
> array
> >> with Permgen but they are uncompressed now).
> >>
> >>> And klass pointers are only compressed in java object headers (which
> >>> are not part of CDS). Right?
> >>
> >> The InstanceKlass has offsets to fields in the instance, and they
> depend
> >> on both compressed oops and compressed klass pointers. So both
> have to
> >> be on for the offsets to be valid.
> >>
> >> But the base and compressed values are not stored anywhere in the CDS
> >> archive.
> >>
> >>> And you don't care about UseCompressedOops and
> >>> UseCompressedKlassPointers flags settings when you dump it into
> >>> archive. The only limit is:
> >>>
> >>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
> >>>
> >>> Then I don't understand why you can't use/load CDS archive when coop
> >>> or compklass are off:
> >>>
> >>> > If coop is turned off then CDS cannot be used. CDS will only be
> >>> > supported if both UseCompressedOops and UseCompressedKlassPointers
> >>> are
> >>> > TRUE.
> >>>
> >>> Also based on code in arguments.cpp it is allowed to specify
> >>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command
> line:
> >>>
> >>> 1466 // Turn on UseCompressedKlassPointers too
> >>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
> >>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
> >>> 1469 }
> >>>
> >>> Did you tested such combination?
> >>
> >> I should let Harold answer this but I believe this is what his test
> >> does. For CDS on 64 bit, both must be on. We didn't want to create 4
> >> different archives. And it wouldn't make too much sense since CDS for
> >> 64 bit is a footprint savings so why would you use it without
> >> compressing oops and class pointers? It's not a startup savings on
> >> server because we turn off interpreter bytecode quickening.
> >>
> >> Coleen
> >>
> >>>
> >>>>>
> >>>>> set_narrow_klass_base_and_shift() and
> >>>>> can_use_cds_with_metaspace_addr() have the same code for
> >>>>> UseSharedSpaces. It would be nice to have only one copy. Call
> >>>>> can_use_cds_with_metaspace_addr() from
> >>>>> set_narrow_klass_base_and_shift() ?
> >>>> I could add new inlined methods that determine the higher_address and
> >>>> lower_base when UseSharedSpaces is true and have them called from
> >>>> set_narrow_klass_base_and_shift() and
> >>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
> >>>
> >>> I tried several approaches but your implementation is more clean. So I
> >>> agree to keep what you have now.
> >>>
> >>>
> >>> Also I found strange assert which should always fail (old code in
> >>> global_initialize() in metaspace.cpp):
> >>>
> >>> 2959 if (UseSharedSpaces) {
> >>> ...
> >>> 2969 } else {
> >>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
> >>> 2971 "archive file not closed or shared spaces not
> >>> disabled.");
> >>>
> >>> Thanks,
> >>> Vladimir
> >>>
> >>>>>
> >>>>> I see that you unconditionally set comp klass ptr base and shift for
> >>>>> DumpSharedSpaces. Should you do the check similar to
> >>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
> >>>>> don't even check UseCompressedKlassPointers.
> >>>> I don't think the checks are needed because the information
> written to
> >>>> the archive is not affected by the size of the class metaspace.
> >>>>
> >>>> Also, I recently added code to arguments.cpp that will generate an
> >>>> error
> >>>> if UseCompressedOops or UseCompressedKlassPointers is turned off and
> >>>> DumpSharedSpaces is on.
> >>>>>
> >>>>> Why you have next limitation? What if coop can't be used because of
> >>>>> big heap?:
> >>>>>
> >>>>> + // UseCompressedOops and UseCompressedKlassPointers must be on
> >>>>> for UseSharedSpaces.
> >>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> >>>>> + no_shared_spaces();
> >>>> If coop is turned off then CDS cannot be used. CDS will only be
> >>>> supported if both UseCompressedOops and
> UseCompressedKlassPointers are
> >>>> TRUE.
> >>>>>
> >>>>> Could you move UseCompressedKlassPointers code in arguments.cpp into
> >>>>> separate method similar to set_use_compressed_oops()?
> >>>> Done.
> >>>>>
> >>>>> About new tests.
> >>>>> The first test in CDSCompressedKPtrsError misses
> >>>>> -XX:+UseCompressedOops flag.
> >>>> Fixed.
> >>>>>
> >>>>> Could you also test cross flags combinations?:
> >>>>>
> >>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
> >>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
> >>>> Done.
> >>>>>
> >>>>> It would be nice to have test to check ClassMetaspaceSize value
> >>>>> range.
> >>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither
> maxint
> >>>>> or maxuint.
> >>>> A member of our runtime SQE group is writing additional tests. I'll
> >>>> ask
> >>>> him to write a ClassMetaspaceSize range test.
> >>>>
> >>>> We chose 3Gb because we thought it was a sufficiently large size.
> >>>>>
> >>>>>
> >>>>> About code style, indention. We align next line to corresponding
> part
> >>>>> of previous line if we need to split a line. And sometimes it is
> >>>>> better to keep one long line. I understand some of them were before
> >>>>> your changes but, please, clean up at lest ones you touched.
> >>>> Done.
> >>>>>
> >>>>> Cases in metaspace.cpp:
> >>>>>
> >>>>> 2263 assert(raw_word_size >= min_size,
> >>>>> 2264 err_msg("Should not deallocate dark matter "
> SIZE_FORMAT "<"
> >>>>> SIZE_FORMAT, word_size, min_size));
> >>>>>
> >>>>>
> >>>>> 2485 if (Metaspace::using_class_space() &&
> >>>>> 2486 (Metaspace::class_space_list() != NULL)) {
> >>>>>
> >>>>>
> >>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
> >>>>> 2575 (Metaspace::using_class_space() ?
> >>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
> >>>>> 2577 Metaspace::space_list()->virtual_space_total();
> >>>>>
> >>>>>
> >>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
> >>>>> SIZE_FORMAT ", "
> >>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
> >>>>> ", "
> >>>>> 2696 SIZE_FORMAT " medium(s) "
> SIZE_FORMAT
> >>>>> ", "
> >>>>> 2697 "large count " SIZE_FORMAT,
> >>>>> 2698 cls_specialized_count, cls_specialized_waste,
> >>>>> 2699 cls_small_count, cls_small_waste,
> >>>>> 2700 cls_medium_count, cls_medium_waste,
> >>>>> cls_humongous_count);
> >>>>>
> >>>>>
> >>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
> >>>>> addr) &&
> >>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
> >>>>>
> >>>>>
> >>>>> 2889 vm_exit_during_initialization(err_msg(
> >>>>> 2890 "Could not allocate metaspace: %d bytes",
> >>>>> 2891 class_metaspace_size()));
> >>>>>
> >>>>>
> >>>>> 3107 return using_class_space() ?
> >>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
> >>>>>
> >>>>>
> >>>>> 3157 if (is_class && using_class_space()) {
> >>>>> 3158 class_vsm()->deallocate(ptr, word_size);
> >>>>>
> >>>>>
> >>>>> 3305 return space_list()->contains(ptr) ||
> >>>>> 3306 (using_class_space() && class_space_list()->contains(ptr));
> >>>>>
> >>>>> metaspace.hpp:
> >>>>>
> >>>>> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
> >>>>> 271 (Metaspace::using_class_space() ?
> >>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
> >>>>>
> >>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
> >>>>> 286 (Metaspace::using_class_space() ?
> >>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
> >>>>>
> >>>>> universe.cpp:
> >>>>>
> >>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
> >>>>> (intptr_t)(Universe::heap()->base() -
> >>>>> 850 os::vm_page_size()) ||
> >>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
> >>>>> value");
> >>>>>
> >>>>>
> >>>>> Thanks,
> >>>>> Vladimir
> >>>>>
> >>>>> On 8/2/13 1:31 PM, harold seigel wrote:
> >>>>>> Hi,
> >>>>>>
> >>>>>> Please review this updated webrev for bug 8003424:
> >>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
> >>>>>>
> >>>>>>
> >>>>>> The updated webrev has a lot of changes from the previous webrev,
> >>>>>> including the following:
> >>>>>>
> >>>>>> 1. Class metaspace information is now output when
> >>>>>> -XX:+PrintCompressedOopsMode is specified.
> >>>>>>
> >>>>>> 2. decode_klass_not_null(Register dst, Register src) no longer
> >>>>>> clobbers R12.
> >>>>>>
> >>>>>> 3. Method using_class_vsm() was renamed to using_class_space().
> >>>>>>
> >>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
> >>>>>> appropriate.
> >>>>>>
> >>>>>> 5. The Metaspace:: qualifier was removed, where it was
> >>>>>> unnecessary.
> >>>>>>
> >>>>>> 6. Metaspace::initialize_class_space() was made private.
> >>>>>>
> >>>>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
> >>>>>> updated.
> >>>>>>
> >>>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
> >>>>>> and
> >>>>>> specjbb2013. The results showed no significant performance
> >>>>>> difference
> >>>>>> in terms of scores and gc behavior.
> >>>>>>
> >>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
> >>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
> >>>>>>
> >>>>>> Please let me know what additional tests should be run.
> >>>>>>
> >>>>>> Thanks!
> >>>>>> Harold
> >>>>>>
> >>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
> >>>>>>> Hi Harold,
> >>>>>>>
> >>>>>>> > Usually the narrow_klass_base will be 32G and the
> >>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
> >>>>>>> means
> >>>>>>> that
> >>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
> >>>>>>> unless
> >>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
> >>>>>>> make
> >>>>>>> sense?
> >>>>>>>
> >>>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
> >>>>>>> and I
> >>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
> >>>>>>> (assuming or
> >>>>>>> with check that class metaspace size < 32Gb).
> >>>>>>>
> >>>>>>> > Is there one prefix byte per instruction, or just for certain
> >>>>>>> instructions?
> >>>>>>>
> >>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
> >>>>>>> prefix is
> >>>>>>> necessary only if an instruction references one of the extended
> >>>>>>> registers or uses a 64-bit operand."
> >>>>>>>
> >>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and
> >>>>>>> =32
> >>>>>>> and big java heap. Recently we got several bugs which indicated
> >>>>>>> that
> >>>>>>> we did not separate cleanly oops and klass pointers en/decoding.
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Vladimir
> >>>>>>>
> >>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
> >>>>>>>> Hi Vladimir,
> >>>>>>>>
> >>>>>>>> Thank you for the review! Please see inline comments.
> >>>>>>>>
> >>>>>>>> Thanks, Harold
> >>>>>>>>
> >>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
> >>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
> >>>>>>>>>> Nice clean up, Harold
> >>>>>>>>>>
> >>>>>>>>>> Could you add the size of class metaspace in output with
> >>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
> >>>>>>>>>> remember an
> >>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
> >>>>>>>> Will be done in next webrev.
> >>>>>>>>>>
> >>>>>>>>>> Also it would be nice to print these info line (and compressed
> >>>>>>>>>> oops
> >>>>>>>>>> info
> >>>>>>>>>> line) in hs_err files.
> >>>>>>>> I filed an enhancement bug for this: 8021264
> >>>>>>>> .
> >>>>>>>>>>
> >>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
> >>>>>>>>>> x86_64.ad.
> >>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
> >>>>>>>>>> arithmetic
> >>>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
> >>>>>>>>>> note
> >>>>>>>>>> that code in .ad file does not check the encoding mode for
> >>>>>>>>>> narrow
> >>>>>>>>>> klass/oop so it should be conservative and assume that
> >>>>>>>>>> arithmetic
> >>>>>>>>>> instructions are used.
> >>>>>>>> OK. Thanks.
> >>>>>>>>>>
> >>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base
> below
> >>>>>>>>>> 4Gb so
> >>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
> >>>>>>>>>> encoding/decoding without destroying R12.
> >>>>>>>>>
> >>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
> >>>>>>>>> (sign
> >>>>>>>>> bit is extended so you will get wrong result with address >
> 2gb).
> >>>>>>>> But the base will normally be 32Gb. So this case won't happen
> >>>>>>>> very
> >>>>>>>> often.
> >>>>>>>>>
> >>>>>>>>> You definitely should not use R12 in
> >>>>>>>>> decode_klass_not_null(Register
> >>>>>>>>> dst, Register src) method where you have free 'dst' register.
> >>>>>>>> Will be fixed in next webrev.
> >>>>>>>>>
> >>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G).
> Actually it
> >>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
> >>>>>>>>> 64Gb.
> >>>>>>>>> The idea was to avoid using R12 by using shifted base:
> >>>>>>>>>
> >>>>>>>>> decode:
> >>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
> >>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
> >>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
> >>>>>>>>> }
> >>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
> >>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
> >>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
> >>>>>>>>> maxint
> >>>>>>>>> (max positive int).
> >>>>>>>> Usually the narrow_klass_base will be 32G and the
> >>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
> means
> >>>>>>>> that
> >>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
> >>>>>>>> unless
> >>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
> >>>>>>>> make
> >>>>>>>> sense?
> >>>>>>>>>
> >>>>>>>>> And you have general memory reservation problem. At least on
> >>>>>>>>> Solaris,
> >>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
> >>>>>>>>> between
> >>>>>>>>> different requested memory regions. That is why in jdk7 we first
> >>>>>>>>> reserve one huge space and then cut it on java heap, perm
> gen and
> >>>>>>>>> protection page below heap to catch implicit NULL exceptions
> with
> >>>>>>>>> compressed oops.
> >>>>>>>>>
> >>>>>>>>> So, please, verify that you are getting 'cds_address +
> cds_total'
> >>>>>>>>> address or CompressedKlassPointersBase without CDS and with
> >>>>>>>>> compressed
> >>>>>>>>> oops and with Xmx20Gb.
> >>>>>>>> I verifed that we get either cds_address+cds_total as the
> >>>>>>>> address, or
> >>>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
> >>>>>>>> Windows
> >>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
> >>>>>>>> sizes and
> >>>>>>>> -Xmx32G.
> >>>>>>>>
> >>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
> >>>>>>>> desired
> >>>>>>>> CDS address for class metaspace regardless of heap size.
> >>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
> >>>>>>>>>> unfortunately we
> >>>>>>>>>> can't do other way. I assume you use max size because
> >>>>>>>>>> depending on
> >>>>>>>>>> registers used in instructions you will or will not get prefix
> >>>>>>>>>> byte
> >>>>>>>>>> (r8-r15).
> >>>>>>>> Is there one prefix byte per instruction, or just for certain
> >>>>>>>> instructions?
> >>>>>>>>>>
> >>>>>>>>>> I will look on changes in more details may be late.
> >>>>>>>>>
> >>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
> >>>>>>>>> abbreviations
> >>>>>>>>> which are not obvious.
> >>>>>>>> I changed using_class_vsm() to using_class_space().
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Thanks,
> >>>>>>>>>> Vladimir
> >>>>>>>>>>
> >>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
> >>>>>>>>>>> Hi,
> >>>>>>>>>>>
> >>>>>>>>>>> Please review this fix for bug 8003424.
> >>>>>>>>>>>
> >>>>>>>>>>> Open webrev at
> http://cr.openjdk.java.net/~hseigel/bug_8003424/
> >>>>>>>>>>>
> >>>>>>>>>>> Open bug links at:
> >>>>>>>>>>>
> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
> >>>>>>>>>>>
> >>>>>>>>>>> JBS Bug links at
> >>>>>>>>>>>
> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> This fix provides support for using compressed klass pointers
> >>>>>>>>>>> with
> >>>>>>>>>>> CDS.
> >>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
> >>>>>>>>>>> platforms
> >>>>>>>>>>> when
> >>>>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
> >>>>>>>>>>> class
> >>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
> >>>>>>>>>>> it at
> >>>>>>>>>>> the
> >>>>>>>>>>> base of that allocation, the metaspace will now be allocated
> >>>>>>>>>>> separately,
> >>>>>>>>>>> above the Java heap. This will enable future expansion of the
> >>>>>>>>>>> metaspace
> >>>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
> >>>>>>>>>>> being
> >>>>>>>>>>> used, then the CDS region will be allocated between the Java
> >>>>>>>>>>> heap and
> >>>>>>>>>>> the metaspace.
> >>>>>>>>>>>
> >>>>>>>>>>> The new class metaspace allocation code tries to allocate
> >>>>>>>>>>> memory at
> >>>>>>>>>>> 32G,
> >>>>>>>>>>> or above the CDS region, if it is present. Because of this,
> >>>>>>>>>>> encoding
> >>>>>>>>>>> and decoding of compressed klass pointers will always
> >>>>>>>>>>> require use
> >>>>>>>>>>> of a
> >>>>>>>>>>> base register. So, encoding and decoding of compressed klass
> >>>>>>>>>>> pointers
> >>>>>>>>>>> will differ from compressed oops.
> >>>>>>>>>>>
> >>>>>>>>>>> There are no class metaspace allocation changes if
> >>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
> >>>>>>>>>>> 32-bit
> >>>>>>>>>>> platform.
> >>>>>>>>>>>
> >>>>>>>>>>> The code changes also include some cleanup and will fix bugs
> >>>>>>>>>>> 8016729,
> >>>>>>>>>>> 8011610, and 8003424.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
> >>>>>>>>>>> Modules
> >>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
> >>>>>>>>>>> changed to
> >>>>>>>>>>> support the new encoding and decoding of compressed klass
> >>>>>>>>>>> pointers.
> >>>>>>>>>>>
> >>>>>>>>>>> Module metaspace.cpp was changed significantly to support
> >>>>>>>>>>> the new
> >>>>>>>>>>> allocation for metaspace and the CDS region and to determine
> >>>>>>>>>>> compressed
> >>>>>>>>>>> klass pointer encoding base and shifting values.
> >>>>>>>>>>>
> >>>>>>>>>>> Most of the changes to module universe.cpp were to remove code
> >>>>>>>>>>> related
> >>>>>>>>>>> to allocating metaspace and remove code that considered
> >>>>>>>>>>> compressed
> >>>>>>>>>>> klass
> >>>>>>>>>>> pointers when determining the compressed oops compression
> >>>>>>>>>>> mechanism.
> >>>>>>>>>>>
> >>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
> >>>>>>>>>>> part
> >>>>>>>>>>> of a
> >>>>>>>>>>> cleanup requested by Coleen.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
> >>>>>>>>>>> tests,
> >>>>>>>>>>> JPRT,
> >>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
> >>>>>>>>>>> vm.mlvm.testlist
> >>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
> >>>>>>>>>>> -Xshare:off
> >>>>>>>>>>> (with
> >>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
> >>>>>>>>>>> Linux and
> >>>>>>>>>>> 64-Bit
> >>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK
> tests
> >>>>>>>>>>> were
> >>>>>>>>>>> run on Solaris x86.
> >>>>>>>>>>>
> >>>>>>>>>>> The performance impact of these changes is TBD.
> >>>>>>>>>>>
> >>>>>>>>>>> Thanks, Harold
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>
> >>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/83d9d4fa/attachment-0001.html
From coleen.phillimore at oracle.com Fri Aug 9 13:44:51 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Fri, 09 Aug 2013 16:44:51 -0400
Subject: RFR 8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
In-Reply-To: <52051D8A.20009@oracle.com>
References: <52016BBB.3040907@oracle.com> <520423B6.3050009@oracle.com>
<520427F9.8030805@oracle.com> <52051D8A.20009@oracle.com>
Message-ID: <520554C3.40208@oracle.com>
Hi Misha,
Thank you for reviewing the test.
On 8/9/2013 12:49 PM, Mikhailo Seledtsov wrote:
> Hi Coleen,
>
> I have reviewed only the test portion of your change-set.
> It was a good learning exercise for me on class transformation.
> I have several comments:
>
> 1. Agent.java: redefine()
> With your change, the block of code
>
> Agent transformer = new Agent();
> instrumentation.addTransformer(transformer, true);
>
> will be called 3 times, thus adding the transformer 3 times.
> Was it intended? If not, you could move this code to premain()
It wasn't intended. I meant to move that to premain and have moved it
and the test still passes.
>
> 2. WalkThroughInvoke.java: stackWalk()
> If the AccessControlException() is always expected, and making sure it occurs is one of the test checks, I recommend throwing an exception
> right after sm.checkMemberAccess(b, Member.DECLARED);
>
> Such as:
>
> try {
> 28 Class b = Object.class;
> 29 SecurityManager sm = new SecurityManager();
> 30 // walks the stack before it gets this exception.
> 31 // testing the stack walk with Method.invoke in the stack
> 32 sm.checkMemberAccess(b, Member.DECLARED);
> * Misha>> throw new Exception("Test failed, the expected AccessControlException did not occur");*
> 33 } catch (java.security.AccessControlException e) {
> 34 System.out.println("This exception is expected");
> 35 }
>
I don't think I want to do this change because if we change whether the
checkMemberAccess() throws an exception, which seems unlikely, the test
will start failing. And so someone will have to fix the test for
something that it's not trying to test.
> 3. Style comment:
> The style for Java code is to use 4 spaces for tabulation/indent
> (please see the attached discussion with David Holmes).
>
I changed the files to have 4 space indentation.
Thanks!
Coleen
>
> Misha
>
>
> On 8/8/2013 7:21 PM, Coleen Phillimore wrote:
>>
>> Thanks, Serguei!
>> Coleen
>>
>> On 08/08/2013 07:03 PM, serguei.spitsyn at oracle.com wrote:
>>> Coleen,
>>>
>>> The fix looks good, I do not see any issues.
>>>
>>> Thanks,
>>> Serguei
>>>
>>>
>>> On 8/6/13 2:33 PM, Coleen Phillimore wrote:
>>>> Summary: ActiveMethodOopsCache was used to keep track of old
>>>> versions of some methods that are cached in Universe but is buggy
>>>> with permgen removal and not needed anymore
>>>>
>>>> There was a crash in this function that I couldn't reproduce. It
>>>> was likely that the crash was for something else, but this is a
>>>> lurking bug.
>>>>
>>>> open webrev at http://cr.openjdk.java.net/~coleenp/8009728/
>>>> bug link at http://bugs.sun.com/view_bug.do?bug_id=8009728
>>>> local bug link https://jbs.oracle.com/bugs/browse/JDK-8009728
>>>>
>>>> Tested with vm.quick.testlist which includes redefine classes tests
>>>> and jck lang and vm tests.
>>>>
>>>> Thanks,
>>>> Coleen
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/559e3641/attachment.html
From jiangli.zhou at oracle.com Fri Aug 9 14:22:55 2013
From: jiangli.zhou at oracle.com (Jiangli Zhou)
Date: Fri, 09 Aug 2013 14:22:55 -0700
Subject: Request for review:8021948:Change InstanceKlass::_source_file_name
and _generic_signature from Symbol* to constant pool index
In-Reply-To: <51F978B6.3050209@oracle.com>
References: <51F978B6.3050209@oracle.com>
Message-ID: <52055DAF.90707@oracle.com>
Hi,
Could anyone help me review this?
Thanks,
Jiangli
On 07/31/2013 01:51 PM, Jiangli Zhou wrote:
> Hi,
>
> Please review following change for JDK-8021948
> :
>
> http://cr.openjdk.java.net/~jiangli/8021948/webrev.00/
>
> Both InstanceKlass::_source_file_name and
> InstanceKlass::_generic_signature were pointers to Symbol. They are
> now indexes to constant pool entries. Both fields are now u2 type, and
> co-located with other non-pointer type fields for more efficient
> alignment on 64-bit machine. On 32-bit machine, the change saves
> 4bytes for each class.
>
> Tested with JPRT, vm.quick.testlist, nsk.sajdi.testlist,
> nsk.stress.testlist and nsk.jvmti.testlist.
>
> Thanks,
> Jiangli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/07a760a5/attachment.html
From calvin.cheung at oracle.com Fri Aug 9 15:11:28 2013
From: calvin.cheung at oracle.com (Calvin Cheung)
Date: Fri, 09 Aug 2013 15:11:28 -0700
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <520425BD.6090605@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
<5203E8D7.107@oracle.com> <52040B08.8020401@oracle.com>
<52040D1E.9000101@oracle.com> <520425BD.6090605@oracle.com>
Message-ID: <52056910.8010005@oracle.com>
I've updated the webrev with 2 changes:
1) added the TRAPS as the last parameter to the
create_class_path_entry() method;
2) added a jtreg test case.
http://cr.openjdk.java.net/~ccheung/8020675/webrev/
Please take a look again.
One more response in-lined below...
On 8/8/2013 4:11 PM, Ioi Lam wrote:
> |I found one version of JDK7 that does not crash:||
> ||
> sc11136754 ~$
> /net/jre.us.oracle.com/p/v31/jdk/7/all/b24/binaries/linux-amd64/bin/java
> -showversion -cp . -Xbootclasspath/a:foo.jar test2
> Error occurred during initialization of VM
> java/lang/ClassNotFoundException: error in opening JAR file foo.jar
> |
|I noticed that it started breaking in 7u40 b01; it was still working
with 7u25.
It may have something to do with when the set_init_completed() is called:
ExceptionMark::~ExceptionMark() {
if (_thread->has_pending_exception()) {
Handle exception(_thread, _thread->pending_exception());
_thread->clear_pending_exception(); // Needed to avoid infinite
recursion
if (is_init_completed()) {
exception->print();
fatal("ExceptionMark destructor expects no pending exceptions");
} else {
vm_exit_during_initialization(exception);
}
}
}
Before 7u40, I think the code path got to the "else" branch of
~ExceptionMark() and we just printed an error and exit.
set_init_completed() is only called from Threads::create_vm() and that
method didn't change much between 7u25 and 7u40 except for some NMT
initialization - MemTracker::bootstrap_single_thread(),
MemTracker::start(), etc. But I thought NMT isn't enabled by default?
Debugging with hs25, the set_init_completed() always happened before
create_class_path_entry() and both calls were done within the same
thread - "vm startup".
thanks,
Calvin
|
> |||
> ||
> ||- Ioi
> |
> On 08/08/2013 02:26 PM, Ioi Lam wrote:
>> |I found an official version that's closest to the Redhat version
>> (OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode). It still
>> crashes.||
>> ||
>> ||sc11136754 ~$
>> /java/re/jdk/6_25/latest/binaries/linux-amd64/bin/java -showversion
>> -cp . -Xbootclasspath/a:foo.jar test2||
>> ||java version "1.6.0_25"||
>> ||Java(TM) SE Runtime Environment (build 1.6.0_25-b06)||
>> ||Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)||
>> ||
>> ||java.lang.ClassNotFoundException ||
>> || - klass: 'java/lang/ClassNotFoundException'||
>> ||#||
>> ||# A fatal error has been detected by the Java Runtime Environment:||
>> ||#||
>> ||# Internal Error (exceptions.cpp:397), pid=29955,
>> tid=140608485558016||
>> ||# fatal error: ExceptionMark destructor expects no pending
>> exceptions||
>> ||#||
>> ||# JRE version: 6.0_25-b06||
>> ||# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.0-b11 mixed mode
>> linux-amd64 compressed oops)||
>> ||# An error report file with more information is saved as:||
>> ||# /home/iklam/hs_err_pid29955.log||
>> ||#||
>> ||# If you would like to submit a bug report, please visit:||
>> ||# http://java.sun.com/webapps/bugreport/crash.jsp||
>> ||#||
>> ||Aborted (core dumped)||
>> |
>> - Ioi
>>
>> On 08/08/2013 02:18 PM, David Holmes wrote:
>>> On 9/08/2013 4:52 AM, Ioi Lam wrote:
>>>> |Hmmm, I used JDK6 from OEL 6.0 (derived from RedHat), which
>>>> apparently
>>>> works differently
>>>> (better?) than the official JDK6 build. Maybe Redhat fixed this in
>>>> their
>>>> own repo??||
>>>
>>> Their hotspot version is much later - hs20 vs hs17
>>>
>>> David
>>> -----
>>>
>>>> ||
>>>> |
>>>> |==OEL6================================================
>>>> ||
>>>> ||sc11136754 ~$ uname -a||
>>>> ||Linux sc11136754 2.6.39-100.5.1.el6uek.x86_64 #1 SMP Tue Mar 6
>>>> 20:26:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux||
>>>> ||sc11136754 ~$ type java||
>>>> ||java is hashed (/usr/bin/java)||
>>>> ||sc11136754 ~$ java -version||
>>>> ||java version "1.6.0_22"||
>>>> ||OpenJDK Runtime Environment (IcedTea6 1.10.4)
>>>> (rhel-1.41.1.10.4.el6-x86_64)||
>>>> ||OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)||
>>>> ||sc11136754 ~$ java -showversion -cp . -Xbootclasspath/a:foo.jar
>>>> test2||
>>>> ||Error occurred during initialization of VM||
>>>> ||java/lang/ClassNotFoundException: error in opening JAR file
>>>> foo.jar||
>>>> ||
>>>> ==OFFICIAL============================================
>>>> ||
>>>> sc11136754 ~$ /java/re/jdk/6_22/latest/binaries/linux-amd64/bin/java
>>>> -showversion -cp . -Xbootclasspath/a:foo.jar test2
>>>> java version "1.6.0_22"
>>>> Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
>>>> Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
>>>>
>>>> #
>>>> # A fatal error has been detected by the Java Runtime Environment:
>>>> #
>>>> # Internal Error (exceptions.cpp:367), pid=25167, tid=140510319580928
>>>> # Error: ExceptionMark destructor expects no pending exceptions
>>>> #
>>>> # JRE version: 6.0_22-b04
>>>> # Java VM: Java HotSpot(TM) 64-Bit Server VM (17.1-b03 mixed mode
>>>> linux-amd64 )
>>>> # An error report file with more information is saved as:
>>>> # /home/iklam/hs_err_pid25167.log
>>>> #
>>>> # If you would like to submit a bug report, please visit:
>>>> # http://java.sun.com/webapps/bugreport/crash.jsp
>>>> #
>>>> |
>>>> |======================================================
>>>> ||
>>>> ||- Ioi|
>>>>
>>>> On 08/08/2013 11:08 AM, Calvin Cheung wrote:
>>>>> Hi Ioi, David,
>>>>>
>>>>> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>>>>>> |JDK6 seems to handle this better. I have written a simple
>>>>>> stand-alone test case that doesn't require truncating JAR files in
>>>>>> the JDK:||
>>>>>> ||
>>>>>> ||=========================||
>>>>>> ||/*||
>>>>>> ||javac test2.java||
>>>>>> ||rm -f foo.jar||
>>>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>>>> ||touch foo.jar||
>>>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>>>> ||*/||
>>>>>> ||
>>>>>> ||public class test2 {||
>>>>>> || public static void main(String args[]) {||
>>>>>> || try {||
>>>>>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>>>>>> ||System.out.println(Class.forName("xxx"));||
>>>>>> || } catch (Throwable t) {||
>>>>>> || t.printStackTrace();||
>>>>>> || }||
>>>>>> || }||
>>>>>> ||}||
>>>>>> ||=========================||
>>>>>> | |
>>>>>> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
>>>>>> -Xbootclasspath/a:foo.jar test2" command.||
>>>>>> |
>>>>> |I saw crash with the latest 6 update release with both test cases.
>>>>> The crash seems to be at the same spot.
>>>>> |
>>>>>> |||
>>>>>> ||So I think the correct fix is to restore the JDK6 behavior (not
>>>>>> sure if it's already the same with your patch, but worth checking),
>>>>>> and also add a new jtreg test into hotspot.||
>>>>>> |
>>>>> |I checked the jdk 6 code and those 3 methods which I changed look
>>>>> the
>>>>> same as jdk 8.
>>>>> Sure, I can add a jtreg test.
>>>>> |
>>>>>> |||
>>>>>> ||Thanks||
>>>>>> ||- Ioi||
>>>>>> ||
>>>>>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>>>>>> |
>>>>>>> |Hi Calvin, ||
>>>>>>> | |
>>>>>>> ||It seems to me that this code has a general problem with
>>>>>>> exceptions. If exceptions can be posted then methods should be
>>>>>>> declared with a last parameter of TRAPS and called with a CHECK_
>>>>>>> macro. The way this code is written it does not seem to expect any
>>>>>>> exceptions to be possible. I would check with Karen on this. ||
>>>>>>> |
>>>>> |I was thinking about that but that would involves a bit more
>>>>> changes.
>>>>> I can give it a try.
>>>>> |
>>>>>>> || |
>>>>>>> ||This addition seems unused: ||
>>>>>>> | |
>>>>>>> ||+ Thread* THREAD = thread; ||
>>>>>>> |
>>>>> |It is required for the THROW_MSG().
>>>>> It won't be needed if the method is declared with TRAPS as the last
>>>>> parameter (I think).
>>>>>
>>>>> thanks,
>>>>> Calvin
>>>>> |
>>>>>>> || |
>>>>>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>>>>>>> exceptions - don't know what the thought process was there :) ||
>>>>>>> | |
>>>>>>> ||David ||
>>>>>>> | |
>>>>>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>>>>>> |
>>>>>>>> |Please review this small fix for fixing a fatal error in ||
>>>>>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>>>>>> ||ClassLoader::create_class_path_entry(). I could reproduce
>>>>>>>> similar
>>>>>>>> crash ||
>>>>>>>> ||by trying to load a class from an empty jar which is in the ||
>>>>>>>> ||bootclasspath. The following program can trigger the crash if
>>>>>>>> the ||
>>>>>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>>>>>> | |
>>>>>>>> ||public class TestForName { ||
>>>>>>>> || public static void main(String[] args) { ||
>>>>>>>> || try { ||
>>>>>>>> || Class cls =
>>>>>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>>>>>> || System.out.println("Class = " + cls.getName()); ||
>>>>>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>>>>>> || cnfe.printStackTrace(); ||
>>>>>>>> || } ||
>>>>>>>> || } ||
>>>>>>>> ||} ||
>>>>>>>> | |
>>>>>>>> ||The fix also changes the assert() in
>>>>>>>> LazyClassPathEntry::resolve_entry() ||
>>>>>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>>>>>> above test ||
>>>>>>>> ||scenario. ||
>>>>>>>> | |
>>>>>>>> ||With the fix, the following ClassNotFoundException will be
>>>>>>>> thrown ||
>>>>>>>> ||instead of a crash: ||
>>>>>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>>>>>> || at
>>>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>>>>>> || at
>>>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>>>>>> || at java.security.AccessController.doPrivileged(Native
>>>>>>>> Method) ||
>>>>>>>> || at
>>>>>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>>>>>> || at
>>>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>>>>>> || at
>>>>>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>>>>>> || at
>>>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>>>>>> || at java.lang.Class.forName0(Native Method) ||
>>>>>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>>>>>> || at TestForName.main(TestForName.java:6) ||
>>>>>>>> | |
>>>>>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>>>>>> | |
>>>>>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>>>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>>>>>> | |
>>>>>>>> ||Tests: ||
>>>>>>>> || jprt, vm.quick.testlist ||
>>>>>>>> | |
>>>>>>>> ||thanks, ||
>>>>>>>> ||Calvin ||
>>>>>>>> | |
>>>>>>>> | |
>>>>>>>> |
>>>>>> |
>>>>>> |
>>>>>
>>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/a67a0c45/attachment-0001.html
From coleen.phillimore at oracle.com Fri Aug 9 15:26:21 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Fri, 09 Aug 2013 18:26:21 -0400
Subject: Request for review:8021948:Change InstanceKlass::_source_file_name
and _generic_signature from Symbol* to constant pool index
In-Reply-To: <52055DAF.90707@oracle.com>
References: <51F978B6.3050209@oracle.com> <52055DAF.90707@oracle.com>
Message-ID: <52056C8D.2060808@oracle.com>
Hi Jiangli,
I thought this was reviewed already. I've just reviewed it.
http://cr.openjdk.java.net/~jiangli/8021948/webrev.00/src/share/vm/classfile/classFileParser.hpp.udiff.html
On 8/9/2013 5:22 PM, Jiangli Zhou wrote:
> Hi,
>
> Could anyone help me review this?
>
> Thanks,
> Jiangli
>
> On 07/31/2013 01:51 PM, Jiangli Zhou wrote:
>> Hi,
>>
>> Please review following change for JDK-8021948
>> :
>>
>> http://cr.openjdk.java.net/~jiangli/8021948/webrev.00/
>>
>> Both InstanceKlass::_source_file_name and
>> InstanceKlass::_generic_signature were pointers to Symbol. They are
>> now indexes to constant pool entries. Both fields are now u2 type,
>> and co-located with other non-pointer type fields for more efficient
>> alignment on 64-bit machine. On 32-bit machine, the change saves
>> 4bytes for each class.
>>
>> Tested with JPRT, vm.quick.testlist, nsk.sajdi.testlist,
>> nsk.stress.testlist and nsk.jvmti.testlist.
>>
>> Thanks,
>> Jiangli
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/09ba37bd/attachment.html
From coleen.phillimore at oracle.com Fri Aug 9 15:27:32 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Fri, 09 Aug 2013 18:27:32 -0400
Subject: Request for review:8021948:Change InstanceKlass::_source_file_name
and _generic_signature from Symbol* to constant pool index
In-Reply-To: <52055DAF.90707@oracle.com>
References: <51F978B6.3050209@oracle.com> <52055DAF.90707@oracle.com>
Message-ID: <52056CD4.8000503@oracle.com>
Hit send too soon. Can you line up functions in :
http://cr.openjdk.java.net/~jiangli/8021948/webrev.00/src/share/vm/classfile/classFileParser.hpp.udiff.html
Everything else looks good.
Thanks,
Coleen
On 8/9/2013 5:22 PM, Jiangli Zhou wrote:
> Hi,
>
> Could anyone help me review this?
>
> Thanks,
> Jiangli
>
> On 07/31/2013 01:51 PM, Jiangli Zhou wrote:
>> Hi,
>>
>> Please review following change for JDK-8021948
>> :
>>
>> http://cr.openjdk.java.net/~jiangli/8021948/webrev.00/
>>
>> Both InstanceKlass::_source_file_name and
>> InstanceKlass::_generic_signature were pointers to Symbol. They are
>> now indexes to constant pool entries. Both fields are now u2 type,
>> and co-located with other non-pointer type fields for more efficient
>> alignment on 64-bit machine. On 32-bit machine, the change saves
>> 4bytes for each class.
>>
>> Tested with JPRT, vm.quick.testlist, nsk.sajdi.testlist,
>> nsk.stress.testlist and nsk.jvmti.testlist.
>>
>> Thanks,
>> Jiangli
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/6ac97f45/attachment.html
From jiangli.zhou at oracle.com Fri Aug 9 15:31:31 2013
From: jiangli.zhou at oracle.com (Jiangli Zhou)
Date: Fri, 09 Aug 2013 15:31:31 -0700
Subject: Request for review:8021948:Change InstanceKlass::_source_file_name
and _generic_signature from Symbol* to constant pool index
In-Reply-To: <52056CD4.8000503@oracle.com>
References: <51F978B6.3050209@oracle.com> <52055DAF.90707@oracle.com>
<52056CD4.8000503@oracle.com>
Message-ID: <52056DC3.4010900@oracle.com>
Hi Coleen,
Will do. Thanks for the review!
Jiangli
On 08/09/2013 03:27 PM, Coleen Phillimore wrote:
>
> Hit send too soon. Can you line up functions in :
> http://cr.openjdk.java.net/~jiangli/8021948/webrev.00/src/share/vm/classfile/classFileParser.hpp.udiff.html
>
>
> Everything else looks good.
> Thanks,
> Coleen
>
>
> On 8/9/2013 5:22 PM, Jiangli Zhou wrote:
>> Hi,
>>
>> Could anyone help me review this?
>>
>> Thanks,
>> Jiangli
>>
>> On 07/31/2013 01:51 PM, Jiangli Zhou wrote:
>>> Hi,
>>>
>>> Please review following change for JDK-8021948
>>> :
>>>
>>> http://cr.openjdk.java.net/~jiangli/8021948/webrev.00/
>>>
>>> Both InstanceKlass::_source_file_name and
>>> InstanceKlass::_generic_signature were pointers to Symbol. They are
>>> now indexes to constant pool entries. Both fields are now u2 type,
>>> and co-located with other non-pointer type fields for more efficient
>>> alignment on 64-bit machine. On 32-bit machine, the change saves
>>> 4bytes for each class.
>>>
>>> Tested with JPRT, vm.quick.testlist, nsk.sajdi.testlist,
>>> nsk.stress.testlist and nsk.jvmti.testlist.
>>>
>>> Thanks,
>>> Jiangli
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/2a7c6f9a/attachment.html
From coleen.phillimore at oracle.com Fri Aug 9 15:33:43 2013
From: coleen.phillimore at oracle.com (coleen.phillimore at oracle.com)
Date: Fri, 09 Aug 2013 22:33:43 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8022452: Hotspot needs to know about
Windows 8.1 and Windows Server 2012 R2
Message-ID: <20130809223345.B2F6148775@hg.openjdk.java.net>
Changeset: 98aa538fd97e
Author: mikael
Date: 2013-08-09 09:51 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/98aa538fd97e
8022452: Hotspot needs to know about Windows 8.1 and Windows Server 2012 R2
Summary: Add support for recognizing Windows 8.1 and Server 2012 R2 and minor cleanup
Reviewed-by: coleenp, dsamersoff
! src/os/windows/vm/os_windows.cpp
From ioi.lam at oracle.com Fri Aug 9 17:39:21 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Fri, 09 Aug 2013 17:39:21 -0700
Subject: RFR (XS) 8022740 - Visual 2008 IDE build is broken
Message-ID: <52058BB9.50207@oracle.com>
|Please review a very small fix:||
||
||http://cr.openjdk.java.net/~iklam/8022740/vs2008_ide_001/||
||
||Bug: Visual 2008 IDE build is broken||
||
||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022740||
|| https://jbs.oracle.com/bugs/browse/JDK-8022740||
||
||Summary of fix:||
||
|| Apparently some refactoring (7163863??) of the VC project creator
has||
|| not been tested with VS2008.||
||
|| I made some minor fixes. I verified that VS2008 works.||
||
|| I changed one file related to VS2010. Could someone with VS2010
give it a try?||
||||
||Thanks||
||- Ioi||
||
|
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/948cc4a6/attachment.html
From daniel.daugherty at oracle.com Fri Aug 9 18:47:24 2013
From: daniel.daugherty at oracle.com (daniel.daugherty at oracle.com)
Date: Sat, 10 Aug 2013 01:47:24 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 15 new changesets
Message-ID: <20130810014757.DE1694877F@hg.openjdk.java.net>
Changeset: cd25d3be91c5
Author: vladidan
Date: 2013-08-06 20:01 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/cd25d3be91c5
8012144: multiple SIGSEGVs fails on staxf
Summary: Forward port of 7u change to add additional fence() on RMO platforms, with a load_acquire on all platforms
Reviewed-by: dholmes, kvn
! src/share/vm/utilities/taskqueue.hpp
Changeset: f5bed20f2492
Author: dholmes
Date: 2013-08-08 08:29 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/f5bed20f2492
Merge
Changeset: 79a5283f4595
Author: iignatyev
Date: 2013-07-29 11:54 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/79a5283f4595
8021120: TieredCompilation can be enabled even if TIERED is undefined
Reviewed-by: kvn, dholmes
! src/share/vm/runtime/arguments.cpp
Changeset: 8d77d02828d9
Author: twisti
Date: 2013-07-29 16:32 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/8d77d02828d9
8016474: Crash in sun.reflect.UnsafeObjectFieldAccessorImpl.get
Summary: C1's GetUnsafeObject G1 pre-barrier uses the wrong type to read the klass pointer.
Reviewed-by: iveresov, kvn
! src/share/vm/c1/c1_LIRGenerator.cpp
+ test/compiler/unsafe/GetUnsafeObjectG1PreBarrier.java
Changeset: 446cb5d25d03
Author: anoll
Date: 2013-08-01 16:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/446cb5d25d03
8020531: Test compiler/codecache/CheckUpperLimit.java fails when memory limited
Summary: Removed part of the test that required the VM to start up with -XX:ReservedCodeCacheSize=2048m
Reviewed-by: kvn, rbackman
! test/compiler/codecache/CheckUpperLimit.java
Changeset: 6e04c193845f
Author: anoll
Date: 2013-08-02 10:20 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/6e04c193845f
8021301: better event messages
Summary: made event messages better readable
Reviewed-by: kvn, rbackman
! src/share/vm/classfile/classLoader.cpp
! src/share/vm/utilities/exceptions.cpp
Changeset: 5e0b3d7df485
Author: rbackman
Date: 2013-08-05 17:15 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/5e0b3d7df485
Merge
! src/share/vm/runtime/arguments.cpp
Changeset: 71526a36ebb4
Author: twisti
Date: 2013-08-05 15:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/71526a36ebb4
8022029: GetUnsafeObjectG1PreBarrier fails on 32-bit with: Unrecognized VM option 'ObjectAlignmentInBytes=32'
Reviewed-by: kvn
! test/compiler/unsafe/GetUnsafeObjectG1PreBarrier.java
Changeset: dadf62510ae4
Author: rbackman
Date: 2013-08-08 23:49 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/dadf62510ae4
Merge
Changeset: b9a927798f12
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/b9a927798f12
Added tag jdk8-b102 for changeset c4697c1c4484
! .hgtags
Changeset: 7f55137d6aa8
Author: amurillo
Date: 2013-08-09 01:32 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/7f55137d6aa8
Merge
- test/runtime/7196045/Test7196045.java
- test/runtime/8000968/Test8000968.sh
Changeset: 6f9be7f87b96
Author: amurillo
Date: 2013-08-09 01:32 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/6f9be7f87b96
Added tag hs25-b45 for changeset 7f55137d6aa8
! .hgtags
Changeset: 39127bb12d32
Author: amurillo
Date: 2013-08-09 01:39 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/39127bb12d32
8022688: new hotspot build - hs25-b46
Reviewed-by: jcoomes
! make/hotspot_version
Changeset: ed7c17e7d45b
Author: dcubed
Date: 2013-08-09 13:19 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/ed7c17e7d45b
Merge
Changeset: 7b03590c334b
Author: dcubed
Date: 2013-08-09 15:36 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/7b03590c334b
Merge
From calvin.cheung at oracle.com Fri Aug 9 21:13:33 2013
From: calvin.cheung at oracle.com (Calvin Cheung)
Date: Fri, 09 Aug 2013 21:13:33 -0700
Subject: RFR (XS) 8022740 - Visual 2008 IDE build is broken
In-Reply-To: <52058BB9.50207@oracle.com>
References: <52058BB9.50207@oracle.com>
Message-ID: <5205BDED.4050309@oracle.com>
Hi Ioi,
I've tried your patch on vs2010 and it seems working fine.
I was able to generate a project file and used vs2010 to open the
project file.
So I think your fix is good. (I'm not a Reviewer)
Calvin
On 8/9/2013 5:39 PM, Ioi Lam wrote:
> |Please review a very small fix:||
> ||
> ||http://cr.openjdk.java.net/~iklam/8022740/vs2008_ide_001/||
> ||
> ||Bug: Visual 2008 IDE build is broken||
> ||
> ||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022740||
> ||https://jbs.oracle.com/bugs/browse/JDK-8022740||
> ||
> ||Summary of fix:||
> ||
> || Apparently some refactoring (7163863??) of the VC project
> creator has||
> || not been tested with VS2008.||
> ||
> || I made some minor fixes. I verified that VS2008 works.||
> ||
> || I changed one file related to VS2010. Could someone with VS2010
> give it a try?||
> ||||
> ||Thanks||
> ||- Ioi||
> ||
> |
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130809/c72a9f62/attachment.html
From daniel.daugherty at oracle.com Sat Aug 10 10:07:15 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Sat, 10 Aug 2013 11:07:15 -0600
Subject: RFR (XS) 8022740 - Visual 2008 IDE build is broken
In-Reply-To: <52058BB9.50207@oracle.com>
References: <52058BB9.50207@oracle.com>
Message-ID: <52067343.7050604@oracle.com>
On 8/9/13 6:39 PM, Ioi Lam wrote:
> |Please review a very small fix:||
> ||
> ||http://cr.openjdk.java.net/~iklam/8022740/vs2008_ide_001/||
> |
|
Thumbs up!
make/windows/projectfiles/common/Makefile
No comments.
src/share/tools/ProjectCreator/FileTreeCreator.java
No comments.
src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
No comments.
src/share/tools/ProjectCreator/FileTreeCreatorVC7.java
No comments.
src/share/tools/ProjectCreator/WinGammaPlatformVC7.java|
You should indent line 145 a bit since you put that
call in an if-statement.
> |||Bug: Visual 2008 IDE build is broken||
> ||
> ||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022740||
> ||https://jbs.oracle.com/bugs/browse/JDK-8022740||
> ||
> ||Summary of fix:||
> ||
> || Apparently some refactoring (7163863??) of the VC project
> creator has||
> || not been tested with VS2008.||
> |
|I don't think that VS2008 was ever fully tested/used as a build
environment for any HSX release. This means that you may run into
strange failures that don't happen with VS2003 or VS2010. Yes, I'm
reasonably sure that we didn't fully test or use VS2005 either.
Dan
|
> |||
> || I made some minor fixes. I verified that VS2008 works.||
> ||
> || I changed one file related to VS2010. Could someone with VS2010
> give it a try?||
> ||||
> ||Thanks||
> ||- Ioi||
> ||
> |
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130810/af42563a/attachment.html
From tim.bell at oracle.com Sat Aug 10 11:08:06 2013
From: tim.bell at oracle.com (Tim Bell)
Date: Sat, 10 Aug 2013 11:08:06 -0700
Subject: RFR (XS) 8022740 - Visual 2008 IDE build is broken
In-Reply-To: <52067343.7050604@oracle.com>
References: <52058BB9.50207@oracle.com> <52067343.7050604@oracle.com>
Message-ID: <52068186.1040609@oracle.com>
On 08/10/13 10:07 AM, Daniel D. Daugherty wrote:
> |I don't think that VS2008 was ever fully tested/used as a build
> environment for any HSX release. This means that you may run into
> strange failures that don't happen with VS2003 or VS2010. Yes, I'm
> reasonably sure that we didn't fully test or use VS2005 either.|
We got the hotspot build working with VS2008 fairly early in the
project. I don't recall who helped me, but I'm sure I got help from VM
engineers on that:
http://bugs.sun.com/view_bug.do?bug_id=6764892
After a long list of fixes in other areas of JDK7 while trying to get
the entire product to build, there was no end in sight, and the project
was put on hold until VS2010 came along. See bug# 6523947 and the
related reports listed there:
http://bugs.sun.com/view_bug.do?bug_id=6523947
Tim
From ioi.lam at oracle.com Sat Aug 10 11:25:35 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Sat, 10 Aug 2013 11:25:35 -0700
Subject: RFR (XS) 8022740 - Visual 2008 IDE build is broken
In-Reply-To: <52067343.7050604@oracle.com>
References: <52058BB9.50207@oracle.com> <52067343.7050604@oracle.com>
Message-ID: <5206859F.8070301@oracle.com>
Thanks Dan & Calvin for the review. I will fix the indentation and push.
- Ioi
On 08/10/2013 10:07 AM, Daniel D. Daugherty wrote:
> On 8/9/13 6:39 PM, Ioi Lam wrote:
>> |Please review a very small fix:||
>> ||
>> ||http://cr.openjdk.java.net/~iklam/8022740/vs2008_ide_001/||
>> |
> |
> Thumbs up!
>
>
> make/windows/projectfiles/common/Makefile
> No comments.
>
> src/share/tools/ProjectCreator/FileTreeCreator.java
> No comments.
>
> src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
> No comments.
>
> src/share/tools/ProjectCreator/FileTreeCreatorVC7.java
> No comments.
>
> src/share/tools/ProjectCreator/WinGammaPlatformVC7.java|
> You should indent line 145 a bit since you put that
> call in an if-statement.
>
>
>> |||Bug: Visual 2008 IDE build is broken||
>> ||
>> ||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022740||
>> ||https://jbs.oracle.com/bugs/browse/JDK-8022740||
>> ||
>> ||Summary of fix:||
>> ||
>> || Apparently some refactoring (7163863??) of the VC project
>> creator has||
>> || not been tested with VS2008.||
>> |
>
> |I don't think that VS2008 was ever fully tested/used as a build
> environment for any HSX release. This means that you may run into
> strange failures that don't happen with VS2003 or VS2010. Yes, I'm
> reasonably sure that we didn't fully test or use VS2005 either.
>
> Dan
>
>
>
> |
>> |||
>> || I made some minor fixes. I verified that VS2008 works.||
>> ||
>> || I changed one file related to VS2010. Could someone with VS2010
>> give it a try?||
>> ||||
>> ||Thanks||
>> ||- Ioi||
>> ||
>> |
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130810/1143387e/attachment.html
From ioi.lam at oracle.com Sat Aug 10 13:54:47 2013
From: ioi.lam at oracle.com (ioi.lam at oracle.com)
Date: Sat, 10 Aug 2013 20:54:47 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8022740: Visual 2008 IDE build is broken
Message-ID: <20130810205451.E468E48793@hg.openjdk.java.net>
Changeset: bd0e82136b03
Author: iklam
Date: 2013-08-10 10:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/bd0e82136b03
8022740: Visual 2008 IDE build is broken
Summary: Fixed project generation code, and added warning to upgrade to VS 2008 SP1.
Reviewed-by: dcubed, ccheung
! make/windows/projectfiles/common/Makefile
! src/share/tools/ProjectCreator/FileTreeCreator.java
! src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
! src/share/tools/ProjectCreator/FileTreeCreatorVC7.java
! src/share/tools/ProjectCreator/WinGammaPlatformVC7.java
From yumin.qi at oracle.com Sun Aug 11 16:36:22 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Sun, 11 Aug 2013 16:36:22 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
Message-ID: <52081FF6.4040205@oracle.com>
Hi, all
I would like to have your review for
http://cr.openjdk.java.net/~minqi/8020962/webrev0/
Description: When JVM crashed, we also want to check the application
class files especially we got core file from customers. The aftermath
analysis will benefit from all loaded java classes available. In this
change, spawn another process running SA to do the job when JVM crashes,
this way also avoid further messing up with the error report which
already in
signal handler.
Note: The test has done with following two bugs worked around:
8022655: ClassDump ignored jarStream setting (This will be fixed and
integrated by Kevin Walls soon)
8011888: sa.js: TypeError: [object JSAdapter] has no such function
"__has__" (Not know when it will be integrated)
That is, without those two fixed, the jars of loaded classes will not
be successfully dumped.
Also, on MacOS it requires security access permission to attach to
another process, so omit doing so. To get loaded jar file
s, with core file available (on all platforms), one can (only after this
change) do
$JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
Thanks
Yumin
From david.holmes at oracle.com Sun Aug 11 18:33:15 2013
From: david.holmes at oracle.com (david.holmes at oracle.com)
Date: Mon, 12 Aug 2013 01:33:15 +0000
Subject: hg: hsx/hotspot-emb/hotspot: 24 new changesets
Message-ID: <20130812013404.13D3A487A4@hg.openjdk.java.net>
Changeset: 9bd314787fad
Author: mseledtsov
Date: 2013-08-01 22:15 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/9bd314787fad
8020614: OutputAnalyzer.shouldHaveExitValue() should print stdout/stderr output
Summary: OutputAnalyzer.shouldHaveExitValue() should print stdout/stderr output
Reviewed-by: kvn, ctornqvi, dholmes
+ test/testlibrary/OutputAnalyzerReportingTest.java
! test/testlibrary/com/oracle/java/testlibrary/OutputAnalyzer.java
! test/testlibrary/com/oracle/java/testlibrary/ProcessTools.java
Changeset: c01913206da5
Author: ctornqvi
Date: 2013-08-01 22:20 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/c01913206da5
8014294: Assert in ThreadTimesClosure::do_thread() due to use of naked oop instead of handle
Summary: Assert in ThreadTimesClosure::do_thread() due to use of naked oop instead of handle
Reviewed-by: coleenp, sspitsyn
! src/share/vm/services/management.cpp
Changeset: 81e0f17ade64
Author: ctornqvi
Date: 2013-08-01 22:25 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/81e0f17ade64
8009407: runtime/8000968/Test8000968.sh has incorrect check for proper config
Summary: runtime/8000968/Test8000968.sh has incorrect check for proper config
Reviewed-by: coleenp, mseledtsov, sspitsyn, hseigel
- test/runtime/8000968/Test8000968.sh
+ test/runtime/CompressedOops/CompressedKlassPointerAndOops.java
Changeset: 32e3bada0978
Author: kevinw
Date: 2013-08-02 12:26 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/32e3bada0978
8020943: Memory leak when GCNotifier uses create_from_platform_dependent_str()
Reviewed-by: mgerdin, fparain, dcubed
! src/share/vm/services/gcNotifier.cpp
Changeset: dee4c330acd4
Author: dcubed
Date: 2013-08-02 08:32 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/dee4c330acd4
Merge
- test/runtime/8000968/Test8000968.sh
Changeset: fa57c8104b76
Author: ctornqvi
Date: 2013-08-02 18:12 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/fa57c8104b76
8009585: test/runtime/7196045 times out
Summary: test/runtime/7196045 times out
Reviewed-by: dholmes, mseledtsov
- test/runtime/7196045/Test7196045.java
+ test/runtime/InternalApi/ThreadCpuTimesDeadlock.java
Changeset: 0f209afdfcf8
Author: ctornqvi
Date: 2013-08-02 18:26 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/0f209afdfcf8
Merge
Changeset: d02de8cac823
Author: ctornqvi
Date: 2013-08-02 22:34 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/d02de8cac823
Merge
- test/runtime/7196045/Test7196045.java
Changeset: e0379d5ba5d2
Author: kevinw
Date: 2013-08-05 10:27 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/e0379d5ba5d2
8021444: SA: ClassDump.run() should not ignore existing ClassFilter.
Reviewed-by: minqi, poonam
! agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassDump.java
Changeset: b67604b59546
Author: hseigel
Date: 2013-08-04 16:30 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/b67604b59546
7073961: [TESTBUG] closed/runtime/4845371/DBB.java failed on solaris 10 X65
Summary: Added a x86 64-bit Solaris shared library and rewrote test in Java
Reviewed-by: dholmes, ctornqvi
! test/testlibrary/com/oracle/java/testlibrary/Platform.java
Changeset: 9064e3a19525
Author: hseigel
Date: 2013-08-05 08:55 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/9064e3a19525
Merge
- test/runtime/7196045/Test7196045.java
- test/runtime/8000968/Test8000968.sh
Changeset: 22a5aff0df0b
Author: dsamersoff
Date: 2013-08-06 14:28 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/22a5aff0df0b
8019396: SA-JDI OSThread class initialization throws an exception
Summary: Method sun.jvm.hotspot.runtime.OSThread.initialize throws a sun.jvm.hotspot.types.WrongTypeException
Reviewed-by: dholmes, mgerdin
! agent/src/share/classes/sun/jvm/hotspot/jdi/JVMTIThreadState.java
! agent/src/share/classes/sun/jvm/hotspot/runtime/OSThread.java
Changeset: f5bed20f2492
Author: dholmes
Date: 2013-08-08 08:29 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/f5bed20f2492
Merge
Changeset: 79a5283f4595
Author: iignatyev
Date: 2013-07-29 11:54 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/79a5283f4595
8021120: TieredCompilation can be enabled even if TIERED is undefined
Reviewed-by: kvn, dholmes
! src/share/vm/runtime/arguments.cpp
Changeset: 8d77d02828d9
Author: twisti
Date: 2013-07-29 16:32 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/8d77d02828d9
8016474: Crash in sun.reflect.UnsafeObjectFieldAccessorImpl.get
Summary: C1's GetUnsafeObject G1 pre-barrier uses the wrong type to read the klass pointer.
Reviewed-by: iveresov, kvn
! src/share/vm/c1/c1_LIRGenerator.cpp
+ test/compiler/unsafe/GetUnsafeObjectG1PreBarrier.java
Changeset: 446cb5d25d03
Author: anoll
Date: 2013-08-01 16:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/446cb5d25d03
8020531: Test compiler/codecache/CheckUpperLimit.java fails when memory limited
Summary: Removed part of the test that required the VM to start up with -XX:ReservedCodeCacheSize=2048m
Reviewed-by: kvn, rbackman
! test/compiler/codecache/CheckUpperLimit.java
Changeset: 6e04c193845f
Author: anoll
Date: 2013-08-02 10:20 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/6e04c193845f
8021301: better event messages
Summary: made event messages better readable
Reviewed-by: kvn, rbackman
! src/share/vm/classfile/classLoader.cpp
! src/share/vm/utilities/exceptions.cpp
Changeset: 5e0b3d7df485
Author: rbackman
Date: 2013-08-05 17:15 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/5e0b3d7df485
Merge
! src/share/vm/runtime/arguments.cpp
Changeset: 71526a36ebb4
Author: twisti
Date: 2013-08-05 15:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/71526a36ebb4
8022029: GetUnsafeObjectG1PreBarrier fails on 32-bit with: Unrecognized VM option 'ObjectAlignmentInBytes=32'
Reviewed-by: kvn
! test/compiler/unsafe/GetUnsafeObjectG1PreBarrier.java
Changeset: dadf62510ae4
Author: rbackman
Date: 2013-08-08 23:49 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/dadf62510ae4
Merge
Changeset: b9a927798f12
Author: cl
Date: 2013-08-08 10:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/b9a927798f12
Added tag jdk8-b102 for changeset c4697c1c4484
! .hgtags
Changeset: 7f55137d6aa8
Author: amurillo
Date: 2013-08-09 01:32 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/7f55137d6aa8
Merge
- test/runtime/7196045/Test7196045.java
- test/runtime/8000968/Test8000968.sh
Changeset: 6f9be7f87b96
Author: amurillo
Date: 2013-08-09 01:32 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/6f9be7f87b96
Added tag hs25-b45 for changeset 7f55137d6aa8
! .hgtags
Changeset: 39127bb12d32
Author: amurillo
Date: 2013-08-09 01:39 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/39127bb12d32
8022688: new hotspot build - hs25-b46
Reviewed-by: jcoomes
! make/hotspot_version
From david.holmes at oracle.com Sun Aug 11 22:40:49 2013
From: david.holmes at oracle.com (David Holmes)
Date: Mon, 12 Aug 2013 15:40:49 +1000
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <52056910.8010005@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
<5203E8D7.107@oracle.com> <52040B08.8020401@oracle.com>
<52040D1E.9000101@oracle.com> <520425BD.6090605@oracle.com>
<52056910.8010005@oracle.com>
Message-ID: <52087561.4000409@oracle.com>
Hi Calvin,
I don't think this works. As I said previously the expectations of this
code with regard to Java exceptions seems to be that it doesn't expect
them at all. If you are using TRAPS etc then it should be used all the
way through the call chain. What we have now is this call sequence:
void ClassLoader::initialize() {
assert(_package_hash_table == NULL, "should have been initialized by
now.");
EXCEPTION_MARK;
...
setup_bootstrap_search_path();
-> update_class_path_entry_list(path, false);
-> create_class_path_entry((char *)path, st, &new_entry,
LazyBootClassLoader, CHECK);
So if we return after the call to create_class_path_entry with an
exception pending we will crash when we hit the EXCEPTION_MARK.
It may be that the EXCEPTION_MARK needs replacing with an explicit
exception check and a vm_exit_during_initialization, if this exception
can readily occur at runtime. But further analysis of all this code
needs to be undertaken.
David
-----
On 10/08/2013 8:11 AM, Calvin Cheung wrote:
> I've updated the webrev with 2 changes:
> 1) added the TRAPS as the last parameter to the
> create_class_path_entry() method;
> 2) added a jtreg test case.
>
> http://cr.openjdk.java.net/~ccheung/8020675/webrev/
>
> Please take a look again.
>
> One more response in-lined below...
>
> On 8/8/2013 4:11 PM, Ioi Lam wrote:
>> |I found one version of JDK7 that does not crash:||
>> ||
>> sc11136754 ~$
>> /net/jre.us.oracle.com/p/v31/jdk/7/all/b24/binaries/linux-amd64/bin/java
>> -showversion -cp . -Xbootclasspath/a:foo.jar test2
>> Error occurred during initialization of VM
>> java/lang/ClassNotFoundException: error in opening JAR file foo.jar
>> |
>
> |I noticed that it started breaking in 7u40 b01; it was still working
> with 7u25.
> It may have something to do with when the set_init_completed() is called:
> ExceptionMark::~ExceptionMark() {
> if (_thread->has_pending_exception()) {
> Handle exception(_thread, _thread->pending_exception());
> _thread->clear_pending_exception(); // Needed to avoid infinite
> recursion
> if (is_init_completed()) {
> exception->print();
> fatal("ExceptionMark destructor expects no pending exceptions");
> } else {
> vm_exit_during_initialization(exception);
> }
> }
> }
>
> Before 7u40, I think the code path got to the "else" branch of
> ~ExceptionMark() and we just printed an error and exit.
>
> set_init_completed() is only called from Threads::create_vm() and that
> method didn't change much between 7u25 and 7u40 except for some NMT
> initialization - MemTracker::bootstrap_single_thread(),
> MemTracker::start(), etc. But I thought NMT isn't enabled by default?
>
> Debugging with hs25, the set_init_completed() always happened before
> create_class_path_entry() and both calls were done within the same
> thread - "vm startup".
>
> thanks,
> Calvin
>
>
> |
>> |||
>> ||
>> ||- Ioi
>> |
>> On 08/08/2013 02:26 PM, Ioi Lam wrote:
>>> |I found an official version that's closest to the Redhat version
>>> (OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode). It still
>>> crashes.||
>>> ||
>>> ||sc11136754 ~$
>>> /java/re/jdk/6_25/latest/binaries/linux-amd64/bin/java -showversion
>>> -cp . -Xbootclasspath/a:foo.jar test2||
>>> ||java version "1.6.0_25"||
>>> ||Java(TM) SE Runtime Environment (build 1.6.0_25-b06)||
>>> ||Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)||
>>> ||
>>> ||java.lang.ClassNotFoundException ||
>>> || - klass: 'java/lang/ClassNotFoundException'||
>>> ||#||
>>> ||# A fatal error has been detected by the Java Runtime Environment:||
>>> ||#||
>>> ||# Internal Error (exceptions.cpp:397), pid=29955,
>>> tid=140608485558016||
>>> ||# fatal error: ExceptionMark destructor expects no pending
>>> exceptions||
>>> ||#||
>>> ||# JRE version: 6.0_25-b06||
>>> ||# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.0-b11 mixed mode
>>> linux-amd64 compressed oops)||
>>> ||# An error report file with more information is saved as:||
>>> ||# /home/iklam/hs_err_pid29955.log||
>>> ||#||
>>> ||# If you would like to submit a bug report, please visit:||
>>> ||# http://java.sun.com/webapps/bugreport/crash.jsp||
>>> ||#||
>>> ||Aborted (core dumped)||
>>> |
>>> - Ioi
>>>
>>> On 08/08/2013 02:18 PM, David Holmes wrote:
>>>> On 9/08/2013 4:52 AM, Ioi Lam wrote:
>>>>> |Hmmm, I used JDK6 from OEL 6.0 (derived from RedHat), which
>>>>> apparently
>>>>> works differently
>>>>> (better?) than the official JDK6 build. Maybe Redhat fixed this in
>>>>> their
>>>>> own repo??||
>>>>
>>>> Their hotspot version is much later - hs20 vs hs17
>>>>
>>>> David
>>>> -----
>>>>
>>>>> ||
>>>>> |
>>>>> |==OEL6================================================
>>>>> ||
>>>>> ||sc11136754 ~$ uname -a||
>>>>> ||Linux sc11136754 2.6.39-100.5.1.el6uek.x86_64 #1 SMP Tue Mar 6
>>>>> 20:26:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux||
>>>>> ||sc11136754 ~$ type java||
>>>>> ||java is hashed (/usr/bin/java)||
>>>>> ||sc11136754 ~$ java -version||
>>>>> ||java version "1.6.0_22"||
>>>>> ||OpenJDK Runtime Environment (IcedTea6 1.10.4)
>>>>> (rhel-1.41.1.10.4.el6-x86_64)||
>>>>> ||OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)||
>>>>> ||sc11136754 ~$ java -showversion -cp . -Xbootclasspath/a:foo.jar
>>>>> test2||
>>>>> ||Error occurred during initialization of VM||
>>>>> ||java/lang/ClassNotFoundException: error in opening JAR file
>>>>> foo.jar||
>>>>> ||
>>>>> ==OFFICIAL============================================
>>>>> ||
>>>>> sc11136754 ~$ /java/re/jdk/6_22/latest/binaries/linux-amd64/bin/java
>>>>> -showversion -cp . -Xbootclasspath/a:foo.jar test2
>>>>> java version "1.6.0_22"
>>>>> Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
>>>>> Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
>>>>>
>>>>> #
>>>>> # A fatal error has been detected by the Java Runtime Environment:
>>>>> #
>>>>> # Internal Error (exceptions.cpp:367), pid=25167, tid=140510319580928
>>>>> # Error: ExceptionMark destructor expects no pending exceptions
>>>>> #
>>>>> # JRE version: 6.0_22-b04
>>>>> # Java VM: Java HotSpot(TM) 64-Bit Server VM (17.1-b03 mixed mode
>>>>> linux-amd64 )
>>>>> # An error report file with more information is saved as:
>>>>> # /home/iklam/hs_err_pid25167.log
>>>>> #
>>>>> # If you would like to submit a bug report, please visit:
>>>>> # http://java.sun.com/webapps/bugreport/crash.jsp
>>>>> #
>>>>> |
>>>>> |======================================================
>>>>> ||
>>>>> ||- Ioi|
>>>>>
>>>>> On 08/08/2013 11:08 AM, Calvin Cheung wrote:
>>>>>> Hi Ioi, David,
>>>>>>
>>>>>> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>>>>>>> |JDK6 seems to handle this better. I have written a simple
>>>>>>> stand-alone test case that doesn't require truncating JAR files in
>>>>>>> the JDK:||
>>>>>>> ||
>>>>>>> ||=========================||
>>>>>>> ||/*||
>>>>>>> ||javac test2.java||
>>>>>>> ||rm -f foo.jar||
>>>>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>>>>> ||touch foo.jar||
>>>>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>>>>> ||*/||
>>>>>>> ||
>>>>>>> ||public class test2 {||
>>>>>>> || public static void main(String args[]) {||
>>>>>>> || try {||
>>>>>>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>>>>>>> ||System.out.println(Class.forName("xxx"));||
>>>>>>> || } catch (Throwable t) {||
>>>>>>> || t.printStackTrace();||
>>>>>>> || }||
>>>>>>> || }||
>>>>>>> ||}||
>>>>>>> ||=========================||
>>>>>>> | |
>>>>>>> ||JDK6 works fine, but JDK7 would crash with the second "java -cp .
>>>>>>> -Xbootclasspath/a:foo.jar test2" command.||
>>>>>>> |
>>>>>> |I saw crash with the latest 6 update release with both test cases.
>>>>>> The crash seems to be at the same spot.
>>>>>> |
>>>>>>> |||
>>>>>>> ||So I think the correct fix is to restore the JDK6 behavior (not
>>>>>>> sure if it's already the same with your patch, but worth checking),
>>>>>>> and also add a new jtreg test into hotspot.||
>>>>>>> |
>>>>>> |I checked the jdk 6 code and those 3 methods which I changed look
>>>>>> the
>>>>>> same as jdk 8.
>>>>>> Sure, I can add a jtreg test.
>>>>>> |
>>>>>>> |||
>>>>>>> ||Thanks||
>>>>>>> ||- Ioi||
>>>>>>> ||
>>>>>>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>>>>>>> |
>>>>>>>> |Hi Calvin, ||
>>>>>>>> | |
>>>>>>>> ||It seems to me that this code has a general problem with
>>>>>>>> exceptions. If exceptions can be posted then methods should be
>>>>>>>> declared with a last parameter of TRAPS and called with a CHECK_
>>>>>>>> macro. The way this code is written it does not seem to expect any
>>>>>>>> exceptions to be possible. I would check with Karen on this. ||
>>>>>>>> |
>>>>>> |I was thinking about that but that would involves a bit more
>>>>>> changes.
>>>>>> I can give it a try.
>>>>>> |
>>>>>>>> || |
>>>>>>>> ||This addition seems unused: ||
>>>>>>>> | |
>>>>>>>> ||+ Thread* THREAD = thread; ||
>>>>>>>> |
>>>>>> |It is required for the THROW_MSG().
>>>>>> It won't be needed if the method is declared with TRAPS as the last
>>>>>> parameter (I think).
>>>>>>
>>>>>> thanks,
>>>>>> Calvin
>>>>>> |
>>>>>>>> || |
>>>>>>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to throwing
>>>>>>>> exceptions - don't know what the thought process was there :) ||
>>>>>>>> | |
>>>>>>>> ||David ||
>>>>>>>> | |
>>>>>>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>>>>>>> |
>>>>>>>>> |Please review this small fix for fixing a fatal error in ||
>>>>>>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>>>>>>> ||ClassLoader::create_class_path_entry(). I could reproduce
>>>>>>>>> similar
>>>>>>>>> crash ||
>>>>>>>>> ||by trying to load a class from an empty jar which is in the ||
>>>>>>>>> ||bootclasspath. The following program can trigger the crash if
>>>>>>>>> the ||
>>>>>>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>>>>>>> | |
>>>>>>>>> ||public class TestForName { ||
>>>>>>>>> || public static void main(String[] args) { ||
>>>>>>>>> || try { ||
>>>>>>>>> || Class cls =
>>>>>>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>>>>>>> || System.out.println("Class = " + cls.getName()); ||
>>>>>>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>>>>>>> || cnfe.printStackTrace(); ||
>>>>>>>>> || } ||
>>>>>>>>> || } ||
>>>>>>>>> ||} ||
>>>>>>>>> | |
>>>>>>>>> ||The fix also changes the assert() in
>>>>>>>>> LazyClassPathEntry::resolve_entry() ||
>>>>>>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>>>>>>> above test ||
>>>>>>>>> ||scenario. ||
>>>>>>>>> | |
>>>>>>>>> ||With the fix, the following ClassNotFoundException will be
>>>>>>>>> thrown ||
>>>>>>>>> ||instead of a crash: ||
>>>>>>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>>>>>>> || at
>>>>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>>>>>>> || at
>>>>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>>>>>>> || at java.security.AccessController.doPrivileged(Native
>>>>>>>>> Method) ||
>>>>>>>>> || at
>>>>>>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>>>>>>> || at
>>>>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>>>>>>> || at
>>>>>>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>>>>>>> || at
>>>>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>>>>>>> || at java.lang.Class.forName0(Native Method) ||
>>>>>>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>>>>>>> || at TestForName.main(TestForName.java:6) ||
>>>>>>>>> | |
>>>>>>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>>>>>>> | |
>>>>>>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>>>>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>>>>>>> | |
>>>>>>>>> ||Tests: ||
>>>>>>>>> || jprt, vm.quick.testlist ||
>>>>>>>>> | |
>>>>>>>>> ||thanks, ||
>>>>>>>>> ||Calvin ||
>>>>>>>>> | |
>>>>>>>>> | |
>>>>>>>>> |
>>>>>>> |
>>>>>>> |
>>>>>>
>>>>>
>>>
>>
>
From david.holmes at oracle.com Sun Aug 11 22:56:29 2013
From: david.holmes at oracle.com (David Holmes)
Date: Mon, 12 Aug 2013 15:56:29 +1000
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <52081FF6.4040205@oracle.com>
References: <52081FF6.4040205@oracle.com>
Message-ID: <5208790D.9010309@oracle.com>
Hi Yumin,
Note that the SA is only present in a full JDK, not a JRE (full or
compact profile).
I have quite a few concerns with this:
We already do a lot of things that are not valid to be done from a
signal handling context but this really takes that to an extreme. Doing
fork-exec from a signal handler seems like a recipe for disaster (Note
the existing onError facility is typically used for synchronous failures.)
The idea of launching a second VM to try and query a VM that has crashed
also seems somewhat problematic:
- What mechanism will the SA try to use to query the VM?
- What if the state of the crashed VM stops the SA from being able to
attach properly (ie both processes hang)?
- What if it the SA also crashes, will it launch a third VM then a
fourth etc?
Also what is the nature of this dump? How big is it? Where will it go?
Thanks,
David
On 12/08/2013 9:36 AM, Yumin Qi wrote:
> Hi, all
>
> I would like to have your review for
>
> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>
>
> Description: When JVM crashed, we also want to check the application
> class files especially we got core file from customers. The aftermath
> analysis will benefit from all loaded java classes available. In this
> change, spawn another process running SA to do the job when JVM crashes,
> this way also avoid further messing up with the error report which
> already in
> signal handler.
>
> Note: The test has done with following two bugs worked around:
> 8022655: ClassDump ignored jarStream setting (This will be fixed and
> integrated by Kevin Walls soon)
> 8011888: sa.js: TypeError: [object JSAdapter] has no such function
> "__has__" (Not know when it will be integrated)
> That is, without those two fixed, the jars of loaded classes will not
> be successfully dumped.
> Also, on MacOS it requires security access permission to attach to
> another process, so omit doing so. To get loaded jar file
> s, with core file available (on all platforms), one can (only after this
> change) do
>
> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>
>
> Thanks
> Yumin
From thomas.schatzl at oracle.com Mon Aug 12 01:53:41 2013
From: thomas.schatzl at oracle.com (Thomas Schatzl)
Date: Mon, 12 Aug 2013 10:53:41 +0200
Subject: RFR (XXS): 8022784 TaskQueue misses minimal documentation and
references for analysis
Message-ID: <1376297621.11034.4.camel@cirrus>
Hi all,
need two quick reviews for the following change; the discussions for
"JDK-8006971 More missing barriers in taskqueues for RMO architectures"
showed that there is need for some minimal overview and references for
the taskqueue implementation.
This CR adds general documentation, and more importantly, references to
papers about the implementation.
Webrev:
http://cr.openjdk.java.net/~tschatzl/8022784/webrev/
Bugs.sun.com:
http://http://bugs.sun.com/view_bug.do?bug_id=8022784
JIRA:
https://jbs.oracle.com/bugs/browse/JDK-8022784
Testing:
N/A
Hth,
Thomas
From david.holmes at oracle.com Mon Aug 12 04:50:29 2013
From: david.holmes at oracle.com (David Holmes)
Date: Mon, 12 Aug 2013 21:50:29 +1000
Subject: RFR (XXS): 8022784 TaskQueue misses minimal documentation and
references for analysis
In-Reply-To: <1376297621.11034.4.camel@cirrus>
References: <1376297621.11034.4.camel@cirrus>
Message-ID: <5208CC05.5030508@oracle.com>
Okay.
Thanks,
David
On 12/08/2013 6:53 PM, Thomas Schatzl wrote:
> Hi all,
>
> need two quick reviews for the following change; the discussions for
> "JDK-8006971 More missing barriers in taskqueues for RMO architectures"
> showed that there is need for some minimal overview and references for
> the taskqueue implementation.
>
> This CR adds general documentation, and more importantly, references to
> papers about the implementation.
>
> Webrev:
> http://cr.openjdk.java.net/~tschatzl/8022784/webrev/
>
> Bugs.sun.com:
> http://http://bugs.sun.com/view_bug.do?bug_id=8022784
>
> JIRA:
> https://jbs.oracle.com/bugs/browse/JDK-8022784
>
> Testing:
> N/A
>
> Hth,
> Thomas
>
From christian.tornqvist at oracle.com Mon Aug 12 05:51:18 2013
From: christian.tornqvist at oracle.com (Christian Tornqvist)
Date: Mon, 12 Aug 2013 08:51:18 -0400
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <5208790D.9010309@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
Message-ID: <00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
Hi Yumin,
The idea is to do as little as possible in the VM error handler, since we've crashed for some reason we don't know what state the process is in and we have to be extremely careful in when we're gathering the information. This seems like a step that is risky for all of the reasons David mentioned below.
It's also information that can easily be extracted post-mortem from the core/mdmp using the method you described for OSX, so gathering this at the time of a crash seems like an unnecessary risk.
Thanks,
Christian
-----Original Message-----
From: hotspot-compiler-dev-bounces at openjdk.java.net [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of David Holmes
Sent: Monday, August 12, 2013 1:56 AM
To: Yumin Qi
Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
Hi Yumin,
Note that the SA is only present in a full JDK, not a JRE (full or compact profile).
I have quite a few concerns with this:
We already do a lot of things that are not valid to be done from a signal handling context but this really takes that to an extreme. Doing fork-exec from a signal handler seems like a recipe for disaster (Note the existing onError facility is typically used for synchronous failures.)
The idea of launching a second VM to try and query a VM that has crashed also seems somewhat problematic:
- What mechanism will the SA try to use to query the VM?
- What if the state of the crashed VM stops the SA from being able to attach properly (ie both processes hang)?
- What if it the SA also crashes, will it launch a third VM then a fourth etc?
Also what is the nature of this dump? How big is it? Where will it go?
Thanks,
David
On 12/08/2013 9:36 AM, Yumin Qi wrote:
> Hi, all
>
> I would like to have your review for
>
> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>
>
> Description: When JVM crashed, we also want to check the application
> class files especially we got core file from customers. The aftermath
> analysis will benefit from all loaded java classes available. In this
> change, spawn another process running SA to do the job when JVM
> crashes, this way also avoid further messing up with the error report
> which already in signal handler.
>
> Note: The test has done with following two bugs worked around:
> 8022655: ClassDump ignored jarStream setting (This will be fixed
> and integrated by Kevin Walls soon)
> 8011888: sa.js: TypeError: [object JSAdapter] has no such function
> "__has__" (Not know when it will be integrated)
> That is, without those two fixed, the jars of loaded classes will
> not be successfully dumped.
> Also, on MacOS it requires security access permission to attach to
> another process, so omit doing so. To get loaded jar file s, with core
> file available (on all platforms), one can (only after this
> change) do
>
> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>
>
> Thanks
> Yumin
From yumin.qi at oracle.com Mon Aug 12 08:00:12 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Mon, 12 Aug 2013 08:00:12 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <52081FF6.4040205@oracle.com>
References: <52081FF6.4040205@oracle.com>
Message-ID: <5208F87C.1020407@oracle.com>
Sorry forgot to include svc.
Yumin
On 8/11/2013 4:36 PM, Yumin Qi wrote:
> Hi, all
>
> I would like to have your review for
>
> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>
>
> Description: When JVM crashed, we also want to check the application
> class files especially we got core file from customers. The aftermath
> analysis will benefit from all loaded java classes available. In this
> change, spawn another process running SA to do the job when JVM
> crashes, this way also avoid further messing up with the error report
> which already in
> signal handler.
>
> Note: The test has done with following two bugs worked around:
> 8022655: ClassDump ignored jarStream setting (This will be fixed and
> integrated by Kevin Walls soon)
> 8011888: sa.js: TypeError: [object JSAdapter] has no such function
> "__has__" (Not know when it will be integrated)
> That is, without those two fixed, the jars of loaded classes will
> not be successfully dumped.
> Also, on MacOS it requires security access permission to attach to
> another process, so omit doing so. To get loaded jar file
> s, with core file available (on all platforms), one can (only after
> this change) do
>
> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>
>
> Thanks
> Yumin
From yumin.qi at oracle.com Mon Aug 12 10:00:17 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Mon, 12 Aug 2013 10:00:17 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
Message-ID: <520914A1.8050905@oracle.com>
Chris, David
Yes. This can be after crash with core file, but some time no core
file generated (also if the error could not repeat, we will never got
information again), so dumping target process is also a choice. To
avoid more confusion, this step was launched at the very last moment,
just before raise abort to exit. At this moment, if client process could
not attach to the target process it will exit right away.
Answers to David:
Note that the SA is only present in a full JDK, not a JRE (full or
compact profile).
Yes, in code, if no sa-jdi.jar found, skip fork.
- What mechanism will the SA try to use to query the VM?
After successfully attached to target process, SA will read via proc
APIs and vmStructs (named TYPEDB) to iterate memory of system
dictionary read (only) from target process to dump class information.
- What if the state of the crashed VM stops the SA from being able to
attach properly (ie both processes hang)?
That should be an attaching API problem. We haven't watched such case
happened so far.
- What if it the SA also crashes, will it launch a third VM then a
fourth etc?
Definitely don't want to see this happened in a chain. The solution
may use a property such as
sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into SA
process, at launching call, check if the property set, if set, do not
fork. When SA process died, it will generate core file first, note the
target process still waiting for its exit, so when target exit, the core
file (if both use default core as name) will be override by target. The
SA process will only leave a hs_err_pid*.log file. (? read such property
in handler is possible?)
Also what is the nature of this dump? How big is it? Where will it go?
The jars includes *app.jar and *boot.jar, the later usually can be
ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent.
The app.jar will contain all classes by customer, so we can do whatever
we can to the jar.
Thanks
Yumin
On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
> Hi Yumin,
>
> The idea is to do as little as possible in the VM error handler, since we've crashed for some reason we don't know what state the process is in and we have to be extremely careful in when we're gathering the information. This seems like a step that is risky for all of the reasons David mentioned below.
>
> It's also information that can easily be extracted post-mortem from the core/mdmp using the method you described for OSX, so gathering this at the time of a crash seems like an unnecessary risk.
>
> Thanks,
> Christian
>
> -----Original Message-----
> From: hotspot-compiler-dev-bounces at openjdk.java.net [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of David Holmes
> Sent: Monday, August 12, 2013 1:56 AM
> To: Yumin Qi
> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>
> Hi Yumin,
>
> Note that the SA is only present in a full JDK, not a JRE (full or compact profile).
>
> I have quite a few concerns with this:
>
> We already do a lot of things that are not valid to be done from a signal handling context but this really takes that to an extreme. Doing fork-exec from a signal handler seems like a recipe for disaster (Note the existing onError facility is typically used for synchronous failures.)
>
> The idea of launching a second VM to try and query a VM that has crashed also seems somewhat problematic:
> - What mechanism will the SA try to use to query the VM?
> - What if the state of the crashed VM stops the SA from being able to attach properly (ie both processes hang)?
> - What if it the SA also crashes, will it launch a third VM then a fourth etc?
>
> Also what is the nature of this dump? How big is it? Where will it go?
>
> Thanks,
> David
>
> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>> Hi, all
>>
>> I would like to have your review for
>>
>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>
>>
>> Description: When JVM crashed, we also want to check the application
>> class files especially we got core file from customers. The aftermath
>> analysis will benefit from all loaded java classes available. In this
>> change, spawn another process running SA to do the job when JVM
>> crashes, this way also avoid further messing up with the error report
>> which already in signal handler.
>>
>> Note: The test has done with following two bugs worked around:
>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>> and integrated by Kevin Walls soon)
>> 8011888: sa.js: TypeError: [object JSAdapter] has no such function
>> "__has__" (Not know when it will be integrated)
>> That is, without those two fixed, the jars of loaded classes will
>> not be successfully dumped.
>> Also, on MacOS it requires security access permission to attach to
>> another process, so omit doing so. To get loaded jar file s, with core
>> file available (on all platforms), one can (only after this
>> change) do
>>
>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>
>>
>> Thanks
>> Yumin
From ioi.lam at oracle.com Mon Aug 12 11:00:54 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Mon, 12 Aug 2013 11:00:54 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <520914A1.8050905@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com>
Message-ID: <520922D6.6070107@oracle.com>
On 08/12/2013 10:00 AM, Yumin Qi wrote:
>
> - What if it the SA also crashes, will it launch a third VM then a
> fourth etc?
>
> Definitely don't want to see this happened in a chain. The solution
> may use a property such as
> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
> SA process, at launching call, check if the property set, if set, do
> not fork. When SA process died, it will generate core file first, note
> the target process still waiting for its exit, so when target exit,
> the core file (if both use default core as name) will be override by
> target. The SA process will only leave a hs_err_pid*.log file. (? read
> such property in handler is possible?)
There is still the chance that the VM may have crashed before the
properties are initialized. Maybe use environment variables instead?
- Ioi
From ioi.lam at oracle.com Mon Aug 12 11:09:21 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Mon, 12 Aug 2013 11:09:21 -0700
Subject: Request for review:8021948:Change InstanceKlass::_source_file_name
and _generic_signature from Symbol* to constant pool index
In-Reply-To: <52055DAF.90707@oracle.com>
References: <51F978B6.3050209@oracle.com> <52055DAF.90707@oracle.com>
Message-ID: <520924D1.3040800@oracle.com>
Looks good.
Since you're touching the class loader code, maybe you should run
vm.parallel_class_loading.testlist as well.
Thanks
- Ioi
On 08/09/2013 02:22 PM, Jiangli Zhou wrote:
> Hi,
>
> Could anyone help me review this?
>
> Thanks,
> Jiangli
>
> On 07/31/2013 01:51 PM, Jiangli Zhou wrote:
>> Hi,
>>
>> Please review following change for JDK-8021948
>> :
>>
>> http://cr.openjdk.java.net/~jiangli/8021948/webrev.00/
>>
>> Both InstanceKlass::_source_file_name and
>> InstanceKlass::_generic_signature were pointers to Symbol. They are
>> now indexes to constant pool entries. Both fields are now u2 type,
>> and co-located with other non-pointer type fields for more efficient
>> alignment on 64-bit machine. On 32-bit machine, the change saves
>> 4bytes for each class.
>>
>> Tested with JPRT, vm.quick.testlist, nsk.sajdi.testlist,
>> nsk.stress.testlist and nsk.jvmti.testlist.
>>
>> Thanks,
>> Jiangli
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130812/1196bd83/attachment-0001.html
From yumin.qi at oracle.com Mon Aug 12 11:10:14 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Mon, 12 Aug 2013 11:10:14 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <520922D6.6070107@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com> <520922D6.6070107@oracle.com>
Message-ID: <52092506.2070407@oracle.com>
Ioi,
Thanks for the reminding, it is possible. I will use env instead.
Yumin
On 8/12/2013 11:00 AM, Ioi Lam wrote:
> On 08/12/2013 10:00 AM, Yumin Qi wrote:
>>
>> - What if it the SA also crashes, will it launch a third VM then a
>> fourth etc?
>>
>> Definitely don't want to see this happened in a chain. The solution
>> may use a property such as
>> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
>> SA process, at launching call, check if the property set, if set, do
>> not fork. When SA process died, it will generate core file first,
>> note the target process still waiting for its exit, so when target
>> exit, the core file (if both use default core as name) will be
>> override by target. The SA process will only leave a hs_err_pid*.log
>> file. (? read such property in handler is possible?)
>
> There is still the chance that the VM may have crashed before the
> properties are initialized. Maybe use environment variables instead?
>
> - Ioi
From vladimir.kozlov at oracle.com Mon Aug 12 11:32:48 2013
From: vladimir.kozlov at oracle.com (Vladimir Kozlov)
Date: Mon, 12 Aug 2013 11:32:48 -0700
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
Message-ID: <52092A50.6000501@oracle.com>
Harold,
Code changes looks good.
You have typos in CDSCompressedKPtrsError.java (should be -XX:+ not +XX:-)
53 "-XX:-UseCompressedKlassPointers", "+XX:-UseCompressedOops",
60 "+XX:-UseCompressedKlassPointers", "-XX:-UseCompressedOops",
run jtreg with new tests and verify output.
Thanks,
Vladimir
On 8/9/13 7:57 AM, Harold Seigel wrote:
> Hi,
>
> Please review this latest version of the bug fix for 8003424: http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
>
>
> This new version includes the following changes:
>
> 1. macroAssembler_sparc.cpp
>
> a. Merged two versions of reinit_heapbase() into one.
>
> b. Improved decode_klass_not_null(src, dst) to not use G6 if shift == 0.
>
>
> 2. macroAssembler_x86.cpp
>
> a. Merged two versions of reinit_heapbase() into one.
>
> b. Improved encode_klass_not_null(src, dst) to not use R12.
>
> c. Replaced leaq with addq in decode_klass_not_null(src, dst).
>
>
> 3. Improved variable names in heap.cpp.
>
>
> 4. metaspace.cpp
>
> a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more understandable.
>
> b. Moved set_narrow_klass_base_and_shift() near can_use_cds_with_metaspace_addr().
>
> c. Changed unneeded conditional in initialize_class_space() into an assert.
>
>
> 5. arguments.cpp
>
> a. Fixed problem with -Xshare:dump and disabled compression.
>
> b. Moved UseCompressedKlassPointers code into new function: set_use_compressed_klass_ptrs().
>
> c. Fixed bug 8005933 that turned off CDS for -server even if -Xshare:auto was explicitly specified.
>
>
> 6. Increased default value of ClassMetaspaceSize to 1*G in globals.hpp.
>
>
> 7. Fixed indentation issues in metaspace.cpp and other modules.
>
>
> Thanks, Harold
>
> ----- Original Message -----
> From: harold.seigel at oracle.com
> To: coleen.phillimore at oracle.com
> Cc: hotspot-runtime-dev at openjdk.java.net
> Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops
>
> The purpose of this assert is to verify that the two methods in the 'if' clause closed the map file and disabled
> UseSharedSpaces if they detected a problem when trying to use CDS.
>
> if (mapinfo->initialize() && MetaspaceShared::map_shared_spaces(mapinfo)) {
> FileMapInfo::set_current_info(mapinfo);
> } else {
> assert(!mapinfo->is_open() && !UseSharedSpaces,
> "archive file not closed or shared spaces not disabled.");
> }
>
> ----- Original Message -----
> From: harold.seigel at oracle.com
> To: coleen.phillimore at oracle.com
> Cc: hotspot-runtime-dev at openjdk.java.net
> Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops
>
> This is a bug that Stefan Karlsson also discovered. To fix it, I've changed the code to this:
>
> if (DumpSharedSpaces) {
> if (RequireSharedSpaces) {
> warning("cannot dump shared archive while using shared archive");
> }
> UseSharedSpaces = false;
> #ifdef _LP64
> if (!UseCompressedOops || !UseCompressedKlassPointers) {
> vm_exit_during_initialization(
> "Cannot dump shared archive when UseCompressedOops or UseCompressedKlassPointers is off.", NULL);
> }
>
> Harold
>
>
> ----- Original Message -----
> From: coleen.phillimore at oracle.com
> To: hotspot-runtime-dev at openjdk.java.net
> Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for CompressedOops
>
>
> Yes, there should be a check for that too. Now I'll really let Harold
> answer.
>
> Thanks,
> Coleen
>
> On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
> > Coleen, Harold
> >
> > > The InstanceKlass has offsets to fields in the instance, and they
> > depend
> > > on both compressed oops and compressed klass pointers. So both
> > have to
> > > be on for the offsets to be valid.
> >
> > So there is dependency on UseCompressedOops and
> > UseCompressedKlassPointers flags during dump.
> >
> > Then why the check is done only for UseSharedSpaces and not for
> > DumpSharedSpaces?:
> >
> > if (DumpSharedSpaces) {
> > if (RequireSharedSpaces) {
> > warning("cannot dump shared archive while using shared archive");
> > }
> > UseSharedSpaces = false;
> > + #ifdef _LP64
> > + } else {
> > + // UseCompressedOops and UseCompressedKlassPointers must be on
> > for UseSharedSpaces.
> > + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> > + no_shared_spaces();
> > + }
> > + #endif
> > }
> >
> > Thanks,
> > Vladimir
> >
> > On 8/8/13 3:34 PM, Coleen Phillimore wrote:
> >>
> >> Hi Vladimir,
> >>
> >> I have a couple of answers and I'll let Harold answer the rest.
> >>
> >> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
> >>> On 8/7/13 8:34 AM, harold seigel wrote:
> >>>> Hi Vladimir,
> >>>>
> >>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
> >>>>> Harold,
> >>>>>
> >>>>> Note, on SPARC set() could generate up to 8 instructions to load
> >>>>> 64-bit constant into register. So I am not sure that it will be
> >>>>> faster
> >>>>> than load.
> >>>> We thought it would be faster because it doesn't need to load anything
> >>>> from memory.
> >>>
> >>> For good value (0x800000000) it should use only 2-3 instructions.
> >>> I think you can keep using set().
> >>>
> >>>>>
> >>>>> I can't find where in CDS you store information about compressed
> >>>>> klass
> >>>>> pointers and compressed oops parameters which were used during dump?
> >>>>> How you verify that correct parameters/flags are ussed when such CDS
> >>>>> is used later?
> >>>> No compressed klass pointers nor compressed oops get written to the
> >>>> archive. So, the compressed klass pointers and compressed oops
> >>>> parameters do not need to be recorded in the archive.
> >>>
> >>> So you are saying that all klass pointers (references to klasses) in
> >>> metadata structures in metaspace are full.
> >>
> >> Yes, they are. (methodOops weren't in the InstanceKlass::_methods array
> >> with Permgen but they are uncompressed now).
> >>
> >>> And klass pointers are only compressed in java object headers (which
> >>> are not part of CDS). Right?
> >>
> >> The InstanceKlass has offsets to fields in the instance, and they depend
> >> on both compressed oops and compressed klass pointers. So both have to
> >> be on for the offsets to be valid.
> >>
> >> But the base and compressed values are not stored anywhere in the CDS
> >> archive.
> >>
> >>> And you don't care about UseCompressedOops and
> >>> UseCompressedKlassPointers flags settings when you dump it into
> >>> archive. The only limit is:
> >>>
> >>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
> >>>
> >>> Then I don't understand why you can't use/load CDS archive when coop
> >>> or compklass are off:
> >>>
> >>> > If coop is turned off then CDS cannot be used. CDS will only be
> >>> > supported if both UseCompressedOops and UseCompressedKlassPointers
> >>> are
> >>> > TRUE.
> >>>
> >>> Also based on code in arguments.cpp it is allowed to specify
> >>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command line:
> >>>
> >>> 1466 // Turn on UseCompressedKlassPointers too
> >>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
> >>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
> >>> 1469 }
> >>>
> >>> Did you tested such combination?
> >>
> >> I should let Harold answer this but I believe this is what his test
> >> does. For CDS on 64 bit, both must be on. We didn't want to create 4
> >> different archives. And it wouldn't make too much sense since CDS for
> >> 64 bit is a footprint savings so why would you use it without
> >> compressing oops and class pointers? It's not a startup savings on
> >> server because we turn off interpreter bytecode quickening.
> >>
> >> Coleen
> >>
> >>>
> >>>>>
> >>>>> set_narrow_klass_base_and_shift() and
> >>>>> can_use_cds_with_metaspace_addr() have the same code for
> >>>>> UseSharedSpaces. It would be nice to have only one copy. Call
> >>>>> can_use_cds_with_metaspace_addr() from
> >>>>> set_narrow_klass_base_and_shift() ?
> >>>> I could add new inlined methods that determine the higher_address and
> >>>> lower_base when UseSharedSpaces is true and have them called from
> >>>> set_narrow_klass_base_and_shift() and
> >>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
> >>>
> >>> I tried several approaches but your implementation is more clean. So I
> >>> agree to keep what you have now.
> >>>
> >>>
> >>> Also I found strange assert which should always fail (old code in
> >>> global_initialize() in metaspace.cpp):
> >>>
> >>> 2959 if (UseSharedSpaces) {
> >>> ...
> >>> 2969 } else {
> >>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
> >>> 2971 "archive file not closed or shared spaces not
> >>> disabled.");
> >>>
> >>> Thanks,
> >>> Vladimir
> >>>
> >>>>>
> >>>>> I see that you unconditionally set comp klass ptr base and shift for
> >>>>> DumpSharedSpaces. Should you do the check similar to
> >>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
> >>>>> don't even check UseCompressedKlassPointers.
> >>>> I don't think the checks are needed because the information written to
> >>>> the archive is not affected by the size of the class metaspace.
> >>>>
> >>>> Also, I recently added code to arguments.cpp that will generate an
> >>>> error
> >>>> if UseCompressedOops or UseCompressedKlassPointers is turned off and
> >>>> DumpSharedSpaces is on.
> >>>>>
> >>>>> Why you have next limitation? What if coop can't be used because of
> >>>>> big heap?:
> >>>>>
> >>>>> + // UseCompressedOops and UseCompressedKlassPointers must be on
> >>>>> for UseSharedSpaces.
> >>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> >>>>> + no_shared_spaces();
> >>>> If coop is turned off then CDS cannot be used. CDS will only be
> >>>> supported if both UseCompressedOops and UseCompressedKlassPointers are
> >>>> TRUE.
> >>>>>
> >>>>> Could you move UseCompressedKlassPointers code in arguments.cpp into
> >>>>> separate method similar to set_use_compressed_oops()?
> >>>> Done.
> >>>>>
> >>>>> About new tests.
> >>>>> The first test in CDSCompressedKPtrsError misses
> >>>>> -XX:+UseCompressedOops flag.
> >>>> Fixed.
> >>>>>
> >>>>> Could you also test cross flags combinations?:
> >>>>>
> >>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
> >>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
> >>>> Done.
> >>>>>
> >>>>> It would be nice to have test to check ClassMetaspaceSize value
> >>>>> range.
> >>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
> >>>>> or maxuint.
> >>>> A member of our runtime SQE group is writing additional tests. I'll
> >>>> ask
> >>>> him to write a ClassMetaspaceSize range test.
> >>>>
> >>>> We chose 3Gb because we thought it was a sufficiently large size.
> >>>>>
> >>>>>
> >>>>> About code style, indention. We align next line to corresponding part
> >>>>> of previous line if we need to split a line. And sometimes it is
> >>>>> better to keep one long line. I understand some of them were before
> >>>>> your changes but, please, clean up at lest ones you touched.
> >>>> Done.
> >>>>>
> >>>>> Cases in metaspace.cpp:
> >>>>>
> >>>>> 2263 assert(raw_word_size >= min_size,
> >>>>> 2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
> >>>>> SIZE_FORMAT, word_size, min_size));
> >>>>>
> >>>>>
> >>>>> 2485 if (Metaspace::using_class_space() &&
> >>>>> 2486 (Metaspace::class_space_list() != NULL)) {
> >>>>>
> >>>>>
> >>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
> >>>>> 2575 (Metaspace::using_class_space() ?
> >>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
> >>>>> 2577 Metaspace::space_list()->virtual_space_total();
> >>>>>
> >>>>>
> >>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
> >>>>> SIZE_FORMAT ", "
> >>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
> >>>>> ", "
> >>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
> >>>>> ", "
> >>>>> 2697 "large count " SIZE_FORMAT,
> >>>>> 2698 cls_specialized_count, cls_specialized_waste,
> >>>>> 2699 cls_small_count, cls_small_waste,
> >>>>> 2700 cls_medium_count, cls_medium_waste,
> >>>>> cls_humongous_count);
> >>>>>
> >>>>>
> >>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
> >>>>> addr) &&
> >>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
> >>>>>
> >>>>>
> >>>>> 2889 vm_exit_during_initialization(err_msg(
> >>>>> 2890 "Could not allocate metaspace: %d bytes",
> >>>>> 2891 class_metaspace_size()));
> >>>>>
> >>>>>
> >>>>> 3107 return using_class_space() ?
> >>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
> >>>>>
> >>>>>
> >>>>> 3157 if (is_class && using_class_space()) {
> >>>>> 3158 class_vsm()->deallocate(ptr, word_size);
> >>>>>
> >>>>>
> >>>>> 3305 return space_list()->contains(ptr) ||
> >>>>> 3306 (using_class_space() && class_space_list()->contains(ptr));
> >>>>>
> >>>>> metaspace.hpp:
> >>>>>
> >>>>> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
> >>>>> 271 (Metaspace::using_class_space() ?
> >>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
> >>>>>
> >>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
> >>>>> 286 (Metaspace::using_class_space() ?
> >>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
> >>>>>
> >>>>> universe.cpp:
> >>>>>
> >>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
> >>>>> (intptr_t)(Universe::heap()->base() -
> >>>>> 850 os::vm_page_size()) ||
> >>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
> >>>>> value");
> >>>>>
> >>>>>
> >>>>> Thanks,
> >>>>> Vladimir
> >>>>>
> >>>>> On 8/2/13 1:31 PM, harold seigel wrote:
> >>>>>> Hi,
> >>>>>>
> >>>>>> Please review this updated webrev for bug 8003424:
> >>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
> >>>>>>
> >>>>>>
> >>>>>> The updated webrev has a lot of changes from the previous webrev,
> >>>>>> including the following:
> >>>>>>
> >>>>>> 1. Class metaspace information is now output when
> >>>>>> -XX:+PrintCompressedOopsMode is specified.
> >>>>>>
> >>>>>> 2. decode_klass_not_null(Register dst, Register src) no longer
> >>>>>> clobbers R12.
> >>>>>>
> >>>>>> 3. Method using_class_vsm() was renamed to using_class_space().
> >>>>>>
> >>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
> >>>>>> appropriate.
> >>>>>>
> >>>>>> 5. The Metaspace:: qualifier was removed, where it was
> >>>>>> unnecessary.
> >>>>>>
> >>>>>> 6. Metaspace::initialize_class_space() was made private.
> >>>>>>
> >>>>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
> >>>>>> updated.
> >>>>>>
> >>>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
> >>>>>> and
> >>>>>> specjbb2013. The results showed no significant performance
> >>>>>> difference
> >>>>>> in terms of scores and gc behavior.
> >>>>>>
> >>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
> >>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
> >>>>>>
> >>>>>> Please let me know what additional tests should be run.
> >>>>>>
> >>>>>> Thanks!
> >>>>>> Harold
> >>>>>>
> >>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
> >>>>>>> Hi Harold,
> >>>>>>>
> >>>>>>> > Usually the narrow_klass_base will be 32G and the
> >>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
> >>>>>>> means
> >>>>>>> that
> >>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
> >>>>>>> unless
> >>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
> >>>>>>> make
> >>>>>>> sense?
> >>>>>>>
> >>>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
> >>>>>>> and I
> >>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
> >>>>>>> (assuming or
> >>>>>>> with check that class metaspace size < 32Gb).
> >>>>>>>
> >>>>>>> > Is there one prefix byte per instruction, or just for certain
> >>>>>>> instructions?
> >>>>>>>
> >>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
> >>>>>>> prefix is
> >>>>>>> necessary only if an instruction references one of the extended
> >>>>>>> registers or uses a 64-bit operand."
> >>>>>>>
> >>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and
> >>>>>>> =32
> >>>>>>> and big java heap. Recently we got several bugs which indicated
> >>>>>>> that
> >>>>>>> we did not separate cleanly oops and klass pointers en/decoding.
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Vladimir
> >>>>>>>
> >>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
> >>>>>>>> Hi Vladimir,
> >>>>>>>>
> >>>>>>>> Thank you for the review! Please see inline comments.
> >>>>>>>>
> >>>>>>>> Thanks, Harold
> >>>>>>>>
> >>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
> >>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
> >>>>>>>>>> Nice clean up, Harold
> >>>>>>>>>>
> >>>>>>>>>> Could you add the size of class metaspace in output with
> >>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
> >>>>>>>>>> remember an
> >>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
> >>>>>>>> Will be done in next webrev.
> >>>>>>>>>>
> >>>>>>>>>> Also it would be nice to print these info line (and compressed
> >>>>>>>>>> oops
> >>>>>>>>>> info
> >>>>>>>>>> line) in hs_err files.
> >>>>>>>> I filed an enhancement bug for this: 8021264
> >>>>>>>> .
> >>>>>>>>>>
> >>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
> >>>>>>>>>> x86_64.ad.
> >>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
> >>>>>>>>>> arithmetic
> >>>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
> >>>>>>>>>> note
> >>>>>>>>>> that code in .ad file does not check the encoding mode for
> >>>>>>>>>> narrow
> >>>>>>>>>> klass/oop so it should be conservative and assume that
> >>>>>>>>>> arithmetic
> >>>>>>>>>> instructions are used.
> >>>>>>>> OK. Thanks.
> >>>>>>>>>>
> >>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
> >>>>>>>>>> 4Gb so
> >>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
> >>>>>>>>>> encoding/decoding without destroying R12.
> >>>>>>>>>
> >>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
> >>>>>>>>> (sign
> >>>>>>>>> bit is extended so you will get wrong result with address > 2gb).
> >>>>>>>> But the base will normally be 32Gb. So this case won't happen
> >>>>>>>> very
> >>>>>>>> often.
> >>>>>>>>>
> >>>>>>>>> You definitely should not use R12 in
> >>>>>>>>> decode_klass_not_null(Register
> >>>>>>>>> dst, Register src) method where you have free 'dst' register.
> >>>>>>>> Will be fixed in next webrev.
> >>>>>>>>>
> >>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
> >>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
> >>>>>>>>> 64Gb.
> >>>>>>>>> The idea was to avoid using R12 by using shifted base:
> >>>>>>>>>
> >>>>>>>>> decode:
> >>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
> >>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
> >>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
> >>>>>>>>> }
> >>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
> >>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
> >>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
> >>>>>>>>> maxint
> >>>>>>>>> (max positive int).
> >>>>>>>> Usually the narrow_klass_base will be 32G and the
> >>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
> >>>>>>>> that
> >>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
> >>>>>>>> unless
> >>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
> >>>>>>>> make
> >>>>>>>> sense?
> >>>>>>>>>
> >>>>>>>>> And you have general memory reservation problem. At least on
> >>>>>>>>> Solaris,
> >>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
> >>>>>>>>> between
> >>>>>>>>> different requested memory regions. That is why in jdk7 we first
> >>>>>>>>> reserve one huge space and then cut it on java heap, perm gen and
> >>>>>>>>> protection page below heap to catch implicit NULL exceptions with
> >>>>>>>>> compressed oops.
> >>>>>>>>>
> >>>>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
> >>>>>>>>> address or CompressedKlassPointersBase without CDS and with
> >>>>>>>>> compressed
> >>>>>>>>> oops and with Xmx20Gb.
> >>>>>>>> I verifed that we get either cds_address+cds_total as the
> >>>>>>>> address, or
> >>>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
> >>>>>>>> Windows
> >>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
> >>>>>>>> sizes and
> >>>>>>>> -Xmx32G.
> >>>>>>>>
> >>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
> >>>>>>>> desired
> >>>>>>>> CDS address for class metaspace regardless of heap size.
> >>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
> >>>>>>>>>> unfortunately we
> >>>>>>>>>> can't do other way. I assume you use max size because
> >>>>>>>>>> depending on
> >>>>>>>>>> registers used in instructions you will or will not get prefix
> >>>>>>>>>> byte
> >>>>>>>>>> (r8-r15).
> >>>>>>>> Is there one prefix byte per instruction, or just for certain
> >>>>>>>> instructions?
> >>>>>>>>>>
> >>>>>>>>>> I will look on changes in more details may be late.
> >>>>>>>>>
> >>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
> >>>>>>>>> abbreviations
> >>>>>>>>> which are not obvious.
> >>>>>>>> I changed using_class_vsm() to using_class_space().
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Thanks,
> >>>>>>>>>> Vladimir
> >>>>>>>>>>
> >>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
> >>>>>>>>>>> Hi,
> >>>>>>>>>>>
> >>>>>>>>>>> Please review this fix for bug 8003424.
> >>>>>>>>>>>
> >>>>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
> >>>>>>>>>>>
> >>>>>>>>>>> Open bug links at:
> >>>>>>>>>>>
> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
> >>>>>>>>>>>
> >>>>>>>>>>> JBS Bug links at
> >>>>>>>>>>>
> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> This fix provides support for using compressed klass pointers
> >>>>>>>>>>> with
> >>>>>>>>>>> CDS.
> >>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
> >>>>>>>>>>> platforms
> >>>>>>>>>>> when
> >>>>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
> >>>>>>>>>>> class
> >>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
> >>>>>>>>>>> it at
> >>>>>>>>>>> the
> >>>>>>>>>>> base of that allocation, the metaspace will now be allocated
> >>>>>>>>>>> separately,
> >>>>>>>>>>> above the Java heap. This will enable future expansion of the
> >>>>>>>>>>> metaspace
> >>>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
> >>>>>>>>>>> being
> >>>>>>>>>>> used, then the CDS region will be allocated between the Java
> >>>>>>>>>>> heap and
> >>>>>>>>>>> the metaspace.
> >>>>>>>>>>>
> >>>>>>>>>>> The new class metaspace allocation code tries to allocate
> >>>>>>>>>>> memory at
> >>>>>>>>>>> 32G,
> >>>>>>>>>>> or above the CDS region, if it is present. Because of this,
> >>>>>>>>>>> encoding
> >>>>>>>>>>> and decoding of compressed klass pointers will always
> >>>>>>>>>>> require use
> >>>>>>>>>>> of a
> >>>>>>>>>>> base register. So, encoding and decoding of compressed klass
> >>>>>>>>>>> pointers
> >>>>>>>>>>> will differ from compressed oops.
> >>>>>>>>>>>
> >>>>>>>>>>> There are no class metaspace allocation changes if
> >>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
> >>>>>>>>>>> 32-bit
> >>>>>>>>>>> platform.
> >>>>>>>>>>>
> >>>>>>>>>>> The code changes also include some cleanup and will fix bugs
> >>>>>>>>>>> 8016729,
> >>>>>>>>>>> 8011610, and 8003424.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
> >>>>>>>>>>> Modules
> >>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
> >>>>>>>>>>> changed to
> >>>>>>>>>>> support the new encoding and decoding of compressed klass
> >>>>>>>>>>> pointers.
> >>>>>>>>>>>
> >>>>>>>>>>> Module metaspace.cpp was changed significantly to support
> >>>>>>>>>>> the new
> >>>>>>>>>>> allocation for metaspace and the CDS region and to determine
> >>>>>>>>>>> compressed
> >>>>>>>>>>> klass pointer encoding base and shifting values.
> >>>>>>>>>>>
> >>>>>>>>>>> Most of the changes to module universe.cpp were to remove code
> >>>>>>>>>>> related
> >>>>>>>>>>> to allocating metaspace and remove code that considered
> >>>>>>>>>>> compressed
> >>>>>>>>>>> klass
> >>>>>>>>>>> pointers when determining the compressed oops compression
> >>>>>>>>>>> mechanism.
> >>>>>>>>>>>
> >>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
> >>>>>>>>>>> part
> >>>>>>>>>>> of a
> >>>>>>>>>>> cleanup requested by Coleen.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
> >>>>>>>>>>> tests,
> >>>>>>>>>>> JPRT,
> >>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
> >>>>>>>>>>> vm.mlvm.testlist
> >>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
> >>>>>>>>>>> -Xshare:off
> >>>>>>>>>>> (with
> >>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
> >>>>>>>>>>> Linux and
> >>>>>>>>>>> 64-Bit
> >>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
> >>>>>>>>>>> were
> >>>>>>>>>>> run on Solaris x86.
> >>>>>>>>>>>
> >>>>>>>>>>> The performance impact of these changes is TBD.
> >>>>>>>>>>>
> >>>>>>>>>>> Thanks, Harold
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>
> >>
>
From jiangli.zhou at oracle.com Mon Aug 12 13:45:36 2013
From: jiangli.zhou at oracle.com (Jiangli Zhou)
Date: Mon, 12 Aug 2013 13:45:36 -0700
Subject: Request for review:8021948:Change InstanceKlass::_source_file_name
and _generic_signature from Symbol* to constant pool index
In-Reply-To: <520924D1.3040800@oracle.com>
References: <51F978B6.3050209@oracle.com> <52055DAF.90707@oracle.com>
<520924D1.3040800@oracle.com>
Message-ID: <52094970.1030206@oracle.com>
Hi Ioi,
Thanks for the review! I'll try those tests also.
Thanks,
Jiangli
On 08/12/2013 11:09 AM, Ioi Lam wrote:
> Looks good.
>
> Since you're touching the class loader code, maybe you should run
> vm.parallel_class_loading.testlist as well.
>
> Thanks
> - Ioi
>
> On 08/09/2013 02:22 PM, Jiangli Zhou wrote:
>> Hi,
>>
>> Could anyone help me review this?
>>
>> Thanks,
>> Jiangli
>>
>> On 07/31/2013 01:51 PM, Jiangli Zhou wrote:
>>> Hi,
>>>
>>> Please review following change for JDK-8021948
>>> :
>>>
>>> http://cr.openjdk.java.net/~jiangli/8021948/webrev.00/
>>>
>>> Both InstanceKlass::_source_file_name and
>>> InstanceKlass::_generic_signature were pointers to Symbol. They are
>>> now indexes to constant pool entries. Both fields are now u2 type,
>>> and co-located with other non-pointer type fields for more efficient
>>> alignment on 64-bit machine. On 32-bit machine, the change saves
>>> 4bytes for each class.
>>>
>>> Tested with JPRT, vm.quick.testlist, nsk.sajdi.testlist,
>>> nsk.stress.testlist and nsk.jvmti.testlist.
>>>
>>> Thanks,
>>> Jiangli
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130812/bae86fe6/attachment.html
From daniel.daugherty at oracle.com Mon Aug 12 14:14:20 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Mon, 12 Aug 2013 15:14:20 -0600
Subject: RFR 8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
In-Reply-To: <52016BBB.3040907@oracle.com>
References: <52016BBB.3040907@oracle.com>
Message-ID: <5209502C.7040709@oracle.com>
On 8/6/13 3:33 PM, Coleen Phillimore wrote:
> Summary: ActiveMethodOopsCache was used to keep track of old versions
> of some methods that are cached in Universe but is buggy with permgen
> removal and not needed anymore
>
> There was a crash in this function that I couldn't reproduce. It was
> likely that the crash was for something else, but this is a lurking bug.
>
> open webrev at http://cr.openjdk.java.net/~coleenp/8009728/
Thumbs up!
src/share/vm/memory/universe.cpp
No comments.
src/share/vm/memory/universe.hpp
nit lines 59-63: if you wanted to make the the function names all
line up that would look better
src/share/vm/oops/method.cpp
No comments.
src/share/vm/prims/jvmtiRedefineClasses.cpp
No comments.
test/runtime/RedefineObject/Agent.java
I like the refactor of the redefine logic into the redefine() method
and that makes the premain() method more clear.
test/runtime/RedefineObject/TestRedefineObject.java
No comments.
test/runtime/RedefineObject/WalkThroughInvoke.java
line 30: // walks the stack before it gets this exception.
Is the "this exception" mentioned here this one:
line 33: } catch (java.security.AccessControlException e) {
line 34: System.out.println("This exception is expected");
This println() is in the catch of AccessControlException
so there won't be any mention of that exception in the test's
output, but the test's output will say:
This exception is expected
This could be confusing to anyone that is investigating
and/or looking at this test. You might say:
Ignoring an 'AccessControlException' exception since
it is expected as part of this test.
Dan
> bug link at http://bugs.sun.com/view_bug.do?bug_id=8009728
> local bug link https://jbs.oracle.com/bugs/browse/JDK-8009728
>
> Tested with vm.quick.testlist which includes redefine classes tests
> and jck lang and vm tests.
>
> Thanks,
> Coleen
>
From coleen.phillimore at oracle.com Mon Aug 12 14:17:24 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Mon, 12 Aug 2013 17:17:24 -0400
Subject: RFR 8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
In-Reply-To: <5209502C.7040709@oracle.com>
References: <52016BBB.3040907@oracle.com> <5209502C.7040709@oracle.com>
Message-ID: <520950E4.7060808@oracle.com>
Thanks Dan for reviewing this version of this change also. See inline
comments.
On 08/12/2013 05:14 PM, Daniel D. Daugherty wrote:
> On 8/6/13 3:33 PM, Coleen Phillimore wrote:
>> Summary: ActiveMethodOopsCache was used to keep track of old versions
>> of some methods that are cached in Universe but is buggy with permgen
>> removal and not needed anymore
>>
>> There was a crash in this function that I couldn't reproduce. It was
>> likely that the crash was for something else, but this is a lurking bug.
>>
>> open webrev at http://cr.openjdk.java.net/~coleenp/8009728/
>
> Thumbs up!
>
> src/share/vm/memory/universe.cpp
> No comments.
>
> src/share/vm/memory/universe.hpp
> nit lines 59-63: if you wanted to make the the function names all
> line up that would look better
done.
>
> src/share/vm/oops/method.cpp
> No comments.
>
> src/share/vm/prims/jvmtiRedefineClasses.cpp
> No comments.
>
> test/runtime/RedefineObject/Agent.java
> I like the refactor of the redefine logic into the redefine() method
> and that makes the premain() method more clear.
>
> test/runtime/RedefineObject/TestRedefineObject.java
> No comments.
>
> test/runtime/RedefineObject/WalkThroughInvoke.java
> line 30: // walks the stack before it gets this exception.
> Is the "this exception" mentioned here this one:
>
> line 33: } catch (java.security.AccessControlException e) {
>
> line 34: System.out.println("This exception is expected");
> This println() is in the catch of AccessControlException
> so there won't be any mention of that exception in the test's
> output, but the test's output will say:
>
> This exception is expected
>
> This could be confusing to anyone that is investigating
> and/or looking at this test. You might say:
>
> Ignoring an 'AccessControlException' exception since
> it is expected as part of this test.
>
I added your comment and fixed the comments so hopefully they make sense.
public class WalkThroughInvoke {
public void stackWalk() {
try {
Class b = Object.class;
SecurityManager sm = new SecurityManager();
// walks the stack with Method.invoke in the stack (which is the
// purpose of the test) before it gets an AccessControlException.
sm.checkMemberAccess(b, Member.DECLARED);
} catch (java.security.AccessControlException e) {
// Ignoring an 'AccessControlException' exception since
// it is expected as part of this test.
}
}
};
Thanks!
Coleen
> Dan
>
>
>> bug link at http://bugs.sun.com/view_bug.do?bug_id=8009728
>> local bug link https://jbs.oracle.com/bugs/browse/JDK-8009728
>>
>> Tested with vm.quick.testlist which includes redefine classes tests
>> and jck lang and vm tests.
>>
>> Thanks,
>> Coleen
>>
>
From coleen.phillimore at oracle.com Mon Aug 12 14:43:46 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Mon, 12 Aug 2013 17:43:46 -0400
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <520914A1.8050905@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com>
Message-ID: <52095712.4080404@oracle.com>
Yumin,
I don't think this change should be added to the JVM for the following
reasons.
1. Error handling should only contain safe actions. We have concerns
that the SA is not that stable and would prevent getting a real core
file in many error situations. You couldn't have tested all error
situations because these are usually the things we don't know about.
You also mention that there are currently bugs preventing this feature
from working in your first email.
2. I am not convinced that having a separate jar file with loaded
classes (is it a list that SA generates?) would be collected by an error
reporter. If it's collected, I don't see how helpful it would be.
Also a customer may not want their classes disclosed in error reporting.
3. This doesn't seem important enough to include as a new feature in
jdk8 release, which is feature-complete. I don't see a customer
request for it.
Coleen
On 08/12/2013 01:00 PM, Yumin Qi wrote:
> Chris, David
>
> Yes. This can be after crash with core file, but some time no core
> file generated (also if the error could not repeat, we will never got
> information again), so dumping target process is also a choice. To
> avoid more confusion, this step was launched at the very last moment,
> just before raise abort to exit. At this moment, if client process
> could not attach to the target process it will exit right away.
>
> Answers to David:
>
> Note that the SA is only present in a full JDK, not a JRE (full or
> compact profile).
> Yes, in code, if no sa-jdi.jar found, skip fork.
>
> - What mechanism will the SA try to use to query the VM?
>
> After successfully attached to target process, SA will read via proc
> APIs and vmStructs (named TYPEDB) to iterate memory of system
> dictionary read (only) from target process to dump class information.
>
> - What if the state of the crashed VM stops the SA from being able to
> attach properly (ie both processes hang)?
>
> That should be an attaching API problem. We haven't watched such
> case happened so far.
>
> - What if it the SA also crashes, will it launch a third VM then a
> fourth etc?
>
> Definitely don't want to see this happened in a chain. The solution
> may use a property such as
> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
> SA process, at launching call, check if the property set, if set, do
> not fork. When SA process died, it will generate core file first, note
> the target process still waiting for its exit, so when target exit,
> the core file (if both use default core as name) will be override by
> target. The SA process will only leave a hs_err_pid*.log file. (? read
> such property in handler is possible?)
>
> Also what is the nature of this dump? How big is it? Where will it go?
> The jars includes *app.jar and *boot.jar, the later usually can be
> ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent.
> The app.jar will contain all classes by customer, so we can do
> whatever we can to the jar.
>
>
> Thanks
> Yumin
>
>
> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>> Hi Yumin,
>>
>> The idea is to do as little as possible in the VM error handler,
>> since we've crashed for some reason we don't know what state the
>> process is in and we have to be extremely careful in when we're
>> gathering the information. This seems like a step that is risky for
>> all of the reasons David mentioned below.
>>
>> It's also information that can easily be extracted post-mortem from
>> the core/mdmp using the method you described for OSX, so gathering
>> this at the time of a crash seems like an unnecessary risk.
>>
>> Thanks,
>> Christian
>>
>> -----Original Message-----
>> From: hotspot-compiler-dev-bounces at openjdk.java.net
>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of
>> David Holmes
>> Sent: Monday, August 12, 2013 1:56 AM
>> To: Yumin Qi
>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>
>> Hi Yumin,
>>
>> Note that the SA is only present in a full JDK, not a JRE (full or
>> compact profile).
>>
>> I have quite a few concerns with this:
>>
>> We already do a lot of things that are not valid to be done from a
>> signal handling context but this really takes that to an extreme.
>> Doing fork-exec from a signal handler seems like a recipe for
>> disaster (Note the existing onError facility is typically used for
>> synchronous failures.)
>>
>> The idea of launching a second VM to try and query a VM that has
>> crashed also seems somewhat problematic:
>> - What mechanism will the SA try to use to query the VM?
>> - What if the state of the crashed VM stops the SA from being able to
>> attach properly (ie both processes hang)?
>> - What if it the SA also crashes, will it launch a third VM then a
>> fourth etc?
>>
>> Also what is the nature of this dump? How big is it? Where will it go?
>>
>> Thanks,
>> David
>>
>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>> Hi, all
>>>
>>> I would like to have your review for
>>>
>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>
>>>
>>> Description: When JVM crashed, we also want to check the application
>>> class files especially we got core file from customers. The aftermath
>>> analysis will benefit from all loaded java classes available. In this
>>> change, spawn another process running SA to do the job when JVM
>>> crashes, this way also avoid further messing up with the error report
>>> which already in signal handler.
>>>
>>> Note: The test has done with following two bugs worked around:
>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>> and integrated by Kevin Walls soon)
>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such function
>>> "__has__" (Not know when it will be integrated)
>>> That is, without those two fixed, the jars of loaded classes will
>>> not be successfully dumped.
>>> Also, on MacOS it requires security access permission to attach to
>>> another process, so omit doing so. To get loaded jar file s, with core
>>> file available (on all platforms), one can (only after this
>>> change) do
>>>
>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>
>>>
>>> Thanks
>>> Yumin
>
From christian.tornqvist at oracle.com Mon Aug 12 15:50:29 2013
From: christian.tornqvist at oracle.com (Christian Tornqvist)
Date: Mon, 12 Aug 2013 18:50:29 -0400
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <52095712.4080404@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com> <52095712.4080404@oracle.com>
Message-ID: <008b01ce97ae$583efdf0$08bcf9d0$@oracle.com>
I agree with Coleen, this change should not be added to the JVM.
Though I'd like to have the tool to create this archive from a core/mdmp. If this is not already present in any of the j*-tools we might want to look into adding it, please work with the serviceability team to determine where this would be best suited.
Thanks,
Christian
-----Original Message-----
From: Coleen Phillimore [mailto:coleen.phillimore at oracle.com]
Sent: Monday, August 12, 2013 5:44 PM
To: Yumin Qi
Cc: Christian Tornqvist; serviceability-dev at openjdk.java.net serviceability-dev at openjdk.java.net; 'hotspot compiler'; 'David Holmes'; hotspot-runtime-dev at openjdk.java.net
Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
Yumin,
I don't think this change should be added to the JVM for the following reasons.
1. Error handling should only contain safe actions. We have concerns
that the SA is not that stable and would prevent getting a real core
file in many error situations. You couldn't have tested all error
situations because these are usually the things we don't know about.
You also mention that there are currently bugs preventing this feature from working in your first email.
2. I am not convinced that having a separate jar file with loaded classes (is it a list that SA generates?) would be collected by an error
reporter. If it's collected, I don't see how helpful it would be.
Also a customer may not want their classes disclosed in error reporting.
3. This doesn't seem important enough to include as a new feature in
jdk8 release, which is feature-complete. I don't see a customer
request for it.
Coleen
On 08/12/2013 01:00 PM, Yumin Qi wrote:
> Chris, David
>
> Yes. This can be after crash with core file, but some time no core
> file generated (also if the error could not repeat, we will never got
> information again), so dumping target process is also a choice. To
> avoid more confusion, this step was launched at the very last moment,
> just before raise abort to exit. At this moment, if client process
> could not attach to the target process it will exit right away.
>
> Answers to David:
>
> Note that the SA is only present in a full JDK, not a JRE (full or
> compact profile).
> Yes, in code, if no sa-jdi.jar found, skip fork.
>
> - What mechanism will the SA try to use to query the VM?
>
> After successfully attached to target process, SA will read via proc
> APIs and vmStructs (named TYPEDB) to iterate memory of system
> dictionary read (only) from target process to dump class information.
>
> - What if the state of the crashed VM stops the SA from being able to
> attach properly (ie both processes hang)?
>
> That should be an attaching API problem. We haven't watched such
> case happened so far.
>
> - What if it the SA also crashes, will it launch a third VM then a
> fourth etc?
>
> Definitely don't want to see this happened in a chain. The solution
> may use a property such as
> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
> SA process, at launching call, check if the property set, if set, do
> not fork. When SA process died, it will generate core file first, note
> the target process still waiting for its exit, so when target exit,
> the core file (if both use default core as name) will be override by
> target. The SA process will only leave a hs_err_pid*.log file. (? read
> such property in handler is possible?)
>
> Also what is the nature of this dump? How big is it? Where will it go?
> The jars includes *app.jar and *boot.jar, the later usually can be
> ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent.
> The app.jar will contain all classes by customer, so we can do
> whatever we can to the jar.
>
>
> Thanks
> Yumin
>
>
> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>> Hi Yumin,
>>
>> The idea is to do as little as possible in the VM error handler,
>> since we've crashed for some reason we don't know what state the
>> process is in and we have to be extremely careful in when we're
>> gathering the information. This seems like a step that is risky for
>> all of the reasons David mentioned below.
>>
>> It's also information that can easily be extracted post-mortem from
>> the core/mdmp using the method you described for OSX, so gathering
>> this at the time of a crash seems like an unnecessary risk.
>>
>> Thanks,
>> Christian
>>
>> -----Original Message-----
>> From: hotspot-compiler-dev-bounces at openjdk.java.net
>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of
>> David Holmes
>> Sent: Monday, August 12, 2013 1:56 AM
>> To: Yumin Qi
>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>
>> Hi Yumin,
>>
>> Note that the SA is only present in a full JDK, not a JRE (full or
>> compact profile).
>>
>> I have quite a few concerns with this:
>>
>> We already do a lot of things that are not valid to be done from a
>> signal handling context but this really takes that to an extreme.
>> Doing fork-exec from a signal handler seems like a recipe for
>> disaster (Note the existing onError facility is typically used for
>> synchronous failures.)
>>
>> The idea of launching a second VM to try and query a VM that has
>> crashed also seems somewhat problematic:
>> - What mechanism will the SA try to use to query the VM?
>> - What if the state of the crashed VM stops the SA from being able to
>> attach properly (ie both processes hang)?
>> - What if it the SA also crashes, will it launch a third VM then a
>> fourth etc?
>>
>> Also what is the nature of this dump? How big is it? Where will it go?
>>
>> Thanks,
>> David
>>
>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>> Hi, all
>>>
>>> I would like to have your review for
>>>
>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>
>>>
>>> Description: When JVM crashed, we also want to check the application
>>> class files especially we got core file from customers. The
>>> aftermath analysis will benefit from all loaded java classes
>>> available. In this change, spawn another process running SA to do
>>> the job when JVM crashes, this way also avoid further messing up
>>> with the error report which already in signal handler.
>>>
>>> Note: The test has done with following two bugs worked around:
>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>> and integrated by Kevin Walls soon)
>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such
>>> function "__has__" (Not know when it will be integrated)
>>> That is, without those two fixed, the jars of loaded classes
>>> will not be successfully dumped.
>>> Also, on MacOS it requires security access permission to attach
>>> to another process, so omit doing so. To get loaded jar file s, with
>>> core file available (on all platforms), one can (only after this
>>> change) do
>>>
>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>
>>>
>>> Thanks
>>> Yumin
>
From ioi.lam at oracle.com Mon Aug 12 16:14:32 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Mon, 12 Aug 2013 16:14:32 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <008b01ce97ae$583efdf0$08bcf9d0$@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com> <52095712.4080404@oracle.com>
<008b01ce97ae$583efdf0$08bcf9d0$@oracle.com>
Message-ID: <52096C58.6000304@oracle.com>
|Yumin,||
||
||If I understand correctly, the reason of dumping the classes in a
separate process using SA is to avoid crashing (in case the system
dictionary is corrupt).||
||
||But you're already exec'ing SA as the very last step of writing to
hs_err. Maybe instead of exec SA, just dump the system dict using C code
within the crashing process (SystemDictionary::print()). ||
||
||If the sys dict is corrupt you will encounter a secondary crash here,
but that's OK, because ||hs_err_pid*.log already has ||all the
information that we used to have, so you are not making it any worse. It
may actually be helpful because now you know for sure that the sys dict
is corrupt. This is one piece of information that we didn't have.
Also, if the sys dict is corrupt, I doubt SA can produce more meaningful
data than |||SystemDictionary::print()|. Instead, it may be better to
have a |
|||||SystemDictionary::print_safely() function that makes more error
checking|| so it can better handle a partially corrupted sys dict.
- Ioi
||
||
||Since you're doing the dump of classes as the very last step of to
hs_err, instead of spawning another JVM ||
||On 08/12/2013 03:50 PM, Christian Tornqvist wrote:||
|
> |I agree with Coleen, this change should not be added to the JVM.
>
> Though I'd like to have the tool to create this archive from a core/mdmp. If this is not already present in any of the j*-tools we might want to look into adding it, please work with the serviceability team to determine where this would be best suited.
>
> Thanks,
> Christian
>
> -----Original Message-----
> From: Coleen Phillimore [mailto:coleen.phillimore at oracle.com]
> Sent: Monday, August 12, 2013 5:44 PM
> To: Yumin Qi
> Cc: Christian Tornqvist; serviceability-dev at openjdk.java.net serviceability-dev at openjdk.java.net; 'hotspot compiler'; 'David Holmes'; hotspot-runtime-dev at openjdk.java.net
> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>
>
> Yumin,
>
> I don't think this change should be added to the JVM for the following reasons.
>
> 1. Error handling should only contain safe actions. We have concerns
> that the SA is not that stable and would prevent getting a real core
> file in many error situations. You couldn't have tested all error
> situations because these are usually the things we don't know about.
> You also mention that there are currently bugs preventing this feature from working in your first email.
>
> 2. I am not convinced that having a separate jar file with loaded classes (is it a list that SA generates?) would be collected by an error
> reporter. If it's collected, I don't see how helpful it would be.
> Also a customer may not want their classes disclosed in error reporting.
>
> 3. This doesn't seem important enough to include as a new feature in
> jdk8 release, which is feature-complete. I don't see a customer
> request for it.
>
> Coleen
>
> On 08/12/2013 01:00 PM, Yumin Qi wrote:
> |
>> |Chris, David
>>
>> Yes. This can be after crash with core file, but some time no core
>> file generated (also if the error could not repeat, we will never got
>> information again), so dumping target process is also a choice. To
>> avoid more confusion, this step was launched at the very last moment,
>> just before raise abort to exit. At this moment, if client process
>> could not attach to the target process it will exit right away.
>>
>> Answers to David:
>>
>> Note that the SA is only present in a full JDK, not a JRE (full or
>> compact profile).
>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>
>> - What mechanism will the SA try to use to query the VM?
>>
>> After successfully attached to target process, SA will read via proc
>> APIs and vmStructs (named TYPEDB) to iterate memory of system
>> dictionary read (only) from target process to dump class information.
>>
>> - What if the state of the crashed VM stops the SA from being able to
>> attach properly (ie both processes hang)?
>>
>> That should be an attaching API problem. We haven't watched such
>> case happened so far.
>>
>> - What if it the SA also crashes, will it launch a third VM then a
>> fourth etc?
>>
>> Definitely don't want to see this happened in a chain. The solution
>> may use a property such as
>> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
>> SA process, at launching call, check if the property set, if set, do
>> not fork. When SA process died, it will generate core file first, note
>> the target process still waiting for its exit, so when target exit,
>> the core file (if both use default core as name) will be override by
>> target. The SA process will only leave a hs_err_pid*.log file. (? read
>> such property in handler is possible?)
>>
>> Also what is the nature of this dump? How big is it? Where will it go?
>> The jars includes *app.jar and *boot.jar, the later usually can be
>> ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent.
>> The app.jar will contain all classes by customer, so we can do
>> whatever we can to the jar.
>>
>>
>> Thanks
>> Yumin
>>
>>
>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>> |
>>> |Hi Yumin,
>>>
>>> The idea is to do as little as possible in the VM error handler,
>>> since we've crashed for some reason we don't know what state the
>>> process is in and we have to be extremely careful in when we're
>>> gathering the information. This seems like a step that is risky for
>>> all of the reasons David mentioned below.
>>>
>>> It's also information that can easily be extracted post-mortem from
>>> the core/mdmp using the method you described for OSX, so gathering
>>> this at the time of a crash seems like an unnecessary risk.
>>>
>>> Thanks,
>>> Christian
>>>
>>> -----Original Message-----
>>> From: hotspot-compiler-dev-bounces at openjdk.java.net
>>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of
>>> David Holmes
>>> Sent: Monday, August 12, 2013 1:56 AM
>>> To: Yumin Qi
>>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>
>>> Hi Yumin,
>>>
>>> Note that the SA is only present in a full JDK, not a JRE (full or
>>> compact profile).
>>>
>>> I have quite a few concerns with this:
>>>
>>> We already do a lot of things that are not valid to be done from a
>>> signal handling context but this really takes that to an extreme.
>>> Doing fork-exec from a signal handler seems like a recipe for
>>> disaster (Note the existing onError facility is typically used for
>>> synchronous failures.)
>>>
>>> The idea of launching a second VM to try and query a VM that has
>>> crashed also seems somewhat problematic:
>>> - What mechanism will the SA try to use to query the VM?
>>> - What if the state of the crashed VM stops the SA from being able to
>>> attach properly (ie both processes hang)?
>>> - What if it the SA also crashes, will it launch a third VM then a
>>> fourth etc?
>>>
>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>
>>> Thanks,
>>> David
>>>
>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>> |
>>>> |Hi, all
>>>>
>>>> I would like to have your review for
>>>>
>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>
>>>>
>>>> Description: When JVM crashed, we also want to check the application
>>>> class files especially we got core file from customers. The
>>>> aftermath analysis will benefit from all loaded java classes
>>>> available. In this change, spawn another process running SA to do
>>>> the job when JVM crashes, this way also avoid further messing up
>>>> with the error report which already in signal handler.
>>>>
>>>> Note: The test has done with following two bugs worked around:
>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>> and integrated by Kevin Walls soon)
>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such
>>>> function "__has__" (Not know when it will be integrated)
>>>> That is, without those two fixed, the jars of loaded classes
>>>> will not be successfully dumped.
>>>> Also, on MacOS it requires security access permission to attach
>>>> to another process, so omit doing so. To get loaded jar file s, with
>>>> core file available (on all platforms), one can (only after this
>>>> change) do
>>>>
>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>
>>>>
>>>> Thanks
>>>> Yumin
>>>> |
>> |
>> |
> |
>
> |
|
|
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130812/f0a0215b/attachment.html
From yumin.qi at oracle.com Mon Aug 12 16:47:21 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Mon, 12 Aug 2013 16:47:21 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <52096C58.6000304@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com> <52095712.4080404@oracle.com>
<008b01ce97ae$583efdf0$08bcf9d0$@oracle.com>
<52096C58.6000304@oracle.com>
Message-ID: <52097409.60700@oracle.com>
Ioi,
On 8/12/2013 4:14 PM, Ioi Lam wrote:
> |Yumin,||
> ||
> ||If I understand correctly, the reason of dumping the classes in a
> separate process using SA is to avoid crashing (in case the system
> dictionary is corrupt).||
> ||
> |
|Yes.|
> |||But you're already exec'ing SA as the very last step of writing to
> hs_err. Maybe instead of exec SA, just dump the system dict using C
> code within the crashing process (SystemDictionary::print()). ||
> ||
> ||If the sys dict is corrupt you will encounter a secondary crash
> here, but that's OK, because ||hs_err_pid*.log already has ||all the
> information that we used to have, so you are not making it any worse.
> It may actually be helpful because now you know for sure that the sys
> dict is corrupt. This is one piece of information that we didn't have.
>
> Also, if the sys dict is corrupt, I doubt SA can produce more
> meaningful data than |||SystemDictionary::print()|. Instead, it may be
> better to have a |
> |||||SystemDictionary::print_safely() function that makes more error
> checking|| so it can better handle a partially corrupted sys dict.
>
> |
|SA will throw exception on encounter corrupted data in sys dictionary.
Let me think about your suggestion which I think is a good way to make
it work.
Thanks
Yumin
|
> |- Ioi
> ||
> ||
> ||Since you're doing the dump of classes as the very last step of to
> hs_err, instead of spawning another JVM ||
> ||On 08/12/2013 03:50 PM, Christian Tornqvist wrote:||
> |
>> |I agree with Coleen, this change should not be added to the JVM.
>>
>> Though I'd like to have the tool to create this archive from a core/mdmp. If this is not already present in any of the j*-tools we might want to look into adding it, please work with the serviceability team to determine where this would be best suited.
>>
>> Thanks,
>> Christian
>>
>> -----Original Message-----
>> From: Coleen Phillimore [mailto:coleen.phillimore at oracle.com]
>> Sent: Monday, August 12, 2013 5:44 PM
>> To: Yumin Qi
>> Cc: Christian Tornqvist;serviceability-dev at openjdk.java.net serviceability-dev at openjdk.java.net; 'hotspot compiler'; 'David Holmes';hotspot-runtime-dev at openjdk.java.net
>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>
>>
>> Yumin,
>>
>> I don't think this change should be added to the JVM for the following reasons.
>>
>> 1. Error handling should only contain safe actions. We have concerns
>> that the SA is not that stable and would prevent getting a real core
>> file in many error situations. You couldn't have tested all error
>> situations because these are usually the things we don't know about.
>> You also mention that there are currently bugs preventing this feature from working in your first email.
>>
>> 2. I am not convinced that having a separate jar file with loaded classes (is it a list that SA generates?) would be collected by an error
>> reporter. If it's collected, I don't see how helpful it would be.
>> Also a customer may not want their classes disclosed in error reporting.
>>
>> 3. This doesn't seem important enough to include as a new feature in
>> jdk8 release, which is feature-complete. I don't see a customer
>> request for it.
>>
>> Coleen
>>
>> On 08/12/2013 01:00 PM, Yumin Qi wrote:
>> |
>>> |Chris, David
>>>
>>> Yes. This can be after crash with core file, but some time no core
>>> file generated (also if the error could not repeat, we will never got
>>> information again), so dumping target process is also a choice. To
>>> avoid more confusion, this step was launched at the very last moment,
>>> just before raise abort to exit. At this moment, if client process
>>> could not attach to the target process it will exit right away.
>>>
>>> Answers to David:
>>>
>>> Note that the SA is only present in a full JDK, not a JRE (full or
>>> compact profile).
>>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>>
>>> - What mechanism will the SA try to use to query the VM?
>>>
>>> After successfully attached to target process, SA will read via proc
>>> APIs and vmStructs (named TYPEDB) to iterate memory of system
>>> dictionary read (only) from target process to dump class information.
>>>
>>> - What if the state of the crashed VM stops the SA from being able to
>>> attach properly (ie both processes hang)?
>>>
>>> That should be an attaching API problem. We haven't watched such
>>> case happened so far.
>>>
>>> - What if it the SA also crashes, will it launch a third VM then a
>>> fourth etc?
>>>
>>> Definitely don't want to see this happened in a chain. The solution
>>> may use a property such as
>>> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
>>> SA process, at launching call, check if the property set, if set, do
>>> not fork. When SA process died, it will generate core file first, note
>>> the target process still waiting for its exit, so when target exit,
>>> the core file (if both use default core as name) will be override by
>>> target. The SA process will only leave a hs_err_pid*.log file. (? read
>>> such property in handler is possible?)
>>>
>>> Also what is the nature of this dump? How big is it? Where will it go?
>>> The jars includes *app.jar and *boot.jar, the later usually can be
>>> ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent.
>>> The app.jar will contain all classes by customer, so we can do
>>> whatever we can to the jar.
>>>
>>>
>>> Thanks
>>> Yumin
>>>
>>>
>>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>>> |
>>>> |Hi Yumin,
>>>>
>>>> The idea is to do as little as possible in the VM error handler,
>>>> since we've crashed for some reason we don't know what state the
>>>> process is in and we have to be extremely careful in when we're
>>>> gathering the information. This seems like a step that is risky for
>>>> all of the reasons David mentioned below.
>>>>
>>>> It's also information that can easily be extracted post-mortem from
>>>> the core/mdmp using the method you described for OSX, so gathering
>>>> this at the time of a crash seems like an unnecessary risk.
>>>>
>>>> Thanks,
>>>> Christian
>>>>
>>>> -----Original Message-----
>>>> From:hotspot-compiler-dev-bounces at openjdk.java.net
>>>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of
>>>> David Holmes
>>>> Sent: Monday, August 12, 2013 1:56 AM
>>>> To: Yumin Qi
>>>> Cc: hotspot compiler;hotspot-runtime-dev at openjdk.java.net
>>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>>
>>>> Hi Yumin,
>>>>
>>>> Note that the SA is only present in a full JDK, not a JRE (full or
>>>> compact profile).
>>>>
>>>> I have quite a few concerns with this:
>>>>
>>>> We already do a lot of things that are not valid to be done from a
>>>> signal handling context but this really takes that to an extreme.
>>>> Doing fork-exec from a signal handler seems like a recipe for
>>>> disaster (Note the existing onError facility is typically used for
>>>> synchronous failures.)
>>>>
>>>> The idea of launching a second VM to try and query a VM that has
>>>> crashed also seems somewhat problematic:
>>>> - What mechanism will the SA try to use to query the VM?
>>>> - What if the state of the crashed VM stops the SA from being able to
>>>> attach properly (ie both processes hang)?
>>>> - What if it the SA also crashes, will it launch a third VM then a
>>>> fourth etc?
>>>>
>>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>>
>>>> Thanks,
>>>> David
>>>>
>>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>>> |
>>>>> |Hi, all
>>>>>
>>>>> I would like to have your review for
>>>>>
>>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>>
>>>>>
>>>>> Description: When JVM crashed, we also want to check the application
>>>>> class files especially we got core file from customers. The
>>>>> aftermath analysis will benefit from all loaded java classes
>>>>> available. In this change, spawn another process running SA to do
>>>>> the job when JVM crashes, this way also avoid further messing up
>>>>> with the error report which already in signal handler.
>>>>>
>>>>> Note: The test has done with following two bugs worked around:
>>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>>> and integrated by Kevin Walls soon)
>>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such
>>>>> function "__has__" (Not know when it will be integrated)
>>>>> That is, without those two fixed, the jars of loaded classes
>>>>> will not be successfully dumped.
>>>>> Also, on MacOS it requires security access permission to attach
>>>>> to another process, so omit doing so. To get loaded jar file s, with
>>>>> core file available (on all platforms), one can (only after this
>>>>> change) do
>>>>>
>>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>>
>>>>>
>>>>> Thanks
>>>>> Yumin
>>>>> |
>>> |
>>> |
>> |
>>
>> |
> |
> |
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130812/76e0c955/attachment-0001.html
From matthew.e.briggs at gmail.com Mon Aug 12 17:40:57 2013
From: matthew.e.briggs at gmail.com (Matthew Briggs)
Date: Mon, 12 Aug 2013 20:40:57 -0400
Subject: [PATCH] Improve Windows Minidump File Specification
In-Reply-To:
References:
<51F5EE00.4070704@oracle.com>
Message-ID:
David,
Just a quick follow up to let you know that I received confirmation
that my OCA has been processed. If there's anything else I can do to
help move my feature request/patch forward, please let me know.
Thanks,
Matt
On Mon, Jul 29, 2013 at 11:02 PM, Matthew Briggs
wrote:
> Hello David,
>
> Thank you very much for the follow up. Per your response, I've:
>
> - Signed the Oracle Contributor Agreement and emailed a scanned image
> of my completed form to oracle-ca_us at oracle.com
>
> - For tracking purposes, I've created a new feature request in the Bug
> Database (http://bugs.sun.com/bugdatabase/). The Bug ID is 9005569.
>
> - I realized my original patch posting didn't address some
> alternatives I had considered, so I added some information about that
> to the feature request as well.
>
> Thanks again!
> Matt
>
> On Mon, Jul 29, 2013 at 12:22 AM, David Holmes wrote:
>> Hi Matthew,
>>
>> Welcome!
>>
>> The contribution process is described here:
>>
>> http://openjdk.java.net/contribute/
>>
>> First you need to sign the OCA:
>>
>> http://www.oracle.com/technetwork/oca-405177.pdf
>>
>> Meanwhile someone will hopefully be able to review this and sponsor it for
>> you if deemed suitable.
>>
>> Thanks,
>> David
>>
>>
>> On 29/07/2013 1:50 AM, Matthew Briggs wrote:
>>>
>>> Hello,
>>>
>>> In running a Java application in a Windows Service context, minidump
>>> files have proven helpful in diagnosing crashes due to faulty native
>>> code (invoked through JNI). In production contexts I'm familiar with,
>>> these minidumps are often not produced, though, due to a combination of
>>> configuration and limitations in the JVM's minidump location choices.
>>> Specifically, the JVM only allows for minidump files to be created in
>>> the working directory of the Windows Service process. A typical
>>> production deployment runs the Windows Service under the limited NETWORK
>>> SERVICE account, which in particular cannot write to its working
>>> directory (usually located under C:\Program Files).
>>>
>>> The included patch establishes a new -XX:MinidumpFile JVM option, in the
>>> spirit of the existing -XX:ErrorFile option. The handling code for the
>>> latter is adapted to maintain similar structure and functionality. A
>>> Windows minidump file may thus be specified by a user (including support
>>> for %p syntax), falling back to a default filename targeted in the
>>> process working directory and then an OS temporary directory.
>>>
>>> I've manually tested the patch using a simple Java application that
>>> intentionally causes an access violation through JNI invocation of
>>> native code. I've tested explicit user specification of
>>> -XX:MinidumpFile, with and without %p, along with the two fallback cases.
>>>
>>> This is my first interaction with the OpenJDK community, so I apologize
>>> in advance if I've failed to follow proper patch submission guidelines
>>> and procedures. I'm eager to learn more about how the community
>>> operates, and to hear if this patch in particular is of interest. Any
>>> feedback is appreciated.
>>>
>>> Thanks,
>>> Matt
>>>
>>> diff -r 9d7b55c8a0c4 src/os/windows/vm/os_windows.cpp
>>> --- a/src/os/windows/vm/os_windows.cppThu Jul 25 03:18:31 2013 -0700
>>> +++ b/src/os/windows/vm/os_windows.cppSun Jul 28 14:50:32 2013 +0100
>>>
>>> @@ -934,6 +934,55 @@
>>> }
>>> }
>>> +/** Expand a pattern into a buffer starting at pos and create a file
>>> using constructed path */
>>> +static HANDLE expand_and_create(const char* pattern, char* buf, size_t
>>> buflen, size_t pos) {
>>> + HANDLE file = INVALID_HANDLE_VALUE;
>>> + if (Arguments::copy_expand_pid(pattern, strlen(pattern), &buf[pos],
>>> buflen - pos)) {
>>> +file = CreateFile(buf, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
>>>
>>> FILE_ATTRIBUTE_NORMAL, NULL);
>>> + }
>>> + return file;
>>> +}
>>> +
>>> +/**
>>> + * Construct file name for a minidump file and return it's file handle.
>>> + * Name and location depends on pattern, default_pattern params and
>>> access
>>> + * permissions.
>>> + */
>>> +static HANDLE prepare_minidump_file(const char* pattern, const char*
>>> default_pattern, char* buf, size_t buflen) {
>>> + HANDLE file = INVALID_HANDLE_VALUE;
>>> +
>>> + // If possible, use specified pattern to construct file name
>>> + if (pattern != NULL) {
>>> + file = expand_and_create(pattern, buf, buflen, 0);
>>> + }
>>> +
>>> + // Either user didn't specify, or the user's location failed,
>>> + // so use the default name in the current directory
>>> + if (file == INVALID_HANDLE_VALUE) {
>>> + const char* cwd = os::get_current_directory(buf, buflen);
>>> + if (cwd != NULL) {
>>> + size_t pos = strlen(cwd);
>>> + int fsep_len = jio_snprintf(&buf[pos], buflen-pos, "%s",
>>> os::file_separator());
>>> + pos += fsep_len;
>>> + if (fsep_len > 0) {
>>> + file = expand_and_create(default_pattern, buf, buflen, pos);
>>> + }
>>> + }
>>> + }
>>> +
>>> + // try temp directory if it exists.
>>> + if (file == INVALID_HANDLE_VALUE) {
>>> + const char* tmpdir = os::get_temp_directory();
>>> + if (tmpdir != NULL && strlen(tmpdir) > 0) {
>>> + int pos = jio_snprintf(buf, buflen, "%s%s", tmpdir,
>>> os::file_separator());
>>> + if (pos > 0) {
>>> + file = expand_and_create(default_pattern, buf, buflen, pos);
>>> + }
>>> + }
>>> + }
>>> +
>>> + return file;
>>> +}
>>> static BOOL (WINAPI *_MiniDumpWriteDump) ( HANDLE, DWORD, HANDLE,
>>> MINIDUMP_TYPE, PMINIDUMP_EXCEPTION_INFORMATION,
>>>
>>> PMINIDUMP_USER_STREAM_INFORMATION, PMINIDUMP_CALLBACK_INFORMATION);
>>> @@ -948,7 +997,6 @@
>>> DWORD processId = GetCurrentProcessId();
>>> HANDLE dumpFile;
>>> MINIDUMP_TYPE dumpType;
>>> - static const char* cwd;
>>> // Default is to always create dump for debug builds, on product
>>> builds only dump on server versions of Windows.
>>> #ifndef ASSERT
>>> @@ -994,10 +1042,7 @@
>>> MiniDumpWithUnloadedModules);
>>> #endif
>>> - cwd = get_current_directory(NULL, 0);
>>> - jio_snprintf(buffer, bufferSize, "%s\\hs_err_pid%u.mdmp",cwd,
>>> current_process_id());
>>> - dumpFile = CreateFile(buffer, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
>>> FILE_ATTRIBUTE_NORMAL, NULL);
>>> -
>>> + dumpFile = prepare_minidump_file(MinidumpFile, "hs_err_pid%p.mdmp",
>>> buffer, bufferSize);
>>> if (dumpFile == INVALID_HANDLE_VALUE) {
>>> VMError::report_coredump_status("Failed to create file for
>>> dumping", false);
>>> return;
>>> diff -r 9d7b55c8a0c4 src/share/vm/runtime/globals.hpp
>>> --- a/src/share/vm/runtime/globals.hppThu Jul 25 03:18:31 2013 -0700
>>> +++ b/src/share/vm/runtime/globals.hppSun Jul 28 14:50:32 2013 +0100
>>>
>>> @@ -825,6 +825,10 @@
>>> product(bool, CreateMinidumpOnCrash, false,
>>> \
>>> "Create minidump on VM fatal error")
>>> \
>>>
>>> \
>>> + product(ccstr, MinidumpFile, NULL,
>>> \
>>> + "If a minidump is created, save to this file"
>>> \
>>> + "[default: ./hs_err_pid%p.mdmp] (%p replaced with pid)")
>>> \
>>> +
>>> \
>>> product_pd(bool, UseOSErrorReporting,
>>> \
>>> "Let VM fatal error propagate to the OS (ie. WER on
>>> Windows)") \
>>>
>>> \
>>>
>>
From coleen.phillimore at oracle.com Mon Aug 12 18:09:50 2013
From: coleen.phillimore at oracle.com (coleen.phillimore at oracle.com)
Date: Tue, 13 Aug 2013 01:09:50 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8009728:
nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
Message-ID: <20130813010952.E526B487E9@hg.openjdk.java.net>
Changeset: 85147f28faba
Author: coleenp
Date: 2013-08-12 17:24 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/85147f28faba
8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
Summary: ActiveMethodOopsCache was used to keep track of old versions of some methods that are cached in Universe but is buggy with permgen removal and not needed anymore
Reviewed-by: sspitsyn, dcubed, mseledtsov
! src/share/vm/memory/universe.cpp
! src/share/vm/memory/universe.hpp
! src/share/vm/oops/method.cpp
! src/share/vm/prims/jvmtiRedefineClasses.cpp
! test/runtime/RedefineObject/Agent.java
! test/runtime/RedefineObject/TestRedefineObject.java
+ test/runtime/RedefineObject/WalkThroughInvoke.java
From christian.thalinger at oracle.com Mon Aug 12 18:12:03 2013
From: christian.thalinger at oracle.com (Christian Thalinger)
Date: Mon, 12 Aug 2013 18:12:03 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <52095712.4080404@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com> <52095712.4080404@oracle.com>
Message-ID: <033D0E0C-963F-4272-ABF1-028F4935F4C9@oracle.com>
On Aug 12, 2013, at 2:43 PM, Coleen Phillimore wrote:
>
> Yumin,
>
> I don't think this change should be added to the JVM for the following reasons.
This change is something that I (kind of) requested from Yumin since it would help to reproduce crashes in the compilers. Getting replay data after the fact can be very tricky (given all the system library interactions or a broken SA; see below).
>
> 1. Error handling should only contain safe actions. We have concerns that the SA is not that stable
?which is a problem, I agree. To make it more stable we need to use it so we can detect problems early.
Having the SA dump data when we crash in the compiler can be one of these usages. The SA logic would be exercised during our internal testing and could be fixed before the release. Right now the situation is we see a customer crash, we want to run the SA and notice that it's broken. That's too late.
> and would prevent getting a real core file in many error situations. You couldn't have tested all error situations because these are usually the things we don't know about. You also mention that there are currently bugs preventing this feature from working in your first email.
>
> 2. I am not convinced that having a separate jar file with loaded classes (is it a list that SA generates?) would be collected by an error reporter. If it's collected, I don't see how helpful it would be.
As mentioned above, it's required to replay compilations.
> Also a customer may not want their classes disclosed in error reporting.
They don't have to if they don't want to.
-- Chris
>
> 3. This doesn't seem important enough to include as a new feature in jdk8 release, which is feature-complete. I don't see a customer request for it.
>
> Coleen
>
> On 08/12/2013 01:00 PM, Yumin Qi wrote:
>> Chris, David
>>
>> Yes. This can be after crash with core file, but some time no core file generated (also if the error could not repeat, we will never got information again), so dumping target process is also a choice. To avoid more confusion, this step was launched at the very last moment, just before raise abort to exit. At this moment, if client process could not attach to the target process it will exit right away.
>>
>> Answers to David:
>>
>> Note that the SA is only present in a full JDK, not a JRE (full or compact profile).
>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>
>> - What mechanism will the SA try to use to query the VM?
>>
>> After successfully attached to target process, SA will read via proc APIs and vmStructs (named TYPEDB) to iterate memory of system dictionary read (only) from target process to dump class information.
>>
>> - What if the state of the crashed VM stops the SA from being able to attach properly (ie both processes hang)?
>>
>> That should be an attaching API problem. We haven't watched such case happened so far.
>>
>> - What if it the SA also crashes, will it launch a third VM then a fourth etc?
>>
>> Definitely don't want to see this happened in a chain. The solution may use a property such as sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into SA process, at launching call, check if the property set, if set, do not fork. When SA process died, it will generate core file first, note the target process still waiting for its exit, so when target exit, the core file (if both use default core as name) will be override by target. The SA process will only leave a hs_err_pid*.log file. (? read such property in handler is possible?)
>>
>> Also what is the nature of this dump? How big is it? Where will it go?
>> The jars includes *app.jar and *boot.jar, the later usually can be ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent. The app.jar will contain all classes by customer, so we can do whatever we can to the jar.
>>
>>
>> Thanks
>> Yumin
>>
>>
>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>>> Hi Yumin,
>>>
>>> The idea is to do as little as possible in the VM error handler, since we've crashed for some reason we don't know what state the process is in and we have to be extremely careful in when we're gathering the information. This seems like a step that is risky for all of the reasons David mentioned below.
>>>
>>> It's also information that can easily be extracted post-mortem from the core/mdmp using the method you described for OSX, so gathering this at the time of a crash seems like an unnecessary risk.
>>>
>>> Thanks,
>>> Christian
>>>
>>> -----Original Message-----
>>> From: hotspot-compiler-dev-bounces at openjdk.java.net [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of David Holmes
>>> Sent: Monday, August 12, 2013 1:56 AM
>>> To: Yumin Qi
>>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>
>>> Hi Yumin,
>>>
>>> Note that the SA is only present in a full JDK, not a JRE (full or compact profile).
>>>
>>> I have quite a few concerns with this:
>>>
>>> We already do a lot of things that are not valid to be done from a signal handling context but this really takes that to an extreme. Doing fork-exec from a signal handler seems like a recipe for disaster (Note the existing onError facility is typically used for synchronous failures.)
>>>
>>> The idea of launching a second VM to try and query a VM that has crashed also seems somewhat problematic:
>>> - What mechanism will the SA try to use to query the VM?
>>> - What if the state of the crashed VM stops the SA from being able to attach properly (ie both processes hang)?
>>> - What if it the SA also crashes, will it launch a third VM then a fourth etc?
>>>
>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>
>>> Thanks,
>>> David
>>>
>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>>> Hi, all
>>>>
>>>> I would like to have your review for
>>>>
>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>
>>>>
>>>> Description: When JVM crashed, we also want to check the application
>>>> class files especially we got core file from customers. The aftermath
>>>> analysis will benefit from all loaded java classes available. In this
>>>> change, spawn another process running SA to do the job when JVM
>>>> crashes, this way also avoid further messing up with the error report
>>>> which already in signal handler.
>>>>
>>>> Note: The test has done with following two bugs worked around:
>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>> and integrated by Kevin Walls soon)
>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such function
>>>> "__has__" (Not know when it will be integrated)
>>>> That is, without those two fixed, the jars of loaded classes will
>>>> not be successfully dumped.
>>>> Also, on MacOS it requires security access permission to attach to
>>>> another process, so omit doing so. To get loaded jar file s, with core
>>>> file available (on all platforms), one can (only after this
>>>> change) do
>>>>
>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>
>>>>
>>>> Thanks
>>>> Yumin
>>
>
From yumin.qi at oracle.com Mon Aug 12 20:43:54 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Mon, 12 Aug 2013 20:43:54 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <52095712.4080404@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com> <52095712.4080404@oracle.com>
Message-ID: <5209AB7A.8090503@oracle.com>
Coleen,
Chris Thalinger already answered some of your concerns. For jar file
which dumped in this change, compiler replay has added functions to SA
to dump out replay jars against core file. Since customer is the one
wants us to fix problems in VM, the disclosure of such jar to us should
be OK I think, any way if we have core file, we already have the loaded
classes.
This should mainly be focused on dump jars as possible at the last
stage of error reporter. I chose using SA since with c++ to implement
same functionality I have to use zip file operation to do so, which is
not a fit at such condition, but in SA the same operation ready for use.
The only case we could not get jar files is no core file available, in
such case, this change will supply an alternate.
Looks this need more discussion for further decision.
Thanks
Yumin
On 8/12/2013 2:43 PM, Coleen Phillimore wrote:
>
> Yumin,
>
> I don't think this change should be added to the JVM for the following
> reasons.
>
> 1. Error handling should only contain safe actions. We have concerns
> that the SA is not that stable and would prevent getting a real core
> file in many error situations. You couldn't have tested all error
> situations because these are usually the things we don't know about.
> You also mention that there are currently bugs preventing this feature
> from working in your first email.
>
> 2. I am not convinced that having a separate jar file with loaded
> classes (is it a list that SA generates?) would be collected by an
> error reporter. If it's collected, I don't see how helpful it would
> be. Also a customer may not want their classes disclosed in error
> reporting.
>
> 3. This doesn't seem important enough to include as a new feature in
> jdk8 release, which is feature-complete. I don't see a customer
> request for it.
>
> Coleen
>
> On 08/12/2013 01:00 PM, Yumin Qi wrote:
>> Chris, David
>>
>> Yes. This can be after crash with core file, but some time no core
>> file generated (also if the error could not repeat, we will never got
>> information again), so dumping target process is also a choice. To
>> avoid more confusion, this step was launched at the very last moment,
>> just before raise abort to exit. At this moment, if client process
>> could not attach to the target process it will exit right away.
>>
>> Answers to David:
>>
>> Note that the SA is only present in a full JDK, not a JRE (full or
>> compact profile).
>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>
>> - What mechanism will the SA try to use to query the VM?
>>
>> After successfully attached to target process, SA will read via
>> proc APIs and vmStructs (named TYPEDB) to iterate memory of system
>> dictionary read (only) from target process to dump class information.
>>
>> - What if the state of the crashed VM stops the SA from being able to
>> attach properly (ie both processes hang)?
>>
>> That should be an attaching API problem. We haven't watched such
>> case happened so far.
>>
>> - What if it the SA also crashes, will it launch a third VM then a
>> fourth etc?
>>
>> Definitely don't want to see this happened in a chain. The solution
>> may use a property such as
>> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
>> SA process, at launching call, check if the property set, if set, do
>> not fork. When SA process died, it will generate core file first,
>> note the target process still waiting for its exit, so when target
>> exit, the core file (if both use default core as name) will be
>> override by target. The SA process will only leave a hs_err_pid*.log
>> file. (? read such property in handler is possible?)
>>
>> Also what is the nature of this dump? How big is it? Where will it go?
>> The jars includes *app.jar and *boot.jar, the later usually can be
>> ignored (rt.jar etc system jars) unless it's rewritten by JVMTI
>> agent. The app.jar will contain all classes by customer, so we can do
>> whatever we can to the jar.
>>
>>
>> Thanks
>> Yumin
>>
>>
>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>>> Hi Yumin,
>>>
>>> The idea is to do as little as possible in the VM error handler,
>>> since we've crashed for some reason we don't know what state the
>>> process is in and we have to be extremely careful in when we're
>>> gathering the information. This seems like a step that is risky for
>>> all of the reasons David mentioned below.
>>>
>>> It's also information that can easily be extracted post-mortem from
>>> the core/mdmp using the method you described for OSX, so gathering
>>> this at the time of a crash seems like an unnecessary risk.
>>>
>>> Thanks,
>>> Christian
>>>
>>> -----Original Message-----
>>> From: hotspot-compiler-dev-bounces at openjdk.java.net
>>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of
>>> David Holmes
>>> Sent: Monday, August 12, 2013 1:56 AM
>>> To: Yumin Qi
>>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>
>>> Hi Yumin,
>>>
>>> Note that the SA is only present in a full JDK, not a JRE (full or
>>> compact profile).
>>>
>>> I have quite a few concerns with this:
>>>
>>> We already do a lot of things that are not valid to be done from a
>>> signal handling context but this really takes that to an extreme.
>>> Doing fork-exec from a signal handler seems like a recipe for
>>> disaster (Note the existing onError facility is typically used for
>>> synchronous failures.)
>>>
>>> The idea of launching a second VM to try and query a VM that has
>>> crashed also seems somewhat problematic:
>>> - What mechanism will the SA try to use to query the VM?
>>> - What if the state of the crashed VM stops the SA from being able
>>> to attach properly (ie both processes hang)?
>>> - What if it the SA also crashes, will it launch a third VM then a
>>> fourth etc?
>>>
>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>
>>> Thanks,
>>> David
>>>
>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>>> Hi, all
>>>>
>>>> I would like to have your review for
>>>>
>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>
>>>>
>>>> Description: When JVM crashed, we also want to check the application
>>>> class files especially we got core file from customers. The aftermath
>>>> analysis will benefit from all loaded java classes available. In this
>>>> change, spawn another process running SA to do the job when JVM
>>>> crashes, this way also avoid further messing up with the error report
>>>> which already in signal handler.
>>>>
>>>> Note: The test has done with following two bugs worked around:
>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>> and integrated by Kevin Walls soon)
>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such function
>>>> "__has__" (Not know when it will be integrated)
>>>> That is, without those two fixed, the jars of loaded classes will
>>>> not be successfully dumped.
>>>> Also, on MacOS it requires security access permission to attach to
>>>> another process, so omit doing so. To get loaded jar file s, with core
>>>> file available (on all platforms), one can (only after this
>>>> change) do
>>>>
>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>
>>>>
>>>> Thanks
>>>> Yumin
>>
>
From christian.tornqvist at oracle.com Mon Aug 12 22:17:57 2013
From: christian.tornqvist at oracle.com (Christian Tornqvist)
Date: Tue, 13 Aug 2013 01:17:57 -0400
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <033D0E0C-963F-4272-ABF1-028F4935F4C9@oracle.com>
References: <52081FF6.4040205@oracle.com>
<5208790D.9010309@oracle.com> <00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com> <520914A1.8050905@oracle.com>
<52095712.4080404@oracle.com>
<033D0E0C-963F-4272-ABF1-028F4935F4C9@oracle.com>
Message-ID: <00a301ce97e4$7b2fc930$718f5b90$@oracle.com>
Hi Chris,
>The SA logic would be exercised during our internal testing and could be
fixed before the release. Right now the situation is we see a >customer
crash, we want to run the SA and notice that it's broken. That's too late.
This is an issue with our current testing of the SA. This should be
addressed by making sure our test works and covers the functionality of the
SA, not by making the JVM dependent on the SA.
Thanks,
Christian
-----Original Message-----
From: hotspot-runtime-dev-bounces at openjdk.java.net
[mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of Christian
Thalinger
Sent: Monday, August 12, 2013 9:12 PM
To: Coleen Phillimore
Cc: serviceability-dev at openjdk.java.net serviceability-dev at openjdk.java.net;
'hotspot compiler'; hotspot-runtime-dev at openjdk.java.net; 'David Holmes'
Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
On Aug 12, 2013, at 2:43 PM, Coleen Phillimore
wrote:
>
> Yumin,
>
> I don't think this change should be added to the JVM for the following
reasons.
This change is something that I (kind of) requested from Yumin since it
would help to reproduce crashes in the compilers. Getting replay data after
the fact can be very tricky (given all the system library interactions or a
broken SA; see below).
>
> 1. Error handling should only contain safe actions. We have concerns
that the SA is not that stable
.which is a problem, I agree. To make it more stable we need to use it so
we can detect problems early.
Having the SA dump data when we crash in the compiler can be one of these
usages. The SA logic would be exercised during our internal testing and
could be fixed before the release. Right now the situation is we see a
customer crash, we want to run the SA and notice that it's broken. That's
too late.
> and would prevent getting a real core file in many error situations. You
couldn't have tested all error situations because these are usually the
things we don't know about. You also mention that there are currently bugs
preventing this feature from working in your first email.
>
> 2. I am not convinced that having a separate jar file with loaded classes
(is it a list that SA generates?) would be collected by an error reporter.
If it's collected, I don't see how helpful it would be.
As mentioned above, it's required to replay compilations.
> Also a customer may not want their classes disclosed in error reporting.
They don't have to if they don't want to.
-- Chris
>
> 3. This doesn't seem important enough to include as a new feature in jdk8
release, which is feature-complete. I don't see a customer request for it.
>
> Coleen
>
> On 08/12/2013 01:00 PM, Yumin Qi wrote:
>> Chris, David
>>
>> Yes. This can be after crash with core file, but some time no core file
generated (also if the error could not repeat, we will never got information
again), so dumping target process is also a choice. To avoid more
confusion, this step was launched at the very last moment, just before raise
abort to exit. At this moment, if client process could not attach to the
target process it will exit right away.
>>
>> Answers to David:
>>
>> Note that the SA is only present in a full JDK, not a JRE (full or
compact profile).
>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>
>> - What mechanism will the SA try to use to query the VM?
>>
>> After successfully attached to target process, SA will read via proc
APIs and vmStructs (named TYPEDB) to iterate memory of system dictionary
read (only) from target process to dump class information.
>>
>> - What if the state of the crashed VM stops the SA from being able to
attach properly (ie both processes hang)?
>>
>> That should be an attaching API problem. We haven't watched such case
happened so far.
>>
>> - What if it the SA also crashes, will it launch a third VM then a fourth
etc?
>>
>> Definitely don't want to see this happened in a chain. The solution
>> may use a property such as
>> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
>> SA process, at launching call, check if the property set, if set, do
>> not fork. When SA process died, it will generate core file first,
>> note the target process still waiting for its exit, so when target
>> exit, the core file (if both use default core as name) will be
>> override by target. The SA process will only leave a hs_err_pid*.log
>> file. (? read such property in handler is possible?)
>>
>> Also what is the nature of this dump? How big is it? Where will it go?
>> The jars includes *app.jar and *boot.jar, the later usually can be
ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent. The
app.jar will contain all classes by customer, so we can do whatever we can
to the jar.
>>
>>
>> Thanks
>> Yumin
>>
>>
>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>>> Hi Yumin,
>>>
>>> The idea is to do as little as possible in the VM error handler, since
we've crashed for some reason we don't know what state the process is in and
we have to be extremely careful in when we're gathering the information.
This seems like a step that is risky for all of the reasons David mentioned
below.
>>>
>>> It's also information that can easily be extracted post-mortem from the
core/mdmp using the method you described for OSX, so gathering this at the
time of a crash seems like an unnecessary risk.
>>>
>>> Thanks,
>>> Christian
>>>
>>> -----Original Message-----
>>> From: hotspot-compiler-dev-bounces at openjdk.java.net
>>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of
>>> David Holmes
>>> Sent: Monday, August 12, 2013 1:56 AM
>>> To: Yumin Qi
>>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>
>>> Hi Yumin,
>>>
>>> Note that the SA is only present in a full JDK, not a JRE (full or
compact profile).
>>>
>>> I have quite a few concerns with this:
>>>
>>> We already do a lot of things that are not valid to be done from a
>>> signal handling context but this really takes that to an extreme.
>>> Doing fork-exec from a signal handler seems like a recipe for
>>> disaster (Note the existing onError facility is typically used for
>>> synchronous failures.)
>>>
>>> The idea of launching a second VM to try and query a VM that has crashed
also seems somewhat problematic:
>>> - What mechanism will the SA try to use to query the VM?
>>> - What if the state of the crashed VM stops the SA from being able to
attach properly (ie both processes hang)?
>>> - What if it the SA also crashes, will it launch a third VM then a
fourth etc?
>>>
>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>
>>> Thanks,
>>> David
>>>
>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>>> Hi, all
>>>>
>>>> I would like to have your review for
>>>>
>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>
>>>>
>>>> Description: When JVM crashed, we also want to check the
>>>> application class files especially we got core file from customers.
>>>> The aftermath analysis will benefit from all loaded java classes
>>>> available. In this change, spawn another process running SA to do
>>>> the job when JVM crashes, this way also avoid further messing up
>>>> with the error report which already in signal handler.
>>>>
>>>> Note: The test has done with following two bugs worked around:
>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>> and integrated by Kevin Walls soon)
>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such
>>>> function "__has__" (Not know when it will be integrated)
>>>> That is, without those two fixed, the jars of loaded classes
>>>> will not be successfully dumped.
>>>> Also, on MacOS it requires security access permission to attach
>>>> to another process, so omit doing so. To get loaded jar file s,
>>>> with core file available (on all platforms), one can (only after
>>>> this
>>>> change) do
>>>>
>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>
>>>>
>>>> Thanks
>>>> Yumin
>>
>
From calvin.cheung at oracle.com Mon Aug 12 23:19:46 2013
From: calvin.cheung at oracle.com (Calvin Cheung)
Date: Mon, 12 Aug 2013 23:19:46 -0700
Subject: RFR(S) 8020675: Trying to print to a pdf file with PDFill
PDF&Image Writer 10.0 Build 4
In-Reply-To: <52087561.4000409@oracle.com>
References: <5202E595.3090608@oracle.com> <5202F8AA.3000105@oracle.com>
<5202FF4C.3020705@oracle.com> <5203DEB1.9080808@oracle.com>
<5203E8D7.107@oracle.com> <52040B08.8020401@oracle.com>
<52040D1E.9000101@oracle.com> <520425BD.6090605@oracle.com>
<52056910.8010005@oracle.com> <52087561.4000409@oracle.com>
Message-ID: <5209D002.9090604@oracle.com>
Hi David,
I cloned the hotspot repo corresponding to 7u25 b15 and debugged a bit
more and found that the error was thrown at a very early stage within
the init_globals() called from create_vm(). Below is the call stack:
jvm.dll!ClassLoader::create_class_path_entry(char * path, stat st,
ClassPathEntry * * new_entry, bool lazy) Line 508 C++
jvm.dll!LazyClassPathEntry::resolve_entry() Line 303 + 0x24
bytes C++
jvm.dll!LazyClassPathEntry::open_stream(const char * name) Line
322 + 0x8 bytes C++
jvm.dll!ClassLoader::load_classfile(Symbol * h_name, Thread *
__the_thread__) Line 898 + 0x17 bytes C++
jvm.dll!SystemDictionary::load_instance_class(Symbol * class_name,
Handle class_loader, Thread * __the_thread__) Line 1362 + 0x14 bytes C++
jvm.dll!SystemDictionary::resolve_instance_class_or_null(Symbol * name,
Handle class_loader, Handle protection_domain, Thread * __the_thread__)
Line 758 + 0x18 bytes C++
jvm.dll!SystemDictionary::resolve_or_null(Symbol * class_name,
Handle class_loader, Handle protection_domain, Thread * __the_thread__)
Line 206 + 0x15 bytes C++
jvm.dll!SystemDictionary::resolve_or_null(Symbol * class_name,
Thread * __the_thread__) Line 211 + 0x23 bytes C++
jvm.dll!SystemDictionary::initialize_wk_klass(SystemDictionary::WKID id,
int init_opt, Thread * __the_thread__) Line 1935 + 0xd bytes C++
jvm.dll!SystemDictionary::initialize_wk_klasses_until(SystemDictionary::WKID
limit_id, SystemDictionary::WKID & start_id, Thread * __the_thread__)
Line 1949 + 0x11 bytes C++
jvm.dll!SystemDictionary::initialize_preloaded_classes(Thread *
__the_thread__) Line 2011 + 0xf bytes C++
jvm.dll!SystemDictionary::initialize(Thread * __the_thread__)
Line 1904 + 0x9 bytes C++
jvm.dll!Universe::genesis(Thread * __the_thread__) Line 353 + 0x9
bytes C++
jvm.dll!universe2_init() Line 1009 + 0x9 bytes C++
> jvm.dll!init_globals() Line 114 C++
jvm.dll!Threads::create_vm(JavaVMInitArgs * args, bool *
canTryAgain) Line 3220 + 0x5 bytes C++
jvm.dll!JNI_CreateJavaVM(JavaVM_ * * vm, void * * penv, void *
args) Line 5133 + 0xd bytes C++
java.exe!011013bd()
[Frames below may be incorrect and/or missing, no symbols loaded
for java.exe]
java.exe!01101e2f()
java.exe!0110c807()
java.exe!0110a5a1()
java.exe!0110c845()
java.exe!0110a62b()
kernel32.dll!767633aa()
ntdll.dll!77739ef2()
ntdll.dll!77739ec5()
The error was thrown in the method below:
bool Exceptions::special_exception(Thread* thread, const char* file, int
line, Symbol* h_name, const char* message) {
// bootstrapping check
if (!Universe::is_fully_initialized()) {
if (h_name == NULL) {
// atleast an informative message.
vm_exit_during_initialization("Exception", message);
} else {
vm_exit_during_initialization(h_name, message);
<=====here
}
ShouldNotReachHere();
}
}
Note that it happened in the early stage during create_vm(), so the
(!Universe::is_fully_initialized()) was true.
The class it was trying to load was sun/misc/AtomicLongCSImpl which I
couldn't find in 7u25.
It was going through all the jar files in the bootclasspath and finally
got to the foo.jar which has 0-byte and got "error in opening jar file"
and then THROW_MSG().
So I think it's just a coincident in 7u25 where the correct error was
thrown.
In hs25, it didn't try to load the sun/misc/AtomicLongCSImpl class and
thus it didn't hit the "error in opening jar file" (for the foo.jar)
early until it passed the point when the vm is considered "initialized"
- is_init_completed() is true. So when THROW_MSG() was called when it
tried to load the class specified by the test case ("xxx"), it triggered
the fatal error in ~ExceptionMark(). Call stack up to the THROWN_MSG()
as follows:
jvm.dll!ClassLoader::create_class_path_entry(char * path, stat st,
ClassPathEntry * * new_entry, bool lazy) Line 508 C++
jvm.dll!LazyClassPathEntry::resolve_entry() Line 303 + 0x24
bytes C++
> jvm.dll!LazyClassPathEntry::open_stream(const char * name) Line
322 + 0x8 bytes C++
jvm.dll!ClassLoader::load_classfile(Symbol * h_name, Thread *
__the_thread__) Line 900 + 0x17 bytes C++
jvm.dll!SystemDictionary::load_instance_class(Symbol * class_name,
Handle class_loader, Thread * __the_thread__) Line 1301 + 0x14 bytes C++
jvm.dll!SystemDictionary::resolve_instance_class_or_null(Symbol * name,
Handle class_loader, Handle protection_domain, Thread * __the_thread__)
Line 779 + 0x18 bytes C++
jvm.dll!SystemDictionary::resolve_or_null(Symbol * class_name,
Handle class_loader, Handle protection_domain, Thread * __the_thread__)
Line 232 + 0x15 bytes C++
jvm.dll!SystemDictionary::resolve_or_null(Symbol * class_name,
Thread * __the_thread__) Line 237 + 0x23 bytes C++
jvm.dll!JVM_FindClassFromBootLoader(JNIEnv_ * env, const char *
name) Line 773 + 0x12 bytes C++
java.dll!69461e8c()
[Frames below may be incorrect and/or missing, no symbols loaded
for java.dll]
jvm.dll!GrowableArray::append(Metadata * const &
elem) Line 207 C++
jvm.dll!os::write_memory_serialize_page(JavaThread * thread) Line
375 + 0x11 bytes C++
jvm.dll!InterfaceSupport::serialize_memory(JavaThread * thread)
Line 40 + 0x9 bytes C++
I'll try using TRAPS all the way through the call chain probably
starting from ClassLoader::load_classfile().
thanks,
Calvin
On 8/11/2013 10:40 PM, David Holmes wrote:
> Hi Calvin,
>
> I don't think this works. As I said previously the expectations of
> this code with regard to Java exceptions seems to be that it doesn't
> expect them at all. If you are using TRAPS etc then it should be used
> all the way through the call chain. What we have now is this call
> sequence:
>
> void ClassLoader::initialize() {
> assert(_package_hash_table == NULL, "should have been initialized by
> now.");
> EXCEPTION_MARK;
> ...
> setup_bootstrap_search_path();
> -> update_class_path_entry_list(path, false);
> -> create_class_path_entry((char *)path, st, &new_entry,
> LazyBootClassLoader, CHECK);
>
> So if we return after the call to create_class_path_entry with an
> exception pending we will crash when we hit the EXCEPTION_MARK.
>
> It may be that the EXCEPTION_MARK needs replacing with an explicit
> exception check and a vm_exit_during_initialization, if this exception
> can readily occur at runtime. But further analysis of all this code
> needs to be undertaken.
>
> David
> -----
>
> On 10/08/2013 8:11 AM, Calvin Cheung wrote:
>> I've updated the webrev with 2 changes:
>> 1) added the TRAPS as the last parameter to the
>> create_class_path_entry() method;
>> 2) added a jtreg test case.
>>
>> http://cr.openjdk.java.net/~ccheung/8020675/webrev/
>>
>> Please take a look again.
>>
>> One more response in-lined below...
>>
>> On 8/8/2013 4:11 PM, Ioi Lam wrote:
>>> |I found one version of JDK7 that does not crash:||
>>> ||
>>> sc11136754 ~$
>>> /net/jre.us.oracle.com/p/v31/jdk/7/all/b24/binaries/linux-amd64/bin/java
>>>
>>> -showversion -cp . -Xbootclasspath/a:foo.jar test2
>>> Error occurred during initialization of VM
>>> java/lang/ClassNotFoundException: error in opening JAR file foo.jar
>>> |
>>
>> |I noticed that it started breaking in 7u40 b01; it was still working
>> with 7u25.
>> It may have something to do with when the set_init_completed() is
>> called:
>> ExceptionMark::~ExceptionMark() {
>> if (_thread->has_pending_exception()) {
>> Handle exception(_thread, _thread->pending_exception());
>> _thread->clear_pending_exception(); // Needed to avoid infinite
>> recursion
>> if (is_init_completed()) {
>> exception->print();
>> fatal("ExceptionMark destructor expects no pending exceptions");
>> } else {
>> vm_exit_during_initialization(exception);
>> }
>> }
>> }
>>
>> Before 7u40, I think the code path got to the "else" branch of
>> ~ExceptionMark() and we just printed an error and exit.
>>
>> set_init_completed() is only called from Threads::create_vm() and that
>> method didn't change much between 7u25 and 7u40 except for some NMT
>> initialization - MemTracker::bootstrap_single_thread(),
>> MemTracker::start(), etc. But I thought NMT isn't enabled by default?
>>
>> Debugging with hs25, the set_init_completed() always happened before
>> create_class_path_entry() and both calls were done within the same
>> thread - "vm startup".
>>
>> thanks,
>> Calvin
>>
>>
>> |
>>> |||
>>> ||
>>> ||- Ioi
>>> |
>>> On 08/08/2013 02:26 PM, Ioi Lam wrote:
>>>> |I found an official version that's closest to the Redhat version
>>>> (OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode). It still
>>>> crashes.||
>>>> ||
>>>> ||sc11136754 ~$
>>>> /java/re/jdk/6_25/latest/binaries/linux-amd64/bin/java -showversion
>>>> -cp . -Xbootclasspath/a:foo.jar test2||
>>>> ||java version "1.6.0_25"||
>>>> ||Java(TM) SE Runtime Environment (build 1.6.0_25-b06)||
>>>> ||Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)||
>>>> ||
>>>> ||java.lang.ClassNotFoundException ||
>>>> || - klass: 'java/lang/ClassNotFoundException'||
>>>> ||#||
>>>> ||# A fatal error has been detected by the Java Runtime Environment:||
>>>> ||#||
>>>> ||# Internal Error (exceptions.cpp:397), pid=29955,
>>>> tid=140608485558016||
>>>> ||# fatal error: ExceptionMark destructor expects no pending
>>>> exceptions||
>>>> ||#||
>>>> ||# JRE version: 6.0_25-b06||
>>>> ||# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.0-b11 mixed mode
>>>> linux-amd64 compressed oops)||
>>>> ||# An error report file with more information is saved as:||
>>>> ||# /home/iklam/hs_err_pid29955.log||
>>>> ||#||
>>>> ||# If you would like to submit a bug report, please visit:||
>>>> ||# http://java.sun.com/webapps/bugreport/crash.jsp||
>>>> ||#||
>>>> ||Aborted (core dumped)||
>>>> |
>>>> - Ioi
>>>>
>>>> On 08/08/2013 02:18 PM, David Holmes wrote:
>>>>> On 9/08/2013 4:52 AM, Ioi Lam wrote:
>>>>>> |Hmmm, I used JDK6 from OEL 6.0 (derived from RedHat), which
>>>>>> apparently
>>>>>> works differently
>>>>>> (better?) than the official JDK6 build. Maybe Redhat fixed this in
>>>>>> their
>>>>>> own repo??||
>>>>>
>>>>> Their hotspot version is much later - hs20 vs hs17
>>>>>
>>>>> David
>>>>> -----
>>>>>
>>>>>> ||
>>>>>> |
>>>>>> |==OEL6================================================
>>>>>> ||
>>>>>> ||sc11136754 ~$ uname -a||
>>>>>> ||Linux sc11136754 2.6.39-100.5.1.el6uek.x86_64 #1 SMP Tue Mar 6
>>>>>> 20:26:00 EST 2012 x86_64 x86_64 x86_64 GNU/Linux||
>>>>>> ||sc11136754 ~$ type java||
>>>>>> ||java is hashed (/usr/bin/java)||
>>>>>> ||sc11136754 ~$ java -version||
>>>>>> ||java version "1.6.0_22"||
>>>>>> ||OpenJDK Runtime Environment (IcedTea6 1.10.4)
>>>>>> (rhel-1.41.1.10.4.el6-x86_64)||
>>>>>> ||OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)||
>>>>>> ||sc11136754 ~$ java -showversion -cp . -Xbootclasspath/a:foo.jar
>>>>>> test2||
>>>>>> ||Error occurred during initialization of VM||
>>>>>> ||java/lang/ClassNotFoundException: error in opening JAR file
>>>>>> foo.jar||
>>>>>> ||
>>>>>> ==OFFICIAL============================================
>>>>>> ||
>>>>>> sc11136754 ~$ /java/re/jdk/6_22/latest/binaries/linux-amd64/bin/java
>>>>>> -showversion -cp . -Xbootclasspath/a:foo.jar test2
>>>>>> java version "1.6.0_22"
>>>>>> Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
>>>>>> Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
>>>>>>
>>>>>> #
>>>>>> # A fatal error has been detected by the Java Runtime Environment:
>>>>>> #
>>>>>> # Internal Error (exceptions.cpp:367), pid=25167,
>>>>>> tid=140510319580928
>>>>>> # Error: ExceptionMark destructor expects no pending exceptions
>>>>>> #
>>>>>> # JRE version: 6.0_22-b04
>>>>>> # Java VM: Java HotSpot(TM) 64-Bit Server VM (17.1-b03 mixed mode
>>>>>> linux-amd64 )
>>>>>> # An error report file with more information is saved as:
>>>>>> # /home/iklam/hs_err_pid25167.log
>>>>>> #
>>>>>> # If you would like to submit a bug report, please visit:
>>>>>> # http://java.sun.com/webapps/bugreport/crash.jsp
>>>>>> #
>>>>>> |
>>>>>> |======================================================
>>>>>> ||
>>>>>> ||- Ioi|
>>>>>>
>>>>>> On 08/08/2013 11:08 AM, Calvin Cheung wrote:
>>>>>>> Hi Ioi, David,
>>>>>>>
>>>>>>> On 8/7/2013 7:15 PM, Ioi Lam wrote:
>>>>>>>> |JDK6 seems to handle this better. I have written a simple
>>>>>>>> stand-alone test case that doesn't require truncating JAR files in
>>>>>>>> the JDK:||
>>>>>>>> ||
>>>>>>>> ||=========================||
>>>>>>>> ||/*||
>>>>>>>> ||javac test2.java||
>>>>>>>> ||rm -f foo.jar||
>>>>>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>>>>>> ||touch foo.jar||
>>>>>>>> ||java -cp . -Xbootclasspath/a:foo.jar test2||
>>>>>>>> ||*/||
>>>>>>>> ||
>>>>>>>> ||public class test2 {||
>>>>>>>> || public static void main(String args[]) {||
>>>>>>>> || try {||
>>>>>>>> ||System.out.println(Class.forName("javax.crypto.MacSpi"));||
>>>>>>>> ||System.out.println(Class.forName("xxx"));||
>>>>>>>> || } catch (Throwable t) {||
>>>>>>>> || t.printStackTrace();||
>>>>>>>> || }||
>>>>>>>> || }||
>>>>>>>> ||}||
>>>>>>>> ||=========================||
>>>>>>>> | |
>>>>>>>> ||JDK6 works fine, but JDK7 would crash with the second "java
>>>>>>>> -cp .
>>>>>>>> -Xbootclasspath/a:foo.jar test2" command.||
>>>>>>>> |
>>>>>>> |I saw crash with the latest 6 update release with both test cases.
>>>>>>> The crash seems to be at the same spot.
>>>>>>> |
>>>>>>>> |||
>>>>>>>> ||So I think the correct fix is to restore the JDK6 behavior (not
>>>>>>>> sure if it's already the same with your patch, but worth
>>>>>>>> checking),
>>>>>>>> and also add a new jtreg test into hotspot.||
>>>>>>>> |
>>>>>>> |I checked the jdk 6 code and those 3 methods which I changed look
>>>>>>> the
>>>>>>> same as jdk 8.
>>>>>>> Sure, I can add a jtreg test.
>>>>>>> |
>>>>>>>> |||
>>>>>>>> ||Thanks||
>>>>>>>> ||- Ioi||
>>>>>>>> ||
>>>>>>>> ||On 08/07/2013 06:47 PM, David Holmes wrote:||
>>>>>>>> |
>>>>>>>>> |Hi Calvin, ||
>>>>>>>>> | |
>>>>>>>>> ||It seems to me that this code has a general problem with
>>>>>>>>> exceptions. If exceptions can be posted then methods should be
>>>>>>>>> declared with a last parameter of TRAPS and called with a CHECK_
>>>>>>>>> macro. The way this code is written it does not seem to expect
>>>>>>>>> any
>>>>>>>>> exceptions to be possible. I would check with Karen on this. ||
>>>>>>>>> |
>>>>>>> |I was thinking about that but that would involves a bit more
>>>>>>> changes.
>>>>>>> I can give it a try.
>>>>>>> |
>>>>>>>>> || |
>>>>>>>>> ||This addition seems unused: ||
>>>>>>>>> | |
>>>>>>>>> ||+ Thread* THREAD = thread; ||
>>>>>>>>> |
>>>>>>> |It is required for the THROW_MSG().
>>>>>>> It won't be needed if the method is declared with TRAPS as the last
>>>>>>> parameter (I think).
>>>>>>>
>>>>>>> thanks,
>>>>>>> Calvin
>>>>>>> |
>>>>>>>>> || |
>>>>>>>>> ||Thumbs up on the removal of the EXCEPTION_MARKs prior to
>>>>>>>>> throwing
>>>>>>>>> exceptions - don't know what the thought process was there :) ||
>>>>>>>>> | |
>>>>>>>>> ||David ||
>>>>>>>>> | |
>>>>>>>>> ||On 8/08/2013 10:25 AM, Calvin Cheung wrote: ||
>>>>>>>>> |
>>>>>>>>>> |Please review this small fix for fixing a fatal error in ||
>>>>>>>>>> ||~ExceptionMark() triggered by ClassNotFoundException in ||
>>>>>>>>>> ||ClassLoader::create_class_path_entry(). I could reproduce
>>>>>>>>>> similar
>>>>>>>>>> crash ||
>>>>>>>>>> ||by trying to load a class from an empty jar which is in the ||
>>>>>>>>>> ||bootclasspath. The following program can trigger the crash if
>>>>>>>>>> the ||
>>>>>>>>>> ||jce.jar is invalid (e.g. 0-byte): ||
>>>>>>>>>> | |
>>>>>>>>>> ||public class TestForName { ||
>>>>>>>>>> || public static void main(String[] args) { ||
>>>>>>>>>> || try { ||
>>>>>>>>>> || Class cls =
>>>>>>>>>> Class.forName("javax.crypto.KeyGenerator"); ||
>>>>>>>>>> || System.out.println("Class = " +
>>>>>>>>>> cls.getName()); ||
>>>>>>>>>> || } catch (ClassNotFoundException cnfe) { ||
>>>>>>>>>> || cnfe.printStackTrace(); ||
>>>>>>>>>> || } ||
>>>>>>>>>> || } ||
>>>>>>>>>> ||} ||
>>>>>>>>>> | |
>>>>>>>>>> ||The fix also changes the assert() in
>>>>>>>>>> LazyClassPathEntry::resolve_entry() ||
>>>>>>>>>> ||to a NULL check. Otherwise, the assert() will fail under the
>>>>>>>>>> above test ||
>>>>>>>>>> ||scenario. ||
>>>>>>>>>> | |
>>>>>>>>>> ||With the fix, the following ClassNotFoundException will be
>>>>>>>>>> thrown ||
>>>>>>>>>> ||instead of a crash: ||
>>>>>>>>>> ||java.lang.ClassNotFoundException: javax.crypto.KeyGenerator ||
>>>>>>>>>> || at
>>>>>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:365) ||
>>>>>>>>>> || at
>>>>>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:354) ||
>>>>>>>>>> || at java.security.AccessController.doPrivileged(Native
>>>>>>>>>> Method) ||
>>>>>>>>>> || at
>>>>>>>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:353) ||
>>>>>>>>>> || at
>>>>>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:423) ||
>>>>>>>>>> || at
>>>>>>>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ||
>>>>>>>>>> || at
>>>>>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:356) ||
>>>>>>>>>> || at java.lang.Class.forName0(Native Method) ||
>>>>>>>>>> || at java.lang.Class.forName(Class.java:258) ||
>>>>>>>>>> || at TestForName.main(TestForName.java:6) ||
>>>>>>>>>> | |
>>>>>>>>>> ||webrev: http://cr.openjdk.java.net/~ccheung/8020675/webrev/ ||
>>>>>>>>>> | |
>>>>>>>>>> ||JBS: https://jbs.oracle.com/bugs/browse/JDK-8020675 ||
>>>>>>>>>> ||bug: http://bugs.sun.com/view_bug.do?bug_id=8020675 ||
>>>>>>>>>> | |
>>>>>>>>>> ||Tests: ||
>>>>>>>>>> || jprt, vm.quick.testlist ||
>>>>>>>>>> | |
>>>>>>>>>> ||thanks, ||
>>>>>>>>>> ||Calvin ||
>>>>>>>>>> | |
>>>>>>>>>> | |
>>>>>>>>>> |
>>>>>>>> |
>>>>>>>> |
>>>>>>>
>>>>>>
>>>>
>>>
>>
From thomas.schatzl at oracle.com Tue Aug 13 03:47:51 2013
From: thomas.schatzl at oracle.com (Thomas Schatzl)
Date: Tue, 13 Aug 2013 12:47:51 +0200
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
Message-ID: <1376390871.2693.23.camel@cirrus>
Hi,
On Fri, 2013-08-09 at 07:57 -0700, Harold Seigel wrote:
> Hi,
>
> Please review this latest version of the bug fix for 8003424:
> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
Some comments after briefly looking over the changes:
- in Universe::reserve_heap() at the beginning there is a now obsolete
comment about rounding class space size up due to being below the heap.
Thomas
From staffan.larsen at oracle.com Tue Aug 13 03:57:14 2013
From: staffan.larsen at oracle.com (Staffan Larsen)
Date: Tue, 13 Aug 2013 12:57:14 +0200
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <00a301ce97e4$7b2fc930$718f5b90$@oracle.com>
References: <52081FF6.4040205@oracle.com>
<5208790D.9010309@oracle.com> <00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com> <520914A1.8050905@oracle.com>
<52095712.4080404@oracle.com>
<033D0E0C-963F-4272-ABF1-028F4935F4C9@oracle.com>
<00a301ce97e4$7b2fc930$718f5b90$@oracle.com>
Message-ID: <5A25CD50-5BE7-484C-9C65-F7DF7095CAA2@oracle.com>
I agree with those skeptical to this change. The correct approach here is to make sure we get core files when crashes occur and then process that core with SA. And I agree that SA needs to be stabilized and could use a lot more testing.
/Staffan
On 13 aug 2013, at 07:17, Christian Tornqvist wrote:
> Hi Chris,
>
>> The SA logic would be exercised during our internal testing and could be
> fixed before the release. Right now the situation is we see a >customer
> crash, we want to run the SA and notice that it's broken. That's too late.
>
> This is an issue with our current testing of the SA. This should be
> addressed by making sure our test works and covers the functionality of the
> SA, not by making the JVM dependent on the SA.
>
> Thanks,
> Christian
>
> -----Original Message-----
> From: hotspot-runtime-dev-bounces at openjdk.java.net
> [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of Christian
> Thalinger
> Sent: Monday, August 12, 2013 9:12 PM
> To: Coleen Phillimore
> Cc: serviceability-dev at openjdk.java.net serviceability-dev at openjdk.java.net;
> 'hotspot compiler'; hotspot-runtime-dev at openjdk.java.net; 'David Holmes'
> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>
>
> On Aug 12, 2013, at 2:43 PM, Coleen Phillimore
> wrote:
>
>>
>> Yumin,
>>
>> I don't think this change should be added to the JVM for the following
> reasons.
>
> This change is something that I (kind of) requested from Yumin since it
> would help to reproduce crashes in the compilers. Getting replay data after
> the fact can be very tricky (given all the system library interactions or a
> broken SA; see below).
>
>>
>> 1. Error handling should only contain safe actions. We have concerns
> that the SA is not that stable
>
> .which is a problem, I agree. To make it more stable we need to use it so
> we can detect problems early.
>
> Having the SA dump data when we crash in the compiler can be one of these
> usages. The SA logic would be exercised during our internal testing and
> could be fixed before the release. Right now the situation is we see a
> customer crash, we want to run the SA and notice that it's broken. That's
> too late.
>
>> and would prevent getting a real core file in many error situations. You
> couldn't have tested all error situations because these are usually the
> things we don't know about. You also mention that there are currently bugs
> preventing this feature from working in your first email.
>>
>> 2. I am not convinced that having a separate jar file with loaded classes
> (is it a list that SA generates?) would be collected by an error reporter.
> If it's collected, I don't see how helpful it would be.
>
> As mentioned above, it's required to replay compilations.
>
>> Also a customer may not want their classes disclosed in error reporting.
>
> They don't have to if they don't want to.
>
> -- Chris
>
>>
>> 3. This doesn't seem important enough to include as a new feature in jdk8
> release, which is feature-complete. I don't see a customer request for it.
>>
>> Coleen
>>
>> On 08/12/2013 01:00 PM, Yumin Qi wrote:
>>> Chris, David
>>>
>>> Yes. This can be after crash with core file, but some time no core file
> generated (also if the error could not repeat, we will never got information
> again), so dumping target process is also a choice. To avoid more
> confusion, this step was launched at the very last moment, just before raise
> abort to exit. At this moment, if client process could not attach to the
> target process it will exit right away.
>>>
>>> Answers to David:
>>>
>>> Note that the SA is only present in a full JDK, not a JRE (full or
> compact profile).
>>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>>
>>> - What mechanism will the SA try to use to query the VM?
>>>
>>> After successfully attached to target process, SA will read via proc
> APIs and vmStructs (named TYPEDB) to iterate memory of system dictionary
> read (only) from target process to dump class information.
>>>
>>> - What if the state of the crashed VM stops the SA from being able to
> attach properly (ie both processes hang)?
>>>
>>> That should be an attaching API problem. We haven't watched such case
> happened so far.
>>>
>>> - What if it the SA also crashes, will it launch a third VM then a fourth
> etc?
>>>
>>> Definitely don't want to see this happened in a chain. The solution
>>> may use a property such as
>>> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
>>> SA process, at launching call, check if the property set, if set, do
>>> not fork. When SA process died, it will generate core file first,
>>> note the target process still waiting for its exit, so when target
>>> exit, the core file (if both use default core as name) will be
>>> override by target. The SA process will only leave a hs_err_pid*.log
>>> file. (? read such property in handler is possible?)
>>>
>>> Also what is the nature of this dump? How big is it? Where will it go?
>>> The jars includes *app.jar and *boot.jar, the later usually can be
> ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent. The
> app.jar will contain all classes by customer, so we can do whatever we can
> to the jar.
>>>
>>>
>>> Thanks
>>> Yumin
>>>
>>>
>>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>>>> Hi Yumin,
>>>>
>>>> The idea is to do as little as possible in the VM error handler, since
> we've crashed for some reason we don't know what state the process is in and
> we have to be extremely careful in when we're gathering the information.
> This seems like a step that is risky for all of the reasons David mentioned
> below.
>>>>
>>>> It's also information that can easily be extracted post-mortem from the
> core/mdmp using the method you described for OSX, so gathering this at the
> time of a crash seems like an unnecessary risk.
>>>>
>>>> Thanks,
>>>> Christian
>>>>
>>>> -----Original Message-----
>>>> From: hotspot-compiler-dev-bounces at openjdk.java.net
>>>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of
>>>> David Holmes
>>>> Sent: Monday, August 12, 2013 1:56 AM
>>>> To: Yumin Qi
>>>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>>
>>>> Hi Yumin,
>>>>
>>>> Note that the SA is only present in a full JDK, not a JRE (full or
> compact profile).
>>>>
>>>> I have quite a few concerns with this:
>>>>
>>>> We already do a lot of things that are not valid to be done from a
>>>> signal handling context but this really takes that to an extreme.
>>>> Doing fork-exec from a signal handler seems like a recipe for
>>>> disaster (Note the existing onError facility is typically used for
>>>> synchronous failures.)
>>>>
>>>> The idea of launching a second VM to try and query a VM that has crashed
> also seems somewhat problematic:
>>>> - What mechanism will the SA try to use to query the VM?
>>>> - What if the state of the crashed VM stops the SA from being able to
> attach properly (ie both processes hang)?
>>>> - What if it the SA also crashes, will it launch a third VM then a
> fourth etc?
>>>>
>>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>>
>>>> Thanks,
>>>> David
>>>>
>>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>>>> Hi, all
>>>>>
>>>>> I would like to have your review for
>>>>>
>>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>>
>>>>>
>>>>> Description: When JVM crashed, we also want to check the
>>>>> application class files especially we got core file from customers.
>>>>> The aftermath analysis will benefit from all loaded java classes
>>>>> available. In this change, spawn another process running SA to do
>>>>> the job when JVM crashes, this way also avoid further messing up
>>>>> with the error report which already in signal handler.
>>>>>
>>>>> Note: The test has done with following two bugs worked around:
>>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>>> and integrated by Kevin Walls soon)
>>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such
>>>>> function "__has__" (Not know when it will be integrated)
>>>>> That is, without those two fixed, the jars of loaded classes
>>>>> will not be successfully dumped.
>>>>> Also, on MacOS it requires security access permission to attach
>>>>> to another process, so omit doing so. To get loaded jar file s,
>>>>> with core file available (on all platforms), one can (only after
>>>>> this
>>>>> change) do
>>>>>
>>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>>
>>>>>
>>>>> Thanks
>>>>> Yumin
>>>
>>
>
>
From thomas.schatzl at oracle.com Tue Aug 13 05:47:53 2013
From: thomas.schatzl at oracle.com (Thomas Schatzl)
Date: Tue, 13 Aug 2013 14:47:53 +0200
Subject: RFR (XXS): 8022784 TaskQueue misses minimal documentation and
references for analysis
In-Reply-To: <5208CC05.5030508@oracle.com>
References: <1376297621.11034.4.camel@cirrus> <5208CC05.5030508@oracle.com>
Message-ID: <1376398073.2693.26.camel@cirrus>
On Mon, 2013-08-12 at 21:50 +1000, David Holmes wrote:
> Okay.
>
Thanks,
Thomas
From yumin.qi at oracle.com Tue Aug 13 09:04:28 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Tue, 13 Aug 2013 09:04:28 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <5A25CD50-5BE7-484C-9C65-F7DF7095CAA2@oracle.com>
References: <52081FF6.4040205@oracle.com>
<5208790D.9010309@oracle.com> <00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com> <520914A1.8050905@oracle.com>
<52095712.4080404@oracle.com>
<033D0E0C-963F-4272-ABF1-028F4935F4C9@oracle.com>
<00a301ce97e4$7b2fc930$718f5b90$@oracle.com>
<5A25CD50-5BE7-484C-9C65-F7DF7095CAA2@oracle.com>
Message-ID: <520A590C.6000901@oracle.com>
To summarize the discussion of this change:
1) Launching SA process at the last stage of error handling caused much
concern;
2) SA is not stable and need stabilization in future enhancement, which
looks like a long term task;
3) With SA and available core file, we can get jar files for aftermath
analysis but you need to become familiar with SA;
So I will closed this bug as 'no fix'.
BTW, when working on this bug, filed other two bugs which should be
fixed to dump classes.
Thanks for the inputs from all of you.
Yumin
On 8/13/2013 3:57 AM, Staffan Larsen wrote:
> I agree with those skeptical to this change. The correct approach here is to make sure we get core files when crashes occur and then process that core with SA. And I agree that SA needs to be stabilized and could use a lot more testing.
>
> /Staffan
>
> On 13 aug 2013, at 07:17, Christian Tornqvist wrote:
>
>> Hi Chris,
>>
>>> The SA logic would be exercised during our internal testing and could be
>> fixed before the release. Right now the situation is we see a >customer
>> crash, we want to run the SA and notice that it's broken. That's too late.
>>
>> This is an issue with our current testing of the SA. This should be
>> addressed by making sure our test works and covers the functionality of the
>> SA, not by making the JVM dependent on the SA.
>>
>> Thanks,
>> Christian
>>
>> -----Original Message-----
>> From: hotspot-runtime-dev-bounces at openjdk.java.net
>> [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of Christian
>> Thalinger
>> Sent: Monday, August 12, 2013 9:12 PM
>> To: Coleen Phillimore
>> Cc: serviceability-dev at openjdk.java.net serviceability-dev at openjdk.java.net;
>> 'hotspot compiler'; hotspot-runtime-dev at openjdk.java.net; 'David Holmes'
>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>
>>
>> On Aug 12, 2013, at 2:43 PM, Coleen Phillimore
>> wrote:
>>
>>> Yumin,
>>>
>>> I don't think this change should be added to the JVM for the following
>> reasons.
>>
>> This change is something that I (kind of) requested from Yumin since it
>> would help to reproduce crashes in the compilers. Getting replay data after
>> the fact can be very tricky (given all the system library interactions or a
>> broken SA; see below).
>>
>>> 1. Error handling should only contain safe actions. We have concerns
>> that the SA is not that stable
>>
>> .which is a problem, I agree. To make it more stable we need to use it so
>> we can detect problems early.
>>
>> Having the SA dump data when we crash in the compiler can be one of these
>> usages. The SA logic would be exercised during our internal testing and
>> could be fixed before the release. Right now the situation is we see a
>> customer crash, we want to run the SA and notice that it's broken. That's
>> too late.
>>
>>> and would prevent getting a real core file in many error situations. You
>> couldn't have tested all error situations because these are usually the
>> things we don't know about. You also mention that there are currently bugs
>> preventing this feature from working in your first email.
>>> 2. I am not convinced that having a separate jar file with loaded classes
>> (is it a list that SA generates?) would be collected by an error reporter.
>> If it's collected, I don't see how helpful it would be.
>>
>> As mentioned above, it's required to replay compilations.
>>
>>> Also a customer may not want their classes disclosed in error reporting.
>> They don't have to if they don't want to.
>>
>> -- Chris
>>
>>> 3. This doesn't seem important enough to include as a new feature in jdk8
>> release, which is feature-complete. I don't see a customer request for it.
>>> Coleen
>>>
>>> On 08/12/2013 01:00 PM, Yumin Qi wrote:
>>>> Chris, David
>>>>
>>>> Yes. This can be after crash with core file, but some time no core file
>> generated (also if the error could not repeat, we will never got information
>> again), so dumping target process is also a choice. To avoid more
>> confusion, this step was launched at the very last moment, just before raise
>> abort to exit. At this moment, if client process could not attach to the
>> target process it will exit right away.
>>>> Answers to David:
>>>>
>>>> Note that the SA is only present in a full JDK, not a JRE (full or
>> compact profile).
>>>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>>>
>>>> - What mechanism will the SA try to use to query the VM?
>>>>
>>>> After successfully attached to target process, SA will read via proc
>> APIs and vmStructs (named TYPEDB) to iterate memory of system dictionary
>> read (only) from target process to dump class information.
>>>> - What if the state of the crashed VM stops the SA from being able to
>> attach properly (ie both processes hang)?
>>>> That should be an attaching API problem. We haven't watched such case
>> happened so far.
>>>> - What if it the SA also crashes, will it launch a third VM then a fourth
>> etc?
>>>> Definitely don't want to see this happened in a chain. The solution
>>>> may use a property such as
>>>> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
>>>> SA process, at launching call, check if the property set, if set, do
>>>> not fork. When SA process died, it will generate core file first,
>>>> note the target process still waiting for its exit, so when target
>>>> exit, the core file (if both use default core as name) will be
>>>> override by target. The SA process will only leave a hs_err_pid*.log
>>>> file. (? read such property in handler is possible?)
>>>>
>>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>> The jars includes *app.jar and *boot.jar, the later usually can be
>> ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent. The
>> app.jar will contain all classes by customer, so we can do whatever we can
>> to the jar.
>>>>
>>>> Thanks
>>>> Yumin
>>>>
>>>>
>>>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>>>>> Hi Yumin,
>>>>>
>>>>> The idea is to do as little as possible in the VM error handler, since
>> we've crashed for some reason we don't know what state the process is in and
>> we have to be extremely careful in when we're gathering the information.
>> This seems like a step that is risky for all of the reasons David mentioned
>> below.
>>>>> It's also information that can easily be extracted post-mortem from the
>> core/mdmp using the method you described for OSX, so gathering this at the
>> time of a crash seems like an unnecessary risk.
>>>>> Thanks,
>>>>> Christian
>>>>>
>>>>> -----Original Message-----
>>>>> From: hotspot-compiler-dev-bounces at openjdk.java.net
>>>>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of
>>>>> David Holmes
>>>>> Sent: Monday, August 12, 2013 1:56 AM
>>>>> To: Yumin Qi
>>>>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>>>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>>>
>>>>> Hi Yumin,
>>>>>
>>>>> Note that the SA is only present in a full JDK, not a JRE (full or
>> compact profile).
>>>>> I have quite a few concerns with this:
>>>>>
>>>>> We already do a lot of things that are not valid to be done from a
>>>>> signal handling context but this really takes that to an extreme.
>>>>> Doing fork-exec from a signal handler seems like a recipe for
>>>>> disaster (Note the existing onError facility is typically used for
>>>>> synchronous failures.)
>>>>>
>>>>> The idea of launching a second VM to try and query a VM that has crashed
>> also seems somewhat problematic:
>>>>> - What mechanism will the SA try to use to query the VM?
>>>>> - What if the state of the crashed VM stops the SA from being able to
>> attach properly (ie both processes hang)?
>>>>> - What if it the SA also crashes, will it launch a third VM then a
>> fourth etc?
>>>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>>>
>>>>> Thanks,
>>>>> David
>>>>>
>>>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>>>>> Hi, all
>>>>>>
>>>>>> I would like to have your review for
>>>>>>
>>>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>>>
>>>>>>
>>>>>> Description: When JVM crashed, we also want to check the
>>>>>> application class files especially we got core file from customers.
>>>>>> The aftermath analysis will benefit from all loaded java classes
>>>>>> available. In this change, spawn another process running SA to do
>>>>>> the job when JVM crashes, this way also avoid further messing up
>>>>>> with the error report which already in signal handler.
>>>>>>
>>>>>> Note: The test has done with following two bugs worked around:
>>>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>>>> and integrated by Kevin Walls soon)
>>>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such
>>>>>> function "__has__" (Not know when it will be integrated)
>>>>>> That is, without those two fixed, the jars of loaded classes
>>>>>> will not be successfully dumped.
>>>>>> Also, on MacOS it requires security access permission to attach
>>>>>> to another process, so omit doing so. To get loaded jar file s,
>>>>>> with core file available (on all platforms), one can (only after
>>>>>> this
>>>>>> change) do
>>>>>>
>>>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>> Yumin
>>
From christian.thalinger at oracle.com Tue Aug 13 10:17:33 2013
From: christian.thalinger at oracle.com (Christian Thalinger)
Date: Tue, 13 Aug 2013 10:17:33 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <00a301ce97e4$7b2fc930$718f5b90$@oracle.com>
References: <52081FF6.4040205@oracle.com>
<5208790D.9010309@oracle.com> <00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com> <520914A1.8050905@oracle.com>
<52095712.4080404@oracle.com>
<033D0E0C-963F-4272-ABF1-028F4935F4C9@oracle.com>
<00a301ce97e4$7b2fc930$718f5b90$@oracle.com>
Message-ID: <04F964CD-1133-4C6D-9B17-184B43133E9C@oracle.com>
On Aug 12, 2013, at 10:17 PM, Christian Tornqvist wrote:
> Hi Chris,
>
>> The SA logic would be exercised during our internal testing and could be
> fixed before the release. Right now the situation is we see a >customer
> crash, we want to run the SA and notice that it's broken. That's too late.
>
> This is an issue with our current testing of the SA. This should be
> addressed by making sure our test works and covers the functionality of the
> SA
I hope someone is doing this?
-- Chris
> , not by making the JVM dependent on the SA.
>
> Thanks,
> Christian
>
> -----Original Message-----
> From: hotspot-runtime-dev-bounces at openjdk.java.net
> [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of Christian
> Thalinger
> Sent: Monday, August 12, 2013 9:12 PM
> To: Coleen Phillimore
> Cc: serviceability-dev at openjdk.java.net serviceability-dev at openjdk.java.net;
> 'hotspot compiler'; hotspot-runtime-dev at openjdk.java.net; 'David Holmes'
> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>
>
> On Aug 12, 2013, at 2:43 PM, Coleen Phillimore
> wrote:
>
>>
>> Yumin,
>>
>> I don't think this change should be added to the JVM for the following
> reasons.
>
> This change is something that I (kind of) requested from Yumin since it
> would help to reproduce crashes in the compilers. Getting replay data after
> the fact can be very tricky (given all the system library interactions or a
> broken SA; see below).
>
>>
>> 1. Error handling should only contain safe actions. We have concerns
> that the SA is not that stable
>
> .which is a problem, I agree. To make it more stable we need to use it so
> we can detect problems early.
>
> Having the SA dump data when we crash in the compiler can be one of these
> usages. The SA logic would be exercised during our internal testing and
> could be fixed before the release. Right now the situation is we see a
> customer crash, we want to run the SA and notice that it's broken. That's
> too late.
>
>> and would prevent getting a real core file in many error situations. You
> couldn't have tested all error situations because these are usually the
> things we don't know about. You also mention that there are currently bugs
> preventing this feature from working in your first email.
>>
>> 2. I am not convinced that having a separate jar file with loaded classes
> (is it a list that SA generates?) would be collected by an error reporter.
> If it's collected, I don't see how helpful it would be.
>
> As mentioned above, it's required to replay compilations.
>
>> Also a customer may not want their classes disclosed in error reporting.
>
> They don't have to if they don't want to.
>
> -- Chris
>
>>
>> 3. This doesn't seem important enough to include as a new feature in jdk8
> release, which is feature-complete. I don't see a customer request for it.
>>
>> Coleen
>>
>> On 08/12/2013 01:00 PM, Yumin Qi wrote:
>>> Chris, David
>>>
>>> Yes. This can be after crash with core file, but some time no core file
> generated (also if the error could not repeat, we will never got information
> again), so dumping target process is also a choice. To avoid more
> confusion, this step was launched at the very last moment, just before raise
> abort to exit. At this moment, if client process could not attach to the
> target process it will exit right away.
>>>
>>> Answers to David:
>>>
>>> Note that the SA is only present in a full JDK, not a JRE (full or
> compact profile).
>>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>>
>>> - What mechanism will the SA try to use to query the VM?
>>>
>>> After successfully attached to target process, SA will read via proc
> APIs and vmStructs (named TYPEDB) to iterate memory of system dictionary
> read (only) from target process to dump class information.
>>>
>>> - What if the state of the crashed VM stops the SA from being able to
> attach properly (ie both processes hang)?
>>>
>>> That should be an attaching API problem. We haven't watched such case
> happened so far.
>>>
>>> - What if it the SA also crashes, will it launch a third VM then a fourth
> etc?
>>>
>>> Definitely don't want to see this happened in a chain. The solution
>>> may use a property such as
>>> sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into
>>> SA process, at launching call, check if the property set, if set, do
>>> not fork. When SA process died, it will generate core file first,
>>> note the target process still waiting for its exit, so when target
>>> exit, the core file (if both use default core as name) will be
>>> override by target. The SA process will only leave a hs_err_pid*.log
>>> file. (? read such property in handler is possible?)
>>>
>>> Also what is the nature of this dump? How big is it? Where will it go?
>>> The jars includes *app.jar and *boot.jar, the later usually can be
> ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent. The
> app.jar will contain all classes by customer, so we can do whatever we can
> to the jar.
>>>
>>>
>>> Thanks
>>> Yumin
>>>
>>>
>>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>>>> Hi Yumin,
>>>>
>>>> The idea is to do as little as possible in the VM error handler, since
> we've crashed for some reason we don't know what state the process is in and
> we have to be extremely careful in when we're gathering the information.
> This seems like a step that is risky for all of the reasons David mentioned
> below.
>>>>
>>>> It's also information that can easily be extracted post-mortem from the
> core/mdmp using the method you described for OSX, so gathering this at the
> time of a crash seems like an unnecessary risk.
>>>>
>>>> Thanks,
>>>> Christian
>>>>
>>>> -----Original Message-----
>>>> From: hotspot-compiler-dev-bounces at openjdk.java.net
>>>> [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of
>>>> David Holmes
>>>> Sent: Monday, August 12, 2013 1:56 AM
>>>> To: Yumin Qi
>>>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>>
>>>> Hi Yumin,
>>>>
>>>> Note that the SA is only present in a full JDK, not a JRE (full or
> compact profile).
>>>>
>>>> I have quite a few concerns with this:
>>>>
>>>> We already do a lot of things that are not valid to be done from a
>>>> signal handling context but this really takes that to an extreme.
>>>> Doing fork-exec from a signal handler seems like a recipe for
>>>> disaster (Note the existing onError facility is typically used for
>>>> synchronous failures.)
>>>>
>>>> The idea of launching a second VM to try and query a VM that has crashed
> also seems somewhat problematic:
>>>> - What mechanism will the SA try to use to query the VM?
>>>> - What if the state of the crashed VM stops the SA from being able to
> attach properly (ie both processes hang)?
>>>> - What if it the SA also crashes, will it launch a third VM then a
> fourth etc?
>>>>
>>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>>
>>>> Thanks,
>>>> David
>>>>
>>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>>>> Hi, all
>>>>>
>>>>> I would like to have your review for
>>>>>
>>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>>
>>>>>
>>>>> Description: When JVM crashed, we also want to check the
>>>>> application class files especially we got core file from customers.
>>>>> The aftermath analysis will benefit from all loaded java classes
>>>>> available. In this change, spawn another process running SA to do
>>>>> the job when JVM crashes, this way also avoid further messing up
>>>>> with the error report which already in signal handler.
>>>>>
>>>>> Note: The test has done with following two bugs worked around:
>>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>>> and integrated by Kevin Walls soon)
>>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such
>>>>> function "__has__" (Not know when it will be integrated)
>>>>> That is, without those two fixed, the jars of loaded classes
>>>>> will not be successfully dumped.
>>>>> Also, on MacOS it requires security access permission to attach
>>>>> to another process, so omit doing so. To get loaded jar file s,
>>>>> with core file available (on all platforms), one can (only after
>>>>> this
>>>>> change) do
>>>>>
>>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>>
>>>>>
>>>>> Thanks
>>>>> Yumin
>>>
>>
>
>
From christian.thalinger at oracle.com Tue Aug 13 10:18:39 2013
From: christian.thalinger at oracle.com (Christian Thalinger)
Date: Tue, 13 Aug 2013 10:18:39 -0700
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <5209AB7A.8090503@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com> <52095712.4080404@oracle.com>
<5209AB7A.8090503@oracle.com>
Message-ID: <332BD6B0-650E-4C10-BCD6-443701DA1F79@oracle.com>
On Aug 12, 2013, at 8:43 PM, Yumin Qi wrote:
> Coleen,
>
> Chris Thalinger already answered some of your concerns. For jar file which dumped in this change, compiler replay has added functions to SA to dump out replay jars against core file. Since customer is the one wants us to fix problems in VM, the disclosure of such jar to us should be OK I think, any way if we have core file, we already have the loaded classes.
> This should mainly be focused on dump jars as possible at the last stage of error reporter. I chose using SA since with c++ to implement same functionality I have to use zip file operation to do so, which is not a fit at such condition, but in SA the same operation ready for use. The only case we could not get jar files is no core file available, in such case, this change will supply an alternate.
>
> Looks this need more discussion for further decision.
One more comment (just FTR): the class dumping should only happen when we crash in one of the compiler threads; not always.
-- Chris
>
> Thanks
> Yumin
>
>
> On 8/12/2013 2:43 PM, Coleen Phillimore wrote:
>>
>> Yumin,
>>
>> I don't think this change should be added to the JVM for the following reasons.
>>
>> 1. Error handling should only contain safe actions. We have concerns that the SA is not that stable and would prevent getting a real core file in many error situations. You couldn't have tested all error situations because these are usually the things we don't know about. You also mention that there are currently bugs preventing this feature from working in your first email.
>>
>> 2. I am not convinced that having a separate jar file with loaded classes (is it a list that SA generates?) would be collected by an error reporter. If it's collected, I don't see how helpful it would be. Also a customer may not want their classes disclosed in error reporting.
>>
>> 3. This doesn't seem important enough to include as a new feature in jdk8 release, which is feature-complete. I don't see a customer request for it.
>>
>> Coleen
>>
>> On 08/12/2013 01:00 PM, Yumin Qi wrote:
>>> Chris, David
>>>
>>> Yes. This can be after crash with core file, but some time no core file generated (also if the error could not repeat, we will never got information again), so dumping target process is also a choice. To avoid more confusion, this step was launched at the very last moment, just before raise abort to exit. At this moment, if client process could not attach to the target process it will exit right away.
>>>
>>> Answers to David:
>>>
>>> Note that the SA is only present in a full JDK, not a JRE (full or compact profile).
>>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>>
>>> - What mechanism will the SA try to use to query the VM?
>>>
>>> After successfully attached to target process, SA will read via proc APIs and vmStructs (named TYPEDB) to iterate memory of system dictionary read (only) from target process to dump class information.
>>>
>>> - What if the state of the crashed VM stops the SA from being able to attach properly (ie both processes hang)?
>>>
>>> That should be an attaching API problem. We haven't watched such case happened so far.
>>>
>>> - What if it the SA also crashes, will it launch a third VM then a fourth etc?
>>>
>>> Definitely don't want to see this happened in a chain. The solution may use a property such as sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into SA process, at launching call, check if the property set, if set, do not fork. When SA process died, it will generate core file first, note the target process still waiting for its exit, so when target exit, the core file (if both use default core as name) will be override by target. The SA process will only leave a hs_err_pid*.log file. (? read such property in handler is possible?)
>>>
>>> Also what is the nature of this dump? How big is it? Where will it go?
>>> The jars includes *app.jar and *boot.jar, the later usually can be ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent. The app.jar will contain all classes by customer, so we can do whatever we can to the jar.
>>>
>>>
>>> Thanks
>>> Yumin
>>>
>>>
>>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>>>> Hi Yumin,
>>>>
>>>> The idea is to do as little as possible in the VM error handler, since we've crashed for some reason we don't know what state the process is in and we have to be extremely careful in when we're gathering the information. This seems like a step that is risky for all of the reasons David mentioned below.
>>>>
>>>> It's also information that can easily be extracted post-mortem from the core/mdmp using the method you described for OSX, so gathering this at the time of a crash seems like an unnecessary risk.
>>>>
>>>> Thanks,
>>>> Christian
>>>>
>>>> -----Original Message-----
>>>> From: hotspot-compiler-dev-bounces at openjdk.java.net [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of David Holmes
>>>> Sent: Monday, August 12, 2013 1:56 AM
>>>> To: Yumin Qi
>>>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>>
>>>> Hi Yumin,
>>>>
>>>> Note that the SA is only present in a full JDK, not a JRE (full or compact profile).
>>>>
>>>> I have quite a few concerns with this:
>>>>
>>>> We already do a lot of things that are not valid to be done from a signal handling context but this really takes that to an extreme. Doing fork-exec from a signal handler seems like a recipe for disaster (Note the existing onError facility is typically used for synchronous failures.)
>>>>
>>>> The idea of launching a second VM to try and query a VM that has crashed also seems somewhat problematic:
>>>> - What mechanism will the SA try to use to query the VM?
>>>> - What if the state of the crashed VM stops the SA from being able to attach properly (ie both processes hang)?
>>>> - What if it the SA also crashes, will it launch a third VM then a fourth etc?
>>>>
>>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>>
>>>> Thanks,
>>>> David
>>>>
>>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>>>> Hi, all
>>>>>
>>>>> I would like to have your review for
>>>>>
>>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>>
>>>>>
>>>>> Description: When JVM crashed, we also want to check the application
>>>>> class files especially we got core file from customers. The aftermath
>>>>> analysis will benefit from all loaded java classes available. In this
>>>>> change, spawn another process running SA to do the job when JVM
>>>>> crashes, this way also avoid further messing up with the error report
>>>>> which already in signal handler.
>>>>>
>>>>> Note: The test has done with following two bugs worked around:
>>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>>> and integrated by Kevin Walls soon)
>>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such function
>>>>> "__has__" (Not know when it will be integrated)
>>>>> That is, without those two fixed, the jars of loaded classes will
>>>>> not be successfully dumped.
>>>>> Also, on MacOS it requires security access permission to attach to
>>>>> another process, so omit doing so. To get loaded jar file s, with core
>>>>> file available (on all platforms), one can (only after this
>>>>> change) do
>>>>>
>>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>>
>>>>>
>>>>> Thanks
>>>>> Yumin
>>>
>>
>
From harold.seigel at oracle.com Tue Aug 13 10:24:33 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Tue, 13 Aug 2013 13:24:33 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <1376390871.2693.23.camel@cirrus>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
<1376390871.2693.23.camel@cirrus>
Message-ID: <520A6BD1.2030503@oracle.com>
Hi Thomas,
Thanks! I removed the obsolete comment.
Harold
On 8/13/2013 6:47 AM, Thomas Schatzl wrote:
> Hi,
>
> On Fri, 2013-08-09 at 07:57 -0700, Harold Seigel wrote:
>> Hi,
>>
>> Please review this latest version of the bug fix for 8003424:
>> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
> Some comments after briefly looking over the changes:
>
> - in Universe::reserve_heap() at the beginning there is a now obsolete
> comment about rounding class space size up due to being below the heap.
>
> Thomas
>
>
>
From coleen.phillimore at oracle.com Tue Aug 13 10:41:47 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Tue, 13 Aug 2013 13:41:47 -0400
Subject: RFR: 8020962: dump loaded java classes when vm crash
In-Reply-To: <332BD6B0-650E-4C10-BCD6-443701DA1F79@oracle.com>
References: <52081FF6.4040205@oracle.com> <5208790D.9010309@oracle.com>
<00cc01ce975a$a3ea86b0$ebbf9410$@oracle.com>
<520914A1.8050905@oracle.com> <52095712.4080404@oracle.com>
<5209AB7A.8090503@oracle.com>
<332BD6B0-650E-4C10-BCD6-443701DA1F79@oracle.com>
Message-ID: <520A6FDB.6050609@oracle.com>
On 08/13/2013 01:18 PM, Christian Thalinger wrote:
> On Aug 12, 2013, at 8:43 PM, Yumin Qi wrote:
>
>> Coleen,
>>
>> Chris Thalinger already answered some of your concerns. For jar file which dumped in this change, compiler replay has added functions to SA to dump out replay jars against core file. Since customer is the one wants us to fix problems in VM, the disclosure of such jar to us should be OK I think, any way if we have core file, we already have the loaded classes.
>> This should mainly be focused on dump jars as possible at the last stage of error reporter. I chose using SA since with c++ to implement same functionality I have to use zip file operation to do so, which is not a fit at such condition, but in SA the same operation ready for use. The only case we could not get jar files is no core file available, in such case, this change will supply an alternate.
>>
>> Looks this need more discussion for further decision.
> One more comment (just FTR): the class dumping should only happen when we crash in one of the compiler threads; not always.
Do we have a running list of SA requirements that we can add this to the
list?
thanks,
Coleen
>
> -- Chris
>
>> Thanks
>> Yumin
>>
>>
>> On 8/12/2013 2:43 PM, Coleen Phillimore wrote:
>>> Yumin,
>>>
>>> I don't think this change should be added to the JVM for the following reasons.
>>>
>>> 1. Error handling should only contain safe actions. We have concerns that the SA is not that stable and would prevent getting a real core file in many error situations. You couldn't have tested all error situations because these are usually the things we don't know about. You also mention that there are currently bugs preventing this feature from working in your first email.
>>>
>>> 2. I am not convinced that having a separate jar file with loaded classes (is it a list that SA generates?) would be collected by an error reporter. If it's collected, I don't see how helpful it would be. Also a customer may not want their classes disclosed in error reporting.
>>>
>>> 3. This doesn't seem important enough to include as a new feature in jdk8 release, which is feature-complete. I don't see a customer request for it.
>>>
>>> Coleen
>>>
>>> On 08/12/2013 01:00 PM, Yumin Qi wrote:
>>>> Chris, David
>>>>
>>>> Yes. This can be after crash with core file, but some time no core file generated (also if the error could not repeat, we will never got information again), so dumping target process is also a choice. To avoid more confusion, this step was launched at the very last moment, just before raise abort to exit. At this moment, if client process could not attach to the target process it will exit right away.
>>>>
>>>> Answers to David:
>>>>
>>>> Note that the SA is only present in a full JDK, not a JRE (full or compact profile).
>>>> Yes, in code, if no sa-jdi.jar found, skip fork.
>>>>
>>>> - What mechanism will the SA try to use to query the VM?
>>>>
>>>> After successfully attached to target process, SA will read via proc APIs and vmStructs (named TYPEDB) to iterate memory of system dictionary read (only) from target process to dump class information.
>>>>
>>>> - What if the state of the crashed VM stops the SA from being able to attach properly (ie both processes hang)?
>>>>
>>>> That should be an attaching API problem. We haven't watched such case happened so far.
>>>>
>>>> - What if it the SA also crashes, will it launch a third VM then a fourth etc?
>>>>
>>>> Definitely don't want to see this happened in a chain. The solution may use a property such as sun.jvm.hotspot.DumpLoadedClasses.dumpingInProcess=true to pass into SA process, at launching call, check if the property set, if set, do not fork. When SA process died, it will generate core file first, note the target process still waiting for its exit, so when target exit, the core file (if both use default core as name) will be override by target. The SA process will only leave a hs_err_pid*.log file. (? read such property in handler is possible?)
>>>>
>>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>> The jars includes *app.jar and *boot.jar, the later usually can be ignored (rt.jar etc system jars) unless it's rewritten by JVMTI agent. The app.jar will contain all classes by customer, so we can do whatever we can to the jar.
>>>>
>>>>
>>>> Thanks
>>>> Yumin
>>>>
>>>>
>>>> On 8/12/2013 5:51 AM, Christian Tornqvist wrote:
>>>>> Hi Yumin,
>>>>>
>>>>> The idea is to do as little as possible in the VM error handler, since we've crashed for some reason we don't know what state the process is in and we have to be extremely careful in when we're gathering the information. This seems like a step that is risky for all of the reasons David mentioned below.
>>>>>
>>>>> It's also information that can easily be extracted post-mortem from the core/mdmp using the method you described for OSX, so gathering this at the time of a crash seems like an unnecessary risk.
>>>>>
>>>>> Thanks,
>>>>> Christian
>>>>>
>>>>> -----Original Message-----
>>>>> From: hotspot-compiler-dev-bounces at openjdk.java.net [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of David Holmes
>>>>> Sent: Monday, August 12, 2013 1:56 AM
>>>>> To: Yumin Qi
>>>>> Cc: hotspot compiler; hotspot-runtime-dev at openjdk.java.net
>>>>> Subject: Re: RFR: 8020962: dump loaded java classes when vm crash
>>>>>
>>>>> Hi Yumin,
>>>>>
>>>>> Note that the SA is only present in a full JDK, not a JRE (full or compact profile).
>>>>>
>>>>> I have quite a few concerns with this:
>>>>>
>>>>> We already do a lot of things that are not valid to be done from a signal handling context but this really takes that to an extreme. Doing fork-exec from a signal handler seems like a recipe for disaster (Note the existing onError facility is typically used for synchronous failures.)
>>>>>
>>>>> The idea of launching a second VM to try and query a VM that has crashed also seems somewhat problematic:
>>>>> - What mechanism will the SA try to use to query the VM?
>>>>> - What if the state of the crashed VM stops the SA from being able to attach properly (ie both processes hang)?
>>>>> - What if it the SA also crashes, will it launch a third VM then a fourth etc?
>>>>>
>>>>> Also what is the nature of this dump? How big is it? Where will it go?
>>>>>
>>>>> Thanks,
>>>>> David
>>>>>
>>>>> On 12/08/2013 9:36 AM, Yumin Qi wrote:
>>>>>> Hi, all
>>>>>>
>>>>>> I would like to have your review for
>>>>>>
>>>>>> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
>>>>>>
>>>>>>
>>>>>> Description: When JVM crashed, we also want to check the application
>>>>>> class files especially we got core file from customers. The aftermath
>>>>>> analysis will benefit from all loaded java classes available. In this
>>>>>> change, spawn another process running SA to do the job when JVM
>>>>>> crashes, this way also avoid further messing up with the error report
>>>>>> which already in signal handler.
>>>>>>
>>>>>> Note: The test has done with following two bugs worked around:
>>>>>> 8022655: ClassDump ignored jarStream setting (This will be fixed
>>>>>> and integrated by Kevin Walls soon)
>>>>>> 8011888: sa.js: TypeError: [object JSAdapter] has no such function
>>>>>> "__has__" (Not know when it will be integrated)
>>>>>> That is, without those two fixed, the jars of loaded classes will
>>>>>> not be successfully dumped.
>>>>>> Also, on MacOS it requires security access permission to attach to
>>>>>> another process, so omit doing so. To get loaded jar file s, with core
>>>>>> file available (on all platforms), one can (only after this
>>>>>> change) do
>>>>>>
>>>>>> $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
>>>>>> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>> Yumin
From tim.bell at oracle.com Tue Aug 13 12:49:51 2013
From: tim.bell at oracle.com (Tim Bell)
Date: Tue, 13 Aug 2013 12:49:51 -0700
Subject: RFR: 8019470 "Changes needed to compile JDK8 on MacOS with clang
compiler"
In-Reply-To: <51F0AD1D.1080907@oracle.com>
References: <51EF006D.3060805@oracle.com> <51EFBDC9.4070200@oracle.com>
<51EFC56C.6040304@oracle.com>
<51F059A3.3080403@oracle.com> <51F0AD1D.1080907@oracle.com>
Message-ID: <520A8DDF.9020206@oracle.com>
On 07/24/13 09:44 PM, David Holmes wrote:
> On 25/07/2013 8:48 AM, Tim Bell wrote:
>> Christian:
>>
>>> That's not true. I've added Mac OS X support with the same change.
>>
>> For building hotspot only, perhaps. I want to build the entire product,
>> start to finish, using clang.
>>
>> That's why I needed to touch these files:
>>
>> common/autoconf/hotspot-spec.gmk.in
>> common/autoconf/toolchain.m4
>> make/jprt.properties
>
> Yes but that doesn't explain the change now needed to os_bsd.cpp in
> hotspot.
I take it back. After syncing up with jdk8/master, the change to
os_bsd.cpp is not required, so I removed that. I believe the MAX_PATH
issues were resolved in an earlier fix.
New webrev (hotspot only):
http://cr.openjdk.java.net/~tbell/8019470/hotspot.01/
The change in make/bsd/makefiles/gcc.make is required to link the adlc
tool which is used early in the hotspot build.
Full webrev (OpenJDK):
http://cr.openjdk.java.net/~tbell/8019470/webrev.01/
Thanks in advance - we would like to get these changes checked in this week.
Tim
> David
> -----
>
>>
>> Tim
>>
>>
>> On 07/24/13 02:59 PM, Christian Thalinger wrote:
>>> On Jul 24, 2013, at 5:15 AM, Tim Bell wrote:
>>>
>>>> On 07/24/13 04:43 AM, David Holmes wrote:
>>>>> Hi Tim,
>>>>>
>>>>> On 24/07/2013 8:15 AM, Tim Bell wrote:
>>>>>> Hello everyone-
>>>>>>
>>>>>> This is a small set of changes to switch from gcc to clang when
>>>>>> building
>>>>> So we already added support for clang as the compiler for hotspot -
>>>>> is this just extending things to allow configure to select clang?
>>>> The earlier clang/hotspot activity was centered around Linux
>>>> x86/x86_64.
>>> That's not true. I've added Mac OS X support with the same change.
>>>
>>> -- Chris
>>>
>>>>>> on MacOS, and also enable building on MacOS 8.x
>>>>> Have we already updated all the JPRT queues to have 10.8 macs versus
>>>>> 10.7 ones?
>>>> Yes, all the queues have 10.8 Macs, which have been test-only up
>>>> until now.
>>>>
>>>>>> Here is the bug report:
>>>>>>
>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8019470
>>>>>>
>>>>>> Here are the webrevs:
>>>>>>
>>>>>> Hotspot only:
>>>>>>
>>>>>> http://cr.openjdk.java.net/~tbell/8019470/hotspot/webrev.00/
>>>>> src/os/bsd/vm/os_bsd.cpp
>>>>>
>>>>> Again I'm confused. We already allowed building via clang so why
>>>>> wasn't this change needed before?
>>>> This file is not used when building on Linux.
>>>>
>>>> Tim
>>>>
>>>>> Thanks,
>>>>> David
>>>>>
>>>>>> All of the changes:
>>>>>>
>>>>>> http://cr.openjdk.java.net/~tbell/8019470/webrev.00/
>>>>>
>>>>>> Thanks in advance.
>>>>>>
>>>>>> Tim
>>>>>>
>>
From tim.bell at oracle.com Tue Aug 13 15:00:50 2013
From: tim.bell at oracle.com (Tim Bell)
Date: Tue, 13 Aug 2013 15:00:50 -0700
Subject: RFR: 8019470 "Changes needed to compile JDK8 on MacOS with clang
compiler"
In-Reply-To: <520A8DDF.9020206@oracle.com>
References: <51EF006D.3060805@oracle.com> <51EFBDC9.4070200@oracle.com>
<51EFC56C.6040304@oracle.com>
<51F059A3.3080403@oracle.com> <51F0AD1D.1080907@oracle.com>
<520A8DDF.9020206@oracle.com>
Message-ID: <520AAC92.7090405@oracle.com>
I wrote:
> Thanks in advance - we would like to get these changes checked in this
> week.
Let me clarify this a bit - there are some bugs open against the
MacOS/clang hotspot build that need to be resolved before considering a
change-over to clang:
http://bugs.sun.com/view_bug.do?bug_id=8021954
http://bugs.sun.com/view_bug.do?bug_id=8022140
I would like to get the hotspot side of these changes checked in as soon
as possible (need a sponsor for this...):
http://cr.openjdk.java.net/~tbell/8019470/hotspot.01/
This change will do nothing unless USE_CLANG is defined to true. I'd
like to get the hotspot side ready early so it has time to meet up with
the next JDK8 promotion.
Thanks-
Tim
On 08/13/13 12:49 PM, Tim Bell wrote:
> On 07/24/13 09:44 PM, David Holmes wrote:
>> On 25/07/2013 8:48 AM, Tim Bell wrote:
>>> Christian:
>>>
>>>> That's not true. I've added Mac OS X support with the same change.
>>>
>>> For building hotspot only, perhaps. I want to build the entire
>>> product,
>>> start to finish, using clang.
>>>
>>> That's why I needed to touch these files:
>>>
>>> common/autoconf/hotspot-spec.gmk.in
>>> common/autoconf/toolchain.m4
>>> make/jprt.properties
>>
>> Yes but that doesn't explain the change now needed to os_bsd.cpp in
>> hotspot.
>
> I take it back. After syncing up with jdk8/master, the change to
> os_bsd.cpp is not required, so I removed that. I believe the MAX_PATH
> issues were resolved in an earlier fix.
>
> New webrev (hotspot only):
>
> http://cr.openjdk.java.net/~tbell/8019470/hotspot.01/
>
> The change in make/bsd/makefiles/gcc.make is required to link the adlc
> tool which is used early in the hotspot build.
>
> Full webrev (OpenJDK):
>
> http://cr.openjdk.java.net/~tbell/8019470/webrev.01/
>
>
> Thanks in advance - we would like to get these changes checked in this
> week.
>
> Tim
>
>
>> David
>> -----
>>
>>>
>>> Tim
>>>
>>>
>>> On 07/24/13 02:59 PM, Christian Thalinger wrote:
>>>> On Jul 24, 2013, at 5:15 AM, Tim Bell wrote:
>>>>
>>>>> On 07/24/13 04:43 AM, David Holmes wrote:
>>>>>> Hi Tim,
>>>>>>
>>>>>> On 24/07/2013 8:15 AM, Tim Bell wrote:
>>>>>>> Hello everyone-
>>>>>>>
>>>>>>> This is a small set of changes to switch from gcc to clang when
>>>>>>> building
>>>>>> So we already added support for clang as the compiler for hotspot -
>>>>>> is this just extending things to allow configure to select clang?
>>>>> The earlier clang/hotspot activity was centered around Linux
>>>>> x86/x86_64.
>>>> That's not true. I've added Mac OS X support with the same change.
>>>>
>>>> -- Chris
>>>>
>>>>>>> on MacOS, and also enable building on MacOS 8.x
>>>>>> Have we already updated all the JPRT queues to have 10.8 macs versus
>>>>>> 10.7 ones?
>>>>> Yes, all the queues have 10.8 Macs, which have been test-only up
>>>>> until now.
>>>>>
>>>>>>> Here is the bug report:
>>>>>>>
>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8019470
>>>>>>>
>>>>>>> Here are the webrevs:
>>>>>>>
>>>>>>> Hotspot only:
>>>>>>>
>>>>>>> http://cr.openjdk.java.net/~tbell/8019470/hotspot/webrev.00/
>>>>>> src/os/bsd/vm/os_bsd.cpp
>>>>>>
>>>>>> Again I'm confused. We already allowed building via clang so why
>>>>>> wasn't this change needed before?
>>>>> This file is not used when building on Linux.
>>>>>
>>>>> Tim
>>>>>
>>>>>> Thanks,
>>>>>> David
>>>>>>
>>>>>>> All of the changes:
>>>>>>>
>>>>>>> http://cr.openjdk.java.net/~tbell/8019470/webrev.00/
>>>>>>
>>>>>>> Thanks in advance.
>>>>>>>
>>>>>>> Tim
>>>>>>>
>>>
>
From ron.durbin at oracle.com Tue Aug 13 16:42:07 2013
From: ron.durbin at oracle.com (Ron Durbin)
Date: Tue, 13 Aug 2013 16:42:07 -0700 (PDT)
Subject: JDK-8005073 open code review, (round 0)
Message-ID: <095a82a5-052e-447a-96b5-86e146566366@default>
JDK-8005073 [TESTBUG] remove crufty '_g' support from HS tests
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8005073
Summary:
Remove all support and references to '_g' from all open test files.
OpenJDK URL: http://cr.openjdk.java.net/~rdurbin/8005073_open_webrev/
Testing so far has included:
JPRT all platforms
From daniel.daugherty at oracle.com Tue Aug 13 18:31:52 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Tue, 13 Aug 2013 19:31:52 -0600
Subject: JDK-8005073 open code review, (round 0)
In-Reply-To: <095a82a5-052e-447a-96b5-86e146566366@default>
References: <095a82a5-052e-447a-96b5-86e146566366@default>
Message-ID: <520ADE08.9010600@oracle.com>
On 8/13/13 5:42 PM, Ron Durbin wrote:
> JDK-8005073 [TESTBUG] remove crufty '_g' support from HS tests
>
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8005073
>
> Summary:
>
> Remove all support and references to '_g' from all open test files.
>
> OpenJDK URL: http://cr.openjdk.java.net/~rdurbin/8005073_open_webrev/
>
> Testing so far has included:
>
> JPRT all platforms
>
test/Makefile
No comments.
Thumbs up.
Dan
From christian.thalinger at oracle.com Tue Aug 13 21:18:34 2013
From: christian.thalinger at oracle.com (Christian Thalinger)
Date: Tue, 13 Aug 2013 21:18:34 -0700
Subject: RFR: 8019470 "Changes needed to compile JDK8 on MacOS with clang
compiler"
In-Reply-To: <520AAC92.7090405@oracle.com>
References: <51EF006D.3060805@oracle.com> <51EFBDC9.4070200@oracle.com>
<51EFC56C.6040304@oracle.com>
<51F059A3.3080403@oracle.com> <51F0AD1D.1080907@oracle.com>
<520A8DDF.9020206@oracle.com> <520AAC92.7090405@oracle.com>
Message-ID:
On Aug 13, 2013, at 3:00 PM, Tim Bell wrote:
> I wrote:
>
>> Thanks in advance - we would like to get these changes checked in this week.
>
> Let me clarify this a bit - there are some bugs open against the MacOS/clang hotspot build that need to be resolved before considering a change-over to clang:
>
> http://bugs.sun.com/view_bug.do?bug_id=8021954
> http://bugs.sun.com/view_bug.do?bug_id=8022140
>
> I would like to get the hotspot side of these changes checked in as soon as possible (need a sponsor for this...):
>
> http://cr.openjdk.java.net/~tbell/8019470/hotspot.01/
This looks good although I don't know why this is needed. I build HotSpot with clang daily and I never had a problem.
-- Chris
>
> This change will do nothing unless USE_CLANG is defined to true. I'd like to get the hotspot side ready early so it has time to meet up with the next JDK8 promotion.
>
> Thanks-
>
> Tim
>
> On 08/13/13 12:49 PM, Tim Bell wrote:
>> On 07/24/13 09:44 PM, David Holmes wrote:
>>> On 25/07/2013 8:48 AM, Tim Bell wrote:
>>>> Christian:
>>>>
>>>>> That's not true. I've added Mac OS X support with the same change.
>>>>
>>>> For building hotspot only, perhaps. I want to build the entire product,
>>>> start to finish, using clang.
>>>>
>>>> That's why I needed to touch these files:
>>>>
>>>> common/autoconf/hotspot-spec.gmk.in
>>>> common/autoconf/toolchain.m4
>>>> make/jprt.properties
>>>
>>> Yes but that doesn't explain the change now needed to os_bsd.cpp in hotspot.
>>
>> I take it back. After syncing up with jdk8/master, the change to os_bsd.cpp is not required, so I removed that. I believe the MAX_PATH issues were resolved in an earlier fix.
>>
>> New webrev (hotspot only):
>>
>> http://cr.openjdk.java.net/~tbell/8019470/hotspot.01/
>>
>> The change in make/bsd/makefiles/gcc.make is required to link the adlc tool which is used early in the hotspot build.
>>
>> Full webrev (OpenJDK):
>>
>> http://cr.openjdk.java.net/~tbell/8019470/webrev.01/
>>
>>
>> Thanks in advance - we would like to get these changes checked in this week.
>>
>> Tim
>>
>>
>>> David
>>> -----
>>>
>>>>
>>>> Tim
>>>>
>>>>
>>>> On 07/24/13 02:59 PM, Christian Thalinger wrote:
>>>>> On Jul 24, 2013, at 5:15 AM, Tim Bell wrote:
>>>>>
>>>>>> On 07/24/13 04:43 AM, David Holmes wrote:
>>>>>>> Hi Tim,
>>>>>>>
>>>>>>> On 24/07/2013 8:15 AM, Tim Bell wrote:
>>>>>>>> Hello everyone-
>>>>>>>>
>>>>>>>> This is a small set of changes to switch from gcc to clang when
>>>>>>>> building
>>>>>>> So we already added support for clang as the compiler for hotspot -
>>>>>>> is this just extending things to allow configure to select clang?
>>>>>> The earlier clang/hotspot activity was centered around Linux x86/x86_64.
>>>>> That's not true. I've added Mac OS X support with the same change.
>>>>>
>>>>> -- Chris
>>>>>
>>>>>>>> on MacOS, and also enable building on MacOS 8.x
>>>>>>> Have we already updated all the JPRT queues to have 10.8 macs versus
>>>>>>> 10.7 ones?
>>>>>> Yes, all the queues have 10.8 Macs, which have been test-only up
>>>>>> until now.
>>>>>>
>>>>>>>> Here is the bug report:
>>>>>>>>
>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8019470
>>>>>>>>
>>>>>>>> Here are the webrevs:
>>>>>>>>
>>>>>>>> Hotspot only:
>>>>>>>>
>>>>>>>> http://cr.openjdk.java.net/~tbell/8019470/hotspot/webrev.00/
>>>>>>> src/os/bsd/vm/os_bsd.cpp
>>>>>>>
>>>>>>> Again I'm confused. We already allowed building via clang so why
>>>>>>> wasn't this change needed before?
>>>>>> This file is not used when building on Linux.
>>>>>>
>>>>>> Tim
>>>>>>
>>>>>>> Thanks,
>>>>>>> David
>>>>>>>
>>>>>>>> All of the changes:
>>>>>>>>
>>>>>>>> http://cr.openjdk.java.net/~tbell/8019470/webrev.00/
>>>>>>>
>>>>>>>> Thanks in advance.
>>>>>>>>
>>>>>>>> Tim
>>>>>>>>
>>>>
>>
>
From mikael.gerdin at oracle.com Wed Aug 14 01:39:04 2013
From: mikael.gerdin at oracle.com (Mikael Gerdin)
Date: Wed, 14 Aug 2013 10:39:04 +0200
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
Message-ID: <520B4228.7000307@oracle.com>
Harold,
On 2013-08-09 16:57, Harold Seigel wrote:
> Hi,
>
> Please review this latest version of the bug fix for 8003424:
> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
>
>
> This new version includes the following changes:
>
> 1. macroAssembler_sparc.cpp
>
> a. Merged two versions of reinit_heapbase() into one.
>
> b. Improved decode_klass_not_null(src, dst) to not use G6 if shift == 0.
>
>
> 2. macroAssembler_x86.cpp
>
> a. Merged two versions of reinit_heapbase() into one.
>
> b. Improved encode_klass_not_null(src, dst) to not use R12.
>
> c. Replaced leaq with addq in decode_klass_not_null(src, dst).
>
>
> 3. Improved variable names in heap.cpp.
>
>
> 4. metaspace.cpp
>
> a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more
> understandable.
>
> b. Moved set_narrow_klass_base_and_shift() near
> can_use_cds_with_metaspace_addr().
>
> c. Changed unneeded conditional in initialize_class_space() into an
> assert.
>
>
> 5. arguments.cpp
>
> a. Fixed problem with -Xshare:dump and disabled compression.
>
> b. Moved UseCompressedKlassPointers code into new function:
> set_use_compressed_klass_ptrs().
>
> c. Fixed bug 8005933 that turned off CDS for -server even if
> -Xshare:auto was explicitly specified.
>
>
> 6. Increased default value of ClassMetaspaceSize to 1*G in globals.hpp.
>
>
> 7. Fixed indentation issues in metaspace.cpp and other modules.
The VM changes look good to me.
I have a question about the test CDSCompressedKPtrs.java
What RuntimeException do you expect and why is it ok that we can't use
the shared archive if you get such an exception?
I think at least a comment about why the test is supposed to pass even
if we can't use the shared archive.
/Mikael
>
>
> Thanks, Harold
>
> ----- Original Message -----
> From: harold.seigel at oracle.com
> To: coleen.phillimore at oracle.com
> Cc: hotspot-runtime-dev at openjdk.java.net
> Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
> CompressedOops
>
> The purpose of this assert is to verify that the two methods in the 'if'
> clause closed the map file and disabled UseSharedSpaces if they detected
> a problem when trying to use CDS.
>
> if (mapinfo->initialize() &&
> MetaspaceShared::map_shared_spaces(mapinfo)) {
> FileMapInfo::set_current_info(mapinfo);
> } else {
> assert(!mapinfo->is_open() && !UseSharedSpaces,
> "archive file not closed or shared spaces not disabled.");
> }
>
> ----- Original Message -----
> From: harold.seigel at oracle.com
> To: coleen.phillimore at oracle.com
> Cc: hotspot-runtime-dev at openjdk.java.net
> Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
> CompressedOops
>
> This is a bug that Stefan Karlsson also discovered. To fix it, I've
> changed the code to this:
>
> if (DumpSharedSpaces) {
> if (RequireSharedSpaces) {
> warning("cannot dump shared archive while using shared archive");
> }
> UseSharedSpaces = false;
> #ifdef _LP64
> if (!UseCompressedOops || !UseCompressedKlassPointers) {
> vm_exit_during_initialization(
> "Cannot dump shared archive when UseCompressedOops or
> UseCompressedKlassPointers is off.", NULL);
> }
>
> Harold
>
>
> ----- Original Message -----
> From: coleen.phillimore at oracle.com
> To: hotspot-runtime-dev at openjdk.java.net
> Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
> CompressedOops
>
>
> Yes, there should be a check for that too. Now I'll really let Harold
> answer.
>
> Thanks,
> Coleen
>
> On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
> > Coleen, Harold
> >
> > > The InstanceKlass has offsets to fields in the instance, and they
> > depend
> > > on both compressed oops and compressed klass pointers. So both
> > have to
> > > be on for the offsets to be valid.
> >
> > So there is dependency on UseCompressedOops and
> > UseCompressedKlassPointers flags during dump.
> >
> > Then why the check is done only for UseSharedSpaces and not for
> > DumpSharedSpaces?:
> >
> > if (DumpSharedSpaces) {
> > if (RequireSharedSpaces) {
> > warning("cannot dump shared archive while using shared archive");
> > }
> > UseSharedSpaces = false;
> > + #ifdef _LP64
> > + } else {
> > + // UseCompressedOops and UseCompressedKlassPointers must be on
> > for UseSharedSpaces.
> > + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> > + no_shared_spaces();
> > + }
> > + #endif
> > }
> >
> > Thanks,
> > Vladimir
> >
> > On 8/8/13 3:34 PM, Coleen Phillimore wrote:
> >>
> >> Hi Vladimir,
> >>
> >> I have a couple of answers and I'll let Harold answer the rest.
> >>
> >> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
> >>> On 8/7/13 8:34 AM, harold seigel wrote:
> >>>> Hi Vladimir,
> >>>>
> >>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
> >>>>> Harold,
> >>>>>
> >>>>> Note, on SPARC set() could generate up to 8 instructions to load
> >>>>> 64-bit constant into register. So I am not sure that it will be
> >>>>> faster
> >>>>> than load.
> >>>> We thought it would be faster because it doesn't need to load anything
> >>>> from memory.
> >>>
> >>> For good value (0x800000000) it should use only 2-3 instructions.
> >>> I think you can keep using set().
> >>>
> >>>>>
> >>>>> I can't find where in CDS you store information about compressed
> >>>>> klass
> >>>>> pointers and compressed oops parameters which were used during dump?
> >>>>> How you verify that correct parameters/flags are ussed when such CDS
> >>>>> is used later?
> >>>> No compressed klass pointers nor compressed oops get written to the
> >>>> archive. So, the compressed klass pointers and compressed oops
> >>>> parameters do not need to be recorded in the archive.
> >>>
> >>> So you are saying that all klass pointers (references to klasses) in
> >>> metadata structures in metaspace are full.
> >>
> >> Yes, they are. (methodOops weren't in the InstanceKlass::_methods array
> >> with Permgen but they are uncompressed now).
> >>
> >>> And klass pointers are only compressed in java object headers (which
> >>> are not part of CDS). Right?
> >>
> >> The InstanceKlass has offsets to fields in the instance, and they depend
> >> on both compressed oops and compressed klass pointers. So both have to
> >> be on for the offsets to be valid.
> >>
> >> But the base and compressed values are not stored anywhere in the CDS
> >> archive.
> >>
> >>> And you don't care about UseCompressedOops and
> >>> UseCompressedKlassPointers flags settings when you dump it into
> >>> archive. The only limit is:
> >>>
> >>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) - cds_total
> >>>
> >>> Then I don't understand why you can't use/load CDS archive when coop
> >>> or compklass are off:
> >>>
> >>> > If coop is turned off then CDS cannot be used. CDS will only be
> >>> > supported if both UseCompressedOops and UseCompressedKlassPointers
> >>> are
> >>> > TRUE.
> >>>
> >>> Also based on code in arguments.cpp it is allowed to specify
> >>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on command line:
> >>>
> >>> 1466 // Turn on UseCompressedKlassPointers too
> >>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
> >>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
> >>> 1469 }
> >>>
> >>> Did you tested such combination?
> >>
> >> I should let Harold answer this but I believe this is what his test
> >> does. For CDS on 64 bit, both must be on. We didn't want to create 4
> >> different archives. And it wouldn't make too much sense since CDS for
> >> 64 bit is a footprint savings so why would you use it without
> >> compressing oops and class pointers? It's not a startup savings on
> >> server because we turn off interpreter bytecode quickening.
> >>
> >> Coleen
> >>
> >>>
> >>>>>
> >>>>> set_narrow_klass_base_and_shift() and
> >>>>> can_use_cds_with_metaspace_addr() have the same code for
> >>>>> UseSharedSpaces. It would be nice to have only one copy. Call
> >>>>> can_use_cds_with_metaspace_addr() from
> >>>>> set_narrow_klass_base_and_shift() ?
> >>>> I could add new inlined methods that determine the higher_address and
> >>>> lower_base when UseSharedSpaces is true and have them called from
> >>>> set_narrow_klass_base_and_shift() and
> >>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
> >>>
> >>> I tried several approaches but your implementation is more clean. So I
> >>> agree to keep what you have now.
> >>>
> >>>
> >>> Also I found strange assert which should always fail (old code in
> >>> global_initialize() in metaspace.cpp):
> >>>
> >>> 2959 if (UseSharedSpaces) {
> >>> ...
> >>> 2969 } else {
> >>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
> >>> 2971 "archive file not closed or shared spaces not
> >>> disabled.");
> >>>
> >>> Thanks,
> >>> Vladimir
> >>>
> >>>>>
> >>>>> I see that you unconditionally set comp klass ptr base and shift for
> >>>>> DumpSharedSpaces. Should you do the check similar to
> >>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
> >>>>> don't even check UseCompressedKlassPointers.
> >>>> I don't think the checks are needed because the information written to
> >>>> the archive is not affected by the size of the class metaspace.
> >>>>
> >>>> Also, I recently added code to arguments.cpp that will generate an
> >>>> error
> >>>> if UseCompressedOops or UseCompressedKlassPointers is turned off and
> >>>> DumpSharedSpaces is on.
> >>>>>
> >>>>> Why you have next limitation? What if coop can't be used because of
> >>>>> big heap?:
> >>>>>
> >>>>> + // UseCompressedOops and UseCompressedKlassPointers must be on
> >>>>> for UseSharedSpaces.
> >>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
> >>>>> + no_shared_spaces();
> >>>> If coop is turned off then CDS cannot be used. CDS will only be
> >>>> supported if both UseCompressedOops and UseCompressedKlassPointers are
> >>>> TRUE.
> >>>>>
> >>>>> Could you move UseCompressedKlassPointers code in arguments.cpp into
> >>>>> separate method similar to set_use_compressed_oops()?
> >>>> Done.
> >>>>>
> >>>>> About new tests.
> >>>>> The first test in CDSCompressedKPtrsError misses
> >>>>> -XX:+UseCompressedOops flag.
> >>>> Fixed.
> >>>>>
> >>>>> Could you also test cross flags combinations?:
> >>>>>
> >>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
> >>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
> >>>> Done.
> >>>>>
> >>>>> It would be nice to have test to check ClassMetaspaceSize value
> >>>>> range.
> >>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither maxint
> >>>>> or maxuint.
> >>>> A member of our runtime SQE group is writing additional tests. I'll
> >>>> ask
> >>>> him to write a ClassMetaspaceSize range test.
> >>>>
> >>>> We chose 3Gb because we thought it was a sufficiently large size.
> >>>>>
> >>>>>
> >>>>> About code style, indention. We align next line to corresponding part
> >>>>> of previous line if we need to split a line. And sometimes it is
> >>>>> better to keep one long line. I understand some of them were before
> >>>>> your changes but, please, clean up at lest ones you touched.
> >>>> Done.
> >>>>>
> >>>>> Cases in metaspace.cpp:
> >>>>>
> >>>>> 2263 assert(raw_word_size >= min_size,
> >>>>> 2264 err_msg("Should not deallocate dark matter " SIZE_FORMAT "<"
> >>>>> SIZE_FORMAT, word_size, min_size));
> >>>>>
> >>>>>
> >>>>> 2485 if (Metaspace::using_class_space() &&
> >>>>> 2486 (Metaspace::class_space_list() != NULL)) {
> >>>>>
> >>>>>
> >>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
> >>>>> 2575 (Metaspace::using_class_space() ?
> >>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
> >>>>> 2577 Metaspace::space_list()->virtual_space_total();
> >>>>>
> >>>>>
> >>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
> >>>>> SIZE_FORMAT ", "
> >>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
> >>>>> ", "
> >>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
> >>>>> ", "
> >>>>> 2697 "large count " SIZE_FORMAT,
> >>>>> 2698 cls_specialized_count, cls_specialized_waste,
> >>>>> 2699 cls_small_count, cls_small_waste,
> >>>>> 2700 cls_medium_count, cls_medium_waste,
> >>>>> cls_humongous_count);
> >>>>>
> >>>>>
> >>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
> >>>>> addr) &&
> >>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
> >>>>>
> >>>>>
> >>>>> 2889 vm_exit_during_initialization(err_msg(
> >>>>> 2890 "Could not allocate metaspace: %d bytes",
> >>>>> 2891 class_metaspace_size()));
> >>>>>
> >>>>>
> >>>>> 3107 return using_class_space() ?
> >>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
> >>>>>
> >>>>>
> >>>>> 3157 if (is_class && using_class_space()) {
> >>>>> 3158 class_vsm()->deallocate(ptr, word_size);
> >>>>>
> >>>>>
> >>>>> 3305 return space_list()->contains(ptr) ||
> >>>>> 3306 (using_class_space() && class_space_list()->contains(ptr));
> >>>>>
> >>>>> metaspace.hpp:
> >>>>>
> >>>>> 270 return _allocated_capacity_words[Metaspace::NonClassType] +
> >>>>> 271 (Metaspace::using_class_space() ?
> >>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
> >>>>>
> >>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
> >>>>> 286 (Metaspace::using_class_space() ?
> >>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
> >>>>>
> >>>>> universe.cpp:
> >>>>>
> >>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
> >>>>> (intptr_t)(Universe::heap()->base() -
> >>>>> 850 os::vm_page_size()) ||
> >>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
> >>>>> value");
> >>>>>
> >>>>>
> >>>>> Thanks,
> >>>>> Vladimir
> >>>>>
> >>>>> On 8/2/13 1:31 PM, harold seigel wrote:
> >>>>>> Hi,
> >>>>>>
> >>>>>> Please review this updated webrev for bug 8003424:
> >>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
> >>>>>>
> >>>>>>
> >>>>>> The updated webrev has a lot of changes from the previous webrev,
> >>>>>> including the following:
> >>>>>>
> >>>>>> 1. Class metaspace information is now output when
> >>>>>> -XX:+PrintCompressedOopsMode is specified.
> >>>>>>
> >>>>>> 2. decode_klass_not_null(Register dst, Register src) no longer
> >>>>>> clobbers R12.
> >>>>>>
> >>>>>> 3. Method using_class_vsm() was renamed to using_class_space().
> >>>>>>
> >>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
> >>>>>> appropriate.
> >>>>>>
> >>>>>> 5. The Metaspace:: qualifier was removed, where it was
> >>>>>> unnecessary.
> >>>>>>
> >>>>>> 6. Metaspace::initialize_class_space() was made private.
> >>>>>>
> >>>>>> 7. Method max_heap_for_compressed_oops(), in arguments.cpp, was
> >>>>>> updated.
> >>>>>>
> >>>>>> Performance tests were run by Jenny using specjvm2008, specjbb2005,
> >>>>>> and
> >>>>>> specjbb2013. The results showed no significant performance
> >>>>>> difference
> >>>>>> in terms of scores and gc behavior.
> >>>>>>
> >>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
> >>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
> >>>>>>
> >>>>>> Please let me know what additional tests should be run.
> >>>>>>
> >>>>>> Thanks!
> >>>>>> Harold
> >>>>>>
> >>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
> >>>>>>> Hi Harold,
> >>>>>>>
> >>>>>>> > Usually the narrow_klass_base will be 32G and the
> >>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
> >>>>>>> means
> >>>>>>> that
> >>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
> >>>>>>> unless
> >>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does that
> >>>>>>> make
> >>>>>>> sense?
> >>>>>>>
> >>>>>>> My bad, I miscalculated. But we have "perfect value" 0x800000000
> >>>>>>> and I
> >>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
> >>>>>>> (assuming or
> >>>>>>> with check that class metaspace size < 32Gb).
> >>>>>>>
> >>>>>>> > Is there one prefix byte per instruction, or just for certain
> >>>>>>> instructions?
> >>>>>>>
> >>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
> >>>>>>> prefix is
> >>>>>>> necessary only if an instruction references one of the extended
> >>>>>>> registers or uses a 64-bit operand."
> >>>>>>>
> >>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16 and
> >>>>>>> =32
> >>>>>>> and big java heap. Recently we got several bugs which indicated
> >>>>>>> that
> >>>>>>> we did not separate cleanly oops and klass pointers en/decoding.
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Vladimir
> >>>>>>>
> >>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
> >>>>>>>> Hi Vladimir,
> >>>>>>>>
> >>>>>>>> Thank you for the review! Please see inline comments.
> >>>>>>>>
> >>>>>>>> Thanks, Harold
> >>>>>>>>
> >>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
> >>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
> >>>>>>>>>> Nice clean up, Harold
> >>>>>>>>>>
> >>>>>>>>>> Could you add the size of class metaspace in output with
> >>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
> >>>>>>>>>> remember an
> >>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
> >>>>>>>> Will be done in next webrev.
> >>>>>>>>>>
> >>>>>>>>>> Also it would be nice to print these info line (and compressed
> >>>>>>>>>> oops
> >>>>>>>>>> info
> >>>>>>>>>> line) in hs_err files.
> >>>>>>>> I filed an enhancement bug for this: 8021264
> >>>>>>>> .
> >>>>>>>>>>
> >>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
> >>>>>>>>>> x86_64.ad.
> >>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
> >>>>>>>>>> arithmetic
> >>>>>>>>>> instructions which modify flags: subq, addq, shrq, xorptr. Also
> >>>>>>>>>> note
> >>>>>>>>>> that code in .ad file does not check the encoding mode for
> >>>>>>>>>> narrow
> >>>>>>>>>> klass/oop so it should be conservative and assume that
> >>>>>>>>>> arithmetic
> >>>>>>>>>> instructions are used.
> >>>>>>>> OK. Thanks.
> >>>>>>>>>>
> >>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass base below
> >>>>>>>>>> 4Gb so
> >>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
> >>>>>>>>>> encoding/decoding without destroying R12.
> >>>>>>>>>
> >>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
> >>>>>>>>> (sign
> >>>>>>>>> bit is extended so you will get wrong result with address > 2gb).
> >>>>>>>> But the base will normally be 32Gb. So this case won't happen
> >>>>>>>> very
> >>>>>>>> often.
> >>>>>>>>>
> >>>>>>>>> You definitely should not use R12 in
> >>>>>>>>> decode_klass_not_null(Register
> >>>>>>>>> dst, Register src) method where you have free 'dst' register.
> >>>>>>>> Will be fixed in next webrev.
> >>>>>>>>>
> >>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G). Actually it
> >>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
> >>>>>>>>> 64Gb.
> >>>>>>>>> The idea was to avoid using R12 by using shifted base:
> >>>>>>>>>
> >>>>>>>>> decode:
> >>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
> >>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
> >>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
> >>>>>>>>> }
> >>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
> >>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
> >>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
> >>>>>>>>> maxint
> >>>>>>>>> (max positive int).
> >>>>>>>> Usually the narrow_klass_base will be 32G and the
> >>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which means
> >>>>>>>> that
> >>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need R12,
> >>>>>>>> unless
> >>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
> >>>>>>>> make
> >>>>>>>> sense?
> >>>>>>>>>
> >>>>>>>>> And you have general memory reservation problem. At least on
> >>>>>>>>> Solaris,
> >>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
> >>>>>>>>> between
> >>>>>>>>> different requested memory regions. That is why in jdk7 we first
> >>>>>>>>> reserve one huge space and then cut it on java heap, perm gen and
> >>>>>>>>> protection page below heap to catch implicit NULL exceptions with
> >>>>>>>>> compressed oops.
> >>>>>>>>>
> >>>>>>>>> So, please, verify that you are getting 'cds_address + cds_total'
> >>>>>>>>> address or CompressedKlassPointersBase without CDS and with
> >>>>>>>>> compressed
> >>>>>>>>> oops and with Xmx20Gb.
> >>>>>>>> I verifed that we get either cds_address+cds_total as the
> >>>>>>>> address, or
> >>>>>>>> CompressedKlassPointersBase as the address without CDS on Linux,
> >>>>>>>> Windows
> >>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
> >>>>>>>> sizes and
> >>>>>>>> -Xmx32G.
> >>>>>>>>
> >>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or the
> >>>>>>>> desired
> >>>>>>>> CDS address for class metaspace regardless of heap size.
> >>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
> >>>>>>>>>> unfortunately we
> >>>>>>>>>> can't do other way. I assume you use max size because
> >>>>>>>>>> depending on
> >>>>>>>>>> registers used in instructions you will or will not get prefix
> >>>>>>>>>> byte
> >>>>>>>>>> (r8-r15).
> >>>>>>>> Is there one prefix byte per instruction, or just for certain
> >>>>>>>> instructions?
> >>>>>>>>>>
> >>>>>>>>>> I will look on changes in more details may be late.
> >>>>>>>>>
> >>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
> >>>>>>>>> abbreviations
> >>>>>>>>> which are not obvious.
> >>>>>>>> I changed using_class_vsm() to using_class_space().
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Thanks,
> >>>>>>>>>> Vladimir
> >>>>>>>>>>
> >>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
> >>>>>>>>>>> Hi,
> >>>>>>>>>>>
> >>>>>>>>>>> Please review this fix for bug 8003424.
> >>>>>>>>>>>
> >>>>>>>>>>> Open webrev at http://cr.openjdk.java.net/~hseigel/bug_8003424/
> >>>>>>>>>>>
> >>>>>>>>>>> Open bug links at:
> >>>>>>>>>>>
> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
> >>>>>>>>>>>
> >>>>>>>>>>> JBS Bug links at
> >>>>>>>>>>>
> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> This fix provides support for using compressed klass pointers
> >>>>>>>>>>> with
> >>>>>>>>>>> CDS.
> >>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
> >>>>>>>>>>> platforms
> >>>>>>>>>>> when
> >>>>>>>>>>> UseCompressedKlassPointers is true. Instead of allocating the
> >>>>>>>>>>> class
> >>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
> >>>>>>>>>>> it at
> >>>>>>>>>>> the
> >>>>>>>>>>> base of that allocation, the metaspace will now be allocated
> >>>>>>>>>>> separately,
> >>>>>>>>>>> above the Java heap. This will enable future expansion of the
> >>>>>>>>>>> metaspace
> >>>>>>>>>>> because it won't be backed up against the Java heap. If CDS is
> >>>>>>>>>>> being
> >>>>>>>>>>> used, then the CDS region will be allocated between the Java
> >>>>>>>>>>> heap and
> >>>>>>>>>>> the metaspace.
> >>>>>>>>>>>
> >>>>>>>>>>> The new class metaspace allocation code tries to allocate
> >>>>>>>>>>> memory at
> >>>>>>>>>>> 32G,
> >>>>>>>>>>> or above the CDS region, if it is present. Because of this,
> >>>>>>>>>>> encoding
> >>>>>>>>>>> and decoding of compressed klass pointers will always
> >>>>>>>>>>> require use
> >>>>>>>>>>> of a
> >>>>>>>>>>> base register. So, encoding and decoding of compressed klass
> >>>>>>>>>>> pointers
> >>>>>>>>>>> will differ from compressed oops.
> >>>>>>>>>>>
> >>>>>>>>>>> There are no class metaspace allocation changes if
> >>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
> >>>>>>>>>>> 32-bit
> >>>>>>>>>>> platform.
> >>>>>>>>>>>
> >>>>>>>>>>> The code changes also include some cleanup and will fix bugs
> >>>>>>>>>>> 8016729,
> >>>>>>>>>>> 8011610, and 8003424.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Many of the modules in this webrev contain a lot of changes.
> >>>>>>>>>>> Modules
> >>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
> >>>>>>>>>>> changed to
> >>>>>>>>>>> support the new encoding and decoding of compressed klass
> >>>>>>>>>>> pointers.
> >>>>>>>>>>>
> >>>>>>>>>>> Module metaspace.cpp was changed significantly to support
> >>>>>>>>>>> the new
> >>>>>>>>>>> allocation for metaspace and the CDS region and to determine
> >>>>>>>>>>> compressed
> >>>>>>>>>>> klass pointer encoding base and shifting values.
> >>>>>>>>>>>
> >>>>>>>>>>> Most of the changes to module universe.cpp were to remove code
> >>>>>>>>>>> related
> >>>>>>>>>>> to allocating metaspace and remove code that considered
> >>>>>>>>>>> compressed
> >>>>>>>>>>> klass
> >>>>>>>>>>> pointers when determining the compressed oops compression
> >>>>>>>>>>> mechanism.
> >>>>>>>>>>>
> >>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
> >>>>>>>>>>> part
> >>>>>>>>>>> of a
> >>>>>>>>>>> cleanup requested by Coleen.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
> >>>>>>>>>>> tests,
> >>>>>>>>>>> JPRT,
> >>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
> >>>>>>>>>>> vm.mlvm.testlist
> >>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
> >>>>>>>>>>> -Xshare:off
> >>>>>>>>>>> (with
> >>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
> >>>>>>>>>>> Linux and
> >>>>>>>>>>> 64-Bit
> >>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS. JCK tests
> >>>>>>>>>>> were
> >>>>>>>>>>> run on Solaris x86.
> >>>>>>>>>>>
> >>>>>>>>>>> The performance impact of these changes is TBD.
> >>>>>>>>>>>
> >>>>>>>>>>> Thanks, Harold
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>
> >>
>
From staffan.larsen at oracle.com Wed Aug 14 04:53:17 2013
From: staffan.larsen at oracle.com (Staffan Larsen)
Date: Wed, 14 Aug 2013 13:53:17 +0200
Subject: JDK-8005073 open code review, (round 0)
In-Reply-To: <095a82a5-052e-447a-96b5-86e146566366@default>
References: <095a82a5-052e-447a-96b5-86e146566366@default>
Message-ID: <25198B11-0FEA-4A97-832B-ED023FF2E5D5@oracle.com>
Looks good!
/Staffan
On 14 aug 2013, at 01:42, Ron Durbin wrote:
> JDK-8005073 [TESTBUG] remove crufty '_g' support from HS tests
>
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8005073
>
> Summary:
>
> Remove all support and references to '_g' from all open test files.
>
> OpenJDK URL: http://cr.openjdk.java.net/~rdurbin/8005073_open_webrev/
>
> Testing so far has included:
>
> JPRT all platforms
>
From harold.seigel at oracle.com Wed Aug 14 05:18:20 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Wed, 14 Aug 2013 08:18:20 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <520B4228.7000307@oracle.com>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
<520B4228.7000307@oracle.com>
Message-ID: <520B758C.2080405@oracle.com>
Hi Mikael,
Thanks for the review.
In test CDSCompressedKPtrs.java, RuntimeException gets thrown by
output.shouldContain(), if it does not find the specified text in the
test's output. In this test, it may not find "sharing" in the test
output if the JVM was unable to compatibly allocate the class
metaspace. If the class metaspace does not get allocated near the CDS
region then the JVM turns off CDS, disabling sharing. Since this is a
valid execution path, it shouldn't cause the test to fail.
I've added a comment and changed the test a bit to try and make it clearer:
} catch (RuntimeException e) {
// Report 'passed' if CDS was turned off because we could not
allocate
// the klass metaspace at an address that would work with CDS.
output.shouldContain("Could not allocate metaspace at a
compatible address");
output.shouldHaveExitValue(1);
}
Thanks, Harold
On 8/14/2013 4:39 AM, Mikael Gerdin wrote:
> Harold,
>
> On 2013-08-09 16:57, Harold Seigel wrote:
>> Hi,
>>
>> Please review this latest version of the bug fix for 8003424:
>> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
>>
>>
>> This new version includes the following changes:
>>
>> 1. macroAssembler_sparc.cpp
>>
>> a. Merged two versions of reinit_heapbase() into one.
>>
>> b. Improved decode_klass_not_null(src, dst) to not use G6 if
>> shift == 0.
>>
>>
>> 2. macroAssembler_x86.cpp
>>
>> a. Merged two versions of reinit_heapbase() into one.
>>
>> b. Improved encode_klass_not_null(src, dst) to not use R12.
>>
>> c. Replaced leaq with addq in decode_klass_not_null(src, dst).
>>
>>
>> 3. Improved variable names in heap.cpp.
>>
>>
>> 4. metaspace.cpp
>>
>> a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more
>> understandable.
>>
>> b. Moved set_narrow_klass_base_and_shift() near
>> can_use_cds_with_metaspace_addr().
>>
>> c. Changed unneeded conditional in initialize_class_space() into an
>> assert.
>>
>>
>> 5. arguments.cpp
>>
>> a. Fixed problem with -Xshare:dump and disabled compression.
>>
>> b. Moved UseCompressedKlassPointers code into new function:
>> set_use_compressed_klass_ptrs().
>>
>> c. Fixed bug 8005933 that turned off CDS for -server even if
>> -Xshare:auto was explicitly specified.
>>
>>
>> 6. Increased default value of ClassMetaspaceSize to 1*G in globals.hpp.
>>
>>
>> 7. Fixed indentation issues in metaspace.cpp and other modules.
>
> The VM changes look good to me.
>
> I have a question about the test CDSCompressedKPtrs.java
>
> What RuntimeException do you expect and why is it ok that we can't use
> the shared archive if you get such an exception?
>
> I think at least a comment about why the test is supposed to pass even
> if we can't use the shared archive.
>
> /Mikael
>
>>
>>
>> Thanks, Harold
>>
>> ----- Original Message -----
>> From: harold.seigel at oracle.com
>> To: coleen.phillimore at oracle.com
>> Cc: hotspot-runtime-dev at openjdk.java.net
>> Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
>> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
>> CompressedOops
>>
>> The purpose of this assert is to verify that the two methods in the 'if'
>> clause closed the map file and disabled UseSharedSpaces if they detected
>> a problem when trying to use CDS.
>>
>> if (mapinfo->initialize() &&
>> MetaspaceShared::map_shared_spaces(mapinfo)) {
>> FileMapInfo::set_current_info(mapinfo);
>> } else {
>> assert(!mapinfo->is_open() && !UseSharedSpaces,
>> "archive file not closed or shared spaces not
>> disabled.");
>> }
>>
>> ----- Original Message -----
>> From: harold.seigel at oracle.com
>> To: coleen.phillimore at oracle.com
>> Cc: hotspot-runtime-dev at openjdk.java.net
>> Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
>> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
>> CompressedOops
>>
>> This is a bug that Stefan Karlsson also discovered. To fix it, I've
>> changed the code to this:
>>
>> if (DumpSharedSpaces) {
>> if (RequireSharedSpaces) {
>> warning("cannot dump shared archive while using shared archive");
>> }
>> UseSharedSpaces = false;
>> #ifdef _LP64
>> if (!UseCompressedOops || !UseCompressedKlassPointers) {
>> vm_exit_during_initialization(
>> "Cannot dump shared archive when UseCompressedOops or
>> UseCompressedKlassPointers is off.", NULL);
>> }
>>
>> Harold
>>
>>
>> ----- Original Message -----
>> From: coleen.phillimore at oracle.com
>> To: hotspot-runtime-dev at openjdk.java.net
>> Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
>> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
>> CompressedOops
>>
>>
>> Yes, there should be a check for that too. Now I'll really let Harold
>> answer.
>>
>> Thanks,
>> Coleen
>>
>> On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
>> > Coleen, Harold
>> >
>> > > The InstanceKlass has offsets to fields in the instance, and they
>> > depend
>> > > on both compressed oops and compressed klass pointers. So both
>> > have to
>> > > be on for the offsets to be valid.
>> >
>> > So there is dependency on UseCompressedOops and
>> > UseCompressedKlassPointers flags during dump.
>> >
>> > Then why the check is done only for UseSharedSpaces and not for
>> > DumpSharedSpaces?:
>> >
>> > if (DumpSharedSpaces) {
>> > if (RequireSharedSpaces) {
>> > warning("cannot dump shared archive while using shared
>> archive");
>> > }
>> > UseSharedSpaces = false;
>> > + #ifdef _LP64
>> > + } else {
>> > + // UseCompressedOops and UseCompressedKlassPointers must be on
>> > for UseSharedSpaces.
>> > + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>> > + no_shared_spaces();
>> > + }
>> > + #endif
>> > }
>> >
>> > Thanks,
>> > Vladimir
>> >
>> > On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>> >>
>> >> Hi Vladimir,
>> >>
>> >> I have a couple of answers and I'll let Harold answer the rest.
>> >>
>> >> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>> >>> On 8/7/13 8:34 AM, harold seigel wrote:
>> >>>> Hi Vladimir,
>> >>>>
>> >>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>> >>>>> Harold,
>> >>>>>
>> >>>>> Note, on SPARC set() could generate up to 8 instructions to load
>> >>>>> 64-bit constant into register. So I am not sure that it will be
>> >>>>> faster
>> >>>>> than load.
>> >>>> We thought it would be faster because it doesn't need to load
>> anything
>> >>>> from memory.
>> >>>
>> >>> For good value (0x800000000) it should use only 2-3 instructions.
>> >>> I think you can keep using set().
>> >>>
>> >>>>>
>> >>>>> I can't find where in CDS you store information about compressed
>> >>>>> klass
>> >>>>> pointers and compressed oops parameters which were used during
>> dump?
>> >>>>> How you verify that correct parameters/flags are ussed when
>> such CDS
>> >>>>> is used later?
>> >>>> No compressed klass pointers nor compressed oops get written to
>> the
>> >>>> archive. So, the compressed klass pointers and compressed oops
>> >>>> parameters do not need to be recorded in the archive.
>> >>>
>> >>> So you are saying that all klass pointers (references to
>> klasses) in
>> >>> metadata structures in metaspace are full.
>> >>
>> >> Yes, they are. (methodOops weren't in the
>> InstanceKlass::_methods array
>> >> with Permgen but they are uncompressed now).
>> >>
>> >>> And klass pointers are only compressed in java object headers
>> (which
>> >>> are not part of CDS). Right?
>> >>
>> >> The InstanceKlass has offsets to fields in the instance, and they
>> depend
>> >> on both compressed oops and compressed klass pointers. So both
>> have to
>> >> be on for the offsets to be valid.
>> >>
>> >> But the base and compressed values are not stored anywhere in the
>> CDS
>> >> archive.
>> >>
>> >>> And you don't care about UseCompressedOops and
>> >>> UseCompressedKlassPointers flags settings when you dump it into
>> >>> archive. The only limit is:
>> >>>
>> >>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) -
>> cds_total
>> >>>
>> >>> Then I don't understand why you can't use/load CDS archive when
>> coop
>> >>> or compklass are off:
>> >>>
>> >>> > If coop is turned off then CDS cannot be used. CDS will only be
>> >>> > supported if both UseCompressedOops and
>> UseCompressedKlassPointers
>> >>> are
>> >>> > TRUE.
>> >>>
>> >>> Also based on code in arguments.cpp it is allowed to specify
>> >>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on
>> command line:
>> >>>
>> >>> 1466 // Turn on UseCompressedKlassPointers too
>> >>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>> >>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>> >>> 1469 }
>> >>>
>> >>> Did you tested such combination?
>> >>
>> >> I should let Harold answer this but I believe this is what his test
>> >> does. For CDS on 64 bit, both must be on. We didn't want to
>> create 4
>> >> different archives. And it wouldn't make too much sense since
>> CDS for
>> >> 64 bit is a footprint savings so why would you use it without
>> >> compressing oops and class pointers? It's not a startup savings on
>> >> server because we turn off interpreter bytecode quickening.
>> >>
>> >> Coleen
>> >>
>> >>>
>> >>>>>
>> >>>>> set_narrow_klass_base_and_shift() and
>> >>>>> can_use_cds_with_metaspace_addr() have the same code for
>> >>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>> >>>>> can_use_cds_with_metaspace_addr() from
>> >>>>> set_narrow_klass_base_and_shift() ?
>> >>>> I could add new inlined methods that determine the
>> higher_address and
>> >>>> lower_base when UseSharedSpaces is true and have them called from
>> >>>> set_narrow_klass_base_and_shift() and
>> >>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>> >>>
>> >>> I tried several approaches but your implementation is more
>> clean. So I
>> >>> agree to keep what you have now.
>> >>>
>> >>>
>> >>> Also I found strange assert which should always fail (old code in
>> >>> global_initialize() in metaspace.cpp):
>> >>>
>> >>> 2959 if (UseSharedSpaces) {
>> >>> ...
>> >>> 2969 } else {
>> >>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>> >>> 2971 "archive file not closed or shared spaces not
>> >>> disabled.");
>> >>>
>> >>> Thanks,
>> >>> Vladimir
>> >>>
>> >>>>>
>> >>>>> I see that you unconditionally set comp klass ptr base and
>> shift for
>> >>>>> DumpSharedSpaces. Should you do the check similar to
>> >>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>> >>>>> don't even check UseCompressedKlassPointers.
>> >>>> I don't think the checks are needed because the information
>> written to
>> >>>> the archive is not affected by the size of the class metaspace.
>> >>>>
>> >>>> Also, I recently added code to arguments.cpp that will generate an
>> >>>> error
>> >>>> if UseCompressedOops or UseCompressedKlassPointers is turned
>> off and
>> >>>> DumpSharedSpaces is on.
>> >>>>>
>> >>>>> Why you have next limitation? What if coop can't be used
>> because of
>> >>>>> big heap?:
>> >>>>>
>> >>>>> + // UseCompressedOops and UseCompressedKlassPointers must
>> be on
>> >>>>> for UseSharedSpaces.
>> >>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>> >>>>> + no_shared_spaces();
>> >>>> If coop is turned off then CDS cannot be used. CDS will only be
>> >>>> supported if both UseCompressedOops and
>> UseCompressedKlassPointers are
>> >>>> TRUE.
>> >>>>>
>> >>>>> Could you move UseCompressedKlassPointers code in
>> arguments.cpp into
>> >>>>> separate method similar to set_use_compressed_oops()?
>> >>>> Done.
>> >>>>>
>> >>>>> About new tests.
>> >>>>> The first test in CDSCompressedKPtrsError misses
>> >>>>> -XX:+UseCompressedOops flag.
>> >>>> Fixed.
>> >>>>>
>> >>>>> Could you also test cross flags combinations?:
>> >>>>>
>> >>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>> >>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>> >>>> Done.
>> >>>>>
>> >>>>> It would be nice to have test to check ClassMetaspaceSize value
>> >>>>> range.
>> >>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither
>> maxint
>> >>>>> or maxuint.
>> >>>> A member of our runtime SQE group is writing additional tests.
>> I'll
>> >>>> ask
>> >>>> him to write a ClassMetaspaceSize range test.
>> >>>>
>> >>>> We chose 3Gb because we thought it was a sufficiently large size.
>> >>>>>
>> >>>>>
>> >>>>> About code style, indention. We align next line to
>> corresponding part
>> >>>>> of previous line if we need to split a line. And sometimes it is
>> >>>>> better to keep one long line. I understand some of them were
>> before
>> >>>>> your changes but, please, clean up at lest ones you touched.
>> >>>> Done.
>> >>>>>
>> >>>>> Cases in metaspace.cpp:
>> >>>>>
>> >>>>> 2263 assert(raw_word_size >= min_size,
>> >>>>> 2264 err_msg("Should not deallocate dark matter "
>> SIZE_FORMAT "<"
>> >>>>> SIZE_FORMAT, word_size, min_size));
>> >>>>>
>> >>>>>
>> >>>>> 2485 if (Metaspace::using_class_space() &&
>> >>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>> >>>>>
>> >>>>>
>> >>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>> >>>>> 2575 (Metaspace::using_class_space() ?
>> >>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>> >>>>> 2577 Metaspace::space_list()->virtual_space_total();
>> >>>>>
>> >>>>>
>> >>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>> >>>>> SIZE_FORMAT ", "
>> >>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>> >>>>> ", "
>> >>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>> >>>>> ", "
>> >>>>> 2697 "large count " SIZE_FORMAT,
>> >>>>> 2698 cls_specialized_count, cls_specialized_waste,
>> >>>>> 2699 cls_small_count, cls_small_waste,
>> >>>>> 2700 cls_medium_count, cls_medium_waste,
>> >>>>> cls_humongous_count);
>> >>>>>
>> >>>>>
>> >>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
>> >>>>> addr) &&
>> >>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>> >>>>>
>> >>>>>
>> >>>>> 2889 vm_exit_during_initialization(err_msg(
>> >>>>> 2890 "Could not allocate metaspace: %d bytes",
>> >>>>> 2891 class_metaspace_size()));
>> >>>>>
>> >>>>>
>> >>>>> 3107 return using_class_space() ?
>> >>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>> >>>>>
>> >>>>>
>> >>>>> 3157 if (is_class && using_class_space()) {
>> >>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>> >>>>>
>> >>>>>
>> >>>>> 3305 return space_list()->contains(ptr) ||
>> >>>>> 3306 (using_class_space() &&
>> class_space_list()->contains(ptr));
>> >>>>>
>> >>>>> metaspace.hpp:
>> >>>>>
>> >>>>> 270 return
>> _allocated_capacity_words[Metaspace::NonClassType] +
>> >>>>> 271 (Metaspace::using_class_space() ?
>> >>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>> >>>>>
>> >>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
>> >>>>> 286 (Metaspace::using_class_space() ?
>> >>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>> >>>>>
>> >>>>> universe.cpp:
>> >>>>>
>> >>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>> >>>>> (intptr_t)(Universe::heap()->base() -
>> >>>>> 850 os::vm_page_size()) ||
>> >>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
>> >>>>> value");
>> >>>>>
>> >>>>>
>> >>>>> Thanks,
>> >>>>> Vladimir
>> >>>>>
>> >>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>> >>>>>> Hi,
>> >>>>>>
>> >>>>>> Please review this updated webrev for bug 8003424:
>> >>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>> >>>>>>
>> >>>>>>
>> >>>>>> The updated webrev has a lot of changes from the previous
>> webrev,
>> >>>>>> including the following:
>> >>>>>>
>> >>>>>> 1. Class metaspace information is now output when
>> >>>>>> -XX:+PrintCompressedOopsMode is specified.
>> >>>>>>
>> >>>>>> 2. decode_klass_not_null(Register dst, Register src) no
>> longer
>> >>>>>> clobbers R12.
>> >>>>>>
>> >>>>>> 3. Method using_class_vsm() was renamed to
>> using_class_space().
>> >>>>>>
>> >>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
>> >>>>>> appropriate.
>> >>>>>>
>> >>>>>> 5. The Metaspace:: qualifier was removed, where it was
>> >>>>>> unnecessary.
>> >>>>>>
>> >>>>>> 6. Metaspace::initialize_class_space() was made private.
>> >>>>>>
>> >>>>>> 7. Method max_heap_for_compressed_oops(), in
>> arguments.cpp, was
>> >>>>>> updated.
>> >>>>>>
>> >>>>>> Performance tests were run by Jenny using specjvm2008,
>> specjbb2005,
>> >>>>>> and
>> >>>>>> specjbb2013. The results showed no significant performance
>> >>>>>> difference
>> >>>>>> in terms of scores and gc behavior.
>> >>>>>>
>> >>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>> >>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>> >>>>>>
>> >>>>>> Please let me know what additional tests should be run.
>> >>>>>>
>> >>>>>> Thanks!
>> >>>>>> Harold
>> >>>>>>
>> >>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>> >>>>>>> Hi Harold,
>> >>>>>>>
>> >>>>>>> > Usually the narrow_klass_base will be 32G and the
>> >>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
>> >>>>>>> means
>> >>>>>>> that
>> >>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will
>> need R12,
>> >>>>>>> unless
>> >>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does
>> that
>> >>>>>>> make
>> >>>>>>> sense?
>> >>>>>>>
>> >>>>>>> My bad, I miscalculated. But we have "perfect value"
>> 0x800000000
>> >>>>>>> and I
>> >>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>> >>>>>>> (assuming or
>> >>>>>>> with check that class metaspace size < 32Gb).
>> >>>>>>>
>> >>>>>>> > Is there one prefix byte per instruction, or just for certain
>> >>>>>>> instructions?
>> >>>>>>>
>> >>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>> >>>>>>> prefix is
>> >>>>>>> necessary only if an instruction references one of the extended
>> >>>>>>> registers or uses a 64-bit operand."
>> >>>>>>>
>> >>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16
>> and
>> >>>>>>> =32
>> >>>>>>> and big java heap. Recently we got several bugs which indicated
>> >>>>>>> that
>> >>>>>>> we did not separate cleanly oops and klass pointers
>> en/decoding.
>> >>>>>>>
>> >>>>>>> Thanks,
>> >>>>>>> Vladimir
>> >>>>>>>
>> >>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>> >>>>>>>> Hi Vladimir,
>> >>>>>>>>
>> >>>>>>>> Thank you for the review! Please see inline comments.
>> >>>>>>>>
>> >>>>>>>> Thanks, Harold
>> >>>>>>>>
>> >>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>> >>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>> >>>>>>>>>> Nice clean up, Harold
>> >>>>>>>>>>
>> >>>>>>>>>> Could you add the size of class metaspace in output with
>> >>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>> >>>>>>>>>> remember an
>> >>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>> >>>>>>>> Will be done in next webrev.
>> >>>>>>>>>>
>> >>>>>>>>>> Also it would be nice to print these info line (and
>> compressed
>> >>>>>>>>>> oops
>> >>>>>>>>>> info
>> >>>>>>>>>> line) in hs_err files.
>> >>>>>>>> I filed an enhancement bug for this: 8021264
>> >>>>>>>> .
>> >>>>>>>>>>
>> >>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>> >>>>>>>>>> x86_64.ad.
>> >>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>> >>>>>>>>>> arithmetic
>> >>>>>>>>>> instructions which modify flags: subq, addq, shrq,
>> xorptr. Also
>> >>>>>>>>>> note
>> >>>>>>>>>> that code in .ad file does not check the encoding mode for
>> >>>>>>>>>> narrow
>> >>>>>>>>>> klass/oop so it should be conservative and assume that
>> >>>>>>>>>> arithmetic
>> >>>>>>>>>> instructions are used.
>> >>>>>>>> OK. Thanks.
>> >>>>>>>>>>
>> >>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass
>> base below
>> >>>>>>>>>> 4Gb so
>> >>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>> >>>>>>>>>> encoding/decoding without destroying R12.
>> >>>>>>>>>
>> >>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
>> >>>>>>>>> (sign
>> >>>>>>>>> bit is extended so you will get wrong result with address
>> > 2gb).
>> >>>>>>>> But the base will normally be 32Gb. So this case won't happen
>> >>>>>>>> very
>> >>>>>>>> often.
>> >>>>>>>>>
>> >>>>>>>>> You definitely should not use R12 in
>> >>>>>>>>> decode_klass_not_null(Register
>> >>>>>>>>> dst, Register src) method where you have free 'dst' register.
>> >>>>>>>> Will be fixed in next webrev.
>> >>>>>>>>>
>> >>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G).
>> Actually it
>> >>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
>> >>>>>>>>> 64Gb.
>> >>>>>>>>> The idea was to avoid using R12 by using shifted base:
>> >>>>>>>>>
>> >>>>>>>>> decode:
>> >>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>> >>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>> >>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>> >>>>>>>>> }
>> >>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>> >>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>> >>>>>>>>> }
>> >>>>>>>>>
>> >>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>> >>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
>> >>>>>>>>> maxint
>> >>>>>>>>> (max positive int).
>> >>>>>>>> Usually the narrow_klass_base will be 32G and the
>> >>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment)
>> which means
>> >>>>>>>> that
>> >>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need
>> R12,
>> >>>>>>>> unless
>> >>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
>> >>>>>>>> make
>> >>>>>>>> sense?
>> >>>>>>>>>
>> >>>>>>>>> And you have general memory reservation problem. At least on
>> >>>>>>>>> Solaris,
>> >>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>> >>>>>>>>> between
>> >>>>>>>>> different requested memory regions. That is why in jdk7 we
>> first
>> >>>>>>>>> reserve one huge space and then cut it on java heap, perm
>> gen and
>> >>>>>>>>> protection page below heap to catch implicit NULL
>> exceptions with
>> >>>>>>>>> compressed oops.
>> >>>>>>>>>
>> >>>>>>>>> So, please, verify that you are getting 'cds_address +
>> cds_total'
>> >>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>> >>>>>>>>> compressed
>> >>>>>>>>> oops and with Xmx20Gb.
>> >>>>>>>> I verifed that we get either cds_address+cds_total as the
>> >>>>>>>> address, or
>> >>>>>>>> CompressedKlassPointersBase as the address without CDS on
>> Linux,
>> >>>>>>>> Windows
>> >>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>> >>>>>>>> sizes and
>> >>>>>>>> -Xmx32G.
>> >>>>>>>>
>> >>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or
>> the
>> >>>>>>>> desired
>> >>>>>>>> CDS address for class metaspace regardless of heap size.
>> >>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>> >>>>>>>>>> unfortunately we
>> >>>>>>>>>> can't do other way. I assume you use max size because
>> >>>>>>>>>> depending on
>> >>>>>>>>>> registers used in instructions you will or will not get
>> prefix
>> >>>>>>>>>> byte
>> >>>>>>>>>> (r8-r15).
>> >>>>>>>> Is there one prefix byte per instruction, or just for certain
>> >>>>>>>> instructions?
>> >>>>>>>>>>
>> >>>>>>>>>> I will look on changes in more details may be late.
>> >>>>>>>>>
>> >>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>> >>>>>>>>> abbreviations
>> >>>>>>>>> which are not obvious.
>> >>>>>>>> I changed using_class_vsm() to using_class_space().
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> Thanks,
>> >>>>>>>>>> Vladimir
>> >>>>>>>>>>
>> >>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>> >>>>>>>>>>> Hi,
>> >>>>>>>>>>>
>> >>>>>>>>>>> Please review this fix for bug 8003424.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Open webrev at
>> http://cr.openjdk.java.net/~hseigel/bug_8003424/
>> >>>>>>>>>>>
>> >>>>>>>>>>> Open bug links at:
>> >>>>>>>>>>>
>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>> >>>>>>>>>>>
>> >>>>>>>>>>> JBS Bug links at
>> >>>>>>>>>>>
>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> This fix provides support for using compressed klass
>> pointers
>> >>>>>>>>>>> with
>> >>>>>>>>>>> CDS.
>> >>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>> >>>>>>>>>>> platforms
>> >>>>>>>>>>> when
>> >>>>>>>>>>> UseCompressedKlassPointers is true. Instead of
>> allocating the
>> >>>>>>>>>>> class
>> >>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
>> >>>>>>>>>>> it at
>> >>>>>>>>>>> the
>> >>>>>>>>>>> base of that allocation, the metaspace will now be
>> allocated
>> >>>>>>>>>>> separately,
>> >>>>>>>>>>> above the Java heap. This will enable future expansion
>> of the
>> >>>>>>>>>>> metaspace
>> >>>>>>>>>>> because it won't be backed up against the Java heap. If
>> CDS is
>> >>>>>>>>>>> being
>> >>>>>>>>>>> used, then the CDS region will be allocated between the
>> Java
>> >>>>>>>>>>> heap and
>> >>>>>>>>>>> the metaspace.
>> >>>>>>>>>>>
>> >>>>>>>>>>> The new class metaspace allocation code tries to allocate
>> >>>>>>>>>>> memory at
>> >>>>>>>>>>> 32G,
>> >>>>>>>>>>> or above the CDS region, if it is present. Because of this,
>> >>>>>>>>>>> encoding
>> >>>>>>>>>>> and decoding of compressed klass pointers will always
>> >>>>>>>>>>> require use
>> >>>>>>>>>>> of a
>> >>>>>>>>>>> base register. So, encoding and decoding of compressed
>> klass
>> >>>>>>>>>>> pointers
>> >>>>>>>>>>> will differ from compressed oops.
>> >>>>>>>>>>>
>> >>>>>>>>>>> There are no class metaspace allocation changes if
>> >>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>> >>>>>>>>>>> 32-bit
>> >>>>>>>>>>> platform.
>> >>>>>>>>>>>
>> >>>>>>>>>>> The code changes also include some cleanup and will fix
>> bugs
>> >>>>>>>>>>> 8016729,
>> >>>>>>>>>>> 8011610, and 8003424.
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> Many of the modules in this webrev contain a lot of
>> changes.
>> >>>>>>>>>>> Modules
>> >>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>> >>>>>>>>>>> changed to
>> >>>>>>>>>>> support the new encoding and decoding of compressed klass
>> >>>>>>>>>>> pointers.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Module metaspace.cpp was changed significantly to support
>> >>>>>>>>>>> the new
>> >>>>>>>>>>> allocation for metaspace and the CDS region and to
>> determine
>> >>>>>>>>>>> compressed
>> >>>>>>>>>>> klass pointer encoding base and shifting values.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Most of the changes to module universe.cpp were to
>> remove code
>> >>>>>>>>>>> related
>> >>>>>>>>>>> to allocating metaspace and remove code that considered
>> >>>>>>>>>>> compressed
>> >>>>>>>>>>> klass
>> >>>>>>>>>>> pointers when determining the compressed oops compression
>> >>>>>>>>>>> mechanism.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
>> >>>>>>>>>>> part
>> >>>>>>>>>>> of a
>> >>>>>>>>>>> cleanup requested by Coleen.
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>> >>>>>>>>>>> tests,
>> >>>>>>>>>>> JPRT,
>> >>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>> >>>>>>>>>>> vm.mlvm.testlist
>> >>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>> >>>>>>>>>>> -Xshare:off
>> >>>>>>>>>>> (with
>> >>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>> >>>>>>>>>>> Linux and
>> >>>>>>>>>>> 64-Bit
>> >>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS.
>> JCK tests
>> >>>>>>>>>>> were
>> >>>>>>>>>>> run on Solaris x86.
>> >>>>>>>>>>>
>> >>>>>>>>>>> The performance impact of these changes is TBD.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Thanks, Harold
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>
>> >>>>>>
>> >>>>
>> >>
>>
From mikael.gerdin at oracle.com Wed Aug 14 05:21:29 2013
From: mikael.gerdin at oracle.com (Mikael Gerdin)
Date: Wed, 14 Aug 2013 14:21:29 +0200
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <520B758C.2080405@oracle.com>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
<520B4228.7000307@oracle.com> <520B758C.2080405@oracle.com>
Message-ID: <520B7649.6080604@oracle.com>
Harold,
On 2013-08-14 14:18, harold seigel wrote:
> Hi Mikael,
>
> Thanks for the review.
>
> In test CDSCompressedKPtrs.java, RuntimeException gets thrown by
> output.shouldContain(), if it does not find the specified text in the
> test's output. In this test, it may not find "sharing" in the test
> output if the JVM was unable to compatibly allocate the class
> metaspace. If the class metaspace does not get allocated near the CDS
> region then the JVM turns off CDS, disabling sharing. Since this is a
> valid execution path, it shouldn't cause the test to fail.
>
> I've added a comment and changed the test a bit to try and make it clearer:
>
> } catch (RuntimeException e) {
> // Report 'passed' if CDS was turned off because we could not
> allocate
> // the klass metaspace at an address that would work with CDS.
> output.shouldContain("Could not allocate metaspace at a
> compatible address");
> output.shouldHaveExitValue(1);
> }
I see. I suspected that this was the case but it wasn't clear earlier. I
think that the comment is sufficient to communicate this.
/Mikael
>
> Thanks, Harold
>
> On 8/14/2013 4:39 AM, Mikael Gerdin wrote:
>> Harold,
>>
>> On 2013-08-09 16:57, Harold Seigel wrote:
>>> Hi,
>>>
>>> Please review this latest version of the bug fix for 8003424:
>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
>>>
>>>
>>> This new version includes the following changes:
>>>
>>> 1. macroAssembler_sparc.cpp
>>>
>>> a. Merged two versions of reinit_heapbase() into one.
>>>
>>> b. Improved decode_klass_not_null(src, dst) to not use G6 if
>>> shift == 0.
>>>
>>>
>>> 2. macroAssembler_x86.cpp
>>>
>>> a. Merged two versions of reinit_heapbase() into one.
>>>
>>> b. Improved encode_klass_not_null(src, dst) to not use R12.
>>>
>>> c. Replaced leaq with addq in decode_klass_not_null(src, dst).
>>>
>>>
>>> 3. Improved variable names in heap.cpp.
>>>
>>>
>>> 4. metaspace.cpp
>>>
>>> a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more
>>> understandable.
>>>
>>> b. Moved set_narrow_klass_base_and_shift() near
>>> can_use_cds_with_metaspace_addr().
>>>
>>> c. Changed unneeded conditional in initialize_class_space() into an
>>> assert.
>>>
>>>
>>> 5. arguments.cpp
>>>
>>> a. Fixed problem with -Xshare:dump and disabled compression.
>>>
>>> b. Moved UseCompressedKlassPointers code into new function:
>>> set_use_compressed_klass_ptrs().
>>>
>>> c. Fixed bug 8005933 that turned off CDS for -server even if
>>> -Xshare:auto was explicitly specified.
>>>
>>>
>>> 6. Increased default value of ClassMetaspaceSize to 1*G in globals.hpp.
>>>
>>>
>>> 7. Fixed indentation issues in metaspace.cpp and other modules.
>>
>> The VM changes look good to me.
>>
>> I have a question about the test CDSCompressedKPtrs.java
>>
>> What RuntimeException do you expect and why is it ok that we can't use
>> the shared archive if you get such an exception?
>>
>> I think at least a comment about why the test is supposed to pass even
>> if we can't use the shared archive.
>>
>> /Mikael
>>
>>>
>>>
>>> Thanks, Harold
>>>
>>> ----- Original Message -----
>>> From: harold.seigel at oracle.com
>>> To: coleen.phillimore at oracle.com
>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>> Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
>>> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
>>> CompressedOops
>>>
>>> The purpose of this assert is to verify that the two methods in the 'if'
>>> clause closed the map file and disabled UseSharedSpaces if they detected
>>> a problem when trying to use CDS.
>>>
>>> if (mapinfo->initialize() &&
>>> MetaspaceShared::map_shared_spaces(mapinfo)) {
>>> FileMapInfo::set_current_info(mapinfo);
>>> } else {
>>> assert(!mapinfo->is_open() && !UseSharedSpaces,
>>> "archive file not closed or shared spaces not
>>> disabled.");
>>> }
>>>
>>> ----- Original Message -----
>>> From: harold.seigel at oracle.com
>>> To: coleen.phillimore at oracle.com
>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>> Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
>>> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
>>> CompressedOops
>>>
>>> This is a bug that Stefan Karlsson also discovered. To fix it, I've
>>> changed the code to this:
>>>
>>> if (DumpSharedSpaces) {
>>> if (RequireSharedSpaces) {
>>> warning("cannot dump shared archive while using shared archive");
>>> }
>>> UseSharedSpaces = false;
>>> #ifdef _LP64
>>> if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>> vm_exit_during_initialization(
>>> "Cannot dump shared archive when UseCompressedOops or
>>> UseCompressedKlassPointers is off.", NULL);
>>> }
>>>
>>> Harold
>>>
>>>
>>> ----- Original Message -----
>>> From: coleen.phillimore at oracle.com
>>> To: hotspot-runtime-dev at openjdk.java.net
>>> Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
>>> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
>>> CompressedOops
>>>
>>>
>>> Yes, there should be a check for that too. Now I'll really let Harold
>>> answer.
>>>
>>> Thanks,
>>> Coleen
>>>
>>> On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
>>> > Coleen, Harold
>>> >
>>> > > The InstanceKlass has offsets to fields in the instance, and they
>>> > depend
>>> > > on both compressed oops and compressed klass pointers. So both
>>> > have to
>>> > > be on for the offsets to be valid.
>>> >
>>> > So there is dependency on UseCompressedOops and
>>> > UseCompressedKlassPointers flags during dump.
>>> >
>>> > Then why the check is done only for UseSharedSpaces and not for
>>> > DumpSharedSpaces?:
>>> >
>>> > if (DumpSharedSpaces) {
>>> > if (RequireSharedSpaces) {
>>> > warning("cannot dump shared archive while using shared
>>> archive");
>>> > }
>>> > UseSharedSpaces = false;
>>> > + #ifdef _LP64
>>> > + } else {
>>> > + // UseCompressedOops and UseCompressedKlassPointers must be on
>>> > for UseSharedSpaces.
>>> > + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>> > + no_shared_spaces();
>>> > + }
>>> > + #endif
>>> > }
>>> >
>>> > Thanks,
>>> > Vladimir
>>> >
>>> > On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>>> >>
>>> >> Hi Vladimir,
>>> >>
>>> >> I have a couple of answers and I'll let Harold answer the rest.
>>> >>
>>> >> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>>> >>> On 8/7/13 8:34 AM, harold seigel wrote:
>>> >>>> Hi Vladimir,
>>> >>>>
>>> >>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>> >>>>> Harold,
>>> >>>>>
>>> >>>>> Note, on SPARC set() could generate up to 8 instructions to load
>>> >>>>> 64-bit constant into register. So I am not sure that it will be
>>> >>>>> faster
>>> >>>>> than load.
>>> >>>> We thought it would be faster because it doesn't need to load
>>> anything
>>> >>>> from memory.
>>> >>>
>>> >>> For good value (0x800000000) it should use only 2-3 instructions.
>>> >>> I think you can keep using set().
>>> >>>
>>> >>>>>
>>> >>>>> I can't find where in CDS you store information about compressed
>>> >>>>> klass
>>> >>>>> pointers and compressed oops parameters which were used during
>>> dump?
>>> >>>>> How you verify that correct parameters/flags are ussed when
>>> such CDS
>>> >>>>> is used later?
>>> >>>> No compressed klass pointers nor compressed oops get written to
>>> the
>>> >>>> archive. So, the compressed klass pointers and compressed oops
>>> >>>> parameters do not need to be recorded in the archive.
>>> >>>
>>> >>> So you are saying that all klass pointers (references to
>>> klasses) in
>>> >>> metadata structures in metaspace are full.
>>> >>
>>> >> Yes, they are. (methodOops weren't in the
>>> InstanceKlass::_methods array
>>> >> with Permgen but they are uncompressed now).
>>> >>
>>> >>> And klass pointers are only compressed in java object headers
>>> (which
>>> >>> are not part of CDS). Right?
>>> >>
>>> >> The InstanceKlass has offsets to fields in the instance, and they
>>> depend
>>> >> on both compressed oops and compressed klass pointers. So both
>>> have to
>>> >> be on for the offsets to be valid.
>>> >>
>>> >> But the base and compressed values are not stored anywhere in the
>>> CDS
>>> >> archive.
>>> >>
>>> >>> And you don't care about UseCompressedOops and
>>> >>> UseCompressedKlassPointers flags settings when you dump it into
>>> >>> archive. The only limit is:
>>> >>>
>>> >>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) -
>>> cds_total
>>> >>>
>>> >>> Then I don't understand why you can't use/load CDS archive when
>>> coop
>>> >>> or compklass are off:
>>> >>>
>>> >>> > If coop is turned off then CDS cannot be used. CDS will only be
>>> >>> > supported if both UseCompressedOops and
>>> UseCompressedKlassPointers
>>> >>> are
>>> >>> > TRUE.
>>> >>>
>>> >>> Also based on code in arguments.cpp it is allowed to specify
>>> >>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on
>>> command line:
>>> >>>
>>> >>> 1466 // Turn on UseCompressedKlassPointers too
>>> >>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>>> >>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>>> >>> 1469 }
>>> >>>
>>> >>> Did you tested such combination?
>>> >>
>>> >> I should let Harold answer this but I believe this is what his test
>>> >> does. For CDS on 64 bit, both must be on. We didn't want to
>>> create 4
>>> >> different archives. And it wouldn't make too much sense since
>>> CDS for
>>> >> 64 bit is a footprint savings so why would you use it without
>>> >> compressing oops and class pointers? It's not a startup savings on
>>> >> server because we turn off interpreter bytecode quickening.
>>> >>
>>> >> Coleen
>>> >>
>>> >>>
>>> >>>>>
>>> >>>>> set_narrow_klass_base_and_shift() and
>>> >>>>> can_use_cds_with_metaspace_addr() have the same code for
>>> >>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>> >>>>> can_use_cds_with_metaspace_addr() from
>>> >>>>> set_narrow_klass_base_and_shift() ?
>>> >>>> I could add new inlined methods that determine the
>>> higher_address and
>>> >>>> lower_base when UseSharedSpaces is true and have them called from
>>> >>>> set_narrow_klass_base_and_shift() and
>>> >>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>>> >>>
>>> >>> I tried several approaches but your implementation is more
>>> clean. So I
>>> >>> agree to keep what you have now.
>>> >>>
>>> >>>
>>> >>> Also I found strange assert which should always fail (old code in
>>> >>> global_initialize() in metaspace.cpp):
>>> >>>
>>> >>> 2959 if (UseSharedSpaces) {
>>> >>> ...
>>> >>> 2969 } else {
>>> >>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>>> >>> 2971 "archive file not closed or shared spaces not
>>> >>> disabled.");
>>> >>>
>>> >>> Thanks,
>>> >>> Vladimir
>>> >>>
>>> >>>>>
>>> >>>>> I see that you unconditionally set comp klass ptr base and
>>> shift for
>>> >>>>> DumpSharedSpaces. Should you do the check similar to
>>> >>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>>> >>>>> don't even check UseCompressedKlassPointers.
>>> >>>> I don't think the checks are needed because the information
>>> written to
>>> >>>> the archive is not affected by the size of the class metaspace.
>>> >>>>
>>> >>>> Also, I recently added code to arguments.cpp that will generate an
>>> >>>> error
>>> >>>> if UseCompressedOops or UseCompressedKlassPointers is turned
>>> off and
>>> >>>> DumpSharedSpaces is on.
>>> >>>>>
>>> >>>>> Why you have next limitation? What if coop can't be used
>>> because of
>>> >>>>> big heap?:
>>> >>>>>
>>> >>>>> + // UseCompressedOops and UseCompressedKlassPointers must
>>> be on
>>> >>>>> for UseSharedSpaces.
>>> >>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>> >>>>> + no_shared_spaces();
>>> >>>> If coop is turned off then CDS cannot be used. CDS will only be
>>> >>>> supported if both UseCompressedOops and
>>> UseCompressedKlassPointers are
>>> >>>> TRUE.
>>> >>>>>
>>> >>>>> Could you move UseCompressedKlassPointers code in
>>> arguments.cpp into
>>> >>>>> separate method similar to set_use_compressed_oops()?
>>> >>>> Done.
>>> >>>>>
>>> >>>>> About new tests.
>>> >>>>> The first test in CDSCompressedKPtrsError misses
>>> >>>>> -XX:+UseCompressedOops flag.
>>> >>>> Fixed.
>>> >>>>>
>>> >>>>> Could you also test cross flags combinations?:
>>> >>>>>
>>> >>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>> >>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>> >>>> Done.
>>> >>>>>
>>> >>>>> It would be nice to have test to check ClassMetaspaceSize value
>>> >>>>> range.
>>> >>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither
>>> maxint
>>> >>>>> or maxuint.
>>> >>>> A member of our runtime SQE group is writing additional tests.
>>> I'll
>>> >>>> ask
>>> >>>> him to write a ClassMetaspaceSize range test.
>>> >>>>
>>> >>>> We chose 3Gb because we thought it was a sufficiently large size.
>>> >>>>>
>>> >>>>>
>>> >>>>> About code style, indention. We align next line to
>>> corresponding part
>>> >>>>> of previous line if we need to split a line. And sometimes it is
>>> >>>>> better to keep one long line. I understand some of them were
>>> before
>>> >>>>> your changes but, please, clean up at lest ones you touched.
>>> >>>> Done.
>>> >>>>>
>>> >>>>> Cases in metaspace.cpp:
>>> >>>>>
>>> >>>>> 2263 assert(raw_word_size >= min_size,
>>> >>>>> 2264 err_msg("Should not deallocate dark matter "
>>> SIZE_FORMAT "<"
>>> >>>>> SIZE_FORMAT, word_size, min_size));
>>> >>>>>
>>> >>>>>
>>> >>>>> 2485 if (Metaspace::using_class_space() &&
>>> >>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>> >>>>>
>>> >>>>>
>>> >>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>> >>>>> 2575 (Metaspace::using_class_space() ?
>>> >>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>>> >>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>> >>>>>
>>> >>>>>
>>> >>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>> >>>>> SIZE_FORMAT ", "
>>> >>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>> >>>>> ", "
>>> >>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>> >>>>> ", "
>>> >>>>> 2697 "large count " SIZE_FORMAT,
>>> >>>>> 2698 cls_specialized_count, cls_specialized_waste,
>>> >>>>> 2699 cls_small_count, cls_small_waste,
>>> >>>>> 2700 cls_medium_count, cls_medium_waste,
>>> >>>>> cls_humongous_count);
>>> >>>>>
>>> >>>>>
>>> >>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
>>> >>>>> addr) &&
>>> >>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>> >>>>>
>>> >>>>>
>>> >>>>> 2889 vm_exit_during_initialization(err_msg(
>>> >>>>> 2890 "Could not allocate metaspace: %d bytes",
>>> >>>>> 2891 class_metaspace_size()));
>>> >>>>>
>>> >>>>>
>>> >>>>> 3107 return using_class_space() ?
>>> >>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>> >>>>>
>>> >>>>>
>>> >>>>> 3157 if (is_class && using_class_space()) {
>>> >>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>> >>>>>
>>> >>>>>
>>> >>>>> 3305 return space_list()->contains(ptr) ||
>>> >>>>> 3306 (using_class_space() &&
>>> class_space_list()->contains(ptr));
>>> >>>>>
>>> >>>>> metaspace.hpp:
>>> >>>>>
>>> >>>>> 270 return
>>> _allocated_capacity_words[Metaspace::NonClassType] +
>>> >>>>> 271 (Metaspace::using_class_space() ?
>>> >>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>> >>>>>
>>> >>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
>>> >>>>> 286 (Metaspace::using_class_space() ?
>>> >>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>> >>>>>
>>> >>>>> universe.cpp:
>>> >>>>>
>>> >>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>> >>>>> (intptr_t)(Universe::heap()->base() -
>>> >>>>> 850 os::vm_page_size()) ||
>>> >>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
>>> >>>>> value");
>>> >>>>>
>>> >>>>>
>>> >>>>> Thanks,
>>> >>>>> Vladimir
>>> >>>>>
>>> >>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>> >>>>>> Hi,
>>> >>>>>>
>>> >>>>>> Please review this updated webrev for bug 8003424:
>>> >>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> The updated webrev has a lot of changes from the previous
>>> webrev,
>>> >>>>>> including the following:
>>> >>>>>>
>>> >>>>>> 1. Class metaspace information is now output when
>>> >>>>>> -XX:+PrintCompressedOopsMode is specified.
>>> >>>>>>
>>> >>>>>> 2. decode_klass_not_null(Register dst, Register src) no
>>> longer
>>> >>>>>> clobbers R12.
>>> >>>>>>
>>> >>>>>> 3. Method using_class_vsm() was renamed to
>>> using_class_space().
>>> >>>>>>
>>> >>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
>>> >>>>>> appropriate.
>>> >>>>>>
>>> >>>>>> 5. The Metaspace:: qualifier was removed, where it was
>>> >>>>>> unnecessary.
>>> >>>>>>
>>> >>>>>> 6. Metaspace::initialize_class_space() was made private.
>>> >>>>>>
>>> >>>>>> 7. Method max_heap_for_compressed_oops(), in
>>> arguments.cpp, was
>>> >>>>>> updated.
>>> >>>>>>
>>> >>>>>> Performance tests were run by Jenny using specjvm2008,
>>> specjbb2005,
>>> >>>>>> and
>>> >>>>>> specjbb2013. The results showed no significant performance
>>> >>>>>> difference
>>> >>>>>> in terms of scores and gc behavior.
>>> >>>>>>
>>> >>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>> >>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>> >>>>>>
>>> >>>>>> Please let me know what additional tests should be run.
>>> >>>>>>
>>> >>>>>> Thanks!
>>> >>>>>> Harold
>>> >>>>>>
>>> >>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>> >>>>>>> Hi Harold,
>>> >>>>>>>
>>> >>>>>>> > Usually the narrow_klass_base will be 32G and the
>>> >>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
>>> >>>>>>> means
>>> >>>>>>> that
>>> >>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will
>>> need R12,
>>> >>>>>>> unless
>>> >>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does
>>> that
>>> >>>>>>> make
>>> >>>>>>> sense?
>>> >>>>>>>
>>> >>>>>>> My bad, I miscalculated. But we have "perfect value"
>>> 0x800000000
>>> >>>>>>> and I
>>> >>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>> >>>>>>> (assuming or
>>> >>>>>>> with check that class metaspace size < 32Gb).
>>> >>>>>>>
>>> >>>>>>> > Is there one prefix byte per instruction, or just for certain
>>> >>>>>>> instructions?
>>> >>>>>>>
>>> >>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>> >>>>>>> prefix is
>>> >>>>>>> necessary only if an instruction references one of the extended
>>> >>>>>>> registers or uses a 64-bit operand."
>>> >>>>>>>
>>> >>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16
>>> and
>>> >>>>>>> =32
>>> >>>>>>> and big java heap. Recently we got several bugs which indicated
>>> >>>>>>> that
>>> >>>>>>> we did not separate cleanly oops and klass pointers
>>> en/decoding.
>>> >>>>>>>
>>> >>>>>>> Thanks,
>>> >>>>>>> Vladimir
>>> >>>>>>>
>>> >>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>> >>>>>>>> Hi Vladimir,
>>> >>>>>>>>
>>> >>>>>>>> Thank you for the review! Please see inline comments.
>>> >>>>>>>>
>>> >>>>>>>> Thanks, Harold
>>> >>>>>>>>
>>> >>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>> >>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>> >>>>>>>>>> Nice clean up, Harold
>>> >>>>>>>>>>
>>> >>>>>>>>>> Could you add the size of class metaspace in output with
>>> >>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>> >>>>>>>>>> remember an
>>> >>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>> >>>>>>>> Will be done in next webrev.
>>> >>>>>>>>>>
>>> >>>>>>>>>> Also it would be nice to print these info line (and
>>> compressed
>>> >>>>>>>>>> oops
>>> >>>>>>>>>> info
>>> >>>>>>>>>> line) in hs_err files.
>>> >>>>>>>> I filed an enhancement bug for this: 8021264
>>> >>>>>>>> .
>>> >>>>>>>>>>
>>> >>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>> >>>>>>>>>> x86_64.ad.
>>> >>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>>> >>>>>>>>>> arithmetic
>>> >>>>>>>>>> instructions which modify flags: subq, addq, shrq,
>>> xorptr. Also
>>> >>>>>>>>>> note
>>> >>>>>>>>>> that code in .ad file does not check the encoding mode for
>>> >>>>>>>>>> narrow
>>> >>>>>>>>>> klass/oop so it should be conservative and assume that
>>> >>>>>>>>>> arithmetic
>>> >>>>>>>>>> instructions are used.
>>> >>>>>>>> OK. Thanks.
>>> >>>>>>>>>>
>>> >>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass
>>> base below
>>> >>>>>>>>>> 4Gb so
>>> >>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>> >>>>>>>>>> encoding/decoding without destroying R12.
>>> >>>>>>>>>
>>> >>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
>>> >>>>>>>>> (sign
>>> >>>>>>>>> bit is extended so you will get wrong result with address
>>> > 2gb).
>>> >>>>>>>> But the base will normally be 32Gb. So this case won't happen
>>> >>>>>>>> very
>>> >>>>>>>> often.
>>> >>>>>>>>>
>>> >>>>>>>>> You definitely should not use R12 in
>>> >>>>>>>>> decode_klass_not_null(Register
>>> >>>>>>>>> dst, Register src) method where you have free 'dst' register.
>>> >>>>>>>> Will be fixed in next webrev.
>>> >>>>>>>>>
>>> >>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G).
>>> Actually it
>>> >>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
>>> >>>>>>>>> 64Gb.
>>> >>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>> >>>>>>>>>
>>> >>>>>>>>> decode:
>>> >>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>> >>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>> >>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>> >>>>>>>>> }
>>> >>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>> >>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>> >>>>>>>>> }
>>> >>>>>>>>>
>>> >>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>> >>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
>>> >>>>>>>>> maxint
>>> >>>>>>>>> (max positive int).
>>> >>>>>>>> Usually the narrow_klass_base will be 32G and the
>>> >>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment)
>>> which means
>>> >>>>>>>> that
>>> >>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need
>>> R12,
>>> >>>>>>>> unless
>>> >>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>> >>>>>>>> make
>>> >>>>>>>> sense?
>>> >>>>>>>>>
>>> >>>>>>>>> And you have general memory reservation problem. At least on
>>> >>>>>>>>> Solaris,
>>> >>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>>> >>>>>>>>> between
>>> >>>>>>>>> different requested memory regions. That is why in jdk7 we
>>> first
>>> >>>>>>>>> reserve one huge space and then cut it on java heap, perm
>>> gen and
>>> >>>>>>>>> protection page below heap to catch implicit NULL
>>> exceptions with
>>> >>>>>>>>> compressed oops.
>>> >>>>>>>>>
>>> >>>>>>>>> So, please, verify that you are getting 'cds_address +
>>> cds_total'
>>> >>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>> >>>>>>>>> compressed
>>> >>>>>>>>> oops and with Xmx20Gb.
>>> >>>>>>>> I verifed that we get either cds_address+cds_total as the
>>> >>>>>>>> address, or
>>> >>>>>>>> CompressedKlassPointersBase as the address without CDS on
>>> Linux,
>>> >>>>>>>> Windows
>>> >>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>> >>>>>>>> sizes and
>>> >>>>>>>> -Xmx32G.
>>> >>>>>>>>
>>> >>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or
>>> the
>>> >>>>>>>> desired
>>> >>>>>>>> CDS address for class metaspace regardless of heap size.
>>> >>>>>>>>>
>>> >>>>>>>>>>
>>> >>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>> >>>>>>>>>> unfortunately we
>>> >>>>>>>>>> can't do other way. I assume you use max size because
>>> >>>>>>>>>> depending on
>>> >>>>>>>>>> registers used in instructions you will or will not get
>>> prefix
>>> >>>>>>>>>> byte
>>> >>>>>>>>>> (r8-r15).
>>> >>>>>>>> Is there one prefix byte per instruction, or just for certain
>>> >>>>>>>> instructions?
>>> >>>>>>>>>>
>>> >>>>>>>>>> I will look on changes in more details may be late.
>>> >>>>>>>>>
>>> >>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>>> >>>>>>>>> abbreviations
>>> >>>>>>>>> which are not obvious.
>>> >>>>>>>> I changed using_class_vsm() to using_class_space().
>>> >>>>>>>>>
>>> >>>>>>>>>
>>> >>>>>>>>>>
>>> >>>>>>>>>> Thanks,
>>> >>>>>>>>>> Vladimir
>>> >>>>>>>>>>
>>> >>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>> >>>>>>>>>>> Hi,
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> Please review this fix for bug 8003424.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> Open webrev at
>>> http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> Open bug links at:
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> JBS Bug links at
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>> >>>>>>>>>>>
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> This fix provides support for using compressed klass
>>> pointers
>>> >>>>>>>>>>> with
>>> >>>>>>>>>>> CDS.
>>> >>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>> >>>>>>>>>>> platforms
>>> >>>>>>>>>>> when
>>> >>>>>>>>>>> UseCompressedKlassPointers is true. Instead of
>>> allocating the
>>> >>>>>>>>>>> class
>>> >>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
>>> >>>>>>>>>>> it at
>>> >>>>>>>>>>> the
>>> >>>>>>>>>>> base of that allocation, the metaspace will now be
>>> allocated
>>> >>>>>>>>>>> separately,
>>> >>>>>>>>>>> above the Java heap. This will enable future expansion
>>> of the
>>> >>>>>>>>>>> metaspace
>>> >>>>>>>>>>> because it won't be backed up against the Java heap. If
>>> CDS is
>>> >>>>>>>>>>> being
>>> >>>>>>>>>>> used, then the CDS region will be allocated between the
>>> Java
>>> >>>>>>>>>>> heap and
>>> >>>>>>>>>>> the metaspace.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> The new class metaspace allocation code tries to allocate
>>> >>>>>>>>>>> memory at
>>> >>>>>>>>>>> 32G,
>>> >>>>>>>>>>> or above the CDS region, if it is present. Because of this,
>>> >>>>>>>>>>> encoding
>>> >>>>>>>>>>> and decoding of compressed klass pointers will always
>>> >>>>>>>>>>> require use
>>> >>>>>>>>>>> of a
>>> >>>>>>>>>>> base register. So, encoding and decoding of compressed
>>> klass
>>> >>>>>>>>>>> pointers
>>> >>>>>>>>>>> will differ from compressed oops.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> There are no class metaspace allocation changes if
>>> >>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>>> >>>>>>>>>>> 32-bit
>>> >>>>>>>>>>> platform.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> The code changes also include some cleanup and will fix
>>> bugs
>>> >>>>>>>>>>> 8016729,
>>> >>>>>>>>>>> 8011610, and 8003424.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> Many of the modules in this webrev contain a lot of
>>> changes.
>>> >>>>>>>>>>> Modules
>>> >>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>> >>>>>>>>>>> changed to
>>> >>>>>>>>>>> support the new encoding and decoding of compressed klass
>>> >>>>>>>>>>> pointers.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> Module metaspace.cpp was changed significantly to support
>>> >>>>>>>>>>> the new
>>> >>>>>>>>>>> allocation for metaspace and the CDS region and to
>>> determine
>>> >>>>>>>>>>> compressed
>>> >>>>>>>>>>> klass pointer encoding base and shifting values.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> Most of the changes to module universe.cpp were to
>>> remove code
>>> >>>>>>>>>>> related
>>> >>>>>>>>>>> to allocating metaspace and remove code that considered
>>> >>>>>>>>>>> compressed
>>> >>>>>>>>>>> klass
>>> >>>>>>>>>>> pointers when determining the compressed oops compression
>>> >>>>>>>>>>> mechanism.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
>>> >>>>>>>>>>> part
>>> >>>>>>>>>>> of a
>>> >>>>>>>>>>> cleanup requested by Coleen.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>>> >>>>>>>>>>> tests,
>>> >>>>>>>>>>> JPRT,
>>> >>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>>> >>>>>>>>>>> vm.mlvm.testlist
>>> >>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>>> >>>>>>>>>>> -Xshare:off
>>> >>>>>>>>>>> (with
>>> >>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>>> >>>>>>>>>>> Linux and
>>> >>>>>>>>>>> 64-Bit
>>> >>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS.
>>> JCK tests
>>> >>>>>>>>>>> were
>>> >>>>>>>>>>> run on Solaris x86.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> The performance impact of these changes is TBD.
>>> >>>>>>>>>>>
>>> >>>>>>>>>>> Thanks, Harold
>>> >>>>>>>>>>>
>>> >>>>>>>>>>>
>>> >>>>>>>>
>>> >>>>>>
>>> >>>>
>>> >>
>>>
>
From harold.seigel at oracle.com Wed Aug 14 05:21:58 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Wed, 14 Aug 2013 08:21:58 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <520B7649.6080604@oracle.com>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
<520B4228.7000307@oracle.com> <520B758C.2080405@oracle.com>
<520B7649.6080604@oracle.com>
Message-ID: <520B7666.7070504@oracle.com>
Thanks,
Harold
On 8/14/2013 8:21 AM, Mikael Gerdin wrote:
> Harold,
>
> On 2013-08-14 14:18, harold seigel wrote:
>> Hi Mikael,
>>
>> Thanks for the review.
>>
>> In test CDSCompressedKPtrs.java, RuntimeException gets thrown by
>> output.shouldContain(), if it does not find the specified text in the
>> test's output. In this test, it may not find "sharing" in the test
>> output if the JVM was unable to compatibly allocate the class
>> metaspace. If the class metaspace does not get allocated near the CDS
>> region then the JVM turns off CDS, disabling sharing. Since this is a
>> valid execution path, it shouldn't cause the test to fail.
>>
>> I've added a comment and changed the test a bit to try and make it
>> clearer:
>>
>> } catch (RuntimeException e) {
>> // Report 'passed' if CDS was turned off because we could not
>> allocate
>> // the klass metaspace at an address that would work with CDS.
>> output.shouldContain("Could not allocate metaspace at a
>> compatible address");
>> output.shouldHaveExitValue(1);
>> }
>
> I see. I suspected that this was the case but it wasn't clear earlier.
> I think that the comment is sufficient to communicate this.
>
>
> /Mikael
>
>>
>> Thanks, Harold
>>
>> On 8/14/2013 4:39 AM, Mikael Gerdin wrote:
>>> Harold,
>>>
>>> On 2013-08-09 16:57, Harold Seigel wrote:
>>>> Hi,
>>>>
>>>> Please review this latest version of the bug fix for 8003424:
>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
>>>>
>>>>
>>>> This new version includes the following changes:
>>>>
>>>> 1. macroAssembler_sparc.cpp
>>>>
>>>> a. Merged two versions of reinit_heapbase() into one.
>>>>
>>>> b. Improved decode_klass_not_null(src, dst) to not use G6 if
>>>> shift == 0.
>>>>
>>>>
>>>> 2. macroAssembler_x86.cpp
>>>>
>>>> a. Merged two versions of reinit_heapbase() into one.
>>>>
>>>> b. Improved encode_klass_not_null(src, dst) to not use R12.
>>>>
>>>> c. Replaced leaq with addq in decode_klass_not_null(src, dst).
>>>>
>>>>
>>>> 3. Improved variable names in heap.cpp.
>>>>
>>>>
>>>> 4. metaspace.cpp
>>>>
>>>> a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more
>>>> understandable.
>>>>
>>>> b. Moved set_narrow_klass_base_and_shift() near
>>>> can_use_cds_with_metaspace_addr().
>>>>
>>>> c. Changed unneeded conditional in initialize_class_space()
>>>> into an
>>>> assert.
>>>>
>>>>
>>>> 5. arguments.cpp
>>>>
>>>> a. Fixed problem with -Xshare:dump and disabled compression.
>>>>
>>>> b. Moved UseCompressedKlassPointers code into new function:
>>>> set_use_compressed_klass_ptrs().
>>>>
>>>> c. Fixed bug 8005933 that turned off CDS for -server even if
>>>> -Xshare:auto was explicitly specified.
>>>>
>>>>
>>>> 6. Increased default value of ClassMetaspaceSize to 1*G in
>>>> globals.hpp.
>>>>
>>>>
>>>> 7. Fixed indentation issues in metaspace.cpp and other modules.
>>>
>>> The VM changes look good to me.
>>>
>>> I have a question about the test CDSCompressedKPtrs.java
>>>
>>> What RuntimeException do you expect and why is it ok that we can't use
>>> the shared archive if you get such an exception?
>>>
>>> I think at least a comment about why the test is supposed to pass even
>>> if we can't use the shared archive.
>>>
>>> /Mikael
>>>
>>>>
>>>>
>>>> Thanks, Harold
>>>>
>>>> ----- Original Message -----
>>>> From: harold.seigel at oracle.com
>>>> To: coleen.phillimore at oracle.com
>>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>>> Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
>>>> Subject: Re: Request for review: 8003424 - Enable Class Data
>>>> Sharing for
>>>> CompressedOops
>>>>
>>>> The purpose of this assert is to verify that the two methods in the
>>>> 'if'
>>>> clause closed the map file and disabled UseSharedSpaces if they
>>>> detected
>>>> a problem when trying to use CDS.
>>>>
>>>> if (mapinfo->initialize() &&
>>>> MetaspaceShared::map_shared_spaces(mapinfo)) {
>>>> FileMapInfo::set_current_info(mapinfo);
>>>> } else {
>>>> assert(!mapinfo->is_open() && !UseSharedSpaces,
>>>> "archive file not closed or shared spaces not
>>>> disabled.");
>>>> }
>>>>
>>>> ----- Original Message -----
>>>> From: harold.seigel at oracle.com
>>>> To: coleen.phillimore at oracle.com
>>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>>> Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
>>>> Subject: Re: Request for review: 8003424 - Enable Class Data
>>>> Sharing for
>>>> CompressedOops
>>>>
>>>> This is a bug that Stefan Karlsson also discovered. To fix it, I've
>>>> changed the code to this:
>>>>
>>>> if (DumpSharedSpaces) {
>>>> if (RequireSharedSpaces) {
>>>> warning("cannot dump shared archive while using shared
>>>> archive");
>>>> }
>>>> UseSharedSpaces = false;
>>>> #ifdef _LP64
>>>> if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>> vm_exit_during_initialization(
>>>> "Cannot dump shared archive when UseCompressedOops or
>>>> UseCompressedKlassPointers is off.", NULL);
>>>> }
>>>>
>>>> Harold
>>>>
>>>>
>>>> ----- Original Message -----
>>>> From: coleen.phillimore at oracle.com
>>>> To: hotspot-runtime-dev at openjdk.java.net
>>>> Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
>>>> Subject: Re: Request for review: 8003424 - Enable Class Data
>>>> Sharing for
>>>> CompressedOops
>>>>
>>>>
>>>> Yes, there should be a check for that too. Now I'll really let Harold
>>>> answer.
>>>>
>>>> Thanks,
>>>> Coleen
>>>>
>>>> On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
>>>> > Coleen, Harold
>>>> >
>>>> > > The InstanceKlass has offsets to fields in the instance, and they
>>>> > depend
>>>> > > on both compressed oops and compressed klass pointers. So both
>>>> > have to
>>>> > > be on for the offsets to be valid.
>>>> >
>>>> > So there is dependency on UseCompressedOops and
>>>> > UseCompressedKlassPointers flags during dump.
>>>> >
>>>> > Then why the check is done only for UseSharedSpaces and not for
>>>> > DumpSharedSpaces?:
>>>> >
>>>> > if (DumpSharedSpaces) {
>>>> > if (RequireSharedSpaces) {
>>>> > warning("cannot dump shared archive while using shared
>>>> archive");
>>>> > }
>>>> > UseSharedSpaces = false;
>>>> > + #ifdef _LP64
>>>> > + } else {
>>>> > + // UseCompressedOops and UseCompressedKlassPointers must
>>>> be on
>>>> > for UseSharedSpaces.
>>>> > + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>> > + no_shared_spaces();
>>>> > + }
>>>> > + #endif
>>>> > }
>>>> >
>>>> > Thanks,
>>>> > Vladimir
>>>> >
>>>> > On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>>>> >>
>>>> >> Hi Vladimir,
>>>> >>
>>>> >> I have a couple of answers and I'll let Harold answer the rest.
>>>> >>
>>>> >> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>>>> >>> On 8/7/13 8:34 AM, harold seigel wrote:
>>>> >>>> Hi Vladimir,
>>>> >>>>
>>>> >>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>>> >>>>> Harold,
>>>> >>>>>
>>>> >>>>> Note, on SPARC set() could generate up to 8 instructions to
>>>> load
>>>> >>>>> 64-bit constant into register. So I am not sure that it will be
>>>> >>>>> faster
>>>> >>>>> than load.
>>>> >>>> We thought it would be faster because it doesn't need to load
>>>> anything
>>>> >>>> from memory.
>>>> >>>
>>>> >>> For good value (0x800000000) it should use only 2-3 instructions.
>>>> >>> I think you can keep using set().
>>>> >>>
>>>> >>>>>
>>>> >>>>> I can't find where in CDS you store information about
>>>> compressed
>>>> >>>>> klass
>>>> >>>>> pointers and compressed oops parameters which were used during
>>>> dump?
>>>> >>>>> How you verify that correct parameters/flags are ussed when
>>>> such CDS
>>>> >>>>> is used later?
>>>> >>>> No compressed klass pointers nor compressed oops get written to
>>>> the
>>>> >>>> archive. So, the compressed klass pointers and compressed oops
>>>> >>>> parameters do not need to be recorded in the archive.
>>>> >>>
>>>> >>> So you are saying that all klass pointers (references to
>>>> klasses) in
>>>> >>> metadata structures in metaspace are full.
>>>> >>
>>>> >> Yes, they are. (methodOops weren't in the
>>>> InstanceKlass::_methods array
>>>> >> with Permgen but they are uncompressed now).
>>>> >>
>>>> >>> And klass pointers are only compressed in java object headers
>>>> (which
>>>> >>> are not part of CDS). Right?
>>>> >>
>>>> >> The InstanceKlass has offsets to fields in the instance, and they
>>>> depend
>>>> >> on both compressed oops and compressed klass pointers. So both
>>>> have to
>>>> >> be on for the offsets to be valid.
>>>> >>
>>>> >> But the base and compressed values are not stored anywhere in the
>>>> CDS
>>>> >> archive.
>>>> >>
>>>> >>> And you don't care about UseCompressedOops and
>>>> >>> UseCompressedKlassPointers flags settings when you dump it into
>>>> >>> archive. The only limit is:
>>>> >>>
>>>> >>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) -
>>>> cds_total
>>>> >>>
>>>> >>> Then I don't understand why you can't use/load CDS archive when
>>>> coop
>>>> >>> or compklass are off:
>>>> >>>
>>>> >>> > If coop is turned off then CDS cannot be used. CDS will
>>>> only be
>>>> >>> > supported if both UseCompressedOops and
>>>> UseCompressedKlassPointers
>>>> >>> are
>>>> >>> > TRUE.
>>>> >>>
>>>> >>> Also based on code in arguments.cpp it is allowed to specify
>>>> >>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on
>>>> command line:
>>>> >>>
>>>> >>> 1466 // Turn on UseCompressedKlassPointers too
>>>> >>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>>>> >>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>>>> >>> 1469 }
>>>> >>>
>>>> >>> Did you tested such combination?
>>>> >>
>>>> >> I should let Harold answer this but I believe this is what his
>>>> test
>>>> >> does. For CDS on 64 bit, both must be on. We didn't want to
>>>> create 4
>>>> >> different archives. And it wouldn't make too much sense since
>>>> CDS for
>>>> >> 64 bit is a footprint savings so why would you use it without
>>>> >> compressing oops and class pointers? It's not a startup
>>>> savings on
>>>> >> server because we turn off interpreter bytecode quickening.
>>>> >>
>>>> >> Coleen
>>>> >>
>>>> >>>
>>>> >>>>>
>>>> >>>>> set_narrow_klass_base_and_shift() and
>>>> >>>>> can_use_cds_with_metaspace_addr() have the same code for
>>>> >>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>>> >>>>> can_use_cds_with_metaspace_addr() from
>>>> >>>>> set_narrow_klass_base_and_shift() ?
>>>> >>>> I could add new inlined methods that determine the
>>>> higher_address and
>>>> >>>> lower_base when UseSharedSpaces is true and have them called
>>>> from
>>>> >>>> set_narrow_klass_base_and_shift() and
>>>> >>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>>>> >>>
>>>> >>> I tried several approaches but your implementation is more
>>>> clean. So I
>>>> >>> agree to keep what you have now.
>>>> >>>
>>>> >>>
>>>> >>> Also I found strange assert which should always fail (old code in
>>>> >>> global_initialize() in metaspace.cpp):
>>>> >>>
>>>> >>> 2959 if (UseSharedSpaces) {
>>>> >>> ...
>>>> >>> 2969 } else {
>>>> >>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>>>> >>> 2971 "archive file not closed or shared spaces not
>>>> >>> disabled.");
>>>> >>>
>>>> >>> Thanks,
>>>> >>> Vladimir
>>>> >>>
>>>> >>>>>
>>>> >>>>> I see that you unconditionally set comp klass ptr base and
>>>> shift for
>>>> >>>>> DumpSharedSpaces. Should you do the check similar to
>>>> >>>>> can_use_cds_with_metaspace_addr() to find if you can do
>>>> that? You
>>>> >>>>> don't even check UseCompressedKlassPointers.
>>>> >>>> I don't think the checks are needed because the information
>>>> written to
>>>> >>>> the archive is not affected by the size of the class metaspace.
>>>> >>>>
>>>> >>>> Also, I recently added code to arguments.cpp that will
>>>> generate an
>>>> >>>> error
>>>> >>>> if UseCompressedOops or UseCompressedKlassPointers is turned
>>>> off and
>>>> >>>> DumpSharedSpaces is on.
>>>> >>>>>
>>>> >>>>> Why you have next limitation? What if coop can't be used
>>>> because of
>>>> >>>>> big heap?:
>>>> >>>>>
>>>> >>>>> + // UseCompressedOops and UseCompressedKlassPointers must
>>>> be on
>>>> >>>>> for UseSharedSpaces.
>>>> >>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>> >>>>> + no_shared_spaces();
>>>> >>>> If coop is turned off then CDS cannot be used. CDS will only be
>>>> >>>> supported if both UseCompressedOops and
>>>> UseCompressedKlassPointers are
>>>> >>>> TRUE.
>>>> >>>>>
>>>> >>>>> Could you move UseCompressedKlassPointers code in
>>>> arguments.cpp into
>>>> >>>>> separate method similar to set_use_compressed_oops()?
>>>> >>>> Done.
>>>> >>>>>
>>>> >>>>> About new tests.
>>>> >>>>> The first test in CDSCompressedKPtrsError misses
>>>> >>>>> -XX:+UseCompressedOops flag.
>>>> >>>> Fixed.
>>>> >>>>>
>>>> >>>>> Could you also test cross flags combinations?:
>>>> >>>>>
>>>> >>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>>> >>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>>> >>>> Done.
>>>> >>>>>
>>>> >>>>> It would be nice to have test to check ClassMetaspaceSize value
>>>> >>>>> range.
>>>> >>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither
>>>> maxint
>>>> >>>>> or maxuint.
>>>> >>>> A member of our runtime SQE group is writing additional tests.
>>>> I'll
>>>> >>>> ask
>>>> >>>> him to write a ClassMetaspaceSize range test.
>>>> >>>>
>>>> >>>> We chose 3Gb because we thought it was a sufficiently large
>>>> size.
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> About code style, indention. We align next line to
>>>> corresponding part
>>>> >>>>> of previous line if we need to split a line. And sometimes
>>>> it is
>>>> >>>>> better to keep one long line. I understand some of them were
>>>> before
>>>> >>>>> your changes but, please, clean up at lest ones you touched.
>>>> >>>> Done.
>>>> >>>>>
>>>> >>>>> Cases in metaspace.cpp:
>>>> >>>>>
>>>> >>>>> 2263 assert(raw_word_size >= min_size,
>>>> >>>>> 2264 err_msg("Should not deallocate dark matter "
>>>> SIZE_FORMAT "<"
>>>> >>>>> SIZE_FORMAT, word_size, min_size));
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2485 if (Metaspace::using_class_space() &&
>>>> >>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>>> >>>>> 2575 (Metaspace::using_class_space() ?
>>>> >>>>> 2576 Metaspace::class_space_list()->virtual_space_total() :
>>>> 0) :
>>>> >>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>>> >>>>> SIZE_FORMAT ", "
>>>> >>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>>> >>>>> ", "
>>>> >>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>>> >>>>> ", "
>>>> >>>>> 2697 "large count " SIZE_FORMAT,
>>>> >>>>> 2698 cls_specialized_count, cls_specialized_waste,
>>>> >>>>> 2699 cls_small_count, cls_small_waste,
>>>> >>>>> 2700 cls_medium_count, cls_medium_waste,
>>>> >>>>> cls_humongous_count);
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
>>>> >>>>> addr) &&
>>>> >>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2889 vm_exit_during_initialization(err_msg(
>>>> >>>>> 2890 "Could not allocate metaspace: %d bytes",
>>>> >>>>> 2891 class_metaspace_size()));
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 3107 return using_class_space() ?
>>>> >>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 3157 if (is_class && using_class_space()) {
>>>> >>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 3305 return space_list()->contains(ptr) ||
>>>> >>>>> 3306 (using_class_space() &&
>>>> class_space_list()->contains(ptr));
>>>> >>>>>
>>>> >>>>> metaspace.hpp:
>>>> >>>>>
>>>> >>>>> 270 return
>>>> _allocated_capacity_words[Metaspace::NonClassType] +
>>>> >>>>> 271 (Metaspace::using_class_space() ?
>>>> >>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>> >>>>>
>>>> >>>>> 285 return
>>>> _allocated_used_words[Metaspace::NonClassType] +
>>>> >>>>> 286 (Metaspace::using_class_space() ?
>>>> >>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>>> >>>>>
>>>> >>>>> universe.cpp:
>>>> >>>>>
>>>> >>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>>> >>>>> (intptr_t)(Universe::heap()->base() -
>>>> >>>>> 850 os::vm_page_size()) ||
>>>> >>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
>>>> >>>>> value");
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> Thanks,
>>>> >>>>> Vladimir
>>>> >>>>>
>>>> >>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>> >>>>>> Hi,
>>>> >>>>>>
>>>> >>>>>> Please review this updated webrev for bug 8003424:
>>>> >>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>> >>>>>>
>>>> >>>>>>
>>>> >>>>>> The updated webrev has a lot of changes from the previous
>>>> webrev,
>>>> >>>>>> including the following:
>>>> >>>>>>
>>>> >>>>>> 1. Class metaspace information is now output when
>>>> >>>>>> -XX:+PrintCompressedOopsMode is specified.
>>>> >>>>>>
>>>> >>>>>> 2. decode_klass_not_null(Register dst, Register src) no
>>>> longer
>>>> >>>>>> clobbers R12.
>>>> >>>>>>
>>>> >>>>>> 3. Method using_class_vsm() was renamed to
>>>> using_class_space().
>>>> >>>>>>
>>>> >>>>>> 4. Type narrowKlass was added and replaces narrowOop,
>>>> where
>>>> >>>>>> appropriate.
>>>> >>>>>>
>>>> >>>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>> >>>>>> unnecessary.
>>>> >>>>>>
>>>> >>>>>> 6. Metaspace::initialize_class_space() was made private.
>>>> >>>>>>
>>>> >>>>>> 7. Method max_heap_for_compressed_oops(), in
>>>> arguments.cpp, was
>>>> >>>>>> updated.
>>>> >>>>>>
>>>> >>>>>> Performance tests were run by Jenny using specjvm2008,
>>>> specjbb2005,
>>>> >>>>>> and
>>>> >>>>>> specjbb2013. The results showed no significant performance
>>>> >>>>>> difference
>>>> >>>>>> in terms of scores and gc behavior.
>>>> >>>>>>
>>>> >>>>>> Additional testing was done on Solaris Sparc and Linux x86
>>>> using
>>>> >>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16
>>>> & 32.
>>>> >>>>>>
>>>> >>>>>> Please let me know what additional tests should be run.
>>>> >>>>>>
>>>> >>>>>> Thanks!
>>>> >>>>>> Harold
>>>> >>>>>>
>>>> >>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>> >>>>>>> Hi Harold,
>>>> >>>>>>>
>>>> >>>>>>> > Usually the narrow_klass_base will be 32G and the
>>>> >>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment)
>>>> which
>>>> >>>>>>> means
>>>> >>>>>>> that
>>>> >>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will
>>>> need R12,
>>>> >>>>>>> unless
>>>> >>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does
>>>> that
>>>> >>>>>>> make
>>>> >>>>>>> sense?
>>>> >>>>>>>
>>>> >>>>>>> My bad, I miscalculated. But we have "perfect value"
>>>> 0x800000000
>>>> >>>>>>> and I
>>>> >>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>> >>>>>>> (assuming or
>>>> >>>>>>> with check that class metaspace size < 32Gb).
>>>> >>>>>>>
>>>> >>>>>>> > Is there one prefix byte per instruction, or just for
>>>> certain
>>>> >>>>>>> instructions?
>>>> >>>>>>>
>>>> >>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>> >>>>>>> prefix is
>>>> >>>>>>> necessary only if an instruction references one of the
>>>> extended
>>>> >>>>>>> registers or uses a 64-bit operand."
>>>> >>>>>>>
>>>> >>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16
>>>> and
>>>> >>>>>>> =32
>>>> >>>>>>> and big java heap. Recently we got several bugs which
>>>> indicated
>>>> >>>>>>> that
>>>> >>>>>>> we did not separate cleanly oops and klass pointers
>>>> en/decoding.
>>>> >>>>>>>
>>>> >>>>>>> Thanks,
>>>> >>>>>>> Vladimir
>>>> >>>>>>>
>>>> >>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>> >>>>>>>> Hi Vladimir,
>>>> >>>>>>>>
>>>> >>>>>>>> Thank you for the review! Please see inline comments.
>>>> >>>>>>>>
>>>> >>>>>>>> Thanks, Harold
>>>> >>>>>>>>
>>>> >>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>> >>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>> >>>>>>>>>> Nice clean up, Harold
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> Could you add the size of class metaspace in output with
>>>> >>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't
>>>> want to
>>>> >>>>>>>>>> remember an
>>>> >>>>>>>>>> other very long flag name:
>>>> TraceMetavirtualspaceAllocation.
>>>> >>>>>>>> Will be done in next webrev.
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> Also it would be nice to print these info line (and
>>>> compressed
>>>> >>>>>>>>>> oops
>>>> >>>>>>>>>> info
>>>> >>>>>>>>>> line) in hs_err files.
>>>> >>>>>>>> I filed an enhancement bug for this: 8021264
>>>> >>>>>>>> .
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL
>>>> needed?" in
>>>> >>>>>>>>>> x86_64.ad.
>>>> >>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>>>> >>>>>>>>>> arithmetic
>>>> >>>>>>>>>> instructions which modify flags: subq, addq, shrq,
>>>> xorptr. Also
>>>> >>>>>>>>>> note
>>>> >>>>>>>>>> that code in .ad file does not check the encoding mode for
>>>> >>>>>>>>>> narrow
>>>> >>>>>>>>>> klass/oop so it should be conservative and assume that
>>>> >>>>>>>>>> arithmetic
>>>> >>>>>>>>>> instructions are used.
>>>> >>>>>>>> OK. Thanks.
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass
>>>> base below
>>>> >>>>>>>>>> 4Gb so
>>>> >>>>>>>>>> the value is 32 bit. You can use it directly in narrow
>>>> klass
>>>> >>>>>>>>>> encoding/decoding without destroying R12.
>>>> >>>>>>>>>
>>>> >>>>>>>>> Correction. You can do it only if base < 2Gb max
>>>> positive int
>>>> >>>>>>>>> (sign
>>>> >>>>>>>>> bit is extended so you will get wrong result with address
>>>> > 2gb).
>>>> >>>>>>>> But the base will normally be 32Gb. So this case won't
>>>> happen
>>>> >>>>>>>> very
>>>> >>>>>>>> often.
>>>> >>>>>>>>>
>>>> >>>>>>>>> You definitely should not use R12 in
>>>> >>>>>>>>> decode_klass_not_null(Register
>>>> >>>>>>>>> dst, Register src) method where you have free 'dst'
>>>> register.
>>>> >>>>>>>> Will be fixed in next webrev.
>>>> >>>>>>>>>
>>>> >>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G).
>>>> Actually it
>>>> >>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it
>>>> should be
>>>> >>>>>>>>> 64Gb.
>>>> >>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>> >>>>>>>>>
>>>> >>>>>>>>> decode:
>>>> >>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>> >>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>> >>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>> >>>>>>>>> }
>>>> >>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>> >>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>> >>>>>>>>> }
>>>> >>>>>>>>>
>>>> >>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>> >>>>>>>>> (Universe::narrow_klass_base >>
>>>> LogKlassAlignmentInBytes) <=
>>>> >>>>>>>>> maxint
>>>> >>>>>>>>> (max positive int).
>>>> >>>>>>>> Usually the narrow_klass_base will be 32G and the
>>>> >>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment)
>>>> which means
>>>> >>>>>>>> that
>>>> >>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need
>>>> R12,
>>>> >>>>>>>> unless
>>>> >>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does
>>>> that
>>>> >>>>>>>> make
>>>> >>>>>>>> sense?
>>>> >>>>>>>>>
>>>> >>>>>>>>> And you have general memory reservation problem. At
>>>> least on
>>>> >>>>>>>>> Solaris,
>>>> >>>>>>>>> as I remember, OS will always try to keep protected 4Kb
>>>> pages
>>>> >>>>>>>>> between
>>>> >>>>>>>>> different requested memory regions. That is why in jdk7 we
>>>> first
>>>> >>>>>>>>> reserve one huge space and then cut it on java heap, perm
>>>> gen and
>>>> >>>>>>>>> protection page below heap to catch implicit NULL
>>>> exceptions with
>>>> >>>>>>>>> compressed oops.
>>>> >>>>>>>>>
>>>> >>>>>>>>> So, please, verify that you are getting 'cds_address +
>>>> cds_total'
>>>> >>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>> >>>>>>>>> compressed
>>>> >>>>>>>>> oops and with Xmx20Gb.
>>>> >>>>>>>> I verifed that we get either cds_address+cds_total as the
>>>> >>>>>>>> address, or
>>>> >>>>>>>> CompressedKlassPointersBase as the address without CDS on
>>>> Linux,
>>>> >>>>>>>> Windows
>>>> >>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>> >>>>>>>> sizes and
>>>> >>>>>>>> -Xmx32G.
>>>> >>>>>>>>
>>>> >>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or
>>>> the
>>>> >>>>>>>> desired
>>>> >>>>>>>> CDS address for class metaspace regardless of heap size.
>>>> >>>>>>>>>
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>> >>>>>>>>>> unfortunately we
>>>> >>>>>>>>>> can't do other way. I assume you use max size because
>>>> >>>>>>>>>> depending on
>>>> >>>>>>>>>> registers used in instructions you will or will not get
>>>> prefix
>>>> >>>>>>>>>> byte
>>>> >>>>>>>>>> (r8-r15).
>>>> >>>>>>>> Is there one prefix byte per instruction, or just for
>>>> certain
>>>> >>>>>>>> instructions?
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> I will look on changes in more details may be late.
>>>> >>>>>>>>>
>>>> >>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>>>> >>>>>>>>> abbreviations
>>>> >>>>>>>>> which are not obvious.
>>>> >>>>>>>> I changed using_class_vsm() to using_class_space().
>>>> >>>>>>>>>
>>>> >>>>>>>>>
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> Thanks,
>>>> >>>>>>>>>> Vladimir
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>> >>>>>>>>>>> Hi,
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Please review this fix for bug 8003424.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Open webrev at
>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Open bug links at:
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> JBS Bug links at
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> This fix provides support for using compressed klass
>>>> pointers
>>>> >>>>>>>>>>> with
>>>> >>>>>>>>>>> CDS.
>>>> >>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>> >>>>>>>>>>> platforms
>>>> >>>>>>>>>>> when
>>>> >>>>>>>>>>> UseCompressedKlassPointers is true. Instead of
>>>> allocating the
>>>> >>>>>>>>>>> class
>>>> >>>>>>>>>>> metaspace as part of the Java Heap allocation and
>>>> locating
>>>> >>>>>>>>>>> it at
>>>> >>>>>>>>>>> the
>>>> >>>>>>>>>>> base of that allocation, the metaspace will now be
>>>> allocated
>>>> >>>>>>>>>>> separately,
>>>> >>>>>>>>>>> above the Java heap. This will enable future expansion
>>>> of the
>>>> >>>>>>>>>>> metaspace
>>>> >>>>>>>>>>> because it won't be backed up against the Java heap. If
>>>> CDS is
>>>> >>>>>>>>>>> being
>>>> >>>>>>>>>>> used, then the CDS region will be allocated between the
>>>> Java
>>>> >>>>>>>>>>> heap and
>>>> >>>>>>>>>>> the metaspace.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>> >>>>>>>>>>> memory at
>>>> >>>>>>>>>>> 32G,
>>>> >>>>>>>>>>> or above the CDS region, if it is present. Because of
>>>> this,
>>>> >>>>>>>>>>> encoding
>>>> >>>>>>>>>>> and decoding of compressed klass pointers will always
>>>> >>>>>>>>>>> require use
>>>> >>>>>>>>>>> of a
>>>> >>>>>>>>>>> base register. So, encoding and decoding of compressed
>>>> klass
>>>> >>>>>>>>>>> pointers
>>>> >>>>>>>>>>> will differ from compressed oops.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> There are no class metaspace allocation changes if
>>>> >>>>>>>>>>> UseCompressedKlassPointers is turned off or if running
>>>> on a
>>>> >>>>>>>>>>> 32-bit
>>>> >>>>>>>>>>> platform.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> The code changes also include some cleanup and will fix
>>>> bugs
>>>> >>>>>>>>>>> 8016729,
>>>> >>>>>>>>>>> 8011610, and 8003424.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Many of the modules in this webrev contain a lot of
>>>> changes.
>>>> >>>>>>>>>>> Modules
>>>> >>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>> >>>>>>>>>>> changed to
>>>> >>>>>>>>>>> support the new encoding and decoding of compressed klass
>>>> >>>>>>>>>>> pointers.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Module metaspace.cpp was changed significantly to support
>>>> >>>>>>>>>>> the new
>>>> >>>>>>>>>>> allocation for metaspace and the CDS region and to
>>>> determine
>>>> >>>>>>>>>>> compressed
>>>> >>>>>>>>>>> klass pointer encoding base and shifting values.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Most of the changes to module universe.cpp were to
>>>> remove code
>>>> >>>>>>>>>>> related
>>>> >>>>>>>>>>> to allocating metaspace and remove code that considered
>>>> >>>>>>>>>>> compressed
>>>> >>>>>>>>>>> klass
>>>> >>>>>>>>>>> pointers when determining the compressed oops compression
>>>> >>>>>>>>>>> mechanism.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were
>>>> changed as
>>>> >>>>>>>>>>> part
>>>> >>>>>>>>>>> of a
>>>> >>>>>>>>>>> cleanup requested by Coleen.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> These changes were tested with JCK Lang and VM tests,
>>>> JTReg
>>>> >>>>>>>>>>> tests,
>>>> >>>>>>>>>>> JPRT,
>>>> >>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>>>> >>>>>>>>>>> vm.mlvm.testlist
>>>> >>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>>>> >>>>>>>>>>> -Xshare:off
>>>> >>>>>>>>>>> (with
>>>> >>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>>>> >>>>>>>>>>> Linux and
>>>> >>>>>>>>>>> 64-Bit
>>>> >>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS.
>>>> JCK tests
>>>> >>>>>>>>>>> were
>>>> >>>>>>>>>>> run on Solaris x86.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> The performance impact of these changes is TBD.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Thanks, Harold
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>>
>>>> >>>>>>>>
>>>> >>>>>>
>>>> >>>>
>>>> >>
>>>>
>>
From erik.helin at oracle.com Wed Aug 14 07:49:06 2013
From: erik.helin at oracle.com (Erik Helin)
Date: Wed, 14 Aug 2013 16:49:06 +0200
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass space
Message-ID: <20130814144906.GC2649@ehelin-thinkpad>
Hi all,
this change adds performance counters for compressed class space.
Webrev:
http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
Changes to hotspot:
The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
where the class MetaspaceCounters has been split up into
MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
an instance of MetaspacePerfCounters. The class
CompressedClassSpaceCounters has been added which also has its own
instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
updates the actual performance counters.
The changes in metaspace.hpp/cpp were needed to get some additional data
from the metaspace data structures. The method
free_chunks_in_total(mdtype) was made public and the method
free_bytes(mdtype) was added. Some common functionality was extracted
into get_space_list(mdtype) which got rid of some duplicated code.
The changes in:
- g1MonitorinSupport.cpp
- parallelScavengeHeap.cpp
- genCollectedHeap.cpp
- universe.cpp
are only "one-liners" that either update or initialize the new performance
counters.
Changes to the testlibrary:
- Added Asserts.java for writing asserts like "assertTrue",
"assertEquals", etc.
- Added PerfCounter.java and PerfCounters.java to make it easy to
inspect performance counters for the currently running VM.
- Added InputArguments.java so a test can check the arguments it got
passed.
- Added InMemoryJavaCompiler.java for compiling a string into bytecode.
Useful for loading classes generated at runtime without using files.
- Added ByteCodeLoader.java for defining a new class when you already
have the bytecode.
Testing:
- Added the new test TestMetaspacePerfCounters.java
- JPRT
Bug:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
Thanks,
Erik
From ron.durbin at oracle.com Wed Aug 14 09:49:08 2013
From: ron.durbin at oracle.com (Ron Durbin)
Date: Wed, 14 Aug 2013 09:49:08 -0700 (PDT)
Subject: JDK-8005073 open code review, (round 0)
In-Reply-To: <520ADE08.9010600@oracle.com>
References: <095a82a5-052e-447a-96b5-86e146566366@default>
<520ADE08.9010600@oracle.com>
Message-ID:
Thx for reviewing this change.
> -----Original Message-----
> From: Daniel D. Daugherty
> Sent: Tuesday, August 13, 2013 7:32 PM
> To: Ron Durbin
> Cc: hotspot-runtime-dev at openjdk.java.net
> Subject: Re: JDK-8005073 open code review, (round 0)
>
> On 8/13/13 5:42 PM, Ron Durbin wrote:
> > JDK-8005073 [TESTBUG] remove crufty '_g' support from HS tests
> >
> > http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8005073
> >
> > Summary:
> >
> > Remove all support and references to '_g' from all open test files.
> >
> > OpenJDK URL: http://cr.openjdk.java.net/~rdurbin/8005073_open_webrev/
> >
> > Testing so far has included:
> >
> > JPRT all platforms
> >
>
> test/Makefile
> No comments.
>
> Thumbs up.
>
> Dan
>
From ron.durbin at oracle.com Wed Aug 14 09:49:56 2013
From: ron.durbin at oracle.com (Ron Durbin)
Date: Wed, 14 Aug 2013 09:49:56 -0700 (PDT)
Subject: JDK-8005073 open code review, (round 0)
In-Reply-To: <25198B11-0FEA-4A97-832B-ED023FF2E5D5@oracle.com>
References: <095a82a5-052e-447a-96b5-86e146566366@default>
<25198B11-0FEA-4A97-832B-ED023FF2E5D5@oracle.com>
Message-ID: <21d7a227-222a-4e94-a0cc-f4bb45c3549d@default>
Thanks for reviewing this change.
> -----Original Message-----
> From: Staffan Larsen
> Sent: Wednesday, August 14, 2013 5:53 AM
> To: Ron Durbin
> Cc: hotspot-runtime-dev at openjdk.java.net
> Subject: Re: JDK-8005073 open code review, (round 0)
>
> Looks good!
>
> /Staffan
>
> On 14 aug 2013, at 01:42, Ron Durbin wrote:
>
> > JDK-8005073 [TESTBUG] remove crufty '_g' support from HS tests
> >
> > http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8005073
> >
> > Summary:
> >
> > Remove all support and references to '_g' from all open test files.
> >
> > OpenJDK URL: http://cr.openjdk.java.net/~rdurbin/8005073_open_webrev/
> >
> > Testing so far has included:
> >
> > JPRT all platforms
> >
>
From coleen.phillimore at oracle.com Wed Aug 14 11:11:40 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Wed, 14 Aug 2013 14:11:40 -0400
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <20130814144906.GC2649@ehelin-thinkpad>
References: <20130814144906.GC2649@ehelin-thinkpad>
Message-ID: <520BC85C.1010109@oracle.com>
Erik,
I didn't review the test code but the product code looks good, except
that after Harold's change there won't be a compressed class space
allocated if !UseCompressedKlassPointers. It appears that you allocate
a performance counter for the compressed class space, but don't fill it
in if !UseCompressedKlassPointers. The code in metaspace.cpp assumes
that a class_space_list() returns non-null, so that works now but won't
(soon, I hope). Can you write the code to still work if
class_space_list() returns null because otherwise there's going to be a
merge conflict that hg won't detect. lines 2564 and 2571.
Thanks,
Coleen
On 8/14/2013 10:49 AM, Erik Helin wrote:
> Hi all,
>
> this change adds performance counters for compressed class space.
>
> Webrev:
> http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
>
> Changes to hotspot:
> The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
> where the class MetaspaceCounters has been split up into
> MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
> an instance of MetaspacePerfCounters. The class
> CompressedClassSpaceCounters has been added which also has its own
> instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
> updates the actual performance counters.
>
> The changes in metaspace.hpp/cpp were needed to get some additional data
> from the metaspace data structures. The method
> free_chunks_in_total(mdtype) was made public and the method
> free_bytes(mdtype) was added. Some common functionality was extracted
> into get_space_list(mdtype) which got rid of some duplicated code.
>
> The changes in:
> - g1MonitorinSupport.cpp
> - parallelScavengeHeap.cpp
> - genCollectedHeap.cpp
> - universe.cpp
> are only "one-liners" that either update or initialize the new performance
> counters.
>
> Changes to the testlibrary:
> - Added Asserts.java for writing asserts like "assertTrue",
> "assertEquals", etc.
> - Added PerfCounter.java and PerfCounters.java to make it easy to
> inspect performance counters for the currently running VM.
> - Added InputArguments.java so a test can check the arguments it got
> passed.
> - Added InMemoryJavaCompiler.java for compiling a string into bytecode.
> Useful for loading classes generated at runtime without using files.
> - Added ByteCodeLoader.java for defining a new class when you already
> have the bytecode.
>
> Testing:
> - Added the new test TestMetaspacePerfCounters.java
> - JPRT
>
> Bug:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
>
> Thanks,
> Erik
From ioi.lam at oracle.com Wed Aug 14 15:11:49 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Wed, 14 Aug 2013 15:11:49 -0700
Subject: RFR (S) 8022335 - Native stack walk while generating hs_err does
not work on Windows x64
Message-ID: <520C00A5.5070306@oracle.com>
|Please review this fix:||
||
||http://cr.openjdk.java.net/~iklam/8022335/win64_stack_walk_001/||
||
||Bug: Native stack walk while generating hs_err does not work on
Windows x64||
||
||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022335||
|| https://jbs.oracle.com/bugs/browse/JDK-8022335||
||
||Summary of fix:||
||
|| Windows x64 binaries are built (unconditionally) with the
equivalent of ||
|| -fomit-frame-pointer, so HotSpot's build-in native stack walking
code ||
|| will fail to find the sender frame. As a result, hs_err on
Windows/x64||
|| will always list a single frame.||
||
|| I have added the NATIVE_UNWIND_MARK macro, which on Windows/x64
will invoke||
|| the StackWalk64 API to walk the stace.||
||
||Deficiency of fix:||
||
|| StackWalk64 knows nothing about the Java frames. So hs_err will
display only||
|| the native frames, and stop as soon as the first Java frame is
reached. It will||
|| also NOT display any native frames below Java frames.||
||
|| A 'proper' implementation would be to use the the lower-level API ||
|| SymFunctionTableAccess64 (which reads native frame linkage info
from the PE32+||
|| file header). That way we can walk both the native and Java
frames. However, ||
|| as noted in the bug report, this is more complex and I will leave it||
|| for the future.||
||
|| As a side-fix, I also refactored a bunch of duplicated code in
decoder.cpp into||
|| the DecoderLocker class.||
||
||Tests:||
||
|| JPRT||
|| UTE (vm.runtime.testlist, vm.quick.testlist,
vm.parallel_class_loading.testlist)||
||
|| I also manually inserted some crashes into jvm.dll and verified
that the ||
|| native stack trace is printed as expected.||
||
||
||Thanks||
||- Ioi||
||
|
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130814/bb2a4a1f/attachment.html
From vladimir.kozlov at oracle.com Wed Aug 14 16:24:54 2013
From: vladimir.kozlov at oracle.com (Vladimir Kozlov)
Date: Wed, 14 Aug 2013 16:24:54 -0700
Subject: RFR (S) 8022335 - Native stack walk while generating hs_err does
not work on Windows x64
In-Reply-To: <520C00A5.5070306@oracle.com>
References: <520C00A5.5070306@oracle.com>
Message-ID: <520C11C6.9010707@oracle.com>
For your information I am pushing next related changes:
http://cr.openjdk.java.net/~kvn/8021898/webrev/src/share/vm/utilities/vmError.cpp.cdiff.html
Vladimir
On 8/14/13 3:11 PM, Ioi Lam wrote:
> |Please review this fix:||
> ||
> ||http://cr.openjdk.java.net/~iklam/8022335/win64_stack_walk_001/||
> ||
> ||Bug: Native stack walk while generating hs_err does not work on
> Windows x64||
> ||
> ||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022335||
> ||https://jbs.oracle.com/bugs/browse/JDK-8022335||
> ||
> ||Summary of fix:||
> ||
> || Windows x64 binaries are built (unconditionally) with the
> equivalent of ||
> || -fomit-frame-pointer, so HotSpot's build-in native stack walking
> code ||
> || will fail to find the sender frame. As a result, hs_err on
> Windows/x64||
> || will always list a single frame.||
> ||
> || I have added the NATIVE_UNWIND_MARK macro, which on Windows/x64
> will invoke||
> || the StackWalk64 API to walk the stace.||
> ||
> ||Deficiency of fix:||
> ||
> || StackWalk64 knows nothing about the Java frames. So hs_err will
> display only||
> || the native frames, and stop as soon as the first Java frame is
> reached. It will||
> || also NOT display any native frames below Java frames.||
> ||
> || A 'proper' implementation would be to use the the lower-level API ||
> || SymFunctionTableAccess64 (which reads native frame linkage info
> from the PE32+||
> || file header). That way we can walk both the native and Java
> frames. However, ||
> || as noted in the bug report, this is more complex and I will leave it||
> || for the future.||
> ||
> || As a side-fix, I also refactored a bunch of duplicated code in
> decoder.cpp into||
> || the DecoderLocker class.||
> ||
> ||Tests:||
> ||
> || JPRT||
> || UTE (vm.runtime.testlist, vm.quick.testlist,
> vm.parallel_class_loading.testlist)||
> ||
> || I also manually inserted some crashes into jvm.dll and verified
> that the ||
> || native stack trace is printed as expected.||
> ||
> ||
> ||Thanks||
> ||- Ioi||
> ||
> |
From ioi.lam at oracle.com Wed Aug 14 16:48:28 2013
From: ioi.lam at oracle.com (Ioi Lam)
Date: Wed, 14 Aug 2013 16:48:28 -0700
Subject: RFR (S) 8022335 - Native stack walk while generating hs_err does
not work on Windows x64
In-Reply-To: <520C11C6.9010707@oracle.com>
References: <520C00A5.5070306@oracle.com> <520C11C6.9010707@oracle.com>
Message-ID: <520C174C.5010808@oracle.com>
Thanks Vladimir,
I will wait for your commit and test with it.
- Ioi
On 08/14/2013 04:24 PM, Vladimir Kozlov wrote:
> For your information I am pushing next related changes:
>
> http://cr.openjdk.java.net/~kvn/8021898/webrev/src/share/vm/utilities/vmError.cpp.cdiff.html
>
>
> Vladimir
>
> On 8/14/13 3:11 PM, Ioi Lam wrote:
>> |Please review this fix:||
>> ||
>> ||http://cr.openjdk.java.net/~iklam/8022335/win64_stack_walk_001/||
>> ||
>> ||Bug: Native stack walk while generating hs_err does not work on
>> Windows x64||
>> ||
>> ||http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8022335||
>> ||https://jbs.oracle.com/bugs/browse/JDK-8022335||
>> ||
>> ||Summary of fix:||
>> ||
>> || Windows x64 binaries are built (unconditionally) with the
>> equivalent of ||
>> || -fomit-frame-pointer, so HotSpot's build-in native stack walking
>> code ||
>> || will fail to find the sender frame. As a result, hs_err on
>> Windows/x64||
>> || will always list a single frame.||
>> ||
>> || I have added the NATIVE_UNWIND_MARK macro, which on Windows/x64
>> will invoke||
>> || the StackWalk64 API to walk the stace.||
>> ||
>> ||Deficiency of fix:||
>> ||
>> || StackWalk64 knows nothing about the Java frames. So hs_err will
>> display only||
>> || the native frames, and stop as soon as the first Java frame is
>> reached. It will||
>> || also NOT display any native frames below Java frames.||
>> ||
>> || A 'proper' implementation would be to use the the lower-level
>> API ||
>> || SymFunctionTableAccess64 (which reads native frame linkage info
>> from the PE32+||
>> || file header). That way we can walk both the native and Java
>> frames. However, ||
>> || as noted in the bug report, this is more complex and I will
>> leave it||
>> || for the future.||
>> ||
>> || As a side-fix, I also refactored a bunch of duplicated code in
>> decoder.cpp into||
>> || the DecoderLocker class.||
>> ||
>> ||Tests:||
>> ||
>> || JPRT||
>> || UTE (vm.runtime.testlist, vm.quick.testlist,
>> vm.parallel_class_loading.testlist)||
>> ||
>> || I also manually inserted some crashes into jvm.dll and verified
>> that the ||
>> || native stack trace is printed as expected.||
>> ||
>> ||
>> ||Thanks||
>> ||- Ioi||
>> ||
>> |
From daniel.daugherty at oracle.com Wed Aug 14 23:04:06 2013
From: daniel.daugherty at oracle.com (daniel.daugherty at oracle.com)
Date: Thu, 15 Aug 2013 06:04:06 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8005073: [TESTBUG] remove crufty '_g'
support from HS tests
Message-ID: <20130815060410.EA68F488B4@hg.openjdk.java.net>
Changeset: d96f52012aaa
Author: rdurbin
Date: 2013-08-14 15:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/d96f52012aaa
8005073: [TESTBUG] remove crufty '_g' support from HS tests
Summary: remove crufty '_g' support from HS tests
Reviewed-by: dcubed, sla
! test/Makefile
From erik.helin at oracle.com Thu Aug 15 02:20:01 2013
From: erik.helin at oracle.com (Erik Helin)
Date: Thu, 15 Aug 2013 11:20:01 +0200
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <520BC85C.1010109@oracle.com>
References: <20130814144906.GC2649@ehelin-thinkpad>
<520BC85C.1010109@oracle.com>
Message-ID: <20130815092001.GA3750@ehelin-thinkpad>
(Adding hotspot-gc-dev at openjdk.java.net)
Hi Coleen,
thanks for the review!
On 2013-08-14, Coleen Phillimore wrote:
>
> Erik,
>
> I didn't review the test code but the product code looks good,
> except that after Harold's change there won't be a compressed class
> space allocated if !UseCompressedKlassPointers. It appears that you
> allocate a performance counter for the compressed class space, but
> don't fill it in if !UseCompressedKlassPointers. The code in
> metaspace.cpp assumes that a class_space_list() returns non-null, so
> that works now but won't (soon, I hope). Can you write the code to
> still work if class_space_list() returns null because otherwise
> there's going to be a merge conflict that hg won't detect. lines
> 2564 and 2571.
Sure, thanks for reminding me of Harold's change.
I've uploaded a new webrev at:
http://cr.openjdk.java.net/~ehelin/8014659/webrev.01/
For the difference between webrev.00 and webrev.01, please see:
http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
Thanks,
Erik
>
> Thanks,
> Coleen
>
> On 8/14/2013 10:49 AM, Erik Helin wrote:
> >Hi all,
> >
> >this change adds performance counters for compressed class space.
> >
> >Webrev:
> >http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
> >
> >Changes to hotspot:
> >The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
> >where the class MetaspaceCounters has been split up into
> >MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
> >an instance of MetaspacePerfCounters. The class
> >CompressedClassSpaceCounters has been added which also has its own
> >instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
> >updates the actual performance counters.
> >
> >The changes in metaspace.hpp/cpp were needed to get some additional data
> >from the metaspace data structures. The method
> >free_chunks_in_total(mdtype) was made public and the method
> >free_bytes(mdtype) was added. Some common functionality was extracted
> >into get_space_list(mdtype) which got rid of some duplicated code.
> >
> >The changes in:
> >- g1MonitorinSupport.cpp
> >- parallelScavengeHeap.cpp
> >- genCollectedHeap.cpp
> >- universe.cpp
> >are only "one-liners" that either update or initialize the new performance
> >counters.
> >
> >Changes to the testlibrary:
> >- Added Asserts.java for writing asserts like "assertTrue",
> > "assertEquals", etc.
> >- Added PerfCounter.java and PerfCounters.java to make it easy to
> > inspect performance counters for the currently running VM.
> >- Added InputArguments.java so a test can check the arguments it got
> > passed.
> >- Added InMemoryJavaCompiler.java for compiling a string into bytecode.
> > Useful for loading classes generated at runtime without using files.
> >- Added ByteCodeLoader.java for defining a new class when you already
> > have the bytecode.
> >
> >Testing:
> >- Added the new test TestMetaspacePerfCounters.java
> >- JPRT
> >
> >Bug:
> >http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
> >
> >Thanks,
> >Erik
>
From david.holmes at oracle.com Thu Aug 15 03:01:44 2013
From: david.holmes at oracle.com (David Holmes)
Date: Thu, 15 Aug 2013 20:01:44 +1000
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <20130814144906.GC2649@ehelin-thinkpad>
References: <20130814144906.GC2649@ehelin-thinkpad>
Message-ID: <520CA708.4090309@oracle.com>
Hi Erik,
Can you add -XX:+UsePerfData to the @run for all tests that require
UsePerfData to be true (most I expect). This will let the new tests play
nicely with the Embedded builds.
Thanks,
David
On 15/08/2013 12:49 AM, Erik Helin wrote:
> Hi all,
>
> this change adds performance counters for compressed class space.
>
> Webrev:
> http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
>
> Changes to hotspot:
> The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
> where the class MetaspaceCounters has been split up into
> MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
> an instance of MetaspacePerfCounters. The class
> CompressedClassSpaceCounters has been added which also has its own
> instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
> updates the actual performance counters.
>
> The changes in metaspace.hpp/cpp were needed to get some additional data
> from the metaspace data structures. The method
> free_chunks_in_total(mdtype) was made public and the method
> free_bytes(mdtype) was added. Some common functionality was extracted
> into get_space_list(mdtype) which got rid of some duplicated code.
>
> The changes in:
> - g1MonitorinSupport.cpp
> - parallelScavengeHeap.cpp
> - genCollectedHeap.cpp
> - universe.cpp
> are only "one-liners" that either update or initialize the new performance
> counters.
>
> Changes to the testlibrary:
> - Added Asserts.java for writing asserts like "assertTrue",
> "assertEquals", etc.
> - Added PerfCounter.java and PerfCounters.java to make it easy to
> inspect performance counters for the currently running VM.
> - Added InputArguments.java so a test can check the arguments it got
> passed.
> - Added InMemoryJavaCompiler.java for compiling a string into bytecode.
> Useful for loading classes generated at runtime without using files.
> - Added ByteCodeLoader.java for defining a new class when you already
> have the bytecode.
>
> Testing:
> - Added the new test TestMetaspacePerfCounters.java
> - JPRT
>
> Bug:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
>
> Thanks,
> Erik
>
From erik.helin at oracle.com Thu Aug 15 04:32:58 2013
From: erik.helin at oracle.com (Erik Helin)
Date: Thu, 15 Aug 2013 13:32:58 +0200
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <520CA708.4090309@oracle.com>
References: <20130814144906.GC2649@ehelin-thinkpad>
<520CA708.4090309@oracle.com>
Message-ID: <20130815113258.GB3750@ehelin-thinkpad>
Hi David,
thanks for reviewing!
On 2013-08-15, David Holmes wrote:
> Hi Erik,
>
> Can you add -XX:+UsePerfData to the @run for all tests that require
> UsePerfData to be true (most I expect).
Sure, please see new webrev at:
http://cr.openjdk.java.net/~ehelin/8014659/webrev.02/
For the changes from webrev.00, please see:
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
Thanks,
Erik
> This will let the new tests play nicely with the Embedded builds.
>
> Thanks,
> David
>
>
> On 15/08/2013 12:49 AM, Erik Helin wrote:
> >Hi all,
> >
> >this change adds performance counters for compressed class space.
> >
> >Webrev:
> >http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
> >
> >Changes to hotspot:
> >The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
> >where the class MetaspaceCounters has been split up into
> >MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
> >an instance of MetaspacePerfCounters. The class
> >CompressedClassSpaceCounters has been added which also has its own
> >instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
> >updates the actual performance counters.
> >
> >The changes in metaspace.hpp/cpp were needed to get some additional data
> >from the metaspace data structures. The method
> >free_chunks_in_total(mdtype) was made public and the method
> >free_bytes(mdtype) was added. Some common functionality was extracted
> >into get_space_list(mdtype) which got rid of some duplicated code.
> >
> >The changes in:
> >- g1MonitorinSupport.cpp
> >- parallelScavengeHeap.cpp
> >- genCollectedHeap.cpp
> >- universe.cpp
> >are only "one-liners" that either update or initialize the new performance
> >counters.
> >
> >Changes to the testlibrary:
> >- Added Asserts.java for writing asserts like "assertTrue",
> > "assertEquals", etc.
> >- Added PerfCounter.java and PerfCounters.java to make it easy to
> > inspect performance counters for the currently running VM.
> >- Added InputArguments.java so a test can check the arguments it got
> > passed.
> >- Added InMemoryJavaCompiler.java for compiling a string into bytecode.
> > Useful for loading classes generated at runtime without using files.
> >- Added ByteCodeLoader.java for defining a new class when you already
> > have the bytecode.
> >
> >Testing:
> >- Added the new test TestMetaspacePerfCounters.java
> >- JPRT
> >
> >Bug:
> >http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
> >
> >Thanks,
> >Erik
> >
From david.holmes at oracle.com Thu Aug 15 04:38:23 2013
From: david.holmes at oracle.com (David Holmes)
Date: Thu, 15 Aug 2013 21:38:23 +1000
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <20130815113258.GB3750@ehelin-thinkpad>
References: <20130814144906.GC2649@ehelin-thinkpad>
<520CA708.4090309@oracle.com>
<20130815113258.GB3750@ehelin-thinkpad>
Message-ID: <520CBDAF.6080803@oracle.com>
On 15/08/2013 9:32 PM, Erik Helin wrote:
> Hi David,
>
> thanks for reviewing!
Sorry not a review, I only glanced at the tests.
> On 2013-08-15, David Holmes wrote:
>> Hi Erik,
>>
>> Can you add -XX:+UsePerfData to the @run for all tests that require
>> UsePerfData to be true (most I expect).
>
> Sure, please see new webrev at:
> http://cr.openjdk.java.net/~ehelin/8014659/webrev.02/
Thanks!
David
-----
> For the changes from webrev.00, please see:
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
>
> Thanks,
> Erik
>
>> This will let the new tests play nicely with the Embedded builds.
>>
>> Thanks,
>> David
>>
>>
>> On 15/08/2013 12:49 AM, Erik Helin wrote:
>>> Hi all,
>>>
>>> this change adds performance counters for compressed class space.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
>>>
>>> Changes to hotspot:
>>> The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
>>> where the class MetaspaceCounters has been split up into
>>> MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
>>> an instance of MetaspacePerfCounters. The class
>>> CompressedClassSpaceCounters has been added which also has its own
>>> instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
>>> updates the actual performance counters.
>>>
>>> The changes in metaspace.hpp/cpp were needed to get some additional data
>> >from the metaspace data structures. The method
>>> free_chunks_in_total(mdtype) was made public and the method
>>> free_bytes(mdtype) was added. Some common functionality was extracted
>>> into get_space_list(mdtype) which got rid of some duplicated code.
>>>
>>> The changes in:
>>> - g1MonitorinSupport.cpp
>>> - parallelScavengeHeap.cpp
>>> - genCollectedHeap.cpp
>>> - universe.cpp
>>> are only "one-liners" that either update or initialize the new performance
>>> counters.
>>>
>>> Changes to the testlibrary:
>>> - Added Asserts.java for writing asserts like "assertTrue",
>>> "assertEquals", etc.
>>> - Added PerfCounter.java and PerfCounters.java to make it easy to
>>> inspect performance counters for the currently running VM.
>>> - Added InputArguments.java so a test can check the arguments it got
>>> passed.
>>> - Added InMemoryJavaCompiler.java for compiling a string into bytecode.
>>> Useful for loading classes generated at runtime without using files.
>>> - Added ByteCodeLoader.java for defining a new class when you already
>>> have the bytecode.
>>>
>>> Testing:
>>> - Added the new test TestMetaspacePerfCounters.java
>>> - JPRT
>>>
>>> Bug:
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
>>>
>>> Thanks,
>>> Erik
>>>
From erik.helin at oracle.com Thu Aug 15 04:56:23 2013
From: erik.helin at oracle.com (Erik Helin)
Date: Thu, 15 Aug 2013 13:56:23 +0200
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <520CBDAF.6080803@oracle.com>
References: <20130814144906.GC2649@ehelin-thinkpad>
<520CA708.4090309@oracle.com>
<20130815113258.GB3750@ehelin-thinkpad>
<520CBDAF.6080803@oracle.com>
Message-ID: <20130815115623.GC3750@ehelin-thinkpad>
On 2013-08-15, David Holmes wrote:
> On 15/08/2013 9:32 PM, Erik Helin wrote:
> >Hi David,
> >
> >thanks for reviewing!
>
> Sorry not a review, I only glanced at the tests.
Ok, but thanks for having a look :)
Erik
> >On 2013-08-15, David Holmes wrote:
> >>Hi Erik,
> >>
> >>Can you add -XX:+UsePerfData to the @run for all tests that require
> >>UsePerfData to be true (most I expect).
> >
> >Sure, please see new webrev at:
> >http://cr.openjdk.java.net/~ehelin/8014659/webrev.02/
>
> Thanks!
>
> David
> -----
>
> >For the changes from webrev.00, please see:
> >- http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
> >- http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
> >
> >Thanks,
> >Erik
> >
> >>This will let the new tests play nicely with the Embedded builds.
> >>
> >>Thanks,
> >>David
> >>
> >>
> >>On 15/08/2013 12:49 AM, Erik Helin wrote:
> >>>Hi all,
> >>>
> >>>this change adds performance counters for compressed class space.
> >>>
> >>>Webrev:
> >>>http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
> >>>
> >>>Changes to hotspot:
> >>>The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
> >>>where the class MetaspaceCounters has been split up into
> >>>MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
> >>>an instance of MetaspacePerfCounters. The class
> >>>CompressedClassSpaceCounters has been added which also has its own
> >>>instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
> >>>updates the actual performance counters.
> >>>
> >>>The changes in metaspace.hpp/cpp were needed to get some additional data
> >>>from the metaspace data structures. The method
> >>>free_chunks_in_total(mdtype) was made public and the method
> >>>free_bytes(mdtype) was added. Some common functionality was extracted
> >>>into get_space_list(mdtype) which got rid of some duplicated code.
> >>>
> >>>The changes in:
> >>>- g1MonitorinSupport.cpp
> >>>- parallelScavengeHeap.cpp
> >>>- genCollectedHeap.cpp
> >>>- universe.cpp
> >>>are only "one-liners" that either update or initialize the new performance
> >>>counters.
> >>>
> >>>Changes to the testlibrary:
> >>>- Added Asserts.java for writing asserts like "assertTrue",
> >>> "assertEquals", etc.
> >>>- Added PerfCounter.java and PerfCounters.java to make it easy to
> >>> inspect performance counters for the currently running VM.
> >>>- Added InputArguments.java so a test can check the arguments it got
> >>> passed.
> >>>- Added InMemoryJavaCompiler.java for compiling a string into bytecode.
> >>> Useful for loading classes generated at runtime without using files.
> >>>- Added ByteCodeLoader.java for defining a new class when you already
> >>> have the bytecode.
> >>>
> >>>Testing:
> >>>- Added the new test TestMetaspacePerfCounters.java
> >>>- JPRT
> >>>
> >>>Bug:
> >>>http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
> >>>
> >>>Thanks,
> >>>Erik
> >>>
From christian.tornqvist at oracle.com Thu Aug 15 06:34:51 2013
From: christian.tornqvist at oracle.com (Christian Tornqvist)
Date: Thu, 15 Aug 2013 09:34:51 -0400
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <20130814144906.GC2649@ehelin-thinkpad>
References: <20130814144906.GC2649@ehelin-thinkpad>
Message-ID: <011301ce99bc$38b747c0$aa25d740$@oracle.com>
Hi Erik,
First of all, I've only reviewed the test part of this change. Please add a
small test for the Asserts class, this would make it a lot easier to
fix/change it in the future. Otherwise I think the change looks good, thanks
for adding Asserts and the other classes to testlibrary collection :)
Thanks,
Christian
-----Original Message-----
From: hotspot-runtime-dev-bounces at openjdk.java.net
[mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of Erik
Helin
Sent: Wednesday, August 14, 2013 10:49 AM
To: hotspot-gc-dev at openjdk.java.net; hotspot-runtime-dev at openjdk.java.net
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
Hi all,
this change adds performance counters for compressed class space.
Webrev:
http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
Changes to hotspot:
The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
where the class MetaspaceCounters has been split up into MetaspaceCounters
and MetaspacePerfCounters. MetaspaceCounters now owns an instance of
MetaspacePerfCounters. The class CompressedClassSpaceCounters has been added
which also has its own instance of MetaspacePerfCounters.
MetaspacePerfCounters initializes and updates the actual performance
counters.
The changes in metaspace.hpp/cpp were needed to get some additional data
from the metaspace data structures. The method
free_chunks_in_total(mdtype) was made public and the method
free_bytes(mdtype) was added. Some common functionality was extracted into
get_space_list(mdtype) which got rid of some duplicated code.
The changes in:
- g1MonitorinSupport.cpp
- parallelScavengeHeap.cpp
- genCollectedHeap.cpp
- universe.cpp
are only "one-liners" that either update or initialize the new performance
counters.
Changes to the testlibrary:
- Added Asserts.java for writing asserts like "assertTrue",
"assertEquals", etc.
- Added PerfCounter.java and PerfCounters.java to make it easy to
inspect performance counters for the currently running VM.
- Added InputArguments.java so a test can check the arguments it got
passed.
- Added InMemoryJavaCompiler.java for compiling a string into bytecode.
Useful for loading classes generated at runtime without using files.
- Added ByteCodeLoader.java for defining a new class when you already
have the bytecode.
Testing:
- Added the new test TestMetaspacePerfCounters.java
- JPRT
Bug:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
Thanks,
Erik
From mikael.gerdin at oracle.com Thu Aug 15 06:54:33 2013
From: mikael.gerdin at oracle.com (Mikael Gerdin)
Date: Thu, 15 Aug 2013 15:54:33 +0200
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <20130814144906.GC2649@ehelin-thinkpad>
References: <20130814144906.GC2649@ehelin-thinkpad>
Message-ID: <520CDD99.70403@oracle.com>
Erik,
On 08/14/2013 04:49 PM, Erik Helin wrote:
> Hi all,
>
> this change adds performance counters for compressed class space.
>
> Webrev:
> http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
>
> Changes to hotspot:
> The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
> where the class MetaspaceCounters has been split up into
> MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
> an instance of MetaspacePerfCounters. The class
> CompressedClassSpaceCounters has been added which also has its own
> instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
> updates the actual performance counters.
I'm a bit concerned about the exception handling in the perf variable
creation. But it appears to be similar to the other places where perf
variables are created.
Creating a 0-reporting perf counter if -UseCompressedKlassPointers seems
consistent with the rest of the code.
I'd say this is fine, but as Coleen mentioned you should verify this
with Harold's change for CDS+CompressedOops.
>
> The changes in metaspace.hpp/cpp were needed to get some additional data
> from the metaspace data structures. The method
> free_chunks_in_total(mdtype) was made public and the method
> free_bytes(mdtype) was added. Some common functionality was extracted
> into get_space_list(mdtype) which got rid of some duplicated code.
>
> The changes in:
> - g1MonitorinSupport.cpp
> - parallelScavengeHeap.cpp
> - genCollectedHeap.cpp
> - universe.cpp
> are only "one-liners" that either update or initialize the new performance
> counters.
>
> Changes to the testlibrary:
> - Added Asserts.java for writing asserts like "assertTrue",
> "assertEquals", etc.
> - Added PerfCounter.java and PerfCounters.java to make it easy to
> inspect performance counters for the currently running VM.
> - Added InputArguments.java so a test can check the arguments it got
> passed.
> - Added InMemoryJavaCompiler.java for compiling a string into bytecode.
> Useful for loading classes generated at runtime without using files.
> - Added ByteCodeLoader.java for defining a new class when you already
> have the bytecode.
The test code looks fine.
/Mikael
>
> Testing:
> - Added the new test TestMetaspacePerfCounters.java
> - JPRT
>
> Bug:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
>
> Thanks,
> Erik
>
From yumin.qi at oracle.com Thu Aug 15 08:35:07 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Thu, 15 Aug 2013 08:35:07 -0700
Subject: RFR: 7164841: Improvements to the GC log file rotation
Message-ID: <520CF52B.6050000@oracle.com>
Hi,
Can I have your review for this small changes?
http://cr.openjdk.java.net/~minqi/7164841/webrev00/
This is for a enhancement to add head/tail message to the logging
files to assist reading GC output.
1. modified prompt message if invalid arguments used for log rotating;
2. add time and file name message to log file head/tail.
3. for easily identify which log file is current, use file name like
.n.current, after it reaches maximum size, rename it to
.n
On Windows, there is no F_OK (existing test) definition, F_OK
is defined as "0" and for _access of VC++, it just describes:
modevalue
Checks file for
00
Existence only
02
Write-only
04
Read-only
06
Read and write
http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
The definition are consistent with unistd.h.
Test: JPRT and jtreg.
Thanks
Yumin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130815/949828ed/attachment-0001.html
From david.r.chase at oracle.com Thu Aug 15 09:05:49 2013
From: david.r.chase at oracle.com (David Chase)
Date: Thu, 15 Aug 2013 12:05:49 -0400
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately reports
the result of a LinkResolver operation
Message-ID: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
Webrev: http://cr.openjdk.java.net/~drchase/8014013/webrev.01/
Bug: The addition of interface (default) methods made the old way
of resolving method invocation not be right.
In addition, the code was fiddly and distributed through the source.
See also duplicate 7086758,
"MethodHandles.Lookup.findVirtual is confused by interface methods that are multiply inherited"
Fix: Enhance method resolution (add "CallKind")
and the data structures for reporting resolution results,
and centralize the process as much as possible.
Testing:
Note: this fix is bug-for-bug-compatible with current on jdk/lambda/vm/DefaultMethodsTest.java
64-bit Intel (MacOS):
jtreg - compiler
jtreg - jdk/{lib,sun,java/util, java/lang, jdk}
ute/tonga - vm.quick.testlist
32-bit Intel (Ubuntu)
Point checks on all the corner cases from the 64-bit testing.
(jck60008, b7087658)
jtreg - jdk/{java/util, java/lang, jdk}
Solaris-sparc
jtreg - jdk/{java/util, java/lang, jdk}
Also compiled on Windows/VS2010 w/ JPRT.
From erik.helin at oracle.com Thu Aug 15 09:52:42 2013
From: erik.helin at oracle.com ('Erik Helin')
Date: Thu, 15 Aug 2013 18:52:42 +0200
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <011301ce99bc$38b747c0$aa25d740$@oracle.com>
References: <20130814144906.GC2649@ehelin-thinkpad>
<011301ce99bc$38b747c0$aa25d740$@oracle.com>
Message-ID: <20130815165242.GA9178@ehelin-thinkpad>
On 2013-08-15, Christian Tornqvist wrote:
> Hi Erik,
Hi Christian,
thanks for reviewing the test code!
On 2013-08-15, Christian Tornqvist wrote:
> First of all, I've only reviewed the test part of this change. Please add a
> small test for the Asserts class, this would make it a lot easier to
> fix/change it in the future.
Great idea! I've added a test, AssertsTests.java, for the Asserts class
in the following webrev:
http://cr.openjdk.java.net/~ehelin/8014659/webrev.03/
For the changes leading up to webrev.03, please see:
http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
http://cr.openjdk.java.net/~ehelin/8014659/webrev.02-03/
On 2013-08-15, Christian Tornqvist wrote:
> Otherwise I think the change looks good, thanks
> for adding Asserts and the other classes to testlibrary collection :)
Thanks!
Erik
> Thanks,
> Christian
>
> -----Original Message-----
> From: hotspot-runtime-dev-bounces at openjdk.java.net
> [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of Erik
> Helin
> Sent: Wednesday, August 14, 2013 10:49 AM
> To: hotspot-gc-dev at openjdk.java.net; hotspot-runtime-dev at openjdk.java.net
> Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
> space
>
> Hi all,
>
> this change adds performance counters for compressed class space.
>
> Webrev:
> http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
>
> Changes to hotspot:
> The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
> where the class MetaspaceCounters has been split up into MetaspaceCounters
> and MetaspacePerfCounters. MetaspaceCounters now owns an instance of
> MetaspacePerfCounters. The class CompressedClassSpaceCounters has been added
> which also has its own instance of MetaspacePerfCounters.
> MetaspacePerfCounters initializes and updates the actual performance
> counters.
>
> The changes in metaspace.hpp/cpp were needed to get some additional data
> from the metaspace data structures. The method
> free_chunks_in_total(mdtype) was made public and the method
> free_bytes(mdtype) was added. Some common functionality was extracted into
> get_space_list(mdtype) which got rid of some duplicated code.
>
> The changes in:
> - g1MonitorinSupport.cpp
> - parallelScavengeHeap.cpp
> - genCollectedHeap.cpp
> - universe.cpp
> are only "one-liners" that either update or initialize the new performance
> counters.
>
> Changes to the testlibrary:
> - Added Asserts.java for writing asserts like "assertTrue",
> "assertEquals", etc.
> - Added PerfCounter.java and PerfCounters.java to make it easy to
> inspect performance counters for the currently running VM.
> - Added InputArguments.java so a test can check the arguments it got
> passed.
> - Added InMemoryJavaCompiler.java for compiling a string into bytecode.
> Useful for loading classes generated at runtime without using files.
> - Added ByteCodeLoader.java for defining a new class when you already
> have the bytecode.
>
> Testing:
> - Added the new test TestMetaspacePerfCounters.java
> - JPRT
>
> Bug:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
>
> Thanks,
> Erik
>
From harold.seigel at oracle.com Thu Aug 15 10:48:29 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Thu, 15 Aug 2013 13:48:29 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <520B7649.6080604@oracle.com>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
<520B4228.7000307@oracle.com> <520B758C.2080405@oracle.com>
<520B7649.6080604@oracle.com>
Message-ID: <520D146D.4070003@oracle.com>
Hi,
Please review this updated version of the fix for 8003424:
http://cr.openjdk.java.net/~hseigel/bug_8003424.4/
Other than removing an obsolete comment from universe.cpp, only the
tests have been changed since the previous webrev. A few test errors
were fixed, '@run main' tags were added, and the handling of cases where
CDS cannot be used has been improved.
Thanks, Harold
On 8/14/2013 8:21 AM, Mikael Gerdin wrote:
> Harold,
>
> On 2013-08-14 14:18, harold seigel wrote:
>> Hi Mikael,
>>
>> Thanks for the review.
>>
>> In test CDSCompressedKPtrs.java, RuntimeException gets thrown by
>> output.shouldContain(), if it does not find the specified text in the
>> test's output. In this test, it may not find "sharing" in the test
>> output if the JVM was unable to compatibly allocate the class
>> metaspace. If the class metaspace does not get allocated near the CDS
>> region then the JVM turns off CDS, disabling sharing. Since this is a
>> valid execution path, it shouldn't cause the test to fail.
>>
>> I've added a comment and changed the test a bit to try and make it
>> clearer:
>>
>> } catch (RuntimeException e) {
>> // Report 'passed' if CDS was turned off because we could not
>> allocate
>> // the klass metaspace at an address that would work with CDS.
>> output.shouldContain("Could not allocate metaspace at a
>> compatible address");
>> output.shouldHaveExitValue(1);
>> }
>
> I see. I suspected that this was the case but it wasn't clear earlier.
> I think that the comment is sufficient to communicate this.
>
>
> /Mikael
>
>>
>> Thanks, Harold
>>
>> On 8/14/2013 4:39 AM, Mikael Gerdin wrote:
>>> Harold,
>>>
>>> On 2013-08-09 16:57, Harold Seigel wrote:
>>>> Hi,
>>>>
>>>> Please review this latest version of the bug fix for 8003424:
>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
>>>>
>>>>
>>>> This new version includes the following changes:
>>>>
>>>> 1. macroAssembler_sparc.cpp
>>>>
>>>> a. Merged two versions of reinit_heapbase() into one.
>>>>
>>>> b. Improved decode_klass_not_null(src, dst) to not use G6 if
>>>> shift == 0.
>>>>
>>>>
>>>> 2. macroAssembler_x86.cpp
>>>>
>>>> a. Merged two versions of reinit_heapbase() into one.
>>>>
>>>> b. Improved encode_klass_not_null(src, dst) to not use R12.
>>>>
>>>> c. Replaced leaq with addq in decode_klass_not_null(src, dst).
>>>>
>>>>
>>>> 3. Improved variable names in heap.cpp.
>>>>
>>>>
>>>> 4. metaspace.cpp
>>>>
>>>> a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more
>>>> understandable.
>>>>
>>>> b. Moved set_narrow_klass_base_and_shift() near
>>>> can_use_cds_with_metaspace_addr().
>>>>
>>>> c. Changed unneeded conditional in initialize_class_space()
>>>> into an
>>>> assert.
>>>>
>>>>
>>>> 5. arguments.cpp
>>>>
>>>> a. Fixed problem with -Xshare:dump and disabled compression.
>>>>
>>>> b. Moved UseCompressedKlassPointers code into new function:
>>>> set_use_compressed_klass_ptrs().
>>>>
>>>> c. Fixed bug 8005933 that turned off CDS for -server even if
>>>> -Xshare:auto was explicitly specified.
>>>>
>>>>
>>>> 6. Increased default value of ClassMetaspaceSize to 1*G in
>>>> globals.hpp.
>>>>
>>>>
>>>> 7. Fixed indentation issues in metaspace.cpp and other modules.
>>>
>>> The VM changes look good to me.
>>>
>>> I have a question about the test CDSCompressedKPtrs.java
>>>
>>> What RuntimeException do you expect and why is it ok that we can't use
>>> the shared archive if you get such an exception?
>>>
>>> I think at least a comment about why the test is supposed to pass even
>>> if we can't use the shared archive.
>>>
>>> /Mikael
>>>
>>>>
>>>>
>>>> Thanks, Harold
>>>>
>>>> ----- Original Message -----
>>>> From: harold.seigel at oracle.com
>>>> To: coleen.phillimore at oracle.com
>>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>>> Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
>>>> Subject: Re: Request for review: 8003424 - Enable Class Data
>>>> Sharing for
>>>> CompressedOops
>>>>
>>>> The purpose of this assert is to verify that the two methods in the
>>>> 'if'
>>>> clause closed the map file and disabled UseSharedSpaces if they
>>>> detected
>>>> a problem when trying to use CDS.
>>>>
>>>> if (mapinfo->initialize() &&
>>>> MetaspaceShared::map_shared_spaces(mapinfo)) {
>>>> FileMapInfo::set_current_info(mapinfo);
>>>> } else {
>>>> assert(!mapinfo->is_open() && !UseSharedSpaces,
>>>> "archive file not closed or shared spaces not
>>>> disabled.");
>>>> }
>>>>
>>>> ----- Original Message -----
>>>> From: harold.seigel at oracle.com
>>>> To: coleen.phillimore at oracle.com
>>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>>> Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
>>>> Subject: Re: Request for review: 8003424 - Enable Class Data
>>>> Sharing for
>>>> CompressedOops
>>>>
>>>> This is a bug that Stefan Karlsson also discovered. To fix it, I've
>>>> changed the code to this:
>>>>
>>>> if (DumpSharedSpaces) {
>>>> if (RequireSharedSpaces) {
>>>> warning("cannot dump shared archive while using shared
>>>> archive");
>>>> }
>>>> UseSharedSpaces = false;
>>>> #ifdef _LP64
>>>> if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>> vm_exit_during_initialization(
>>>> "Cannot dump shared archive when UseCompressedOops or
>>>> UseCompressedKlassPointers is off.", NULL);
>>>> }
>>>>
>>>> Harold
>>>>
>>>>
>>>> ----- Original Message -----
>>>> From: coleen.phillimore at oracle.com
>>>> To: hotspot-runtime-dev at openjdk.java.net
>>>> Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
>>>> Subject: Re: Request for review: 8003424 - Enable Class Data
>>>> Sharing for
>>>> CompressedOops
>>>>
>>>>
>>>> Yes, there should be a check for that too. Now I'll really let Harold
>>>> answer.
>>>>
>>>> Thanks,
>>>> Coleen
>>>>
>>>> On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
>>>> > Coleen, Harold
>>>> >
>>>> > > The InstanceKlass has offsets to fields in the instance, and they
>>>> > depend
>>>> > > on both compressed oops and compressed klass pointers. So both
>>>> > have to
>>>> > > be on for the offsets to be valid.
>>>> >
>>>> > So there is dependency on UseCompressedOops and
>>>> > UseCompressedKlassPointers flags during dump.
>>>> >
>>>> > Then why the check is done only for UseSharedSpaces and not for
>>>> > DumpSharedSpaces?:
>>>> >
>>>> > if (DumpSharedSpaces) {
>>>> > if (RequireSharedSpaces) {
>>>> > warning("cannot dump shared archive while using shared
>>>> archive");
>>>> > }
>>>> > UseSharedSpaces = false;
>>>> > + #ifdef _LP64
>>>> > + } else {
>>>> > + // UseCompressedOops and UseCompressedKlassPointers must
>>>> be on
>>>> > for UseSharedSpaces.
>>>> > + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>> > + no_shared_spaces();
>>>> > + }
>>>> > + #endif
>>>> > }
>>>> >
>>>> > Thanks,
>>>> > Vladimir
>>>> >
>>>> > On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>>>> >>
>>>> >> Hi Vladimir,
>>>> >>
>>>> >> I have a couple of answers and I'll let Harold answer the rest.
>>>> >>
>>>> >> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>>>> >>> On 8/7/13 8:34 AM, harold seigel wrote:
>>>> >>>> Hi Vladimir,
>>>> >>>>
>>>> >>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>>> >>>>> Harold,
>>>> >>>>>
>>>> >>>>> Note, on SPARC set() could generate up to 8 instructions to
>>>> load
>>>> >>>>> 64-bit constant into register. So I am not sure that it will be
>>>> >>>>> faster
>>>> >>>>> than load.
>>>> >>>> We thought it would be faster because it doesn't need to load
>>>> anything
>>>> >>>> from memory.
>>>> >>>
>>>> >>> For good value (0x800000000) it should use only 2-3 instructions.
>>>> >>> I think you can keep using set().
>>>> >>>
>>>> >>>>>
>>>> >>>>> I can't find where in CDS you store information about
>>>> compressed
>>>> >>>>> klass
>>>> >>>>> pointers and compressed oops parameters which were used during
>>>> dump?
>>>> >>>>> How you verify that correct parameters/flags are ussed when
>>>> such CDS
>>>> >>>>> is used later?
>>>> >>>> No compressed klass pointers nor compressed oops get written to
>>>> the
>>>> >>>> archive. So, the compressed klass pointers and compressed oops
>>>> >>>> parameters do not need to be recorded in the archive.
>>>> >>>
>>>> >>> So you are saying that all klass pointers (references to
>>>> klasses) in
>>>> >>> metadata structures in metaspace are full.
>>>> >>
>>>> >> Yes, they are. (methodOops weren't in the
>>>> InstanceKlass::_methods array
>>>> >> with Permgen but they are uncompressed now).
>>>> >>
>>>> >>> And klass pointers are only compressed in java object headers
>>>> (which
>>>> >>> are not part of CDS). Right?
>>>> >>
>>>> >> The InstanceKlass has offsets to fields in the instance, and they
>>>> depend
>>>> >> on both compressed oops and compressed klass pointers. So both
>>>> have to
>>>> >> be on for the offsets to be valid.
>>>> >>
>>>> >> But the base and compressed values are not stored anywhere in the
>>>> CDS
>>>> >> archive.
>>>> >>
>>>> >>> And you don't care about UseCompressedOops and
>>>> >>> UseCompressedKlassPointers flags settings when you dump it into
>>>> >>> archive. The only limit is:
>>>> >>>
>>>> >>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) -
>>>> cds_total
>>>> >>>
>>>> >>> Then I don't understand why you can't use/load CDS archive when
>>>> coop
>>>> >>> or compklass are off:
>>>> >>>
>>>> >>> > If coop is turned off then CDS cannot be used. CDS will
>>>> only be
>>>> >>> > supported if both UseCompressedOops and
>>>> UseCompressedKlassPointers
>>>> >>> are
>>>> >>> > TRUE.
>>>> >>>
>>>> >>> Also based on code in arguments.cpp it is allowed to specify
>>>> >>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on
>>>> command line:
>>>> >>>
>>>> >>> 1466 // Turn on UseCompressedKlassPointers too
>>>> >>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>>>> >>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>>>> >>> 1469 }
>>>> >>>
>>>> >>> Did you tested such combination?
>>>> >>
>>>> >> I should let Harold answer this but I believe this is what his
>>>> test
>>>> >> does. For CDS on 64 bit, both must be on. We didn't want to
>>>> create 4
>>>> >> different archives. And it wouldn't make too much sense since
>>>> CDS for
>>>> >> 64 bit is a footprint savings so why would you use it without
>>>> >> compressing oops and class pointers? It's not a startup
>>>> savings on
>>>> >> server because we turn off interpreter bytecode quickening.
>>>> >>
>>>> >> Coleen
>>>> >>
>>>> >>>
>>>> >>>>>
>>>> >>>>> set_narrow_klass_base_and_shift() and
>>>> >>>>> can_use_cds_with_metaspace_addr() have the same code for
>>>> >>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>>> >>>>> can_use_cds_with_metaspace_addr() from
>>>> >>>>> set_narrow_klass_base_and_shift() ?
>>>> >>>> I could add new inlined methods that determine the
>>>> higher_address and
>>>> >>>> lower_base when UseSharedSpaces is true and have them called
>>>> from
>>>> >>>> set_narrow_klass_base_and_shift() and
>>>> >>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>>>> >>>
>>>> >>> I tried several approaches but your implementation is more
>>>> clean. So I
>>>> >>> agree to keep what you have now.
>>>> >>>
>>>> >>>
>>>> >>> Also I found strange assert which should always fail (old code in
>>>> >>> global_initialize() in metaspace.cpp):
>>>> >>>
>>>> >>> 2959 if (UseSharedSpaces) {
>>>> >>> ...
>>>> >>> 2969 } else {
>>>> >>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>>>> >>> 2971 "archive file not closed or shared spaces not
>>>> >>> disabled.");
>>>> >>>
>>>> >>> Thanks,
>>>> >>> Vladimir
>>>> >>>
>>>> >>>>>
>>>> >>>>> I see that you unconditionally set comp klass ptr base and
>>>> shift for
>>>> >>>>> DumpSharedSpaces. Should you do the check similar to
>>>> >>>>> can_use_cds_with_metaspace_addr() to find if you can do
>>>> that? You
>>>> >>>>> don't even check UseCompressedKlassPointers.
>>>> >>>> I don't think the checks are needed because the information
>>>> written to
>>>> >>>> the archive is not affected by the size of the class metaspace.
>>>> >>>>
>>>> >>>> Also, I recently added code to arguments.cpp that will
>>>> generate an
>>>> >>>> error
>>>> >>>> if UseCompressedOops or UseCompressedKlassPointers is turned
>>>> off and
>>>> >>>> DumpSharedSpaces is on.
>>>> >>>>>
>>>> >>>>> Why you have next limitation? What if coop can't be used
>>>> because of
>>>> >>>>> big heap?:
>>>> >>>>>
>>>> >>>>> + // UseCompressedOops and UseCompressedKlassPointers must
>>>> be on
>>>> >>>>> for UseSharedSpaces.
>>>> >>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>> >>>>> + no_shared_spaces();
>>>> >>>> If coop is turned off then CDS cannot be used. CDS will only be
>>>> >>>> supported if both UseCompressedOops and
>>>> UseCompressedKlassPointers are
>>>> >>>> TRUE.
>>>> >>>>>
>>>> >>>>> Could you move UseCompressedKlassPointers code in
>>>> arguments.cpp into
>>>> >>>>> separate method similar to set_use_compressed_oops()?
>>>> >>>> Done.
>>>> >>>>>
>>>> >>>>> About new tests.
>>>> >>>>> The first test in CDSCompressedKPtrsError misses
>>>> >>>>> -XX:+UseCompressedOops flag.
>>>> >>>> Fixed.
>>>> >>>>>
>>>> >>>>> Could you also test cross flags combinations?:
>>>> >>>>>
>>>> >>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>>> >>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>>> >>>> Done.
>>>> >>>>>
>>>> >>>>> It would be nice to have test to check ClassMetaspaceSize value
>>>> >>>>> range.
>>>> >>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither
>>>> maxint
>>>> >>>>> or maxuint.
>>>> >>>> A member of our runtime SQE group is writing additional tests.
>>>> I'll
>>>> >>>> ask
>>>> >>>> him to write a ClassMetaspaceSize range test.
>>>> >>>>
>>>> >>>> We chose 3Gb because we thought it was a sufficiently large
>>>> size.
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> About code style, indention. We align next line to
>>>> corresponding part
>>>> >>>>> of previous line if we need to split a line. And sometimes
>>>> it is
>>>> >>>>> better to keep one long line. I understand some of them were
>>>> before
>>>> >>>>> your changes but, please, clean up at lest ones you touched.
>>>> >>>> Done.
>>>> >>>>>
>>>> >>>>> Cases in metaspace.cpp:
>>>> >>>>>
>>>> >>>>> 2263 assert(raw_word_size >= min_size,
>>>> >>>>> 2264 err_msg("Should not deallocate dark matter "
>>>> SIZE_FORMAT "<"
>>>> >>>>> SIZE_FORMAT, word_size, min_size));
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2485 if (Metaspace::using_class_space() &&
>>>> >>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>>> >>>>> 2575 (Metaspace::using_class_space() ?
>>>> >>>>> 2576 Metaspace::class_space_list()->virtual_space_total() :
>>>> 0) :
>>>> >>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>>> >>>>> SIZE_FORMAT ", "
>>>> >>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>>> >>>>> ", "
>>>> >>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>>> >>>>> ", "
>>>> >>>>> 2697 "large count " SIZE_FORMAT,
>>>> >>>>> 2698 cls_specialized_count, cls_specialized_waste,
>>>> >>>>> 2699 cls_small_count, cls_small_waste,
>>>> >>>>> 2700 cls_medium_count, cls_medium_waste,
>>>> >>>>> cls_humongous_count);
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
>>>> >>>>> addr) &&
>>>> >>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 2889 vm_exit_during_initialization(err_msg(
>>>> >>>>> 2890 "Could not allocate metaspace: %d bytes",
>>>> >>>>> 2891 class_metaspace_size()));
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 3107 return using_class_space() ?
>>>> >>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 3157 if (is_class && using_class_space()) {
>>>> >>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> 3305 return space_list()->contains(ptr) ||
>>>> >>>>> 3306 (using_class_space() &&
>>>> class_space_list()->contains(ptr));
>>>> >>>>>
>>>> >>>>> metaspace.hpp:
>>>> >>>>>
>>>> >>>>> 270 return
>>>> _allocated_capacity_words[Metaspace::NonClassType] +
>>>> >>>>> 271 (Metaspace::using_class_space() ?
>>>> >>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>> >>>>>
>>>> >>>>> 285 return
>>>> _allocated_used_words[Metaspace::NonClassType] +
>>>> >>>>> 286 (Metaspace::using_class_space() ?
>>>> >>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>>> >>>>>
>>>> >>>>> universe.cpp:
>>>> >>>>>
>>>> >>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>>> >>>>> (intptr_t)(Universe::heap()->base() -
>>>> >>>>> 850 os::vm_page_size()) ||
>>>> >>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
>>>> >>>>> value");
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> Thanks,
>>>> >>>>> Vladimir
>>>> >>>>>
>>>> >>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>> >>>>>> Hi,
>>>> >>>>>>
>>>> >>>>>> Please review this updated webrev for bug 8003424:
>>>> >>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>> >>>>>>
>>>> >>>>>>
>>>> >>>>>> The updated webrev has a lot of changes from the previous
>>>> webrev,
>>>> >>>>>> including the following:
>>>> >>>>>>
>>>> >>>>>> 1. Class metaspace information is now output when
>>>> >>>>>> -XX:+PrintCompressedOopsMode is specified.
>>>> >>>>>>
>>>> >>>>>> 2. decode_klass_not_null(Register dst, Register src) no
>>>> longer
>>>> >>>>>> clobbers R12.
>>>> >>>>>>
>>>> >>>>>> 3. Method using_class_vsm() was renamed to
>>>> using_class_space().
>>>> >>>>>>
>>>> >>>>>> 4. Type narrowKlass was added and replaces narrowOop,
>>>> where
>>>> >>>>>> appropriate.
>>>> >>>>>>
>>>> >>>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>> >>>>>> unnecessary.
>>>> >>>>>>
>>>> >>>>>> 6. Metaspace::initialize_class_space() was made private.
>>>> >>>>>>
>>>> >>>>>> 7. Method max_heap_for_compressed_oops(), in
>>>> arguments.cpp, was
>>>> >>>>>> updated.
>>>> >>>>>>
>>>> >>>>>> Performance tests were run by Jenny using specjvm2008,
>>>> specjbb2005,
>>>> >>>>>> and
>>>> >>>>>> specjbb2013. The results showed no significant performance
>>>> >>>>>> difference
>>>> >>>>>> in terms of scores and gc behavior.
>>>> >>>>>>
>>>> >>>>>> Additional testing was done on Solaris Sparc and Linux x86
>>>> using
>>>> >>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16
>>>> & 32.
>>>> >>>>>>
>>>> >>>>>> Please let me know what additional tests should be run.
>>>> >>>>>>
>>>> >>>>>> Thanks!
>>>> >>>>>> Harold
>>>> >>>>>>
>>>> >>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>> >>>>>>> Hi Harold,
>>>> >>>>>>>
>>>> >>>>>>> > Usually the narrow_klass_base will be 32G and the
>>>> >>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment)
>>>> which
>>>> >>>>>>> means
>>>> >>>>>>> that
>>>> >>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will
>>>> need R12,
>>>> >>>>>>> unless
>>>> >>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does
>>>> that
>>>> >>>>>>> make
>>>> >>>>>>> sense?
>>>> >>>>>>>
>>>> >>>>>>> My bad, I miscalculated. But we have "perfect value"
>>>> 0x800000000
>>>> >>>>>>> and I
>>>> >>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>> >>>>>>> (assuming or
>>>> >>>>>>> with check that class metaspace size < 32Gb).
>>>> >>>>>>>
>>>> >>>>>>> > Is there one prefix byte per instruction, or just for
>>>> certain
>>>> >>>>>>> instructions?
>>>> >>>>>>>
>>>> >>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>> >>>>>>> prefix is
>>>> >>>>>>> necessary only if an instruction references one of the
>>>> extended
>>>> >>>>>>> registers or uses a 64-bit operand."
>>>> >>>>>>>
>>>> >>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16
>>>> and
>>>> >>>>>>> =32
>>>> >>>>>>> and big java heap. Recently we got several bugs which
>>>> indicated
>>>> >>>>>>> that
>>>> >>>>>>> we did not separate cleanly oops and klass pointers
>>>> en/decoding.
>>>> >>>>>>>
>>>> >>>>>>> Thanks,
>>>> >>>>>>> Vladimir
>>>> >>>>>>>
>>>> >>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>> >>>>>>>> Hi Vladimir,
>>>> >>>>>>>>
>>>> >>>>>>>> Thank you for the review! Please see inline comments.
>>>> >>>>>>>>
>>>> >>>>>>>> Thanks, Harold
>>>> >>>>>>>>
>>>> >>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>> >>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>> >>>>>>>>>> Nice clean up, Harold
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> Could you add the size of class metaspace in output with
>>>> >>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't
>>>> want to
>>>> >>>>>>>>>> remember an
>>>> >>>>>>>>>> other very long flag name:
>>>> TraceMetavirtualspaceAllocation.
>>>> >>>>>>>> Will be done in next webrev.
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> Also it would be nice to print these info line (and
>>>> compressed
>>>> >>>>>>>>>> oops
>>>> >>>>>>>>>> info
>>>> >>>>>>>>>> line) in hs_err files.
>>>> >>>>>>>> I filed an enhancement bug for this: 8021264
>>>> >>>>>>>> .
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL
>>>> needed?" in
>>>> >>>>>>>>>> x86_64.ad.
>>>> >>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>>>> >>>>>>>>>> arithmetic
>>>> >>>>>>>>>> instructions which modify flags: subq, addq, shrq,
>>>> xorptr. Also
>>>> >>>>>>>>>> note
>>>> >>>>>>>>>> that code in .ad file does not check the encoding mode for
>>>> >>>>>>>>>> narrow
>>>> >>>>>>>>>> klass/oop so it should be conservative and assume that
>>>> >>>>>>>>>> arithmetic
>>>> >>>>>>>>>> instructions are used.
>>>> >>>>>>>> OK. Thanks.
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass
>>>> base below
>>>> >>>>>>>>>> 4Gb so
>>>> >>>>>>>>>> the value is 32 bit. You can use it directly in narrow
>>>> klass
>>>> >>>>>>>>>> encoding/decoding without destroying R12.
>>>> >>>>>>>>>
>>>> >>>>>>>>> Correction. You can do it only if base < 2Gb max
>>>> positive int
>>>> >>>>>>>>> (sign
>>>> >>>>>>>>> bit is extended so you will get wrong result with address
>>>> > 2gb).
>>>> >>>>>>>> But the base will normally be 32Gb. So this case won't
>>>> happen
>>>> >>>>>>>> very
>>>> >>>>>>>> often.
>>>> >>>>>>>>>
>>>> >>>>>>>>> You definitely should not use R12 in
>>>> >>>>>>>>> decode_klass_not_null(Register
>>>> >>>>>>>>> dst, Register src) method where you have free 'dst'
>>>> register.
>>>> >>>>>>>> Will be fixed in next webrev.
>>>> >>>>>>>>>
>>>> >>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G).
>>>> Actually it
>>>> >>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it
>>>> should be
>>>> >>>>>>>>> 64Gb.
>>>> >>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>> >>>>>>>>>
>>>> >>>>>>>>> decode:
>>>> >>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>> >>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>> >>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>> >>>>>>>>> }
>>>> >>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>> >>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>> >>>>>>>>> }
>>>> >>>>>>>>>
>>>> >>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>> >>>>>>>>> (Universe::narrow_klass_base >>
>>>> LogKlassAlignmentInBytes) <=
>>>> >>>>>>>>> maxint
>>>> >>>>>>>>> (max positive int).
>>>> >>>>>>>> Usually the narrow_klass_base will be 32G and the
>>>> >>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment)
>>>> which means
>>>> >>>>>>>> that
>>>> >>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need
>>>> R12,
>>>> >>>>>>>> unless
>>>> >>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does
>>>> that
>>>> >>>>>>>> make
>>>> >>>>>>>> sense?
>>>> >>>>>>>>>
>>>> >>>>>>>>> And you have general memory reservation problem. At
>>>> least on
>>>> >>>>>>>>> Solaris,
>>>> >>>>>>>>> as I remember, OS will always try to keep protected 4Kb
>>>> pages
>>>> >>>>>>>>> between
>>>> >>>>>>>>> different requested memory regions. That is why in jdk7 we
>>>> first
>>>> >>>>>>>>> reserve one huge space and then cut it on java heap, perm
>>>> gen and
>>>> >>>>>>>>> protection page below heap to catch implicit NULL
>>>> exceptions with
>>>> >>>>>>>>> compressed oops.
>>>> >>>>>>>>>
>>>> >>>>>>>>> So, please, verify that you are getting 'cds_address +
>>>> cds_total'
>>>> >>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>> >>>>>>>>> compressed
>>>> >>>>>>>>> oops and with Xmx20Gb.
>>>> >>>>>>>> I verifed that we get either cds_address+cds_total as the
>>>> >>>>>>>> address, or
>>>> >>>>>>>> CompressedKlassPointersBase as the address without CDS on
>>>> Linux,
>>>> >>>>>>>> Windows
>>>> >>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>> >>>>>>>> sizes and
>>>> >>>>>>>> -Xmx32G.
>>>> >>>>>>>>
>>>> >>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or
>>>> the
>>>> >>>>>>>> desired
>>>> >>>>>>>> CDS address for class metaspace regardless of heap size.
>>>> >>>>>>>>>
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>> >>>>>>>>>> unfortunately we
>>>> >>>>>>>>>> can't do other way. I assume you use max size because
>>>> >>>>>>>>>> depending on
>>>> >>>>>>>>>> registers used in instructions you will or will not get
>>>> prefix
>>>> >>>>>>>>>> byte
>>>> >>>>>>>>>> (r8-r15).
>>>> >>>>>>>> Is there one prefix byte per instruction, or just for
>>>> certain
>>>> >>>>>>>> instructions?
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> I will look on changes in more details may be late.
>>>> >>>>>>>>>
>>>> >>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>>>> >>>>>>>>> abbreviations
>>>> >>>>>>>>> which are not obvious.
>>>> >>>>>>>> I changed using_class_vsm() to using_class_space().
>>>> >>>>>>>>>
>>>> >>>>>>>>>
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> Thanks,
>>>> >>>>>>>>>> Vladimir
>>>> >>>>>>>>>>
>>>> >>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>> >>>>>>>>>>> Hi,
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Please review this fix for bug 8003424.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Open webrev at
>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Open bug links at:
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> JBS Bug links at
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> This fix provides support for using compressed klass
>>>> pointers
>>>> >>>>>>>>>>> with
>>>> >>>>>>>>>>> CDS.
>>>> >>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>> >>>>>>>>>>> platforms
>>>> >>>>>>>>>>> when
>>>> >>>>>>>>>>> UseCompressedKlassPointers is true. Instead of
>>>> allocating the
>>>> >>>>>>>>>>> class
>>>> >>>>>>>>>>> metaspace as part of the Java Heap allocation and
>>>> locating
>>>> >>>>>>>>>>> it at
>>>> >>>>>>>>>>> the
>>>> >>>>>>>>>>> base of that allocation, the metaspace will now be
>>>> allocated
>>>> >>>>>>>>>>> separately,
>>>> >>>>>>>>>>> above the Java heap. This will enable future expansion
>>>> of the
>>>> >>>>>>>>>>> metaspace
>>>> >>>>>>>>>>> because it won't be backed up against the Java heap. If
>>>> CDS is
>>>> >>>>>>>>>>> being
>>>> >>>>>>>>>>> used, then the CDS region will be allocated between the
>>>> Java
>>>> >>>>>>>>>>> heap and
>>>> >>>>>>>>>>> the metaspace.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>> >>>>>>>>>>> memory at
>>>> >>>>>>>>>>> 32G,
>>>> >>>>>>>>>>> or above the CDS region, if it is present. Because of
>>>> this,
>>>> >>>>>>>>>>> encoding
>>>> >>>>>>>>>>> and decoding of compressed klass pointers will always
>>>> >>>>>>>>>>> require use
>>>> >>>>>>>>>>> of a
>>>> >>>>>>>>>>> base register. So, encoding and decoding of compressed
>>>> klass
>>>> >>>>>>>>>>> pointers
>>>> >>>>>>>>>>> will differ from compressed oops.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> There are no class metaspace allocation changes if
>>>> >>>>>>>>>>> UseCompressedKlassPointers is turned off or if running
>>>> on a
>>>> >>>>>>>>>>> 32-bit
>>>> >>>>>>>>>>> platform.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> The code changes also include some cleanup and will fix
>>>> bugs
>>>> >>>>>>>>>>> 8016729,
>>>> >>>>>>>>>>> 8011610, and 8003424.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Many of the modules in this webrev contain a lot of
>>>> changes.
>>>> >>>>>>>>>>> Modules
>>>> >>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>> >>>>>>>>>>> changed to
>>>> >>>>>>>>>>> support the new encoding and decoding of compressed klass
>>>> >>>>>>>>>>> pointers.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Module metaspace.cpp was changed significantly to support
>>>> >>>>>>>>>>> the new
>>>> >>>>>>>>>>> allocation for metaspace and the CDS region and to
>>>> determine
>>>> >>>>>>>>>>> compressed
>>>> >>>>>>>>>>> klass pointer encoding base and shifting values.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Most of the changes to module universe.cpp were to
>>>> remove code
>>>> >>>>>>>>>>> related
>>>> >>>>>>>>>>> to allocating metaspace and remove code that considered
>>>> >>>>>>>>>>> compressed
>>>> >>>>>>>>>>> klass
>>>> >>>>>>>>>>> pointers when determining the compressed oops compression
>>>> >>>>>>>>>>> mechanism.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were
>>>> changed as
>>>> >>>>>>>>>>> part
>>>> >>>>>>>>>>> of a
>>>> >>>>>>>>>>> cleanup requested by Coleen.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> These changes were tested with JCK Lang and VM tests,
>>>> JTReg
>>>> >>>>>>>>>>> tests,
>>>> >>>>>>>>>>> JPRT,
>>>> >>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>>>> >>>>>>>>>>> vm.mlvm.testlist
>>>> >>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>>>> >>>>>>>>>>> -Xshare:off
>>>> >>>>>>>>>>> (with
>>>> >>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>>>> >>>>>>>>>>> Linux and
>>>> >>>>>>>>>>> 64-Bit
>>>> >>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS.
>>>> JCK tests
>>>> >>>>>>>>>>> were
>>>> >>>>>>>>>>> run on Solaris x86.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> The performance impact of these changes is TBD.
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>> Thanks, Harold
>>>> >>>>>>>>>>>
>>>> >>>>>>>>>>>
>>>> >>>>>>>>
>>>> >>>>>>
>>>> >>>>
>>>> >>
>>>>
>>
From vladimir.kozlov at oracle.com Thu Aug 15 11:28:18 2013
From: vladimir.kozlov at oracle.com (Vladimir Kozlov)
Date: Thu, 15 Aug 2013 11:28:18 -0700
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <520D146D.4070003@oracle.com>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
<520B4228.7000307@oracle.com> <520B758C.2080405@oracle.com>
<520B7649.6080604@oracle.com> <520D146D.4070003@oracle.com>
Message-ID: <520D1DC2.4030604@oracle.com>
Good.
Thanks,
Vladimir
On 8/15/13 10:48 AM, harold seigel wrote:
> Hi,
>
> Please review this updated version of the fix for 8003424: http://cr.openjdk.java.net/~hseigel/bug_8003424.4/
>
>
> Other than removing an obsolete comment from universe.cpp, only the tests have been changed since the previous webrev.
> A few test errors were fixed, '@run main' tags were added, and the handling of cases where CDS cannot be used has been
> improved.
>
> Thanks, Harold
>
> On 8/14/2013 8:21 AM, Mikael Gerdin wrote:
>> Harold,
>>
>> On 2013-08-14 14:18, harold seigel wrote:
>>> Hi Mikael,
>>>
>>> Thanks for the review.
>>>
>>> In test CDSCompressedKPtrs.java, RuntimeException gets thrown by
>>> output.shouldContain(), if it does not find the specified text in the
>>> test's output. In this test, it may not find "sharing" in the test
>>> output if the JVM was unable to compatibly allocate the class
>>> metaspace. If the class metaspace does not get allocated near the CDS
>>> region then the JVM turns off CDS, disabling sharing. Since this is a
>>> valid execution path, it shouldn't cause the test to fail.
>>>
>>> I've added a comment and changed the test a bit to try and make it clearer:
>>>
>>> } catch (RuntimeException e) {
>>> // Report 'passed' if CDS was turned off because we could not
>>> allocate
>>> // the klass metaspace at an address that would work with CDS.
>>> output.shouldContain("Could not allocate metaspace at a
>>> compatible address");
>>> output.shouldHaveExitValue(1);
>>> }
>>
>> I see. I suspected that this was the case but it wasn't clear earlier. I think that the comment is sufficient to
>> communicate this.
>>
>>
>> /Mikael
>>
>>>
>>> Thanks, Harold
>>>
>>> On 8/14/2013 4:39 AM, Mikael Gerdin wrote:
>>>> Harold,
>>>>
>>>> On 2013-08-09 16:57, Harold Seigel wrote:
>>>>> Hi,
>>>>>
>>>>> Please review this latest version of the bug fix for 8003424:
>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
>>>>>
>>>>>
>>>>> This new version includes the following changes:
>>>>>
>>>>> 1. macroAssembler_sparc.cpp
>>>>>
>>>>> a. Merged two versions of reinit_heapbase() into one.
>>>>>
>>>>> b. Improved decode_klass_not_null(src, dst) to not use G6 if
>>>>> shift == 0.
>>>>>
>>>>>
>>>>> 2. macroAssembler_x86.cpp
>>>>>
>>>>> a. Merged two versions of reinit_heapbase() into one.
>>>>>
>>>>> b. Improved encode_klass_not_null(src, dst) to not use R12.
>>>>>
>>>>> c. Replaced leaq with addq in decode_klass_not_null(src, dst).
>>>>>
>>>>>
>>>>> 3. Improved variable names in heap.cpp.
>>>>>
>>>>>
>>>>> 4. metaspace.cpp
>>>>>
>>>>> a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more
>>>>> understandable.
>>>>>
>>>>> b. Moved set_narrow_klass_base_and_shift() near
>>>>> can_use_cds_with_metaspace_addr().
>>>>>
>>>>> c. Changed unneeded conditional in initialize_class_space() into an
>>>>> assert.
>>>>>
>>>>>
>>>>> 5. arguments.cpp
>>>>>
>>>>> a. Fixed problem with -Xshare:dump and disabled compression.
>>>>>
>>>>> b. Moved UseCompressedKlassPointers code into new function:
>>>>> set_use_compressed_klass_ptrs().
>>>>>
>>>>> c. Fixed bug 8005933 that turned off CDS for -server even if
>>>>> -Xshare:auto was explicitly specified.
>>>>>
>>>>>
>>>>> 6. Increased default value of ClassMetaspaceSize to 1*G in globals.hpp.
>>>>>
>>>>>
>>>>> 7. Fixed indentation issues in metaspace.cpp and other modules.
>>>>
>>>> The VM changes look good to me.
>>>>
>>>> I have a question about the test CDSCompressedKPtrs.java
>>>>
>>>> What RuntimeException do you expect and why is it ok that we can't use
>>>> the shared archive if you get such an exception?
>>>>
>>>> I think at least a comment about why the test is supposed to pass even
>>>> if we can't use the shared archive.
>>>>
>>>> /Mikael
>>>>
>>>>>
>>>>>
>>>>> Thanks, Harold
>>>>>
>>>>> ----- Original Message -----
>>>>> From: harold.seigel at oracle.com
>>>>> To: coleen.phillimore at oracle.com
>>>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>>>> Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
>>>>> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
>>>>> CompressedOops
>>>>>
>>>>> The purpose of this assert is to verify that the two methods in the 'if'
>>>>> clause closed the map file and disabled UseSharedSpaces if they detected
>>>>> a problem when trying to use CDS.
>>>>>
>>>>> if (mapinfo->initialize() &&
>>>>> MetaspaceShared::map_shared_spaces(mapinfo)) {
>>>>> FileMapInfo::set_current_info(mapinfo);
>>>>> } else {
>>>>> assert(!mapinfo->is_open() && !UseSharedSpaces,
>>>>> "archive file not closed or shared spaces not
>>>>> disabled.");
>>>>> }
>>>>>
>>>>> ----- Original Message -----
>>>>> From: harold.seigel at oracle.com
>>>>> To: coleen.phillimore at oracle.com
>>>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>>>> Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
>>>>> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
>>>>> CompressedOops
>>>>>
>>>>> This is a bug that Stefan Karlsson also discovered. To fix it, I've
>>>>> changed the code to this:
>>>>>
>>>>> if (DumpSharedSpaces) {
>>>>> if (RequireSharedSpaces) {
>>>>> warning("cannot dump shared archive while using shared archive");
>>>>> }
>>>>> UseSharedSpaces = false;
>>>>> #ifdef _LP64
>>>>> if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> vm_exit_during_initialization(
>>>>> "Cannot dump shared archive when UseCompressedOops or
>>>>> UseCompressedKlassPointers is off.", NULL);
>>>>> }
>>>>>
>>>>> Harold
>>>>>
>>>>>
>>>>> ----- Original Message -----
>>>>> From: coleen.phillimore at oracle.com
>>>>> To: hotspot-runtime-dev at openjdk.java.net
>>>>> Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada Eastern
>>>>> Subject: Re: Request for review: 8003424 - Enable Class Data Sharing for
>>>>> CompressedOops
>>>>>
>>>>>
>>>>> Yes, there should be a check for that too. Now I'll really let Harold
>>>>> answer.
>>>>>
>>>>> Thanks,
>>>>> Coleen
>>>>>
>>>>> On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
>>>>> > Coleen, Harold
>>>>> >
>>>>> > > The InstanceKlass has offsets to fields in the instance, and they
>>>>> > depend
>>>>> > > on both compressed oops and compressed klass pointers. So both
>>>>> > have to
>>>>> > > be on for the offsets to be valid.
>>>>> >
>>>>> > So there is dependency on UseCompressedOops and
>>>>> > UseCompressedKlassPointers flags during dump.
>>>>> >
>>>>> > Then why the check is done only for UseSharedSpaces and not for
>>>>> > DumpSharedSpaces?:
>>>>> >
>>>>> > if (DumpSharedSpaces) {
>>>>> > if (RequireSharedSpaces) {
>>>>> > warning("cannot dump shared archive while using shared
>>>>> archive");
>>>>> > }
>>>>> > UseSharedSpaces = false;
>>>>> > + #ifdef _LP64
>>>>> > + } else {
>>>>> > + // UseCompressedOops and UseCompressedKlassPointers must be on
>>>>> > for UseSharedSpaces.
>>>>> > + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> > + no_shared_spaces();
>>>>> > + }
>>>>> > + #endif
>>>>> > }
>>>>> >
>>>>> > Thanks,
>>>>> > Vladimir
>>>>> >
>>>>> > On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>>>>> >>
>>>>> >> Hi Vladimir,
>>>>> >>
>>>>> >> I have a couple of answers and I'll let Harold answer the rest.
>>>>> >>
>>>>> >> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>>>>> >>> On 8/7/13 8:34 AM, harold seigel wrote:
>>>>> >>>> Hi Vladimir,
>>>>> >>>>
>>>>> >>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>>>> >>>>> Harold,
>>>>> >>>>>
>>>>> >>>>> Note, on SPARC set() could generate up to 8 instructions to load
>>>>> >>>>> 64-bit constant into register. So I am not sure that it will be
>>>>> >>>>> faster
>>>>> >>>>> than load.
>>>>> >>>> We thought it would be faster because it doesn't need to load
>>>>> anything
>>>>> >>>> from memory.
>>>>> >>>
>>>>> >>> For good value (0x800000000) it should use only 2-3 instructions.
>>>>> >>> I think you can keep using set().
>>>>> >>>
>>>>> >>>>>
>>>>> >>>>> I can't find where in CDS you store information about compressed
>>>>> >>>>> klass
>>>>> >>>>> pointers and compressed oops parameters which were used during
>>>>> dump?
>>>>> >>>>> How you verify that correct parameters/flags are ussed when
>>>>> such CDS
>>>>> >>>>> is used later?
>>>>> >>>> No compressed klass pointers nor compressed oops get written to
>>>>> the
>>>>> >>>> archive. So, the compressed klass pointers and compressed oops
>>>>> >>>> parameters do not need to be recorded in the archive.
>>>>> >>>
>>>>> >>> So you are saying that all klass pointers (references to
>>>>> klasses) in
>>>>> >>> metadata structures in metaspace are full.
>>>>> >>
>>>>> >> Yes, they are. (methodOops weren't in the
>>>>> InstanceKlass::_methods array
>>>>> >> with Permgen but they are uncompressed now).
>>>>> >>
>>>>> >>> And klass pointers are only compressed in java object headers
>>>>> (which
>>>>> >>> are not part of CDS). Right?
>>>>> >>
>>>>> >> The InstanceKlass has offsets to fields in the instance, and they
>>>>> depend
>>>>> >> on both compressed oops and compressed klass pointers. So both
>>>>> have to
>>>>> >> be on for the offsets to be valid.
>>>>> >>
>>>>> >> But the base and compressed values are not stored anywhere in the
>>>>> CDS
>>>>> >> archive.
>>>>> >>
>>>>> >>> And you don't care about UseCompressedOops and
>>>>> >>> UseCompressedKlassPointers flags settings when you dump it into
>>>>> >>> archive. The only limit is:
>>>>> >>>
>>>>> >>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) -
>>>>> cds_total
>>>>> >>>
>>>>> >>> Then I don't understand why you can't use/load CDS archive when
>>>>> coop
>>>>> >>> or compklass are off:
>>>>> >>>
>>>>> >>> > If coop is turned off then CDS cannot be used. CDS will only be
>>>>> >>> > supported if both UseCompressedOops and
>>>>> UseCompressedKlassPointers
>>>>> >>> are
>>>>> >>> > TRUE.
>>>>> >>>
>>>>> >>> Also based on code in arguments.cpp it is allowed to specify
>>>>> >>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on
>>>>> command line:
>>>>> >>>
>>>>> >>> 1466 // Turn on UseCompressedKlassPointers too
>>>>> >>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>>>>> >>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
>>>>> >>> 1469 }
>>>>> >>>
>>>>> >>> Did you tested such combination?
>>>>> >>
>>>>> >> I should let Harold answer this but I believe this is what his test
>>>>> >> does. For CDS on 64 bit, both must be on. We didn't want to
>>>>> create 4
>>>>> >> different archives. And it wouldn't make too much sense since
>>>>> CDS for
>>>>> >> 64 bit is a footprint savings so why would you use it without
>>>>> >> compressing oops and class pointers? It's not a startup savings on
>>>>> >> server because we turn off interpreter bytecode quickening.
>>>>> >>
>>>>> >> Coleen
>>>>> >>
>>>>> >>>
>>>>> >>>>>
>>>>> >>>>> set_narrow_klass_base_and_shift() and
>>>>> >>>>> can_use_cds_with_metaspace_addr() have the same code for
>>>>> >>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>>>> >>>>> can_use_cds_with_metaspace_addr() from
>>>>> >>>>> set_narrow_klass_base_and_shift() ?
>>>>> >>>> I could add new inlined methods that determine the
>>>>> higher_address and
>>>>> >>>> lower_base when UseSharedSpaces is true and have them called from
>>>>> >>>> set_narrow_klass_base_and_shift() and
>>>>> >>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>>>>> >>>
>>>>> >>> I tried several approaches but your implementation is more
>>>>> clean. So I
>>>>> >>> agree to keep what you have now.
>>>>> >>>
>>>>> >>>
>>>>> >>> Also I found strange assert which should always fail (old code in
>>>>> >>> global_initialize() in metaspace.cpp):
>>>>> >>>
>>>>> >>> 2959 if (UseSharedSpaces) {
>>>>> >>> ...
>>>>> >>> 2969 } else {
>>>>> >>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>>>>> >>> 2971 "archive file not closed or shared spaces not
>>>>> >>> disabled.");
>>>>> >>>
>>>>> >>> Thanks,
>>>>> >>> Vladimir
>>>>> >>>
>>>>> >>>>>
>>>>> >>>>> I see that you unconditionally set comp klass ptr base and
>>>>> shift for
>>>>> >>>>> DumpSharedSpaces. Should you do the check similar to
>>>>> >>>>> can_use_cds_with_metaspace_addr() to find if you can do that? You
>>>>> >>>>> don't even check UseCompressedKlassPointers.
>>>>> >>>> I don't think the checks are needed because the information
>>>>> written to
>>>>> >>>> the archive is not affected by the size of the class metaspace.
>>>>> >>>>
>>>>> >>>> Also, I recently added code to arguments.cpp that will generate an
>>>>> >>>> error
>>>>> >>>> if UseCompressedOops or UseCompressedKlassPointers is turned
>>>>> off and
>>>>> >>>> DumpSharedSpaces is on.
>>>>> >>>>>
>>>>> >>>>> Why you have next limitation? What if coop can't be used
>>>>> because of
>>>>> >>>>> big heap?:
>>>>> >>>>>
>>>>> >>>>> + // UseCompressedOops and UseCompressedKlassPointers must
>>>>> be on
>>>>> >>>>> for UseSharedSpaces.
>>>>> >>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> >>>>> + no_shared_spaces();
>>>>> >>>> If coop is turned off then CDS cannot be used. CDS will only be
>>>>> >>>> supported if both UseCompressedOops and
>>>>> UseCompressedKlassPointers are
>>>>> >>>> TRUE.
>>>>> >>>>>
>>>>> >>>>> Could you move UseCompressedKlassPointers code in
>>>>> arguments.cpp into
>>>>> >>>>> separate method similar to set_use_compressed_oops()?
>>>>> >>>> Done.
>>>>> >>>>>
>>>>> >>>>> About new tests.
>>>>> >>>>> The first test in CDSCompressedKPtrsError misses
>>>>> >>>>> -XX:+UseCompressedOops flag.
>>>>> >>>> Fixed.
>>>>> >>>>>
>>>>> >>>>> Could you also test cross flags combinations?:
>>>>> >>>>>
>>>>> >>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>>>> >>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>>>> >>>> Done.
>>>>> >>>>>
>>>>> >>>>> It would be nice to have test to check ClassMetaspaceSize value
>>>>> >>>>> range.
>>>>> >>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither
>>>>> maxint
>>>>> >>>>> or maxuint.
>>>>> >>>> A member of our runtime SQE group is writing additional tests.
>>>>> I'll
>>>>> >>>> ask
>>>>> >>>> him to write a ClassMetaspaceSize range test.
>>>>> >>>>
>>>>> >>>> We chose 3Gb because we thought it was a sufficiently large size.
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> About code style, indention. We align next line to
>>>>> corresponding part
>>>>> >>>>> of previous line if we need to split a line. And sometimes it is
>>>>> >>>>> better to keep one long line. I understand some of them were
>>>>> before
>>>>> >>>>> your changes but, please, clean up at lest ones you touched.
>>>>> >>>> Done.
>>>>> >>>>>
>>>>> >>>>> Cases in metaspace.cpp:
>>>>> >>>>>
>>>>> >>>>> 2263 assert(raw_word_size >= min_size,
>>>>> >>>>> 2264 err_msg("Should not deallocate dark matter "
>>>>> SIZE_FORMAT "<"
>>>>> >>>>> SIZE_FORMAT, word_size, min_size));
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2485 if (Metaspace::using_class_space() &&
>>>>> >>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>>>> >>>>> 2575 (Metaspace::using_class_space() ?
>>>>> >>>>> 2576 Metaspace::class_space_list()->virtual_space_total() : 0) :
>>>>> >>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>>>> >>>>> SIZE_FORMAT ", "
>>>>> >>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>>>> >>>>> ", "
>>>>> >>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>>>> >>>>> ", "
>>>>> >>>>> 2697 "large count " SIZE_FORMAT,
>>>>> >>>>> 2698 cls_specialized_count, cls_specialized_waste,
>>>>> >>>>> 2699 cls_small_count, cls_small_waste,
>>>>> >>>>> 2700 cls_medium_count, cls_medium_waste,
>>>>> >>>>> cls_humongous_count);
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
>>>>> >>>>> addr) &&
>>>>> >>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2889 vm_exit_during_initialization(err_msg(
>>>>> >>>>> 2890 "Could not allocate metaspace: %d bytes",
>>>>> >>>>> 2891 class_metaspace_size()));
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 3107 return using_class_space() ?
>>>>> >>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 3157 if (is_class && using_class_space()) {
>>>>> >>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 3305 return space_list()->contains(ptr) ||
>>>>> >>>>> 3306 (using_class_space() &&
>>>>> class_space_list()->contains(ptr));
>>>>> >>>>>
>>>>> >>>>> metaspace.hpp:
>>>>> >>>>>
>>>>> >>>>> 270 return
>>>>> _allocated_capacity_words[Metaspace::NonClassType] +
>>>>> >>>>> 271 (Metaspace::using_class_space() ?
>>>>> >>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>>> >>>>>
>>>>> >>>>> 285 return _allocated_used_words[Metaspace::NonClassType] +
>>>>> >>>>> 286 (Metaspace::using_class_space() ?
>>>>> >>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>>>> >>>>>
>>>>> >>>>> universe.cpp:
>>>>> >>>>>
>>>>> >>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>>>> >>>>> (intptr_t)(Universe::heap()->base() -
>>>>> >>>>> 850 os::vm_page_size()) ||
>>>>> >>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
>>>>> >>>>> value");
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> Thanks,
>>>>> >>>>> Vladimir
>>>>> >>>>>
>>>>> >>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>>> >>>>>> Hi,
>>>>> >>>>>>
>>>>> >>>>>> Please review this updated webrev for bug 8003424:
>>>>> >>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>>> >>>>>>
>>>>> >>>>>>
>>>>> >>>>>> The updated webrev has a lot of changes from the previous
>>>>> webrev,
>>>>> >>>>>> including the following:
>>>>> >>>>>>
>>>>> >>>>>> 1. Class metaspace information is now output when
>>>>> >>>>>> -XX:+PrintCompressedOopsMode is specified.
>>>>> >>>>>>
>>>>> >>>>>> 2. decode_klass_not_null(Register dst, Register src) no
>>>>> longer
>>>>> >>>>>> clobbers R12.
>>>>> >>>>>>
>>>>> >>>>>> 3. Method using_class_vsm() was renamed to
>>>>> using_class_space().
>>>>> >>>>>>
>>>>> >>>>>> 4. Type narrowKlass was added and replaces narrowOop, where
>>>>> >>>>>> appropriate.
>>>>> >>>>>>
>>>>> >>>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>>> >>>>>> unnecessary.
>>>>> >>>>>>
>>>>> >>>>>> 6. Metaspace::initialize_class_space() was made private.
>>>>> >>>>>>
>>>>> >>>>>> 7. Method max_heap_for_compressed_oops(), in
>>>>> arguments.cpp, was
>>>>> >>>>>> updated.
>>>>> >>>>>>
>>>>> >>>>>> Performance tests were run by Jenny using specjvm2008,
>>>>> specjbb2005,
>>>>> >>>>>> and
>>>>> >>>>>> specjbb2013. The results showed no significant performance
>>>>> >>>>>> difference
>>>>> >>>>>> in terms of scores and gc behavior.
>>>>> >>>>>>
>>>>> >>>>>> Additional testing was done on Solaris Sparc and Linux x86 using
>>>>> >>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16 & 32.
>>>>> >>>>>>
>>>>> >>>>>> Please let me know what additional tests should be run.
>>>>> >>>>>>
>>>>> >>>>>> Thanks!
>>>>> >>>>>> Harold
>>>>> >>>>>>
>>>>> >>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>>> >>>>>>> Hi Harold,
>>>>> >>>>>>>
>>>>> >>>>>>> > Usually the narrow_klass_base will be 32G and the
>>>>> >>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment) which
>>>>> >>>>>>> means
>>>>> >>>>>>> that
>>>>> >>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will
>>>>> need R12,
>>>>> >>>>>>> unless
>>>>> >>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does
>>>>> that
>>>>> >>>>>>> make
>>>>> >>>>>>> sense?
>>>>> >>>>>>>
>>>>> >>>>>>> My bad, I miscalculated. But we have "perfect value"
>>>>> 0x800000000
>>>>> >>>>>>> and I
>>>>> >>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>>> >>>>>>> (assuming or
>>>>> >>>>>>> with check that class metaspace size < 32Gb).
>>>>> >>>>>>>
>>>>> >>>>>>> > Is there one prefix byte per instruction, or just for certain
>>>>> >>>>>>> instructions?
>>>>> >>>>>>>
>>>>> >>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>>> >>>>>>> prefix is
>>>>> >>>>>>> necessary only if an instruction references one of the extended
>>>>> >>>>>>> registers or uses a 64-bit operand."
>>>>> >>>>>>>
>>>>> >>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16
>>>>> and
>>>>> >>>>>>> =32
>>>>> >>>>>>> and big java heap. Recently we got several bugs which indicated
>>>>> >>>>>>> that
>>>>> >>>>>>> we did not separate cleanly oops and klass pointers
>>>>> en/decoding.
>>>>> >>>>>>>
>>>>> >>>>>>> Thanks,
>>>>> >>>>>>> Vladimir
>>>>> >>>>>>>
>>>>> >>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>> >>>>>>>> Hi Vladimir,
>>>>> >>>>>>>>
>>>>> >>>>>>>> Thank you for the review! Please see inline comments.
>>>>> >>>>>>>>
>>>>> >>>>>>>> Thanks, Harold
>>>>> >>>>>>>>
>>>>> >>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>> >>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>> >>>>>>>>>> Nice clean up, Harold
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> Could you add the size of class metaspace in output with
>>>>> >>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't want to
>>>>> >>>>>>>>>> remember an
>>>>> >>>>>>>>>> other very long flag name: TraceMetavirtualspaceAllocation.
>>>>> >>>>>>>> Will be done in next webrev.
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> Also it would be nice to print these info line (and
>>>>> compressed
>>>>> >>>>>>>>>> oops
>>>>> >>>>>>>>>> info
>>>>> >>>>>>>>>> line) in hs_err files.
>>>>> >>>>>>>> I filed an enhancement bug for this: 8021264
>>>>> >>>>>>>> .
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL needed?" in
>>>>> >>>>>>>>>> x86_64.ad.
>>>>> >>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>>>>> >>>>>>>>>> arithmetic
>>>>> >>>>>>>>>> instructions which modify flags: subq, addq, shrq,
>>>>> xorptr. Also
>>>>> >>>>>>>>>> note
>>>>> >>>>>>>>>> that code in .ad file does not check the encoding mode for
>>>>> >>>>>>>>>> narrow
>>>>> >>>>>>>>>> klass/oop so it should be conservative and assume that
>>>>> >>>>>>>>>> arithmetic
>>>>> >>>>>>>>>> instructions are used.
>>>>> >>>>>>>> OK. Thanks.
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass
>>>>> base below
>>>>> >>>>>>>>>> 4Gb so
>>>>> >>>>>>>>>> the value is 32 bit. You can use it directly in narrow klass
>>>>> >>>>>>>>>> encoding/decoding without destroying R12.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> Correction. You can do it only if base < 2Gb max positive int
>>>>> >>>>>>>>> (sign
>>>>> >>>>>>>>> bit is extended so you will get wrong result with address
>>>>> > 2gb).
>>>>> >>>>>>>> But the base will normally be 32Gb. So this case won't happen
>>>>> >>>>>>>> very
>>>>> >>>>>>>> often.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> You definitely should not use R12 in
>>>>> >>>>>>>>> decode_klass_not_null(Register
>>>>> >>>>>>>>> dst, Register src) method where you have free 'dst' register.
>>>>> >>>>>>>> Will be fixed in next webrev.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G).
>>>>> Actually it
>>>>> >>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it should be
>>>>> >>>>>>>>> 64Gb.
>>>>> >>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> decode:
>>>>> >>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>> >>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>> >>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>> >>>>>>>>> }
>>>>> >>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>> >>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>> >>>>>>>>> }
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>> >>>>>>>>> (Universe::narrow_klass_base >> LogKlassAlignmentInBytes) <=
>>>>> >>>>>>>>> maxint
>>>>> >>>>>>>>> (max positive int).
>>>>> >>>>>>>> Usually the narrow_klass_base will be 32G and the
>>>>> >>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment)
>>>>> which means
>>>>> >>>>>>>> that
>>>>> >>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need
>>>>> R12,
>>>>> >>>>>>>> unless
>>>>> >>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()). Does that
>>>>> >>>>>>>> make
>>>>> >>>>>>>> sense?
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> And you have general memory reservation problem. At least on
>>>>> >>>>>>>>> Solaris,
>>>>> >>>>>>>>> as I remember, OS will always try to keep protected 4Kb pages
>>>>> >>>>>>>>> between
>>>>> >>>>>>>>> different requested memory regions. That is why in jdk7 we
>>>>> first
>>>>> >>>>>>>>> reserve one huge space and then cut it on java heap, perm
>>>>> gen and
>>>>> >>>>>>>>> protection page below heap to catch implicit NULL
>>>>> exceptions with
>>>>> >>>>>>>>> compressed oops.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> So, please, verify that you are getting 'cds_address +
>>>>> cds_total'
>>>>> >>>>>>>>> address or CompressedKlassPointersBase without CDS and with
>>>>> >>>>>>>>> compressed
>>>>> >>>>>>>>> oops and with Xmx20Gb.
>>>>> >>>>>>>> I verifed that we get either cds_address+cds_total as the
>>>>> >>>>>>>> address, or
>>>>> >>>>>>>> CompressedKlassPointersBase as the address without CDS on
>>>>> Linux,
>>>>> >>>>>>>> Windows
>>>>> >>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>>> >>>>>>>> sizes and
>>>>> >>>>>>>> -Xmx32G.
>>>>> >>>>>>>>
>>>>> >>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or
>>>>> the
>>>>> >>>>>>>> desired
>>>>> >>>>>>>> CDS address for class metaspace regardless of heap size.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>>> >>>>>>>>>> unfortunately we
>>>>> >>>>>>>>>> can't do other way. I assume you use max size because
>>>>> >>>>>>>>>> depending on
>>>>> >>>>>>>>>> registers used in instructions you will or will not get
>>>>> prefix
>>>>> >>>>>>>>>> byte
>>>>> >>>>>>>>>> (r8-r15).
>>>>> >>>>>>>> Is there one prefix byte per instruction, or just for certain
>>>>> >>>>>>>> instructions?
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> I will look on changes in more details may be late.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>>>>> >>>>>>>>> abbreviations
>>>>> >>>>>>>>> which are not obvious.
>>>>> >>>>>>>> I changed using_class_vsm() to using_class_space().
>>>>> >>>>>>>>>
>>>>> >>>>>>>>>
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> Thanks,
>>>>> >>>>>>>>>> Vladimir
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>> >>>>>>>>>>> Hi,
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Please review this fix for bug 8003424.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Open webrev at
>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Open bug links at:
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> JBS Bug links at
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> This fix provides support for using compressed klass
>>>>> pointers
>>>>> >>>>>>>>>>> with
>>>>> >>>>>>>>>>> CDS.
>>>>> >>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>> >>>>>>>>>>> platforms
>>>>> >>>>>>>>>>> when
>>>>> >>>>>>>>>>> UseCompressedKlassPointers is true. Instead of
>>>>> allocating the
>>>>> >>>>>>>>>>> class
>>>>> >>>>>>>>>>> metaspace as part of the Java Heap allocation and locating
>>>>> >>>>>>>>>>> it at
>>>>> >>>>>>>>>>> the
>>>>> >>>>>>>>>>> base of that allocation, the metaspace will now be
>>>>> allocated
>>>>> >>>>>>>>>>> separately,
>>>>> >>>>>>>>>>> above the Java heap. This will enable future expansion
>>>>> of the
>>>>> >>>>>>>>>>> metaspace
>>>>> >>>>>>>>>>> because it won't be backed up against the Java heap. If
>>>>> CDS is
>>>>> >>>>>>>>>>> being
>>>>> >>>>>>>>>>> used, then the CDS region will be allocated between the
>>>>> Java
>>>>> >>>>>>>>>>> heap and
>>>>> >>>>>>>>>>> the metaspace.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> The new class metaspace allocation code tries to allocate
>>>>> >>>>>>>>>>> memory at
>>>>> >>>>>>>>>>> 32G,
>>>>> >>>>>>>>>>> or above the CDS region, if it is present. Because of this,
>>>>> >>>>>>>>>>> encoding
>>>>> >>>>>>>>>>> and decoding of compressed klass pointers will always
>>>>> >>>>>>>>>>> require use
>>>>> >>>>>>>>>>> of a
>>>>> >>>>>>>>>>> base register. So, encoding and decoding of compressed
>>>>> klass
>>>>> >>>>>>>>>>> pointers
>>>>> >>>>>>>>>>> will differ from compressed oops.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> There are no class metaspace allocation changes if
>>>>> >>>>>>>>>>> UseCompressedKlassPointers is turned off or if running on a
>>>>> >>>>>>>>>>> 32-bit
>>>>> >>>>>>>>>>> platform.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> The code changes also include some cleanup and will fix
>>>>> bugs
>>>>> >>>>>>>>>>> 8016729,
>>>>> >>>>>>>>>>> 8011610, and 8003424.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Many of the modules in this webrev contain a lot of
>>>>> changes.
>>>>> >>>>>>>>>>> Modules
>>>>> >>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>>> >>>>>>>>>>> changed to
>>>>> >>>>>>>>>>> support the new encoding and decoding of compressed klass
>>>>> >>>>>>>>>>> pointers.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Module metaspace.cpp was changed significantly to support
>>>>> >>>>>>>>>>> the new
>>>>> >>>>>>>>>>> allocation for metaspace and the CDS region and to
>>>>> determine
>>>>> >>>>>>>>>>> compressed
>>>>> >>>>>>>>>>> klass pointer encoding base and shifting values.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Most of the changes to module universe.cpp were to
>>>>> remove code
>>>>> >>>>>>>>>>> related
>>>>> >>>>>>>>>>> to allocating metaspace and remove code that considered
>>>>> >>>>>>>>>>> compressed
>>>>> >>>>>>>>>>> klass
>>>>> >>>>>>>>>>> pointers when determining the compressed oops compression
>>>>> >>>>>>>>>>> mechanism.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were changed as
>>>>> >>>>>>>>>>> part
>>>>> >>>>>>>>>>> of a
>>>>> >>>>>>>>>>> cleanup requested by Coleen.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> These changes were tested with JCK Lang and VM tests, JTReg
>>>>> >>>>>>>>>>> tests,
>>>>> >>>>>>>>>>> JPRT,
>>>>> >>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>>>>> >>>>>>>>>>> vm.mlvm.testlist
>>>>> >>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>>>>> >>>>>>>>>>> -Xshare:off
>>>>> >>>>>>>>>>> (with
>>>>> >>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>>>>> >>>>>>>>>>> Linux and
>>>>> >>>>>>>>>>> 64-Bit
>>>>> >>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS.
>>>>> JCK tests
>>>>> >>>>>>>>>>> were
>>>>> >>>>>>>>>>> run on Solaris x86.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> The performance impact of these changes is TBD.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Thanks, Harold
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>
>>>>> >>>>>>
>>>>> >>>>
>>>>> >>
>>>>>
>>>
>
From john.coomes at oracle.com Thu Aug 15 11:53:06 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 18:53:06 +0000
Subject: hg: hsx/hotspot-emb/corba: 4 new changesets
Message-ID: <20130815185312.49C94488F4@hg.openjdk.java.net>
Changeset: cc11a0efb4f9
Author: aefimov
Date: 2013-08-01 14:59 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/corba/rev/cc11a0efb4f9
8015987: The corba repo contains unneeded .sjava files
Reviewed-by: alanb, chegar, coffeys
- src/share/classes/com/sun/corba/se/impl/copyobject/JavaInputStream.sjava
- src/share/classes/com/sun/corba/se/impl/copyobject/JavaOutputStream.sjava
- src/share/classes/com/sun/corba/se/impl/interceptors/ThreadCurrentStack.sjava
- src/share/classes/com/sun/corba/se/impl/orbutil/DefineWrapper.sjava
- src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLNameTranslatorImpl_save.sjava
- src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLTypesUtil_save.sjava
- src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalClientRequestImpl.sjava
- src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalClientResponseImpl.sjava
- src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalServerRequestImpl.sjava
- src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalServerResponseImpl.sjava
- src/share/classes/com/sun/corba/se/impl/transport/BufferConnectionImpl.sjava
Changeset: 342a954b68f3
Author: lana
Date: 2013-08-06 16:54 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/corba/rev/342a954b68f3
Merge
Changeset: 49c4a777fdfd
Author: lana
Date: 2013-08-13 10:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/corba/rev/49c4a777fdfd
Merge
Changeset: d411c60a8c2f
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/corba/rev/d411c60a8c2f
Added tag jdk8-b103 for changeset 49c4a777fdfd
! .hgtags
From john.coomes at oracle.com Thu Aug 15 11:52:56 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 18:52:56 +0000
Subject: hg: hsx/hotspot-emb: Added tag jdk8-b103 for changeset b7e64be81c8a
Message-ID: <20130815185256.351B0488F3@hg.openjdk.java.net>
Changeset: ceefd94ef326
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/rev/ceefd94ef326
Added tag jdk8-b103 for changeset b7e64be81c8a
! .hgtags
From john.coomes at oracle.com Thu Aug 15 11:53:27 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 18:53:27 +0000
Subject: hg: hsx/hotspot-emb/jaxp: Added tag jdk8-b103 for changeset
b1ceab582fc6
Message-ID: <20130815185337.7658A488F5@hg.openjdk.java.net>
Changeset: a22fe9bd01e6
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jaxp/rev/a22fe9bd01e6
Added tag jdk8-b103 for changeset b1ceab582fc6
! .hgtags
From john.coomes at oracle.com Thu Aug 15 11:53:49 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 18:53:49 +0000
Subject: hg: hsx/hotspot-emb/jaxws: Added tag jdk8-b103 for changeset
6cdc6ed98780
Message-ID: <20130815185357.A78EA488F6@hg.openjdk.java.net>
Changeset: 42211ab0ab1c
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jaxws/rev/42211ab0ab1c
Added tag jdk8-b103 for changeset 6cdc6ed98780
! .hgtags
From john.coomes at oracle.com Thu Aug 15 11:56:39 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 18:56:39 +0000
Subject: hg: hsx/hotspot-emb/jdk: 64 new changesets
Message-ID: <20130815191213.4E1CC488F9@hg.openjdk.java.net>
Changeset: 1c6bfb303ffc
Author: prr
Date: 2013-08-06 13:38 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/1c6bfb303ffc
8022175: Fix doclint warnings in javax.print
Reviewed-by: darcy
! src/share/classes/javax/print/DocFlavor.java
! src/share/classes/javax/print/MultiDocPrintJob.java
! src/share/classes/javax/print/PrintService.java
! src/share/classes/javax/print/ServiceUI.java
! src/share/classes/javax/print/ServiceUIFactory.java
! src/share/classes/javax/print/attribute/AttributeSet.java
! src/share/classes/javax/print/attribute/DateTimeSyntax.java
! src/share/classes/javax/print/attribute/DocAttributeSet.java
! src/share/classes/javax/print/attribute/EnumSyntax.java
! src/share/classes/javax/print/attribute/HashAttributeSet.java
! src/share/classes/javax/print/attribute/IntegerSyntax.java
! src/share/classes/javax/print/attribute/PrintJobAttributeSet.java
! src/share/classes/javax/print/attribute/PrintRequestAttributeSet.java
! src/share/classes/javax/print/attribute/PrintServiceAttributeSet.java
! src/share/classes/javax/print/attribute/ResolutionSyntax.java
! src/share/classes/javax/print/attribute/Size2DSyntax.java
! src/share/classes/javax/print/attribute/standard/Chromaticity.java
! src/share/classes/javax/print/attribute/standard/Compression.java
! src/share/classes/javax/print/attribute/standard/Finishings.java
! src/share/classes/javax/print/attribute/standard/JobKOctets.java
! src/share/classes/javax/print/attribute/standard/MediaPrintableArea.java
! src/share/classes/javax/print/attribute/standard/MediaSize.java
! src/share/classes/javax/print/attribute/standard/PresentationDirection.java
! src/share/classes/javax/print/attribute/standard/PrinterMoreInfoManufacturer.java
! src/share/classes/javax/print/attribute/standard/PrinterResolution.java
Changeset: c3b91dc2504a
Author: jgodinez
Date: 2013-08-06 14:22 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/c3b91dc2504a
8021583: test/javax/print/autosense/PrintAutoSenseData.java throwing NPE
Reviewed-by: jchen, prr
! src/solaris/classes/sun/print/UnixPrintJob.java
! src/windows/classes/sun/print/Win32PrintJob.java
! test/javax/print/attribute/autosense/PrintAutoSenseData.java
+ test/javax/print/attribute/autosense/sample.txt
Changeset: fe04f40cf469
Author: prr
Date: 2013-08-06 17:11 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/fe04f40cf469
8022455: Fix doclint warnings in javax.imageio
Reviewed-by: darcy
! src/share/classes/javax/imageio/ImageIO.java
! src/share/classes/javax/imageio/ImageReadParam.java
! src/share/classes/javax/imageio/ImageReader.java
! src/share/classes/javax/imageio/ImageTypeSpecifier.java
! src/share/classes/javax/imageio/ImageWriteParam.java
! src/share/classes/javax/imageio/ImageWriter.java
! src/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java
! src/share/classes/javax/imageio/plugins/bmp/BMPImageWriteParam.java
! src/share/classes/javax/imageio/plugins/jpeg/JPEGImageReadParam.java
! src/share/classes/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java
! src/share/classes/javax/imageio/spi/ImageReaderSpi.java
! src/share/classes/javax/imageio/spi/ImageWriterSpi.java
! src/share/classes/javax/imageio/spi/ServiceRegistry.java
! src/share/classes/javax/imageio/stream/ImageInputStream.java
! src/share/classes/javax/imageio/stream/ImageInputStreamImpl.java
! src/share/classes/javax/imageio/stream/ImageOutputStream.java
Changeset: c827ad8c1101
Author: prr
Date: 2013-08-06 17:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/c827ad8c1101
8022447: Fix doclint warnings in java.awt.image
Reviewed-by: darcy
! src/share/classes/java/awt/image/BufferStrategy.java
! src/share/classes/java/awt/image/BufferedImage.java
! src/share/classes/java/awt/image/ByteLookupTable.java
! src/share/classes/java/awt/image/ColorModel.java
! src/share/classes/java/awt/image/DirectColorModel.java
! src/share/classes/java/awt/image/ImageProducer.java
! src/share/classes/java/awt/image/IndexColorModel.java
! src/share/classes/java/awt/image/MemoryImageSource.java
! src/share/classes/java/awt/image/MultiPixelPackedSampleModel.java
! src/share/classes/java/awt/image/PixelGrabber.java
! src/share/classes/java/awt/image/RGBImageFilter.java
! src/share/classes/java/awt/image/ShortLookupTable.java
! src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java
! src/share/classes/java/awt/image/WritableRaster.java
Changeset: 9314c199003d
Author: lana
Date: 2013-08-06 22:47 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/9314c199003d
Merge
- src/share/classes/java/net/package.html
Changeset: ab64c138d5bd
Author: prr
Date: 2013-08-07 18:24 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/ab64c138d5bd
8014883: java.awt.container.add(component comp object constraints) doesn't work as expected on some linux platforms
Reviewed-by: jgodinez
! makefiles/CompileNativeLibraries.gmk
! src/solaris/native/sun/java2d/x11/XRBackendNative.c
Changeset: 645a37a3559f
Author: leonidr
Date: 2013-08-01 01:26 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/645a37a3559f
8021815: Add regression test for JDK-8007267
Reviewed-by: serb
+ test/com/apple/eawt/DefaultMenuBar/DefaultMenuBarTest.java
Changeset: 495ca130cbde
Author: alexsch
Date: 2013-08-01 17:09 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/495ca130cbde
7161568: [macosx] api/javax_swing/JTabbedPane/index2.html#varios fails
Reviewed-by: malenkov, serb
! src/macosx/classes/com/apple/laf/AquaTabbedPaneCopyFromBasicUI.java
! src/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java
+ test/javax/swing/JTabbedPane/4361477/bug4361477.java
+ test/javax/swing/JTabbedPane/6495408/bug6495408.java
+ test/javax/swing/JTabbedPane/7161568/bug7161568.java
Changeset: e76b1568d002
Author: leonidr
Date: 2013-08-02 15:42 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e76b1568d002
8021381: JavaFX scene included in Swing JDialog not starting from Web Start
Reviewed-by: art, dcherepanov
! src/share/classes/sun/awt/AppContext.java
Changeset: 07abddc1d7f2
Author: leonidr
Date: 2013-08-06 17:07 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/07abddc1d7f2
8022247: java/awt/EventDispatchThread/LoopRobustness/LoopRobustness throws NPE
Reviewed-by: art
! test/java/awt/EventDispatchThread/LoopRobustness/LoopRobustness.java
Changeset: 27d1bdf2f7d9
Author: mcherkas
Date: 2013-08-06 17:29 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/27d1bdf2f7d9
8016833: Underlines and strikethrough not rendering correctly
Reviewed-by: alexsch, serb
Contributed-by: anton.nashatyrev at oracle.com
! src/share/classes/javax/swing/text/GlyphView.java
+ test/javax/swing/text/StyledEditorKit/8016833/bug8016833.java
Changeset: f8ed88f5ed87
Author: alexsch
Date: 2013-08-07 18:32 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/f8ed88f5ed87
8022532: [parfait] Potential memory leak in gtk2_interface.c
Reviewed-by: art, serb
! src/solaris/native/sun/awt/gtk2_interface.c
Changeset: 7706a622d35f
Author: alexsch
Date: 2013-08-07 18:58 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/7706a622d35f
8013849: Awt assert on Hashtable.cpp:124
Reviewed-by: serb
! src/windows/native/sun/windows/awt_Component.cpp
+ test/java/awt/event/KeyEvent/DeadKey/DeadKeySystemAssertionDialog.java
Changeset: f70492d969e7
Author: serb
Date: 2013-08-07 19:57 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/f70492d969e7
7124339: [macosx] setIconImage is not endlessly tolerant to the broken image-arguments
Reviewed-by: alexsch, leonidr
! src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
Changeset: 540192229a69
Author: art
Date: 2013-08-07 21:31 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/540192229a69
6551589: ContainerListener Documentation may be incorrect
Reviewed-by: serb
! src/share/classes/java/awt/event/ContainerListener.java
Changeset: 9bcc3f2af980
Author: lana
Date: 2013-08-07 12:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/9bcc3f2af980
Merge
- src/share/classes/java/net/package.html
Changeset: e193c4ad940a
Author: lana
Date: 2013-08-07 19:52 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e193c4ad940a
Merge
Changeset: c49b538ef054
Author: chegar
Date: 2013-08-01 12:38 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/c49b538ef054
8022061: More ProblemList.txt updates (7/2013)
Reviewed-by: alanb, psandoz
! test/ProblemList.txt
Changeset: 36f4cf8872f3
Author: igerasim
Date: 2013-07-30 21:11 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/36f4cf8872f3
7192942: (coll) Inefficient calculation of power of two in HashMap
Reviewed-by: mduigou
! src/share/classes/java/util/HashMap.java
Changeset: 54329c24c2f4
Author: igerasim
Date: 2013-07-29 12:35 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/54329c24c2f4
8020669: (fs) Files.readAllBytes() does not read any data when Files.size() is 0
Reviewed-by: alanb, chegar, martin, rriggs
! src/share/classes/java/nio/file/Files.java
! test/java/nio/file/Files/BytesAndLines.java
Changeset: d6de149b9f20
Author: xuelei
Date: 2013-08-01 07:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/d6de149b9f20
7127524: P11TlsPrfGenerator has anonymous inner class with serialVersionUID
Reviewed-by: vinnie
! src/share/classes/sun/security/pkcs11/P11TlsPrfGenerator.java
Changeset: cd13a4a45a37
Author: chegar
Date: 2013-08-01 16:53 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/cd13a4a45a37
8022087: Fix doclint issues in j.u.Deque & Queue
Reviewed-by: chegar, darcy
Contributed-by: Doug Lea
! src/share/classes/java/util/Deque.java
! src/share/classes/java/util/Queue.java
Changeset: 0be7839d4599
Author: psandoz
Date: 2013-08-01 15:28 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/0be7839d4599
8020016: Numerous splitereator impls do not throw NPE for null Consumers
Reviewed-by: mduigou, alanb, henryjen
! src/share/classes/java/util/stream/SpinedBuffer.java
! src/share/classes/java/util/stream/StreamSpliterators.java
! src/share/classes/java/util/stream/Streams.java
! test/java/util/Spliterator/SpliteratorTraversingAndSplittingTest.java
! test/java/util/stream/bootlib/java/util/stream/SpliteratorTestHelper.java
Changeset: 29f153e11683
Author: weijun
Date: 2013-08-02 08:59 +0800
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/29f153e11683
8021789: jarsigner parses alias as command line option (depending on locale)
Reviewed-by: vinnie
! src/share/classes/sun/security/tools/jarsigner/Main.java
+ test/sun/security/tools/jarsigner/collator.sh
Changeset: 40221b09812f
Author: uta
Date: 2013-08-02 13:16 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/40221b09812f
8020191: System.getProperty("os.name") returns "Windows NT (unknown)" on Windows 8.1
Reviewed-by: alanb, khazra, chegar
! src/windows/native/java/lang/java_props_md.c
! src/windows/resource/java.manifest
Changeset: 60c275e56a69
Author: chegar
Date: 2013-08-02 11:25 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/60c275e56a69
8022121: Remove superfluous @test tag from SpliteratorTraversingAndSplittingTest
Reviewed-by: psandoz
! test/java/util/Spliterator/SpliteratorTraversingAndSplittingTest.java
Changeset: 6ec910ff3ea1
Author: chegar
Date: 2013-08-02 14:29 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/6ec910ff3ea1
8020291: j.u.c.CompletionStage
8020435: CompletableFuture/Basic.java fails on single core machine
Reviewed-by: chegar, psandoz
Contributed-by: Doug Lea
! src/share/classes/java/util/concurrent/CompletableFuture.java
+ src/share/classes/java/util/concurrent/CompletionStage.java
! test/ProblemList.txt
! test/java/util/concurrent/CompletableFuture/Basic.java
Changeset: 42b786f2fb99
Author: mullan
Date: 2013-08-02 08:30 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/42b786f2fb99
8001319: Add SecurityPermission "insertProvider" target name
Reviewed-by: vinnie
! src/share/classes/java/security/Security.java
! src/share/classes/java/security/SecurityPermission.java
+ test/java/security/Security/AddProvider.java
+ test/java/security/Security/AddProvider.policy.1
+ test/java/security/Security/AddProvider.policy.2
+ test/java/security/Security/AddProvider.policy.3
Changeset: 7bbc6c2351d7
Author: mullan
Date: 2013-08-02 08:37 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/7bbc6c2351d7
Merge
- src/share/classes/java/net/package.html
- src/share/classes/java/util/stream/StreamBuilder.java
- src/share/classes/javax/security/auth/callback/package.html
- src/share/classes/javax/security/auth/kerberos/package.html
- src/share/classes/javax/security/auth/login/package.html
- src/share/classes/javax/security/auth/package.html
- src/share/classes/javax/security/auth/spi/package.html
- src/share/classes/javax/security/auth/x500/package.html
- src/share/classes/javax/security/cert/package.html
- src/share/classes/javax/security/sasl/package.html
- test/java/util/Collections/EmptySortedSet.java
Changeset: 0a778e487a73
Author: mullan
Date: 2013-08-02 09:38 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/0a778e487a73
Merge
Changeset: 33617583c545
Author: bpb
Date: 2013-07-31 10:53 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/33617583c545
6476168: (fmt) Inconsistency formatting subnormal doubles with hexadecimal conversion
Summary: Update specification to match implementation.
Reviewed-by: darcy
Contributed-by: Brian Burkhalter
! src/share/classes/java/util/Formatter.java
! test/java/util/Formatter/Basic-X.java.template
! test/java/util/Formatter/Basic.java
! test/java/util/Formatter/BasicDouble.java
Changeset: 883cc296ec89
Author: bchristi
Date: 2013-08-02 15:30 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/883cc296ec89
8011194: Apps launched via double-clicked .jars have file.encoding value of US-ASCII on Mac OS X
Summary: On Mac, default to UTF-8 if no environmental hints are available
Reviewed-by: naoto, ddehaven
! src/solaris/native/java/lang/java_props_md.c
+ test/java/lang/System/MacEncoding/ExpectedEncoding.java
+ test/java/lang/System/MacEncoding/MacJNUEncoding.sh
+ test/java/lang/System/MacEncoding/TestFileEncoding.java
- test/java/lang/System/MacJNUEncoding/ExpectedEncoding.java
- test/java/lang/System/MacJNUEncoding/MacJNUEncoding.sh
Changeset: dd1040690e31
Author: bpb
Date: 2013-08-02 11:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/dd1040690e31
8022094: BigDecimal/CompareToTests and BigInteger/CompareToTests are incorrect
Summary: Fail test if errors; fix test values; port BigDecimal version to BigInteger
Reviewed-by: smarks, alanb
Contributed-by: Brian Burkhalter
! test/java/math/BigDecimal/CompareToTests.java
! test/java/math/BigInteger/CompareToTests.java
Changeset: 80da091343af
Author: darcy
Date: 2013-08-05 07:50 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/80da091343af
8022190: Fix varargs lint warnings in the JDK
Reviewed-by: alanb, lancea, alexsch
! src/share/classes/java/util/stream/Stream.java
! src/share/classes/javax/swing/SwingWorker.java
! src/share/classes/sun/reflect/annotation/AnnotationParser.java
! src/share/classes/sun/swing/AccumulativeRunnable.java
Changeset: 87367a1c7f76
Author: sundar
Date: 2013-08-05 21:31 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/87367a1c7f76
8016531: jconsole-plugin script demo does not work with nashorn
Reviewed-by: lagergren, hannesw
Contributed-by: rieberandreas at gmail.com
! src/share/demo/scripting/jconsole-plugin/src/com/sun/demo/scripting/jconsole/ScriptShellPanel.java
! src/share/demo/scripting/jconsole-plugin/src/resources/jconsole.js
! src/share/demo/scripting/jconsole-plugin/src/scripts/invoke.js
! src/share/demo/scripting/jconsole-plugin/src/scripts/jstack.js
! src/share/demo/scripting/jconsole-plugin/src/scripts/jtop.js
! src/share/demo/scripting/jconsole-plugin/src/scripts/sysprops.js
! src/share/sample/scripting/scriptpad/README.txt
! src/share/sample/scripting/scriptpad/src/resources/conc.js
! src/share/sample/scripting/scriptpad/src/resources/mm.js
Changeset: 31759750ff63
Author: smarks
Date: 2013-08-05 19:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/31759750ff63
8020854: change RMI javadocs to specify that remote objects are exported to the wildcard address
Reviewed-by: rgallard, alanb
! src/share/classes/java/rmi/server/RMISocketFactory.java
! src/share/classes/java/rmi/server/UnicastRemoteObject.java
Changeset: fce446b29577
Author: dsamersoff
Date: 2013-08-06 14:04 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/fce446b29577
8011038: sourceObj validation during desereliazation of RelationNotification should be relaxed
Summary: sourceObj could be set to null by setSource() relax a validation of deserialized object.
Reviewed-by: sjiang, skoivu, dfuchs
! src/share/classes/javax/management/relation/RelationNotification.java
Changeset: 6773af0dda02
Author: chegar
Date: 2013-08-06 15:35 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/6773af0dda02
8022344: Additional debug info for test/java/net/NetworkInterface/IndexTest.java
Reviewed-by: michaelm, alanb
! test/java/net/NetworkInterface/IndexTest.java
Changeset: 1f4af3e0447e
Author: mullan
Date: 2013-08-06 08:31 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/1f4af3e0447e
8022120: JCK test api/javax_xml/crypto/dsig/TransformService/index_ParamMethods fails
Summary: TransformService.init and marshalParams must throw NullPointerException when parent parameter is null
Reviewed-by: xuelei
! src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java
+ test/javax/xml/crypto/dsig/TransformService/NullParent.java
Changeset: ba634b53f53a
Author: mullan
Date: 2013-08-06 08:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/ba634b53f53a
Merge
Changeset: cd0ea5563523
Author: jfranck
Date: 2013-08-06 18:54 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/cd0ea5563523
7184826: (reflect) Add support for Project Lambda concepts in core reflection
Reviewed-by: darcy, jfranck
Contributed-by: Amy Lu
+ test/java/lang/reflect/DefaultStaticTest/DefaultStaticInvokeTest.java
+ test/java/lang/reflect/DefaultStaticTest/DefaultStaticTestData.java
+ test/java/lang/reflect/DefaultStaticTest/helper/Declared.java
+ test/java/lang/reflect/DefaultStaticTest/helper/Mod.java
! test/java/lang/reflect/Method/DefaultMethodModeling.java
! test/java/lang/reflect/Method/IsDefaultTest.java
Changeset: 98643f3ddf40
Author: darcy
Date: 2013-08-06 13:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/98643f3ddf40
8022174: Fix doclint warnings in javax.sound
8022404: Fix doclint issues in java.applet
Reviewed-by: prr
! src/share/classes/java/applet/AppletContext.java
! src/share/classes/javax/sound/midi/MetaMessage.java
! src/share/classes/javax/sound/midi/MidiDevice.java
! src/share/classes/javax/sound/midi/MidiDeviceReceiver.java
! src/share/classes/javax/sound/midi/MidiDeviceTransmitter.java
! src/share/classes/javax/sound/midi/MidiFileFormat.java
! src/share/classes/javax/sound/midi/MidiMessage.java
! src/share/classes/javax/sound/midi/MidiSystem.java
! src/share/classes/javax/sound/midi/ShortMessage.java
! src/share/classes/javax/sound/midi/Synthesizer.java
! src/share/classes/javax/sound/midi/SysexMessage.java
! src/share/classes/javax/sound/midi/Track.java
! src/share/classes/javax/sound/sampled/AudioFileFormat.java
! src/share/classes/javax/sound/sampled/AudioFormat.java
! src/share/classes/javax/sound/sampled/AudioSystem.java
! src/share/classes/javax/sound/sampled/BooleanControl.java
! src/share/classes/javax/sound/sampled/Mixer.java
! src/share/classes/javax/sound/sampled/spi/FormatConversionProvider.java
Changeset: 12c1b78acf9a
Author: lagergren
Date: 2013-08-06 12:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/12c1b78acf9a
8022412: Fixed warnings in java.util root, except for HashMap
Reviewed-by: mduigou, darcy
Contributed-by: marcus.lagergren at oracle.com
! src/share/classes/java/util/ArrayPrefixHelpers.java
! src/share/classes/java/util/Collections.java
! src/share/classes/java/util/Comparator.java
! src/share/classes/java/util/Comparators.java
! src/share/classes/java/util/Hashtable.java
! src/share/classes/java/util/IdentityHashMap.java
! src/share/classes/java/util/Vector.java
! src/share/classes/java/util/WeakHashMap.java
Changeset: 8112076ae424
Author: juh
Date: 2013-08-06 13:46 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/8112076ae424
8022439: Fix lint warnings in sun.security.ec
Reviewed-by: darcy
! src/share/classes/sun/security/ec/ECDSASignature.java
Changeset: 69cfd941aec2
Author: juh
Date: 2013-08-06 14:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/69cfd941aec2
8022443: Fix lint warnings in sun.security.pkcs12
Reviewed-by: darcy
! src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java
Changeset: 31e923842d49
Author: smarks
Date: 2013-08-06 14:24 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/31e923842d49
8022440: suppress deprecation warnings in sun.rmi
Reviewed-by: mduigou
! src/share/classes/sun/rmi/runtime/Log.java
! src/share/classes/sun/rmi/server/ActivatableRef.java
! src/share/classes/sun/rmi/server/Dispatcher.java
! src/share/classes/sun/rmi/server/LoaderHandler.java
! src/share/classes/sun/rmi/server/UnicastRef.java
! src/share/classes/sun/rmi/server/UnicastServerRef.java
! src/share/classes/sun/rmi/server/Util.java
! src/share/classes/sun/rmi/transport/DGCImpl.java
! src/share/classes/sun/rmi/transport/StreamRemoteCall.java
! src/share/classes/sun/rmi/transport/Transport.java
! src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java
! src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java
! src/share/classes/sun/rmi/transport/tcp/TCPTransport.java
Changeset: 4b8b811059db
Author: dxu
Date: 2013-08-06 14:33 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/4b8b811059db
8022410: Fix Javac Warnings in com.sun.security.auth Package
Reviewed-by: darcy
! src/share/classes/com/sun/security/auth/PolicyFile.java
! src/share/classes/com/sun/security/auth/SubjectCodeSource.java
Changeset: d5694d78ebc6
Author: darcy
Date: 2013-08-06 16:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/d5694d78ebc6
8022406: Fix doclint issues in java.beans
Reviewed-by: prr
! src/share/classes/java/beans/AppletInitializer.java
! src/share/classes/java/beans/Beans.java
! src/share/classes/java/beans/ConstructorProperties.java
! src/share/classes/java/beans/DefaultPersistenceDelegate.java
! src/share/classes/java/beans/EventHandler.java
! src/share/classes/java/beans/Expression.java
! src/share/classes/java/beans/IndexedPropertyDescriptor.java
! src/share/classes/java/beans/Introspector.java
! src/share/classes/java/beans/PersistenceDelegate.java
! src/share/classes/java/beans/PropertyChangeSupport.java
! src/share/classes/java/beans/PropertyDescriptor.java
! src/share/classes/java/beans/Transient.java
! src/share/classes/java/beans/VetoableChangeSupport.java
! src/share/classes/java/beans/beancontext/BeanContext.java
! src/share/classes/java/beans/beancontext/BeanContextChild.java
! src/share/classes/java/beans/beancontext/BeanContextChildSupport.java
! src/share/classes/java/beans/beancontext/BeanContextMembershipEvent.java
! src/share/classes/java/beans/beancontext/BeanContextServices.java
! src/share/classes/java/beans/beancontext/BeanContextServicesSupport.java
! src/share/classes/java/beans/beancontext/BeanContextSupport.java
Changeset: 939c3be6cc86
Author: briangoetz
Date: 2013-06-28 16:26 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/939c3be6cc86
8015318: Extend Collector with 'finish' operation
Reviewed-by: mduigou
Contributed-by: brian.goetz at oracle.com
! src/share/classes/java/util/DoubleSummaryStatistics.java
! src/share/classes/java/util/IntSummaryStatistics.java
! src/share/classes/java/util/LongSummaryStatistics.java
! src/share/classes/java/util/StringJoiner.java
! src/share/classes/java/util/stream/Collector.java
! src/share/classes/java/util/stream/Collectors.java
! src/share/classes/java/util/stream/DelegatingStream.java
! src/share/classes/java/util/stream/DoubleStream.java
! src/share/classes/java/util/stream/IntStream.java
! src/share/classes/java/util/stream/LongStream.java
! src/share/classes/java/util/stream/ReduceOps.java
! src/share/classes/java/util/stream/ReferencePipeline.java
! src/share/classes/java/util/stream/Stream.java
! src/share/classes/java/util/stream/package-info.java
! test/java/util/stream/test/org/openjdk/tests/java/util/FillableStringTest.java
! test/java/util/stream/test/org/openjdk/tests/java/util/stream/GroupByOpTest.java
! test/java/util/stream/test/org/openjdk/tests/java/util/stream/SummaryStatisticsTest.java
! test/java/util/stream/test/org/openjdk/tests/java/util/stream/TabulatorsTest.java
! test/jdk/lambda/MethodReferenceTestInstanceMethod.java
! test/jdk/lambda/separate/TestHarness.java
Changeset: 6cc8c2ad9804
Author: darcy
Date: 2013-08-06 16:45 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/6cc8c2ad9804
8022453: Fix doclint issues in javax.accessibility
Reviewed-by: prr
! src/share/classes/javax/accessibility/Accessible.java
! src/share/classes/javax/accessibility/AccessibleBundle.java
! src/share/classes/javax/accessibility/AccessibleExtendedTable.java
! src/share/classes/javax/accessibility/AccessibleRelationSet.java
! src/share/classes/javax/accessibility/AccessibleTable.java
! src/share/classes/javax/accessibility/AccessibleTableModelChange.java
! src/share/classes/javax/accessibility/AccessibleTextSequence.java
! src/share/classes/javax/accessibility/AccessibleValue.java
Changeset: 2bc9ce1aade5
Author: lana
Date: 2013-08-06 17:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/2bc9ce1aade5
Merge
Changeset: 7ab5f19a9a31
Author: lana
Date: 2013-08-06 17:13 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/7ab5f19a9a31
Merge
Changeset: e303c228bf31
Author: henryjen
Date: 2013-08-06 17:42 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e303c228bf31
8022446: Fix serial warnings in java.util.stream
Reviewed-by: darcy
! src/share/classes/java/util/stream/AbstractShortCircuitTask.java
! src/share/classes/java/util/stream/AbstractTask.java
! src/share/classes/java/util/stream/FindOps.java
! src/share/classes/java/util/stream/ForEachOps.java
! src/share/classes/java/util/stream/MatchOps.java
! src/share/classes/java/util/stream/Nodes.java
! src/share/classes/java/util/stream/ReduceOps.java
! src/share/classes/java/util/stream/SliceOps.java
Changeset: 1d21ff5c2b3f
Author: dxu
Date: 2013-08-06 18:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/1d21ff5c2b3f
8022478: Fix Warnings In sun.net.www.protocol.http Package
Reviewed-by: darcy
! src/share/classes/sun/net/www/protocol/http/AuthCacheValue.java
! src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java
Changeset: e117fcdd2176
Author: mduigou
Date: 2013-08-06 18:18 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e117fcdd2176
8022476: cleanup some raw types and unchecked warnings in java.util.stream
Reviewed-by: darcy
Contributed-by: mike.duigou at oracle.com, henry.jen at oracle.com
! src/share/classes/java/util/Optional.java
! src/share/classes/java/util/stream/AbstractPipeline.java
! src/share/classes/java/util/stream/AbstractShortCircuitTask.java
! src/share/classes/java/util/stream/DoublePipeline.java
! src/share/classes/java/util/stream/IntPipeline.java
! src/share/classes/java/util/stream/LongPipeline.java
! src/share/classes/java/util/stream/Nodes.java
! src/share/classes/java/util/stream/ReduceOps.java
! src/share/classes/java/util/stream/ReferencePipeline.java
! src/share/classes/java/util/stream/Sink.java
! src/share/classes/java/util/stream/SortedOps.java
! src/share/classes/java/util/stream/StreamSpliterators.java
Changeset: 906dd23334c1
Author: weijun
Date: 2013-08-07 19:06 +0800
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/906dd23334c1
7151062: [macosx] SCDynamicStore prints error messages to stderr
Reviewed-by: xuelei
! src/macosx/native/java/util/SCDynamicStoreConfig.m
Changeset: 99f4319763a9
Author: sundar
Date: 2013-08-07 18:16 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/99f4319763a9
8022483: Nashorn compatibility issues in jhat's OQL feature
Reviewed-by: lagergren, attila, hannesw
! src/share/classes/com/sun/tools/hat/resources/hat.js
! src/share/classes/com/sun/tools/hat/resources/oqlhelp.html
Changeset: 8c7cf4926157
Author: xuelei
Date: 2013-08-07 06:42 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/8c7cf4926157
8013809: deadlock in SSLSocketImpl between between write and close
Reviewed-by: wetmore
! src/share/classes/sun/security/ssl/SSLSocketImpl.java
Changeset: c1f129f62f36
Author: lagergren
Date: 2013-08-07 08:08 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/c1f129f62f36
8022454: Fixed various serializations and deprecation warnings in java.util, java.net and sun.tools
Reviewed-by: darcy
Contributed-by: marcus.lagergren at oracle.com
! src/share/classes/java/net/SocketAddress.java
! src/share/classes/java/util/logging/XMLFormatter.java
! src/share/classes/sun/tools/jar/JarException.java
Changeset: d1c82d5bee3f
Author: dxu
Date: 2013-08-07 12:13 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/d1c82d5bee3f
8022554: Fix Warnings in sun.invoke.anon Package
Reviewed-by: darcy, mduigou, lancea
! src/share/classes/sun/invoke/anon/ConstantPoolPatch.java
Changeset: 8c50c27418d3
Author: smarks
Date: 2013-08-07 16:29 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/8c50c27418d3
8022479: clean up warnings from sun.tools.asm
Reviewed-by: lancea, darcy
! src/share/classes/sun/tools/asm/Assembler.java
! src/share/classes/sun/tools/asm/ConstantPool.java
! src/share/classes/sun/tools/asm/Instruction.java
! src/share/classes/sun/tools/asm/SwitchData.java
! src/share/classes/sun/tools/asm/TryData.java
Changeset: 23e68a8e4b91
Author: lana
Date: 2013-08-07 19:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/23e68a8e4b91
Merge
- test/java/lang/System/MacJNUEncoding/ExpectedEncoding.java
- test/java/lang/System/MacJNUEncoding/MacJNUEncoding.sh
Changeset: e0f6039c0290
Author: lana
Date: 2013-08-13 10:42 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/e0f6039c0290
Merge
Changeset: f1d8d15bfcb5
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/jdk/rev/f1d8d15bfcb5
Added tag jdk8-b103 for changeset e0f6039c0290
! .hgtags
From john.coomes at oracle.com Thu Aug 15 12:15:23 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 19:15:23 +0000
Subject: hg: hsx/hotspot-emb/nashorn: 5 new changesets
Message-ID: <20130815191530.148CE488FB@hg.openjdk.java.net>
Changeset: 0ad00ae4fec6
Author: hannesw
Date: 2013-08-01 12:23 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/0ad00ae4fec6
8020132: Big object literal with numerical keys exceeds method size
Reviewed-by: lagergren, sundar
! src/jdk/nashorn/internal/codegen/CodeGenerator.java
! src/jdk/nashorn/internal/codegen/FieldObjectCreator.java
! src/jdk/nashorn/internal/codegen/MapCreator.java
! src/jdk/nashorn/internal/codegen/SpillObjectCreator.java
! src/jdk/nashorn/internal/objects/ArrayBufferView.java
! src/jdk/nashorn/internal/runtime/NashornLoader.java
! src/jdk/nashorn/internal/runtime/arrays/ArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/ArrayIndex.java
! src/jdk/nashorn/internal/runtime/arrays/ArrayIterator.java
! src/jdk/nashorn/internal/runtime/arrays/DeletedArrayFilter.java
! src/jdk/nashorn/internal/runtime/arrays/DeletedRangeArrayFilter.java
! src/jdk/nashorn/internal/runtime/arrays/FrozenArrayFilter.java
! src/jdk/nashorn/internal/runtime/arrays/IntArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/LongArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/NoTypeArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/NumberArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/ObjectArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/ReverseArrayIterator.java
! src/jdk/nashorn/internal/runtime/arrays/SealedArrayFilter.java
! src/jdk/nashorn/internal/runtime/arrays/SparseArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/UndefinedArrayFilter.java
+ test/script/basic/JDK-8020132.js
+ test/script/basic/JDK-8020132.js.EXPECTED
Changeset: bb0f3c896cb7
Author: sundar
Date: 2013-08-06 13:10 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/bb0f3c896cb7
Merge
Changeset: ab90c566272d
Author: lana
Date: 2013-08-06 17:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/ab90c566272d
Merge
Changeset: 414203de4374
Author: lana
Date: 2013-08-13 10:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/414203de4374
Merge
Changeset: afc100513451
Author: cl
Date: 2013-08-15 09:26 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/nashorn/rev/afc100513451
Added tag jdk8-b103 for changeset 414203de4374
! .hgtags
From john.coomes at oracle.com Thu Aug 15 12:14:26 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 19:14:26 +0000
Subject: hg: hsx/hotspot-emb/langtools: 11 new changesets
Message-ID: <20130815191510.21EB5488FA@hg.openjdk.java.net>
Changeset: 05370ef9dccb
Author: ksrini
Date: 2013-07-31 08:37 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/05370ef9dccb
8014826: c.s.t.javac.tree.Pretty.visitNewArray() prints duplicate dimension markers
Reviewed-by: jjg, vromero
! src/share/classes/com/sun/tools/javac/tree/Pretty.java
+ test/tools/javac/tree/NewArrayPretty.java
Changeset: 99b60bcf3862
Author: vromero
Date: 2013-08-06 15:08 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/99b60bcf3862
8022186: javac generates dead code if a try with an empty body has a finalizer
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/jvm/Gen.java
+ test/tools/javac/T8022186/DeadCodeGeneratedForEmptyTryTest.java
Changeset: 051e64d0816e
Author: jfranck
Date: 2013-08-07 01:32 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/051e64d0816e
8009367: Wrong kind of name used in comparison in javax.lang.model code for repeatable annotations
Reviewed-by: jjg, darcy
! src/share/classes/com/sun/tools/javac/model/JavacAnnoConstructs.java
+ test/tools/javac/processing/model/element/8009367/TestQualifiedNameUsed.java
+ test/tools/javac/processing/model/element/8009367/p/Q.java
+ test/tools/javac/processing/model/element/8009367/p/QQ.java
+ test/tools/javac/processing/model/element/8009367/p/R.java
+ test/tools/javac/processing/model/element/8009367/p/RR.java
Changeset: f3ea20a6e958
Author: lana
Date: 2013-08-06 17:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/f3ea20a6e958
Merge
Changeset: b926dc251be8
Author: lana
Date: 2013-08-06 17:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/b926dc251be8
Merge
Changeset: f3deeccbf4cf
Author: vromero
Date: 2013-08-07 10:41 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/f3deeccbf4cf
8020997: TreeMaker.AnnotationBuilder creates broken element literals with repeating annotations
Reviewed-by: jjg, jfranck
! src/share/classes/com/sun/tools/javac/tree/TreeMaker.java
+ test/tools/javac/T8020997/CannotCompileRepeatedAnnoTest.java
Changeset: c7dcf899ffff
Author: vromero
Date: 2013-08-07 11:04 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/c7dcf899ffff
8008274: javac should not reference/use sample code
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/Main.java
Changeset: 8c55df2442c1
Author: bpatel
Date: 2013-08-07 15:00 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/8c55df2442c1
7198274: RFE : Javadoc Accessibility : Use CSS styles rather than or tags
Reviewed-by: jjg
! src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/EnumConstantWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/FieldWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/NestedClassWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/PackageFrameWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/ProfilePackageFrameWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/PropertyWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/SubWriterHolderWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlStyle.java
! src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java
! src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css
! test/com/sun/javadoc/testClassCrossReferences/TestClassCrossReferences.java
! test/com/sun/javadoc/testExternalOverridenMethod/TestExternalOverridenMethod.java
! test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
! test/com/sun/javadoc/testInterface/TestInterface.java
! test/com/sun/javadoc/testJavaFX/TestJavaFX.java
! test/com/sun/javadoc/testMemberInheritence/TestMemberInheritence.java
! test/com/sun/javadoc/testMemberSummary/TestMemberSummary.java
! test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java
! test/com/sun/javadoc/testOverridenMethods/TestOverridenMethodDocCopy.java
! test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethods.java
! test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java
! test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java
! test/com/sun/javadoc/testPackageDeprecation/TestPackageDeprecation.java
! test/com/sun/javadoc/testPrivateClasses/TestPrivateClasses.java
! test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java
Changeset: 33294f02c9a5
Author: bpatel
Date: 2013-08-07 16:09 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/33294f02c9a5
4749567: stddoclet: Add CSS style for setting header/footer to be italic
Reviewed-by: jjg
! src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java
! src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css
+ test/com/sun/javadoc/testOptions/TestOptions.java
+ test/com/sun/javadoc/testOptions/pkg/Foo.java
Changeset: 76cfe7c61f25
Author: lana
Date: 2013-08-13 10:35 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/76cfe7c61f25
Merge
Changeset: dd4a00c220c6
Author: cl
Date: 2013-08-15 09:26 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/langtools/rev/dd4a00c220c6
Added tag jdk8-b103 for changeset 76cfe7c61f25
! .hgtags
From john.coomes at oracle.com Thu Aug 15 12:47:45 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 19:47:45 +0000
Subject: hg: hsx/hotspot-rt/jaxp: Added tag jdk8-b103 for changeset
b1ceab582fc6
Message-ID: <20130815194756.ED8144890C@hg.openjdk.java.net>
Changeset: a22fe9bd01e6
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jaxp/rev/a22fe9bd01e6
Added tag jdk8-b103 for changeset b1ceab582fc6
! .hgtags
From john.coomes at oracle.com Thu Aug 15 12:47:25 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 19:47:25 +0000
Subject: hg: hsx/hotspot-rt: Added tag jdk8-b103 for changeset b7e64be81c8a
Message-ID: <20130815194725.A955E4890A@hg.openjdk.java.net>
Changeset: ceefd94ef326
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/rev/ceefd94ef326
Added tag jdk8-b103 for changeset b7e64be81c8a
! .hgtags
From john.coomes at oracle.com Thu Aug 15 12:47:32 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 19:47:32 +0000
Subject: hg: hsx/hotspot-rt/corba: 4 new changesets
Message-ID: <20130815194737.A08AB4890B@hg.openjdk.java.net>
Changeset: cc11a0efb4f9
Author: aefimov
Date: 2013-08-01 14:59 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/corba/rev/cc11a0efb4f9
8015987: The corba repo contains unneeded .sjava files
Reviewed-by: alanb, chegar, coffeys
- src/share/classes/com/sun/corba/se/impl/copyobject/JavaInputStream.sjava
- src/share/classes/com/sun/corba/se/impl/copyobject/JavaOutputStream.sjava
- src/share/classes/com/sun/corba/se/impl/interceptors/ThreadCurrentStack.sjava
- src/share/classes/com/sun/corba/se/impl/orbutil/DefineWrapper.sjava
- src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLNameTranslatorImpl_save.sjava
- src/share/classes/com/sun/corba/se/impl/presentation/rmi/IDLTypesUtil_save.sjava
- src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalClientRequestImpl.sjava
- src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalClientResponseImpl.sjava
- src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalServerRequestImpl.sjava
- src/share/classes/com/sun/corba/se/impl/protocol/oldlocal/LocalServerResponseImpl.sjava
- src/share/classes/com/sun/corba/se/impl/transport/BufferConnectionImpl.sjava
Changeset: 342a954b68f3
Author: lana
Date: 2013-08-06 16:54 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/corba/rev/342a954b68f3
Merge
Changeset: 49c4a777fdfd
Author: lana
Date: 2013-08-13 10:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/corba/rev/49c4a777fdfd
Merge
Changeset: d411c60a8c2f
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/corba/rev/d411c60a8c2f
Added tag jdk8-b103 for changeset 49c4a777fdfd
! .hgtags
From john.coomes at oracle.com Thu Aug 15 12:48:07 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 19:48:07 +0000
Subject: hg: hsx/hotspot-rt/jaxws: Added tag jdk8-b103 for changeset
6cdc6ed98780
Message-ID: <20130815194816.26FB14890D@hg.openjdk.java.net>
Changeset: 42211ab0ab1c
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jaxws/rev/42211ab0ab1c
Added tag jdk8-b103 for changeset 6cdc6ed98780
! .hgtags
From john.coomes at oracle.com Thu Aug 15 12:50:36 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 19:50:36 +0000
Subject: hg: hsx/hotspot-rt/jdk: 64 new changesets
Message-ID: <20130815200448.0608F4890F@hg.openjdk.java.net>
Changeset: 1c6bfb303ffc
Author: prr
Date: 2013-08-06 13:38 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/1c6bfb303ffc
8022175: Fix doclint warnings in javax.print
Reviewed-by: darcy
! src/share/classes/javax/print/DocFlavor.java
! src/share/classes/javax/print/MultiDocPrintJob.java
! src/share/classes/javax/print/PrintService.java
! src/share/classes/javax/print/ServiceUI.java
! src/share/classes/javax/print/ServiceUIFactory.java
! src/share/classes/javax/print/attribute/AttributeSet.java
! src/share/classes/javax/print/attribute/DateTimeSyntax.java
! src/share/classes/javax/print/attribute/DocAttributeSet.java
! src/share/classes/javax/print/attribute/EnumSyntax.java
! src/share/classes/javax/print/attribute/HashAttributeSet.java
! src/share/classes/javax/print/attribute/IntegerSyntax.java
! src/share/classes/javax/print/attribute/PrintJobAttributeSet.java
! src/share/classes/javax/print/attribute/PrintRequestAttributeSet.java
! src/share/classes/javax/print/attribute/PrintServiceAttributeSet.java
! src/share/classes/javax/print/attribute/ResolutionSyntax.java
! src/share/classes/javax/print/attribute/Size2DSyntax.java
! src/share/classes/javax/print/attribute/standard/Chromaticity.java
! src/share/classes/javax/print/attribute/standard/Compression.java
! src/share/classes/javax/print/attribute/standard/Finishings.java
! src/share/classes/javax/print/attribute/standard/JobKOctets.java
! src/share/classes/javax/print/attribute/standard/MediaPrintableArea.java
! src/share/classes/javax/print/attribute/standard/MediaSize.java
! src/share/classes/javax/print/attribute/standard/PresentationDirection.java
! src/share/classes/javax/print/attribute/standard/PrinterMoreInfoManufacturer.java
! src/share/classes/javax/print/attribute/standard/PrinterResolution.java
Changeset: c3b91dc2504a
Author: jgodinez
Date: 2013-08-06 14:22 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/c3b91dc2504a
8021583: test/javax/print/autosense/PrintAutoSenseData.java throwing NPE
Reviewed-by: jchen, prr
! src/solaris/classes/sun/print/UnixPrintJob.java
! src/windows/classes/sun/print/Win32PrintJob.java
! test/javax/print/attribute/autosense/PrintAutoSenseData.java
+ test/javax/print/attribute/autosense/sample.txt
Changeset: fe04f40cf469
Author: prr
Date: 2013-08-06 17:11 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/fe04f40cf469
8022455: Fix doclint warnings in javax.imageio
Reviewed-by: darcy
! src/share/classes/javax/imageio/ImageIO.java
! src/share/classes/javax/imageio/ImageReadParam.java
! src/share/classes/javax/imageio/ImageReader.java
! src/share/classes/javax/imageio/ImageTypeSpecifier.java
! src/share/classes/javax/imageio/ImageWriteParam.java
! src/share/classes/javax/imageio/ImageWriter.java
! src/share/classes/javax/imageio/metadata/IIOMetadataFormatImpl.java
! src/share/classes/javax/imageio/plugins/bmp/BMPImageWriteParam.java
! src/share/classes/javax/imageio/plugins/jpeg/JPEGImageReadParam.java
! src/share/classes/javax/imageio/plugins/jpeg/JPEGImageWriteParam.java
! src/share/classes/javax/imageio/spi/ImageReaderSpi.java
! src/share/classes/javax/imageio/spi/ImageWriterSpi.java
! src/share/classes/javax/imageio/spi/ServiceRegistry.java
! src/share/classes/javax/imageio/stream/ImageInputStream.java
! src/share/classes/javax/imageio/stream/ImageInputStreamImpl.java
! src/share/classes/javax/imageio/stream/ImageOutputStream.java
Changeset: c827ad8c1101
Author: prr
Date: 2013-08-06 17:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/c827ad8c1101
8022447: Fix doclint warnings in java.awt.image
Reviewed-by: darcy
! src/share/classes/java/awt/image/BufferStrategy.java
! src/share/classes/java/awt/image/BufferedImage.java
! src/share/classes/java/awt/image/ByteLookupTable.java
! src/share/classes/java/awt/image/ColorModel.java
! src/share/classes/java/awt/image/DirectColorModel.java
! src/share/classes/java/awt/image/ImageProducer.java
! src/share/classes/java/awt/image/IndexColorModel.java
! src/share/classes/java/awt/image/MemoryImageSource.java
! src/share/classes/java/awt/image/MultiPixelPackedSampleModel.java
! src/share/classes/java/awt/image/PixelGrabber.java
! src/share/classes/java/awt/image/RGBImageFilter.java
! src/share/classes/java/awt/image/ShortLookupTable.java
! src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java
! src/share/classes/java/awt/image/WritableRaster.java
Changeset: 9314c199003d
Author: lana
Date: 2013-08-06 22:47 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/9314c199003d
Merge
- src/share/classes/java/net/package.html
Changeset: ab64c138d5bd
Author: prr
Date: 2013-08-07 18:24 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/ab64c138d5bd
8014883: java.awt.container.add(component comp object constraints) doesn't work as expected on some linux platforms
Reviewed-by: jgodinez
! makefiles/CompileNativeLibraries.gmk
! src/solaris/native/sun/java2d/x11/XRBackendNative.c
Changeset: 645a37a3559f
Author: leonidr
Date: 2013-08-01 01:26 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/645a37a3559f
8021815: Add regression test for JDK-8007267
Reviewed-by: serb
+ test/com/apple/eawt/DefaultMenuBar/DefaultMenuBarTest.java
Changeset: 495ca130cbde
Author: alexsch
Date: 2013-08-01 17:09 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/495ca130cbde
7161568: [macosx] api/javax_swing/JTabbedPane/index2.html#varios fails
Reviewed-by: malenkov, serb
! src/macosx/classes/com/apple/laf/AquaTabbedPaneCopyFromBasicUI.java
! src/macosx/classes/com/apple/laf/AquaTabbedPaneUI.java
+ test/javax/swing/JTabbedPane/4361477/bug4361477.java
+ test/javax/swing/JTabbedPane/6495408/bug6495408.java
+ test/javax/swing/JTabbedPane/7161568/bug7161568.java
Changeset: e76b1568d002
Author: leonidr
Date: 2013-08-02 15:42 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e76b1568d002
8021381: JavaFX scene included in Swing JDialog not starting from Web Start
Reviewed-by: art, dcherepanov
! src/share/classes/sun/awt/AppContext.java
Changeset: 07abddc1d7f2
Author: leonidr
Date: 2013-08-06 17:07 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/07abddc1d7f2
8022247: java/awt/EventDispatchThread/LoopRobustness/LoopRobustness throws NPE
Reviewed-by: art
! test/java/awt/EventDispatchThread/LoopRobustness/LoopRobustness.java
Changeset: 27d1bdf2f7d9
Author: mcherkas
Date: 2013-08-06 17:29 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/27d1bdf2f7d9
8016833: Underlines and strikethrough not rendering correctly
Reviewed-by: alexsch, serb
Contributed-by: anton.nashatyrev at oracle.com
! src/share/classes/javax/swing/text/GlyphView.java
+ test/javax/swing/text/StyledEditorKit/8016833/bug8016833.java
Changeset: f8ed88f5ed87
Author: alexsch
Date: 2013-08-07 18:32 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/f8ed88f5ed87
8022532: [parfait] Potential memory leak in gtk2_interface.c
Reviewed-by: art, serb
! src/solaris/native/sun/awt/gtk2_interface.c
Changeset: 7706a622d35f
Author: alexsch
Date: 2013-08-07 18:58 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/7706a622d35f
8013849: Awt assert on Hashtable.cpp:124
Reviewed-by: serb
! src/windows/native/sun/windows/awt_Component.cpp
+ test/java/awt/event/KeyEvent/DeadKey/DeadKeySystemAssertionDialog.java
Changeset: f70492d969e7
Author: serb
Date: 2013-08-07 19:57 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/f70492d969e7
7124339: [macosx] setIconImage is not endlessly tolerant to the broken image-arguments
Reviewed-by: alexsch, leonidr
! src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
Changeset: 540192229a69
Author: art
Date: 2013-08-07 21:31 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/540192229a69
6551589: ContainerListener Documentation may be incorrect
Reviewed-by: serb
! src/share/classes/java/awt/event/ContainerListener.java
Changeset: 9bcc3f2af980
Author: lana
Date: 2013-08-07 12:03 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/9bcc3f2af980
Merge
- src/share/classes/java/net/package.html
Changeset: e193c4ad940a
Author: lana
Date: 2013-08-07 19:52 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e193c4ad940a
Merge
Changeset: c49b538ef054
Author: chegar
Date: 2013-08-01 12:38 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/c49b538ef054
8022061: More ProblemList.txt updates (7/2013)
Reviewed-by: alanb, psandoz
! test/ProblemList.txt
Changeset: 36f4cf8872f3
Author: igerasim
Date: 2013-07-30 21:11 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/36f4cf8872f3
7192942: (coll) Inefficient calculation of power of two in HashMap
Reviewed-by: mduigou
! src/share/classes/java/util/HashMap.java
Changeset: 54329c24c2f4
Author: igerasim
Date: 2013-07-29 12:35 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/54329c24c2f4
8020669: (fs) Files.readAllBytes() does not read any data when Files.size() is 0
Reviewed-by: alanb, chegar, martin, rriggs
! src/share/classes/java/nio/file/Files.java
! test/java/nio/file/Files/BytesAndLines.java
Changeset: d6de149b9f20
Author: xuelei
Date: 2013-08-01 07:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/d6de149b9f20
7127524: P11TlsPrfGenerator has anonymous inner class with serialVersionUID
Reviewed-by: vinnie
! src/share/classes/sun/security/pkcs11/P11TlsPrfGenerator.java
Changeset: cd13a4a45a37
Author: chegar
Date: 2013-08-01 16:53 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/cd13a4a45a37
8022087: Fix doclint issues in j.u.Deque & Queue
Reviewed-by: chegar, darcy
Contributed-by: Doug Lea
! src/share/classes/java/util/Deque.java
! src/share/classes/java/util/Queue.java
Changeset: 0be7839d4599
Author: psandoz
Date: 2013-08-01 15:28 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/0be7839d4599
8020016: Numerous splitereator impls do not throw NPE for null Consumers
Reviewed-by: mduigou, alanb, henryjen
! src/share/classes/java/util/stream/SpinedBuffer.java
! src/share/classes/java/util/stream/StreamSpliterators.java
! src/share/classes/java/util/stream/Streams.java
! test/java/util/Spliterator/SpliteratorTraversingAndSplittingTest.java
! test/java/util/stream/bootlib/java/util/stream/SpliteratorTestHelper.java
Changeset: 29f153e11683
Author: weijun
Date: 2013-08-02 08:59 +0800
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/29f153e11683
8021789: jarsigner parses alias as command line option (depending on locale)
Reviewed-by: vinnie
! src/share/classes/sun/security/tools/jarsigner/Main.java
+ test/sun/security/tools/jarsigner/collator.sh
Changeset: 40221b09812f
Author: uta
Date: 2013-08-02 13:16 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/40221b09812f
8020191: System.getProperty("os.name") returns "Windows NT (unknown)" on Windows 8.1
Reviewed-by: alanb, khazra, chegar
! src/windows/native/java/lang/java_props_md.c
! src/windows/resource/java.manifest
Changeset: 60c275e56a69
Author: chegar
Date: 2013-08-02 11:25 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/60c275e56a69
8022121: Remove superfluous @test tag from SpliteratorTraversingAndSplittingTest
Reviewed-by: psandoz
! test/java/util/Spliterator/SpliteratorTraversingAndSplittingTest.java
Changeset: 6ec910ff3ea1
Author: chegar
Date: 2013-08-02 14:29 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/6ec910ff3ea1
8020291: j.u.c.CompletionStage
8020435: CompletableFuture/Basic.java fails on single core machine
Reviewed-by: chegar, psandoz
Contributed-by: Doug Lea
! src/share/classes/java/util/concurrent/CompletableFuture.java
+ src/share/classes/java/util/concurrent/CompletionStage.java
! test/ProblemList.txt
! test/java/util/concurrent/CompletableFuture/Basic.java
Changeset: 42b786f2fb99
Author: mullan
Date: 2013-08-02 08:30 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/42b786f2fb99
8001319: Add SecurityPermission "insertProvider" target name
Reviewed-by: vinnie
! src/share/classes/java/security/Security.java
! src/share/classes/java/security/SecurityPermission.java
+ test/java/security/Security/AddProvider.java
+ test/java/security/Security/AddProvider.policy.1
+ test/java/security/Security/AddProvider.policy.2
+ test/java/security/Security/AddProvider.policy.3
Changeset: 7bbc6c2351d7
Author: mullan
Date: 2013-08-02 08:37 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/7bbc6c2351d7
Merge
- src/share/classes/java/net/package.html
- src/share/classes/java/util/stream/StreamBuilder.java
- src/share/classes/javax/security/auth/callback/package.html
- src/share/classes/javax/security/auth/kerberos/package.html
- src/share/classes/javax/security/auth/login/package.html
- src/share/classes/javax/security/auth/package.html
- src/share/classes/javax/security/auth/spi/package.html
- src/share/classes/javax/security/auth/x500/package.html
- src/share/classes/javax/security/cert/package.html
- src/share/classes/javax/security/sasl/package.html
- test/java/util/Collections/EmptySortedSet.java
Changeset: 0a778e487a73
Author: mullan
Date: 2013-08-02 09:38 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/0a778e487a73
Merge
Changeset: 33617583c545
Author: bpb
Date: 2013-07-31 10:53 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/33617583c545
6476168: (fmt) Inconsistency formatting subnormal doubles with hexadecimal conversion
Summary: Update specification to match implementation.
Reviewed-by: darcy
Contributed-by: Brian Burkhalter
! src/share/classes/java/util/Formatter.java
! test/java/util/Formatter/Basic-X.java.template
! test/java/util/Formatter/Basic.java
! test/java/util/Formatter/BasicDouble.java
Changeset: 883cc296ec89
Author: bchristi
Date: 2013-08-02 15:30 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/883cc296ec89
8011194: Apps launched via double-clicked .jars have file.encoding value of US-ASCII on Mac OS X
Summary: On Mac, default to UTF-8 if no environmental hints are available
Reviewed-by: naoto, ddehaven
! src/solaris/native/java/lang/java_props_md.c
+ test/java/lang/System/MacEncoding/ExpectedEncoding.java
+ test/java/lang/System/MacEncoding/MacJNUEncoding.sh
+ test/java/lang/System/MacEncoding/TestFileEncoding.java
- test/java/lang/System/MacJNUEncoding/ExpectedEncoding.java
- test/java/lang/System/MacJNUEncoding/MacJNUEncoding.sh
Changeset: dd1040690e31
Author: bpb
Date: 2013-08-02 11:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/dd1040690e31
8022094: BigDecimal/CompareToTests and BigInteger/CompareToTests are incorrect
Summary: Fail test if errors; fix test values; port BigDecimal version to BigInteger
Reviewed-by: smarks, alanb
Contributed-by: Brian Burkhalter
! test/java/math/BigDecimal/CompareToTests.java
! test/java/math/BigInteger/CompareToTests.java
Changeset: 80da091343af
Author: darcy
Date: 2013-08-05 07:50 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/80da091343af
8022190: Fix varargs lint warnings in the JDK
Reviewed-by: alanb, lancea, alexsch
! src/share/classes/java/util/stream/Stream.java
! src/share/classes/javax/swing/SwingWorker.java
! src/share/classes/sun/reflect/annotation/AnnotationParser.java
! src/share/classes/sun/swing/AccumulativeRunnable.java
Changeset: 87367a1c7f76
Author: sundar
Date: 2013-08-05 21:31 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/87367a1c7f76
8016531: jconsole-plugin script demo does not work with nashorn
Reviewed-by: lagergren, hannesw
Contributed-by: rieberandreas at gmail.com
! src/share/demo/scripting/jconsole-plugin/src/com/sun/demo/scripting/jconsole/ScriptShellPanel.java
! src/share/demo/scripting/jconsole-plugin/src/resources/jconsole.js
! src/share/demo/scripting/jconsole-plugin/src/scripts/invoke.js
! src/share/demo/scripting/jconsole-plugin/src/scripts/jstack.js
! src/share/demo/scripting/jconsole-plugin/src/scripts/jtop.js
! src/share/demo/scripting/jconsole-plugin/src/scripts/sysprops.js
! src/share/sample/scripting/scriptpad/README.txt
! src/share/sample/scripting/scriptpad/src/resources/conc.js
! src/share/sample/scripting/scriptpad/src/resources/mm.js
Changeset: 31759750ff63
Author: smarks
Date: 2013-08-05 19:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/31759750ff63
8020854: change RMI javadocs to specify that remote objects are exported to the wildcard address
Reviewed-by: rgallard, alanb
! src/share/classes/java/rmi/server/RMISocketFactory.java
! src/share/classes/java/rmi/server/UnicastRemoteObject.java
Changeset: fce446b29577
Author: dsamersoff
Date: 2013-08-06 14:04 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/fce446b29577
8011038: sourceObj validation during desereliazation of RelationNotification should be relaxed
Summary: sourceObj could be set to null by setSource() relax a validation of deserialized object.
Reviewed-by: sjiang, skoivu, dfuchs
! src/share/classes/javax/management/relation/RelationNotification.java
Changeset: 6773af0dda02
Author: chegar
Date: 2013-08-06 15:35 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/6773af0dda02
8022344: Additional debug info for test/java/net/NetworkInterface/IndexTest.java
Reviewed-by: michaelm, alanb
! test/java/net/NetworkInterface/IndexTest.java
Changeset: 1f4af3e0447e
Author: mullan
Date: 2013-08-06 08:31 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/1f4af3e0447e
8022120: JCK test api/javax_xml/crypto/dsig/TransformService/index_ParamMethods fails
Summary: TransformService.init and marshalParams must throw NullPointerException when parent parameter is null
Reviewed-by: xuelei
! src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheCanonicalizer.java
! src/share/classes/org/jcp/xml/dsig/internal/dom/ApacheTransform.java
+ test/javax/xml/crypto/dsig/TransformService/NullParent.java
Changeset: ba634b53f53a
Author: mullan
Date: 2013-08-06 08:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/ba634b53f53a
Merge
Changeset: cd0ea5563523
Author: jfranck
Date: 2013-08-06 18:54 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/cd0ea5563523
7184826: (reflect) Add support for Project Lambda concepts in core reflection
Reviewed-by: darcy, jfranck
Contributed-by: Amy Lu
+ test/java/lang/reflect/DefaultStaticTest/DefaultStaticInvokeTest.java
+ test/java/lang/reflect/DefaultStaticTest/DefaultStaticTestData.java
+ test/java/lang/reflect/DefaultStaticTest/helper/Declared.java
+ test/java/lang/reflect/DefaultStaticTest/helper/Mod.java
! test/java/lang/reflect/Method/DefaultMethodModeling.java
! test/java/lang/reflect/Method/IsDefaultTest.java
Changeset: 98643f3ddf40
Author: darcy
Date: 2013-08-06 13:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/98643f3ddf40
8022174: Fix doclint warnings in javax.sound
8022404: Fix doclint issues in java.applet
Reviewed-by: prr
! src/share/classes/java/applet/AppletContext.java
! src/share/classes/javax/sound/midi/MetaMessage.java
! src/share/classes/javax/sound/midi/MidiDevice.java
! src/share/classes/javax/sound/midi/MidiDeviceReceiver.java
! src/share/classes/javax/sound/midi/MidiDeviceTransmitter.java
! src/share/classes/javax/sound/midi/MidiFileFormat.java
! src/share/classes/javax/sound/midi/MidiMessage.java
! src/share/classes/javax/sound/midi/MidiSystem.java
! src/share/classes/javax/sound/midi/ShortMessage.java
! src/share/classes/javax/sound/midi/Synthesizer.java
! src/share/classes/javax/sound/midi/SysexMessage.java
! src/share/classes/javax/sound/midi/Track.java
! src/share/classes/javax/sound/sampled/AudioFileFormat.java
! src/share/classes/javax/sound/sampled/AudioFormat.java
! src/share/classes/javax/sound/sampled/AudioSystem.java
! src/share/classes/javax/sound/sampled/BooleanControl.java
! src/share/classes/javax/sound/sampled/Mixer.java
! src/share/classes/javax/sound/sampled/spi/FormatConversionProvider.java
Changeset: 12c1b78acf9a
Author: lagergren
Date: 2013-08-06 12:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/12c1b78acf9a
8022412: Fixed warnings in java.util root, except for HashMap
Reviewed-by: mduigou, darcy
Contributed-by: marcus.lagergren at oracle.com
! src/share/classes/java/util/ArrayPrefixHelpers.java
! src/share/classes/java/util/Collections.java
! src/share/classes/java/util/Comparator.java
! src/share/classes/java/util/Comparators.java
! src/share/classes/java/util/Hashtable.java
! src/share/classes/java/util/IdentityHashMap.java
! src/share/classes/java/util/Vector.java
! src/share/classes/java/util/WeakHashMap.java
Changeset: 8112076ae424
Author: juh
Date: 2013-08-06 13:46 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/8112076ae424
8022439: Fix lint warnings in sun.security.ec
Reviewed-by: darcy
! src/share/classes/sun/security/ec/ECDSASignature.java
Changeset: 69cfd941aec2
Author: juh
Date: 2013-08-06 14:10 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/69cfd941aec2
8022443: Fix lint warnings in sun.security.pkcs12
Reviewed-by: darcy
! src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java
Changeset: 31e923842d49
Author: smarks
Date: 2013-08-06 14:24 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/31e923842d49
8022440: suppress deprecation warnings in sun.rmi
Reviewed-by: mduigou
! src/share/classes/sun/rmi/runtime/Log.java
! src/share/classes/sun/rmi/server/ActivatableRef.java
! src/share/classes/sun/rmi/server/Dispatcher.java
! src/share/classes/sun/rmi/server/LoaderHandler.java
! src/share/classes/sun/rmi/server/UnicastRef.java
! src/share/classes/sun/rmi/server/UnicastServerRef.java
! src/share/classes/sun/rmi/server/Util.java
! src/share/classes/sun/rmi/transport/DGCImpl.java
! src/share/classes/sun/rmi/transport/StreamRemoteCall.java
! src/share/classes/sun/rmi/transport/Transport.java
! src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java
! src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java
! src/share/classes/sun/rmi/transport/tcp/TCPTransport.java
Changeset: 4b8b811059db
Author: dxu
Date: 2013-08-06 14:33 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/4b8b811059db
8022410: Fix Javac Warnings in com.sun.security.auth Package
Reviewed-by: darcy
! src/share/classes/com/sun/security/auth/PolicyFile.java
! src/share/classes/com/sun/security/auth/SubjectCodeSource.java
Changeset: d5694d78ebc6
Author: darcy
Date: 2013-08-06 16:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/d5694d78ebc6
8022406: Fix doclint issues in java.beans
Reviewed-by: prr
! src/share/classes/java/beans/AppletInitializer.java
! src/share/classes/java/beans/Beans.java
! src/share/classes/java/beans/ConstructorProperties.java
! src/share/classes/java/beans/DefaultPersistenceDelegate.java
! src/share/classes/java/beans/EventHandler.java
! src/share/classes/java/beans/Expression.java
! src/share/classes/java/beans/IndexedPropertyDescriptor.java
! src/share/classes/java/beans/Introspector.java
! src/share/classes/java/beans/PersistenceDelegate.java
! src/share/classes/java/beans/PropertyChangeSupport.java
! src/share/classes/java/beans/PropertyDescriptor.java
! src/share/classes/java/beans/Transient.java
! src/share/classes/java/beans/VetoableChangeSupport.java
! src/share/classes/java/beans/beancontext/BeanContext.java
! src/share/classes/java/beans/beancontext/BeanContextChild.java
! src/share/classes/java/beans/beancontext/BeanContextChildSupport.java
! src/share/classes/java/beans/beancontext/BeanContextMembershipEvent.java
! src/share/classes/java/beans/beancontext/BeanContextServices.java
! src/share/classes/java/beans/beancontext/BeanContextServicesSupport.java
! src/share/classes/java/beans/beancontext/BeanContextSupport.java
Changeset: 939c3be6cc86
Author: briangoetz
Date: 2013-06-28 16:26 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/939c3be6cc86
8015318: Extend Collector with 'finish' operation
Reviewed-by: mduigou
Contributed-by: brian.goetz at oracle.com
! src/share/classes/java/util/DoubleSummaryStatistics.java
! src/share/classes/java/util/IntSummaryStatistics.java
! src/share/classes/java/util/LongSummaryStatistics.java
! src/share/classes/java/util/StringJoiner.java
! src/share/classes/java/util/stream/Collector.java
! src/share/classes/java/util/stream/Collectors.java
! src/share/classes/java/util/stream/DelegatingStream.java
! src/share/classes/java/util/stream/DoubleStream.java
! src/share/classes/java/util/stream/IntStream.java
! src/share/classes/java/util/stream/LongStream.java
! src/share/classes/java/util/stream/ReduceOps.java
! src/share/classes/java/util/stream/ReferencePipeline.java
! src/share/classes/java/util/stream/Stream.java
! src/share/classes/java/util/stream/package-info.java
! test/java/util/stream/test/org/openjdk/tests/java/util/FillableStringTest.java
! test/java/util/stream/test/org/openjdk/tests/java/util/stream/GroupByOpTest.java
! test/java/util/stream/test/org/openjdk/tests/java/util/stream/SummaryStatisticsTest.java
! test/java/util/stream/test/org/openjdk/tests/java/util/stream/TabulatorsTest.java
! test/jdk/lambda/MethodReferenceTestInstanceMethod.java
! test/jdk/lambda/separate/TestHarness.java
Changeset: 6cc8c2ad9804
Author: darcy
Date: 2013-08-06 16:45 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/6cc8c2ad9804
8022453: Fix doclint issues in javax.accessibility
Reviewed-by: prr
! src/share/classes/javax/accessibility/Accessible.java
! src/share/classes/javax/accessibility/AccessibleBundle.java
! src/share/classes/javax/accessibility/AccessibleExtendedTable.java
! src/share/classes/javax/accessibility/AccessibleRelationSet.java
! src/share/classes/javax/accessibility/AccessibleTable.java
! src/share/classes/javax/accessibility/AccessibleTableModelChange.java
! src/share/classes/javax/accessibility/AccessibleTextSequence.java
! src/share/classes/javax/accessibility/AccessibleValue.java
Changeset: 2bc9ce1aade5
Author: lana
Date: 2013-08-06 17:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/2bc9ce1aade5
Merge
Changeset: 7ab5f19a9a31
Author: lana
Date: 2013-08-06 17:13 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/7ab5f19a9a31
Merge
Changeset: e303c228bf31
Author: henryjen
Date: 2013-08-06 17:42 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e303c228bf31
8022446: Fix serial warnings in java.util.stream
Reviewed-by: darcy
! src/share/classes/java/util/stream/AbstractShortCircuitTask.java
! src/share/classes/java/util/stream/AbstractTask.java
! src/share/classes/java/util/stream/FindOps.java
! src/share/classes/java/util/stream/ForEachOps.java
! src/share/classes/java/util/stream/MatchOps.java
! src/share/classes/java/util/stream/Nodes.java
! src/share/classes/java/util/stream/ReduceOps.java
! src/share/classes/java/util/stream/SliceOps.java
Changeset: 1d21ff5c2b3f
Author: dxu
Date: 2013-08-06 18:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/1d21ff5c2b3f
8022478: Fix Warnings In sun.net.www.protocol.http Package
Reviewed-by: darcy
! src/share/classes/sun/net/www/protocol/http/AuthCacheValue.java
! src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java
Changeset: e117fcdd2176
Author: mduigou
Date: 2013-08-06 18:18 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e117fcdd2176
8022476: cleanup some raw types and unchecked warnings in java.util.stream
Reviewed-by: darcy
Contributed-by: mike.duigou at oracle.com, henry.jen at oracle.com
! src/share/classes/java/util/Optional.java
! src/share/classes/java/util/stream/AbstractPipeline.java
! src/share/classes/java/util/stream/AbstractShortCircuitTask.java
! src/share/classes/java/util/stream/DoublePipeline.java
! src/share/classes/java/util/stream/IntPipeline.java
! src/share/classes/java/util/stream/LongPipeline.java
! src/share/classes/java/util/stream/Nodes.java
! src/share/classes/java/util/stream/ReduceOps.java
! src/share/classes/java/util/stream/ReferencePipeline.java
! src/share/classes/java/util/stream/Sink.java
! src/share/classes/java/util/stream/SortedOps.java
! src/share/classes/java/util/stream/StreamSpliterators.java
Changeset: 906dd23334c1
Author: weijun
Date: 2013-08-07 19:06 +0800
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/906dd23334c1
7151062: [macosx] SCDynamicStore prints error messages to stderr
Reviewed-by: xuelei
! src/macosx/native/java/util/SCDynamicStoreConfig.m
Changeset: 99f4319763a9
Author: sundar
Date: 2013-08-07 18:16 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/99f4319763a9
8022483: Nashorn compatibility issues in jhat's OQL feature
Reviewed-by: lagergren, attila, hannesw
! src/share/classes/com/sun/tools/hat/resources/hat.js
! src/share/classes/com/sun/tools/hat/resources/oqlhelp.html
Changeset: 8c7cf4926157
Author: xuelei
Date: 2013-08-07 06:42 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/8c7cf4926157
8013809: deadlock in SSLSocketImpl between between write and close
Reviewed-by: wetmore
! src/share/classes/sun/security/ssl/SSLSocketImpl.java
Changeset: c1f129f62f36
Author: lagergren
Date: 2013-08-07 08:08 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/c1f129f62f36
8022454: Fixed various serializations and deprecation warnings in java.util, java.net and sun.tools
Reviewed-by: darcy
Contributed-by: marcus.lagergren at oracle.com
! src/share/classes/java/net/SocketAddress.java
! src/share/classes/java/util/logging/XMLFormatter.java
! src/share/classes/sun/tools/jar/JarException.java
Changeset: d1c82d5bee3f
Author: dxu
Date: 2013-08-07 12:13 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/d1c82d5bee3f
8022554: Fix Warnings in sun.invoke.anon Package
Reviewed-by: darcy, mduigou, lancea
! src/share/classes/sun/invoke/anon/ConstantPoolPatch.java
Changeset: 8c50c27418d3
Author: smarks
Date: 2013-08-07 16:29 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/8c50c27418d3
8022479: clean up warnings from sun.tools.asm
Reviewed-by: lancea, darcy
! src/share/classes/sun/tools/asm/Assembler.java
! src/share/classes/sun/tools/asm/ConstantPool.java
! src/share/classes/sun/tools/asm/Instruction.java
! src/share/classes/sun/tools/asm/SwitchData.java
! src/share/classes/sun/tools/asm/TryData.java
Changeset: 23e68a8e4b91
Author: lana
Date: 2013-08-07 19:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/23e68a8e4b91
Merge
- test/java/lang/System/MacJNUEncoding/ExpectedEncoding.java
- test/java/lang/System/MacJNUEncoding/MacJNUEncoding.sh
Changeset: e0f6039c0290
Author: lana
Date: 2013-08-13 10:42 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/e0f6039c0290
Merge
Changeset: f1d8d15bfcb5
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/jdk/rev/f1d8d15bfcb5
Added tag jdk8-b103 for changeset e0f6039c0290
! .hgtags
From john.coomes at oracle.com Thu Aug 15 13:07:11 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 20:07:11 +0000
Subject: hg: hsx/hotspot-rt/langtools: 11 new changesets
Message-ID: <20130815200804.11CF548910@hg.openjdk.java.net>
Changeset: 05370ef9dccb
Author: ksrini
Date: 2013-07-31 08:37 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/05370ef9dccb
8014826: c.s.t.javac.tree.Pretty.visitNewArray() prints duplicate dimension markers
Reviewed-by: jjg, vromero
! src/share/classes/com/sun/tools/javac/tree/Pretty.java
+ test/tools/javac/tree/NewArrayPretty.java
Changeset: 99b60bcf3862
Author: vromero
Date: 2013-08-06 15:08 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/99b60bcf3862
8022186: javac generates dead code if a try with an empty body has a finalizer
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/jvm/Gen.java
+ test/tools/javac/T8022186/DeadCodeGeneratedForEmptyTryTest.java
Changeset: 051e64d0816e
Author: jfranck
Date: 2013-08-07 01:32 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/051e64d0816e
8009367: Wrong kind of name used in comparison in javax.lang.model code for repeatable annotations
Reviewed-by: jjg, darcy
! src/share/classes/com/sun/tools/javac/model/JavacAnnoConstructs.java
+ test/tools/javac/processing/model/element/8009367/TestQualifiedNameUsed.java
+ test/tools/javac/processing/model/element/8009367/p/Q.java
+ test/tools/javac/processing/model/element/8009367/p/QQ.java
+ test/tools/javac/processing/model/element/8009367/p/R.java
+ test/tools/javac/processing/model/element/8009367/p/RR.java
Changeset: f3ea20a6e958
Author: lana
Date: 2013-08-06 17:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/f3ea20a6e958
Merge
Changeset: b926dc251be8
Author: lana
Date: 2013-08-06 17:12 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/b926dc251be8
Merge
Changeset: f3deeccbf4cf
Author: vromero
Date: 2013-08-07 10:41 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/f3deeccbf4cf
8020997: TreeMaker.AnnotationBuilder creates broken element literals with repeating annotations
Reviewed-by: jjg, jfranck
! src/share/classes/com/sun/tools/javac/tree/TreeMaker.java
+ test/tools/javac/T8020997/CannotCompileRepeatedAnnoTest.java
Changeset: c7dcf899ffff
Author: vromero
Date: 2013-08-07 11:04 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/c7dcf899ffff
8008274: javac should not reference/use sample code
Reviewed-by: jjg
! src/share/classes/com/sun/tools/javac/Main.java
Changeset: 8c55df2442c1
Author: bpatel
Date: 2013-08-07 15:00 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/8c55df2442c1
7198274: RFE : Javadoc Accessibility : Use CSS styles rather than or tags
Reviewed-by: jjg
! src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/EnumConstantWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/FieldWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/NestedClassWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/PackageFrameWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/ProfilePackageFrameWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/PropertyWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/SubWriterHolderWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java
! src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlStyle.java
! src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java
! src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css
! test/com/sun/javadoc/testClassCrossReferences/TestClassCrossReferences.java
! test/com/sun/javadoc/testExternalOverridenMethod/TestExternalOverridenMethod.java
! test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
! test/com/sun/javadoc/testInterface/TestInterface.java
! test/com/sun/javadoc/testJavaFX/TestJavaFX.java
! test/com/sun/javadoc/testMemberInheritence/TestMemberInheritence.java
! test/com/sun/javadoc/testMemberSummary/TestMemberSummary.java
! test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java
! test/com/sun/javadoc/testOverridenMethods/TestOverridenMethodDocCopy.java
! test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethods.java
! test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java
! test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java
! test/com/sun/javadoc/testPackageDeprecation/TestPackageDeprecation.java
! test/com/sun/javadoc/testPrivateClasses/TestPrivateClasses.java
! test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java
Changeset: 33294f02c9a5
Author: bpatel
Date: 2013-08-07 16:09 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/33294f02c9a5
4749567: stddoclet: Add CSS style for setting header/footer to be italic
Reviewed-by: jjg
! src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
! src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java
! src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css
+ test/com/sun/javadoc/testOptions/TestOptions.java
+ test/com/sun/javadoc/testOptions/pkg/Foo.java
Changeset: 76cfe7c61f25
Author: lana
Date: 2013-08-13 10:35 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/76cfe7c61f25
Merge
Changeset: dd4a00c220c6
Author: cl
Date: 2013-08-15 09:26 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/langtools/rev/dd4a00c220c6
Added tag jdk8-b103 for changeset 76cfe7c61f25
! .hgtags
From john.coomes at oracle.com Thu Aug 15 13:08:27 2013
From: john.coomes at oracle.com (john.coomes at oracle.com)
Date: Thu, 15 Aug 2013 20:08:27 +0000
Subject: hg: hsx/hotspot-rt/nashorn: 5 new changesets
Message-ID: <20130815200834.25FE748911@hg.openjdk.java.net>
Changeset: 0ad00ae4fec6
Author: hannesw
Date: 2013-08-01 12:23 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/0ad00ae4fec6
8020132: Big object literal with numerical keys exceeds method size
Reviewed-by: lagergren, sundar
! src/jdk/nashorn/internal/codegen/CodeGenerator.java
! src/jdk/nashorn/internal/codegen/FieldObjectCreator.java
! src/jdk/nashorn/internal/codegen/MapCreator.java
! src/jdk/nashorn/internal/codegen/SpillObjectCreator.java
! src/jdk/nashorn/internal/objects/ArrayBufferView.java
! src/jdk/nashorn/internal/runtime/NashornLoader.java
! src/jdk/nashorn/internal/runtime/arrays/ArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/ArrayIndex.java
! src/jdk/nashorn/internal/runtime/arrays/ArrayIterator.java
! src/jdk/nashorn/internal/runtime/arrays/DeletedArrayFilter.java
! src/jdk/nashorn/internal/runtime/arrays/DeletedRangeArrayFilter.java
! src/jdk/nashorn/internal/runtime/arrays/FrozenArrayFilter.java
! src/jdk/nashorn/internal/runtime/arrays/IntArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/LongArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/NoTypeArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/NumberArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/ObjectArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/ReverseArrayIterator.java
! src/jdk/nashorn/internal/runtime/arrays/SealedArrayFilter.java
! src/jdk/nashorn/internal/runtime/arrays/SparseArrayData.java
! src/jdk/nashorn/internal/runtime/arrays/UndefinedArrayFilter.java
+ test/script/basic/JDK-8020132.js
+ test/script/basic/JDK-8020132.js.EXPECTED
Changeset: bb0f3c896cb7
Author: sundar
Date: 2013-08-06 13:10 +0530
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/bb0f3c896cb7
Merge
Changeset: ab90c566272d
Author: lana
Date: 2013-08-06 17:01 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/ab90c566272d
Merge
Changeset: 414203de4374
Author: lana
Date: 2013-08-13 10:34 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/414203de4374
Merge
Changeset: afc100513451
Author: cl
Date: 2013-08-15 09:26 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/nashorn/rev/afc100513451
Added tag jdk8-b103 for changeset 414203de4374
! .hgtags
From coleen.phillimore at oracle.com Thu Aug 15 13:31:50 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Thu, 15 Aug 2013 16:31:50 -0400
Subject: Request for review: 8003424 - Enable Class Data Sharing for
CompressedOops
In-Reply-To: <520D146D.4070003@oracle.com>
References: <8a8c4ecb-c268-4380-9daf-96b627b56546@default>
<520B4228.7000307@oracle.com> <520B758C.2080405@oracle.com>
<520B7649.6080604@oracle.com> <520D146D.4070003@oracle.com>
Message-ID: <520D3AB6.3040607@oracle.com>
Looks good!
Thank you for all the adhoc test runs. Also, thanks to SQE for running
a special full PIT test run, and thanks to the performance team for
running performance tests on this change also.
Coleen
On 08/15/2013 01:48 PM, harold seigel wrote:
> Hi,
>
> Please review this updated version of the fix for 8003424:
> http://cr.openjdk.java.net/~hseigel/bug_8003424.4/
>
>
> Other than removing an obsolete comment from universe.cpp, only the
> tests have been changed since the previous webrev. A few test errors
> were fixed, '@run main' tags were added, and the handling of cases
> where CDS cannot be used has been improved.
>
> Thanks, Harold
>
> On 8/14/2013 8:21 AM, Mikael Gerdin wrote:
>> Harold,
>>
>> On 2013-08-14 14:18, harold seigel wrote:
>>> Hi Mikael,
>>>
>>> Thanks for the review.
>>>
>>> In test CDSCompressedKPtrs.java, RuntimeException gets thrown by
>>> output.shouldContain(), if it does not find the specified text in the
>>> test's output. In this test, it may not find "sharing" in the test
>>> output if the JVM was unable to compatibly allocate the class
>>> metaspace. If the class metaspace does not get allocated near the CDS
>>> region then the JVM turns off CDS, disabling sharing. Since this is a
>>> valid execution path, it shouldn't cause the test to fail.
>>>
>>> I've added a comment and changed the test a bit to try and make it
>>> clearer:
>>>
>>> } catch (RuntimeException e) {
>>> // Report 'passed' if CDS was turned off because we could not
>>> allocate
>>> // the klass metaspace at an address that would work with CDS.
>>> output.shouldContain("Could not allocate metaspace at a
>>> compatible address");
>>> output.shouldHaveExitValue(1);
>>> }
>>
>> I see. I suspected that this was the case but it wasn't clear
>> earlier. I think that the comment is sufficient to communicate this.
>>
>>
>> /Mikael
>>
>>>
>>> Thanks, Harold
>>>
>>> On 8/14/2013 4:39 AM, Mikael Gerdin wrote:
>>>> Harold,
>>>>
>>>> On 2013-08-09 16:57, Harold Seigel wrote:
>>>>> Hi,
>>>>>
>>>>> Please review this latest version of the bug fix for 8003424:
>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.3/
>>>>>
>>>>>
>>>>> This new version includes the following changes:
>>>>>
>>>>> 1. macroAssembler_sparc.cpp
>>>>>
>>>>> a. Merged two versions of reinit_heapbase() into one.
>>>>>
>>>>> b. Improved decode_klass_not_null(src, dst) to not use G6 if
>>>>> shift == 0.
>>>>>
>>>>>
>>>>> 2. macroAssembler_x86.cpp
>>>>>
>>>>> a. Merged two versions of reinit_heapbase() into one.
>>>>>
>>>>> b. Improved encode_klass_not_null(src, dst) to not use R12.
>>>>>
>>>>> c. Replaced leaq with addq in decode_klass_not_null(src, dst).
>>>>>
>>>>>
>>>>> 3. Improved variable names in heap.cpp.
>>>>>
>>>>>
>>>>> 4. metaspace.cpp
>>>>>
>>>>> a. Rewrote MetaspaceAux::reserved_in_bytes() to make it more
>>>>> understandable.
>>>>>
>>>>> b. Moved set_narrow_klass_base_and_shift() near
>>>>> can_use_cds_with_metaspace_addr().
>>>>>
>>>>> c. Changed unneeded conditional in initialize_class_space()
>>>>> into an
>>>>> assert.
>>>>>
>>>>>
>>>>> 5. arguments.cpp
>>>>>
>>>>> a. Fixed problem with -Xshare:dump and disabled compression.
>>>>>
>>>>> b. Moved UseCompressedKlassPointers code into new function:
>>>>> set_use_compressed_klass_ptrs().
>>>>>
>>>>> c. Fixed bug 8005933 that turned off CDS for -server even if
>>>>> -Xshare:auto was explicitly specified.
>>>>>
>>>>>
>>>>> 6. Increased default value of ClassMetaspaceSize to 1*G in
>>>>> globals.hpp.
>>>>>
>>>>>
>>>>> 7. Fixed indentation issues in metaspace.cpp and other modules.
>>>>
>>>> The VM changes look good to me.
>>>>
>>>> I have a question about the test CDSCompressedKPtrs.java
>>>>
>>>> What RuntimeException do you expect and why is it ok that we can't use
>>>> the shared archive if you get such an exception?
>>>>
>>>> I think at least a comment about why the test is supposed to pass even
>>>> if we can't use the shared archive.
>>>>
>>>> /Mikael
>>>>
>>>>>
>>>>>
>>>>> Thanks, Harold
>>>>>
>>>>> ----- Original Message -----
>>>>> From: harold.seigel at oracle.com
>>>>> To: coleen.phillimore at oracle.com
>>>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>>>> Sent: Friday, August 9, 2013 8:44:29 AM GMT -05:00 US/Canada Eastern
>>>>> Subject: Re: Request for review: 8003424 - Enable Class Data
>>>>> Sharing for
>>>>> CompressedOops
>>>>>
>>>>> The purpose of this assert is to verify that the two methods in
>>>>> the 'if'
>>>>> clause closed the map file and disabled UseSharedSpaces if they
>>>>> detected
>>>>> a problem when trying to use CDS.
>>>>>
>>>>> if (mapinfo->initialize() &&
>>>>> MetaspaceShared::map_shared_spaces(mapinfo)) {
>>>>> FileMapInfo::set_current_info(mapinfo);
>>>>> } else {
>>>>> assert(!mapinfo->is_open() && !UseSharedSpaces,
>>>>> "archive file not closed or shared spaces not
>>>>> disabled.");
>>>>> }
>>>>>
>>>>> ----- Original Message -----
>>>>> From: harold.seigel at oracle.com
>>>>> To: coleen.phillimore at oracle.com
>>>>> Cc: hotspot-runtime-dev at openjdk.java.net
>>>>> Sent: Friday, August 9, 2013 8:29:59 AM GMT -05:00 US/Canada Eastern
>>>>> Subject: Re: Request for review: 8003424 - Enable Class Data
>>>>> Sharing for
>>>>> CompressedOops
>>>>>
>>>>> This is a bug that Stefan Karlsson also discovered. To fix it, I've
>>>>> changed the code to this:
>>>>>
>>>>> if (DumpSharedSpaces) {
>>>>> if (RequireSharedSpaces) {
>>>>> warning("cannot dump shared archive while using shared
>>>>> archive");
>>>>> }
>>>>> UseSharedSpaces = false;
>>>>> #ifdef _LP64
>>>>> if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> vm_exit_during_initialization(
>>>>> "Cannot dump shared archive when UseCompressedOops or
>>>>> UseCompressedKlassPointers is off.", NULL);
>>>>> }
>>>>>
>>>>> Harold
>>>>>
>>>>>
>>>>> ----- Original Message -----
>>>>> From: coleen.phillimore at oracle.com
>>>>> To: hotspot-runtime-dev at openjdk.java.net
>>>>> Sent: Thursday, August 8, 2013 7:08:15 PM GMT -05:00 US/Canada
>>>>> Eastern
>>>>> Subject: Re: Request for review: 8003424 - Enable Class Data
>>>>> Sharing for
>>>>> CompressedOops
>>>>>
>>>>>
>>>>> Yes, there should be a check for that too. Now I'll really let
>>>>> Harold
>>>>> answer.
>>>>>
>>>>> Thanks,
>>>>> Coleen
>>>>>
>>>>> On 08/08/2013 06:55 PM, Vladimir Kozlov wrote:
>>>>> > Coleen, Harold
>>>>> >
>>>>> > > The InstanceKlass has offsets to fields in the instance, and
>>>>> they
>>>>> > depend
>>>>> > > on both compressed oops and compressed klass pointers. So both
>>>>> > have to
>>>>> > > be on for the offsets to be valid.
>>>>> >
>>>>> > So there is dependency on UseCompressedOops and
>>>>> > UseCompressedKlassPointers flags during dump.
>>>>> >
>>>>> > Then why the check is done only for UseSharedSpaces and not for
>>>>> > DumpSharedSpaces?:
>>>>> >
>>>>> > if (DumpSharedSpaces) {
>>>>> > if (RequireSharedSpaces) {
>>>>> > warning("cannot dump shared archive while using shared
>>>>> archive");
>>>>> > }
>>>>> > UseSharedSpaces = false;
>>>>> > + #ifdef _LP64
>>>>> > + } else {
>>>>> > + // UseCompressedOops and UseCompressedKlassPointers must
>>>>> be on
>>>>> > for UseSharedSpaces.
>>>>> > + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> > + no_shared_spaces();
>>>>> > + }
>>>>> > + #endif
>>>>> > }
>>>>> >
>>>>> > Thanks,
>>>>> > Vladimir
>>>>> >
>>>>> > On 8/8/13 3:34 PM, Coleen Phillimore wrote:
>>>>> >>
>>>>> >> Hi Vladimir,
>>>>> >>
>>>>> >> I have a couple of answers and I'll let Harold answer the rest.
>>>>> >>
>>>>> >> On 08/08/2013 05:37 PM, Vladimir Kozlov wrote:
>>>>> >>> On 8/7/13 8:34 AM, harold seigel wrote:
>>>>> >>>> Hi Vladimir,
>>>>> >>>>
>>>>> >>>> On 8/5/2013 6:59 PM, Vladimir Kozlov wrote:
>>>>> >>>>> Harold,
>>>>> >>>>>
>>>>> >>>>> Note, on SPARC set() could generate up to 8 instructions to
>>>>> load
>>>>> >>>>> 64-bit constant into register. So I am not sure that it
>>>>> will be
>>>>> >>>>> faster
>>>>> >>>>> than load.
>>>>> >>>> We thought it would be faster because it doesn't need to load
>>>>> anything
>>>>> >>>> from memory.
>>>>> >>>
>>>>> >>> For good value (0x800000000) it should use only 2-3
>>>>> instructions.
>>>>> >>> I think you can keep using set().
>>>>> >>>
>>>>> >>>>>
>>>>> >>>>> I can't find where in CDS you store information about
>>>>> compressed
>>>>> >>>>> klass
>>>>> >>>>> pointers and compressed oops parameters which were used during
>>>>> dump?
>>>>> >>>>> How you verify that correct parameters/flags are ussed when
>>>>> such CDS
>>>>> >>>>> is used later?
>>>>> >>>> No compressed klass pointers nor compressed oops get written to
>>>>> the
>>>>> >>>> archive. So, the compressed klass pointers and compressed oops
>>>>> >>>> parameters do not need to be recorded in the archive.
>>>>> >>>
>>>>> >>> So you are saying that all klass pointers (references to
>>>>> klasses) in
>>>>> >>> metadata structures in metaspace are full.
>>>>> >>
>>>>> >> Yes, they are. (methodOops weren't in the
>>>>> InstanceKlass::_methods array
>>>>> >> with Permgen but they are uncompressed now).
>>>>> >>
>>>>> >>> And klass pointers are only compressed in java object headers
>>>>> (which
>>>>> >>> are not part of CDS). Right?
>>>>> >>
>>>>> >> The InstanceKlass has offsets to fields in the instance, and they
>>>>> depend
>>>>> >> on both compressed oops and compressed klass pointers. So both
>>>>> have to
>>>>> >> be on for the offsets to be valid.
>>>>> >>
>>>>> >> But the base and compressed values are not stored anywhere in the
>>>>> CDS
>>>>> >> archive.
>>>>> >>
>>>>> >>> And you don't care about UseCompressedOops and
>>>>> >>> UseCompressedKlassPointers flags settings when you dump it into
>>>>> >>> archive. The only limit is:
>>>>> >>>
>>>>> >>> Metaspace::class_metaspace_size() < (uint64_t)(max_juint) -
>>>>> cds_total
>>>>> >>>
>>>>> >>> Then I don't understand why you can't use/load CDS archive when
>>>>> coop
>>>>> >>> or compklass are off:
>>>>> >>>
>>>>> >>> > If coop is turned off then CDS cannot be used. CDS will
>>>>> only be
>>>>> >>> > supported if both UseCompressedOops and
>>>>> UseCompressedKlassPointers
>>>>> >>> are
>>>>> >>> > TRUE.
>>>>> >>>
>>>>> >>> Also based on code in arguments.cpp it is allowed to specify
>>>>> >>> -XX:+UseCompressedOops -XX:-UseCompressedKlassPointers on
>>>>> command line:
>>>>> >>>
>>>>> >>> 1466 // Turn on UseCompressedKlassPointers too
>>>>> >>> 1467 if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
>>>>> >>> 1468 FLAG_SET_ERGO(bool, UseCompressedKlassPointers,
>>>>> true);
>>>>> >>> 1469 }
>>>>> >>>
>>>>> >>> Did you tested such combination?
>>>>> >>
>>>>> >> I should let Harold answer this but I believe this is what his
>>>>> test
>>>>> >> does. For CDS on 64 bit, both must be on. We didn't want to
>>>>> create 4
>>>>> >> different archives. And it wouldn't make too much sense since
>>>>> CDS for
>>>>> >> 64 bit is a footprint savings so why would you use it without
>>>>> >> compressing oops and class pointers? It's not a startup
>>>>> savings on
>>>>> >> server because we turn off interpreter bytecode quickening.
>>>>> >>
>>>>> >> Coleen
>>>>> >>
>>>>> >>>
>>>>> >>>>>
>>>>> >>>>> set_narrow_klass_base_and_shift() and
>>>>> >>>>> can_use_cds_with_metaspace_addr() have the same code for
>>>>> >>>>> UseSharedSpaces. It would be nice to have only one copy. Call
>>>>> >>>>> can_use_cds_with_metaspace_addr() from
>>>>> >>>>> set_narrow_klass_base_and_shift() ?
>>>>> >>>> I could add new inlined methods that determine the
>>>>> higher_address and
>>>>> >>>> lower_base when UseSharedSpaces is true and have them called
>>>>> from
>>>>> >>>> set_narrow_klass_base_and_shift() and
>>>>> >>>> can_use_cds_with_metaspace_addr(). Would that be worth doing?
>>>>> >>>
>>>>> >>> I tried several approaches but your implementation is more
>>>>> clean. So I
>>>>> >>> agree to keep what you have now.
>>>>> >>>
>>>>> >>>
>>>>> >>> Also I found strange assert which should always fail (old
>>>>> code in
>>>>> >>> global_initialize() in metaspace.cpp):
>>>>> >>>
>>>>> >>> 2959 if (UseSharedSpaces) {
>>>>> >>> ...
>>>>> >>> 2969 } else {
>>>>> >>> 2970 assert(!mapinfo->is_open() && !UseSharedSpaces,
>>>>> >>> 2971 "archive file not closed or shared spaces
>>>>> not
>>>>> >>> disabled.");
>>>>> >>>
>>>>> >>> Thanks,
>>>>> >>> Vladimir
>>>>> >>>
>>>>> >>>>>
>>>>> >>>>> I see that you unconditionally set comp klass ptr base and
>>>>> shift for
>>>>> >>>>> DumpSharedSpaces. Should you do the check similar to
>>>>> >>>>> can_use_cds_with_metaspace_addr() to find if you can do
>>>>> that? You
>>>>> >>>>> don't even check UseCompressedKlassPointers.
>>>>> >>>> I don't think the checks are needed because the information
>>>>> written to
>>>>> >>>> the archive is not affected by the size of the class metaspace.
>>>>> >>>>
>>>>> >>>> Also, I recently added code to arguments.cpp that will
>>>>> generate an
>>>>> >>>> error
>>>>> >>>> if UseCompressedOops or UseCompressedKlassPointers is turned
>>>>> off and
>>>>> >>>> DumpSharedSpaces is on.
>>>>> >>>>>
>>>>> >>>>> Why you have next limitation? What if coop can't be used
>>>>> because of
>>>>> >>>>> big heap?:
>>>>> >>>>>
>>>>> >>>>> + // UseCompressedOops and UseCompressedKlassPointers must
>>>>> be on
>>>>> >>>>> for UseSharedSpaces.
>>>>> >>>>> + if (!UseCompressedOops || !UseCompressedKlassPointers) {
>>>>> >>>>> + no_shared_spaces();
>>>>> >>>> If coop is turned off then CDS cannot be used. CDS will
>>>>> only be
>>>>> >>>> supported if both UseCompressedOops and
>>>>> UseCompressedKlassPointers are
>>>>> >>>> TRUE.
>>>>> >>>>>
>>>>> >>>>> Could you move UseCompressedKlassPointers code in
>>>>> arguments.cpp into
>>>>> >>>>> separate method similar to set_use_compressed_oops()?
>>>>> >>>> Done.
>>>>> >>>>>
>>>>> >>>>> About new tests.
>>>>> >>>>> The first test in CDSCompressedKPtrsError misses
>>>>> >>>>> -XX:+UseCompressedOops flag.
>>>>> >>>> Fixed.
>>>>> >>>>>
>>>>> >>>>> Could you also test cross flags combinations?:
>>>>> >>>>>
>>>>> >>>>> -XX:-UseCompressedKlassPointers -XX:+UseCompressedOops
>>>>> >>>>> -XX:+UseCompressedKlassPointers -XX:-UseCompressedOops
>>>>> >>>> Done.
>>>>> >>>>>
>>>>> >>>>> It would be nice to have test to check ClassMetaspaceSize
>>>>> value
>>>>> >>>>> range.
>>>>> >>>>> You have limited it to [1Mb, 3Gb]. BTW, why 3Gb? It is neither
>>>>> maxint
>>>>> >>>>> or maxuint.
>>>>> >>>> A member of our runtime SQE group is writing additional tests.
>>>>> I'll
>>>>> >>>> ask
>>>>> >>>> him to write a ClassMetaspaceSize range test.
>>>>> >>>>
>>>>> >>>> We chose 3Gb because we thought it was a sufficiently large
>>>>> size.
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> About code style, indention. We align next line to
>>>>> corresponding part
>>>>> >>>>> of previous line if we need to split a line. And sometimes
>>>>> it is
>>>>> >>>>> better to keep one long line. I understand some of them were
>>>>> before
>>>>> >>>>> your changes but, please, clean up at lest ones you touched.
>>>>> >>>> Done.
>>>>> >>>>>
>>>>> >>>>> Cases in metaspace.cpp:
>>>>> >>>>>
>>>>> >>>>> 2263 assert(raw_word_size >= min_size,
>>>>> >>>>> 2264 err_msg("Should not deallocate dark matter "
>>>>> SIZE_FORMAT "<"
>>>>> >>>>> SIZE_FORMAT, word_size, min_size));
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2485 if (Metaspace::using_class_space() &&
>>>>> >>>>> 2486 (Metaspace::class_space_list() != NULL)) {
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2574 size_t reserved = (mdtype == Metaspace::ClassType) ?
>>>>> >>>>> 2575 (Metaspace::using_class_space() ?
>>>>> >>>>> 2576 Metaspace::class_space_list()->virtual_space_total() :
>>>>> 0) :
>>>>> >>>>> 2577 Metaspace::space_list()->virtual_space_total();
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2694 out->print_cr(" class: " SIZE_FORMAT " specialized(s) "
>>>>> >>>>> SIZE_FORMAT ", "
>>>>> >>>>> 2695 SIZE_FORMAT " small(s) " SIZE_FORMAT
>>>>> >>>>> ", "
>>>>> >>>>> 2696 SIZE_FORMAT " medium(s) " SIZE_FORMAT
>>>>> >>>>> ", "
>>>>> >>>>> 2697 "large count " SIZE_FORMAT,
>>>>> >>>>> 2698 cls_specialized_count, cls_specialized_waste,
>>>>> >>>>> 2699 cls_small_count, cls_small_waste,
>>>>> >>>>> 2700 cls_medium_count, cls_medium_waste,
>>>>> >>>>> cls_humongous_count);
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2872 while (!metaspace_rs.is_reserved() && (addr + 1*G >
>>>>> >>>>> addr) &&
>>>>> >>>>> 2873 can_use_cds_with_metaspace_addr(addr + 1*G, cds_base)) {
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 2889 vm_exit_during_initialization(err_msg(
>>>>> >>>>> 2890 "Could not allocate metaspace: %d bytes",
>>>>> >>>>> 2891 class_metaspace_size()));
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 3107 return using_class_space() ?
>>>>> >>>>> 3108 class_vsm()->sum_used_in_chunks_in_use() : 0;
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 3157 if (is_class && using_class_space()) {
>>>>> >>>>> 3158 class_vsm()->deallocate(ptr, word_size);
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> 3305 return space_list()->contains(ptr) ||
>>>>> >>>>> 3306 (using_class_space() &&
>>>>> class_space_list()->contains(ptr));
>>>>> >>>>>
>>>>> >>>>> metaspace.hpp:
>>>>> >>>>>
>>>>> >>>>> 270 return
>>>>> _allocated_capacity_words[Metaspace::NonClassType] +
>>>>> >>>>> 271 (Metaspace::using_class_space() ?
>>>>> >>>>> 272 _allocated_capacity_words[Metaspace::ClassType] : 0);
>>>>> >>>>>
>>>>> >>>>> 285 return
>>>>> _allocated_used_words[Metaspace::NonClassType] +
>>>>> >>>>> 286 (Metaspace::using_class_space() ?
>>>>> >>>>> 287 _allocated_used_words[Metaspace::ClassType] : 0);
>>>>> >>>>>
>>>>> >>>>> universe.cpp:
>>>>> >>>>>
>>>>> >>>>> 849 assert((intptr_t)Universe::narrow_oop_base() <=
>>>>> >>>>> (intptr_t)(Universe::heap()->base() -
>>>>> >>>>> 850 os::vm_page_size()) ||
>>>>> >>>>> 851 Universe::narrow_oop_base() == NULL, "invalid
>>>>> >>>>> value");
>>>>> >>>>>
>>>>> >>>>>
>>>>> >>>>> Thanks,
>>>>> >>>>> Vladimir
>>>>> >>>>>
>>>>> >>>>> On 8/2/13 1:31 PM, harold seigel wrote:
>>>>> >>>>>> Hi,
>>>>> >>>>>>
>>>>> >>>>>> Please review this updated webrev for bug 8003424:
>>>>> >>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424.2/
>>>>> >>>>>>
>>>>> >>>>>>
>>>>> >>>>>> The updated webrev has a lot of changes from the previous
>>>>> webrev,
>>>>> >>>>>> including the following:
>>>>> >>>>>>
>>>>> >>>>>> 1. Class metaspace information is now output when
>>>>> >>>>>> -XX:+PrintCompressedOopsMode is specified.
>>>>> >>>>>>
>>>>> >>>>>> 2. decode_klass_not_null(Register dst, Register src) no
>>>>> longer
>>>>> >>>>>> clobbers R12.
>>>>> >>>>>>
>>>>> >>>>>> 3. Method using_class_vsm() was renamed to
>>>>> using_class_space().
>>>>> >>>>>>
>>>>> >>>>>> 4. Type narrowKlass was added and replaces narrowOop,
>>>>> where
>>>>> >>>>>> appropriate.
>>>>> >>>>>>
>>>>> >>>>>> 5. The Metaspace:: qualifier was removed, where it was
>>>>> >>>>>> unnecessary.
>>>>> >>>>>>
>>>>> >>>>>> 6. Metaspace::initialize_class_space() was made private.
>>>>> >>>>>>
>>>>> >>>>>> 7. Method max_heap_for_compressed_oops(), in
>>>>> arguments.cpp, was
>>>>> >>>>>> updated.
>>>>> >>>>>>
>>>>> >>>>>> Performance tests were run by Jenny using specjvm2008,
>>>>> specjbb2005,
>>>>> >>>>>> and
>>>>> >>>>>> specjbb2013. The results showed no significant performance
>>>>> >>>>>> difference
>>>>> >>>>>> in terms of scores and gc behavior.
>>>>> >>>>>>
>>>>> >>>>>> Additional testing was done on Solaris Sparc and Linux x86
>>>>> using
>>>>> >>>>>> SpecJBB2005 with -Xmx34g and -XX:ObjectAlignmentInBytes=16
>>>>> & 32.
>>>>> >>>>>>
>>>>> >>>>>> Please let me know what additional tests should be run.
>>>>> >>>>>>
>>>>> >>>>>> Thanks!
>>>>> >>>>>> Harold
>>>>> >>>>>>
>>>>> >>>>>> On 7/24/2013 4:36 PM, Vladimir Kozlov wrote:
>>>>> >>>>>>> Hi Harold,
>>>>> >>>>>>>
>>>>> >>>>>>> > Usually the narrow_klass_base will be 32G and the
>>>>> >>>>>>> > LogKlassAlignmentInBytes will be 3 (8 bytes alignment)
>>>>> which
>>>>> >>>>>>> means
>>>>> >>>>>>> that
>>>>> >>>>>>> > narrow_klass_base >> 3 will exceed maxint. So, we will
>>>>> need R12,
>>>>> >>>>>>> unless
>>>>> >>>>>>> > we do multiple addq(r, narrow_klass_base_shifted()). Does
>>>>> that
>>>>> >>>>>>> make
>>>>> >>>>>>> sense?
>>>>> >>>>>>>
>>>>> >>>>>>> My bad, I miscalculated. But we have "perfect value"
>>>>> 0x800000000
>>>>> >>>>>>> and I
>>>>> >>>>>>> am tempted to use may be bts (bit set) to avoid R12 usage
>>>>> >>>>>>> (assuming or
>>>>> >>>>>>> with check that class metaspace size < 32Gb).
>>>>> >>>>>>>
>>>>> >>>>>>> > Is there one prefix byte per instruction, or just for
>>>>> certain
>>>>> >>>>>>> instructions?
>>>>> >>>>>>>
>>>>> >>>>>>> "Not all instructions require a REX prefix in 64-bit mode. A
>>>>> >>>>>>> prefix is
>>>>> >>>>>>> necessary only if an instruction references one of the
>>>>> extended
>>>>> >>>>>>> registers or uses a 64-bit operand."
>>>>> >>>>>>>
>>>>> >>>>>>> I want you also run tests with -XX:ObjectAlignmentInBytes=16
>>>>> and
>>>>> >>>>>>> =32
>>>>> >>>>>>> and big java heap. Recently we got several bugs which
>>>>> indicated
>>>>> >>>>>>> that
>>>>> >>>>>>> we did not separate cleanly oops and klass pointers
>>>>> en/decoding.
>>>>> >>>>>>>
>>>>> >>>>>>> Thanks,
>>>>> >>>>>>> Vladimir
>>>>> >>>>>>>
>>>>> >>>>>>> On 7/24/13 11:35 AM, harold seigel wrote:
>>>>> >>>>>>>> Hi Vladimir,
>>>>> >>>>>>>>
>>>>> >>>>>>>> Thank you for the review! Please see inline comments.
>>>>> >>>>>>>>
>>>>> >>>>>>>> Thanks, Harold
>>>>> >>>>>>>>
>>>>> >>>>>>>> On 7/19/2013 7:56 PM, Vladimir Kozlov wrote:
>>>>> >>>>>>>>> On 7/18/13 3:03 PM, Vladimir Kozlov wrote:
>>>>> >>>>>>>>>> Nice clean up, Harold
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> Could you add the size of class metaspace in output with
>>>>> >>>>>>>>>> PrintCompressedOopsMode (and with verbose). I don't
>>>>> want to
>>>>> >>>>>>>>>> remember an
>>>>> >>>>>>>>>> other very long flag name:
>>>>> TraceMetavirtualspaceAllocation.
>>>>> >>>>>>>> Will be done in next webrev.
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> Also it would be nice to print these info line (and
>>>>> compressed
>>>>> >>>>>>>>>> oops
>>>>> >>>>>>>>>> info
>>>>> >>>>>>>>>> line) in hs_err files.
>>>>> >>>>>>>> I filed an enhancement bug for this: 8021264
>>>>> >>>>>>>> .
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> About "effect(KILL cr); /// ???? is this KILL
>>>>> needed?" in
>>>>> >>>>>>>>>> x86_64.ad.
>>>>> >>>>>>>>>> encode_klass_not_null() and decode_klass_not_null() use
>>>>> >>>>>>>>>> arithmetic
>>>>> >>>>>>>>>> instructions which modify flags: subq, addq, shrq,
>>>>> xorptr. Also
>>>>> >>>>>>>>>> note
>>>>> >>>>>>>>>> that code in .ad file does not check the encoding mode
>>>>> for
>>>>> >>>>>>>>>> narrow
>>>>> >>>>>>>>>> klass/oop so it should be conservative and assume that
>>>>> >>>>>>>>>> arithmetic
>>>>> >>>>>>>>>> instructions are used.
>>>>> >>>>>>>> OK. Thanks.
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> If Universe::narrow_klass_shift() == 0 you have klass
>>>>> base below
>>>>> >>>>>>>>>> 4Gb so
>>>>> >>>>>>>>>> the value is 32 bit. You can use it directly in narrow
>>>>> klass
>>>>> >>>>>>>>>> encoding/decoding without destroying R12.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> Correction. You can do it only if base < 2Gb max
>>>>> positive int
>>>>> >>>>>>>>> (sign
>>>>> >>>>>>>>> bit is extended so you will get wrong result with address
>>>>> > 2gb).
>>>>> >>>>>>>> But the base will normally be 32Gb. So this case won't
>>>>> happen
>>>>> >>>>>>>> very
>>>>> >>>>>>>> often.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> You definitely should not use R12 in
>>>>> >>>>>>>>> decode_klass_not_null(Register
>>>>> >>>>>>>>> dst, Register src) method where you have free 'dst'
>>>>> register.
>>>>> >>>>>>>> Will be fixed in next webrev.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> About CompressedKlassPointersBase 0x800000000 (32*G).
>>>>> Actually it
>>>>> >>>>>>>>> should depend on ObjectAlignmentInBytes. For =16 it
>>>>> should be
>>>>> >>>>>>>>> 64Gb.
>>>>> >>>>>>>>> The idea was to avoid using R12 by using shifted base:
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> decode:
>>>>> >>>>>>>>> if (Universe::narrow_klass_base_shifted() != 0) {
>>>>> >>>>>>>>> if (Universe::set_narrow_klass_shift() == 0) {
>>>>> >>>>>>>>> shrq(r, LogKlassAlignmentInBytes);
>>>>> >>>>>>>>> }
>>>>> >>>>>>>>> addq(r, Universe::narrow_klass_base_shifted());
>>>>> >>>>>>>>> shlq(r, LogKlassAlignmentInBytes);
>>>>> >>>>>>>>> }
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> Universe::narrow_klass_base_shifted() is set only if
>>>>> >>>>>>>>> (Universe::narrow_klass_base >>
>>>>> LogKlassAlignmentInBytes) <=
>>>>> >>>>>>>>> maxint
>>>>> >>>>>>>>> (max positive int).
>>>>> >>>>>>>> Usually the narrow_klass_base will be 32G and the
>>>>> >>>>>>>> LogKlassAlignmentInBytes will be 3 (8 bytes alignment)
>>>>> which means
>>>>> >>>>>>>> that
>>>>> >>>>>>>> narrow_klass_base >> 3 will exceed maxint. So, we will need
>>>>> R12,
>>>>> >>>>>>>> unless
>>>>> >>>>>>>> we do multiple addq(r, narrow_klass_base_shifted()).
>>>>> Does that
>>>>> >>>>>>>> make
>>>>> >>>>>>>> sense?
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> And you have general memory reservation problem. At
>>>>> least on
>>>>> >>>>>>>>> Solaris,
>>>>> >>>>>>>>> as I remember, OS will always try to keep protected 4Kb
>>>>> pages
>>>>> >>>>>>>>> between
>>>>> >>>>>>>>> different requested memory regions. That is why in jdk7 we
>>>>> first
>>>>> >>>>>>>>> reserve one huge space and then cut it on java heap, perm
>>>>> gen and
>>>>> >>>>>>>>> protection page below heap to catch implicit NULL
>>>>> exceptions with
>>>>> >>>>>>>>> compressed oops.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> So, please, verify that you are getting 'cds_address +
>>>>> cds_total'
>>>>> >>>>>>>>> address or CompressedKlassPointersBase without CDS and
>>>>> with
>>>>> >>>>>>>>> compressed
>>>>> >>>>>>>>> oops and with Xmx20Gb.
>>>>> >>>>>>>> I verifed that we get either cds_address+cds_total as the
>>>>> >>>>>>>> address, or
>>>>> >>>>>>>> CompressedKlassPointersBase as the address without CDS on
>>>>> Linux,
>>>>> >>>>>>>> Windows
>>>>> >>>>>>>> 7, Mac OS, and Solaris 5.11. This is true with default heap
>>>>> >>>>>>>> sizes and
>>>>> >>>>>>>> -Xmx32G.
>>>>> >>>>>>>>
>>>>> >>>>>>>> On Solaris 5.10, I don't get CompressedKlassPointersBase or
>>>>> the
>>>>> >>>>>>>> desired
>>>>> >>>>>>>> CDS address for class metaspace regardless of heap size.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> instr_size_for_decode_klass_not_null() is ugly but
>>>>> >>>>>>>>>> unfortunately we
>>>>> >>>>>>>>>> can't do other way. I assume you use max size because
>>>>> >>>>>>>>>> depending on
>>>>> >>>>>>>>>> registers used in instructions you will or will not get
>>>>> prefix
>>>>> >>>>>>>>>> byte
>>>>> >>>>>>>>>> (r8-r15).
>>>>> >>>>>>>> Is there one prefix byte per instruction, or just for
>>>>> certain
>>>>> >>>>>>>> instructions?
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> I will look on changes in more details may be late.
>>>>> >>>>>>>>>
>>>>> >>>>>>>>> What 'vsm' stands for in using_class_vsm()? Don't use
>>>>> >>>>>>>>> abbreviations
>>>>> >>>>>>>>> which are not obvious.
>>>>> >>>>>>>> I changed using_class_vsm() to using_class_space().
>>>>> >>>>>>>>>
>>>>> >>>>>>>>>
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> Thanks,
>>>>> >>>>>>>>>> Vladimir
>>>>> >>>>>>>>>>
>>>>> >>>>>>>>>> On 7/18/13 10:54 AM, harold seigel wrote:
>>>>> >>>>>>>>>>> Hi,
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Please review this fix for bug 8003424.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Open webrev at
>>>>> http://cr.openjdk.java.net/~hseigel/bug_8003424/
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Open bug links at:
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8003424
>>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8016729
>>>>> >>>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=8011610
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> JBS Bug links at
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8003424
>>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8016729
>>>>> >>>>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8011610
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> This fix provides support for using compressed klass
>>>>> pointers
>>>>> >>>>>>>>>>> with
>>>>> >>>>>>>>>>> CDS.
>>>>> >>>>>>>>>>> It also changes the class metaspace allocation on 64-bit
>>>>> >>>>>>>>>>> platforms
>>>>> >>>>>>>>>>> when
>>>>> >>>>>>>>>>> UseCompressedKlassPointers is true. Instead of
>>>>> allocating the
>>>>> >>>>>>>>>>> class
>>>>> >>>>>>>>>>> metaspace as part of the Java Heap allocation and
>>>>> locating
>>>>> >>>>>>>>>>> it at
>>>>> >>>>>>>>>>> the
>>>>> >>>>>>>>>>> base of that allocation, the metaspace will now be
>>>>> allocated
>>>>> >>>>>>>>>>> separately,
>>>>> >>>>>>>>>>> above the Java heap. This will enable future expansion
>>>>> of the
>>>>> >>>>>>>>>>> metaspace
>>>>> >>>>>>>>>>> because it won't be backed up against the Java heap. If
>>>>> CDS is
>>>>> >>>>>>>>>>> being
>>>>> >>>>>>>>>>> used, then the CDS region will be allocated between the
>>>>> Java
>>>>> >>>>>>>>>>> heap and
>>>>> >>>>>>>>>>> the metaspace.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> The new class metaspace allocation code tries to
>>>>> allocate
>>>>> >>>>>>>>>>> memory at
>>>>> >>>>>>>>>>> 32G,
>>>>> >>>>>>>>>>> or above the CDS region, if it is present. Because of
>>>>> this,
>>>>> >>>>>>>>>>> encoding
>>>>> >>>>>>>>>>> and decoding of compressed klass pointers will always
>>>>> >>>>>>>>>>> require use
>>>>> >>>>>>>>>>> of a
>>>>> >>>>>>>>>>> base register. So, encoding and decoding of compressed
>>>>> klass
>>>>> >>>>>>>>>>> pointers
>>>>> >>>>>>>>>>> will differ from compressed oops.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> There are no class metaspace allocation changes if
>>>>> >>>>>>>>>>> UseCompressedKlassPointers is turned off or if
>>>>> running on a
>>>>> >>>>>>>>>>> 32-bit
>>>>> >>>>>>>>>>> platform.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> The code changes also include some cleanup and will fix
>>>>> bugs
>>>>> >>>>>>>>>>> 8016729,
>>>>> >>>>>>>>>>> 8011610, and 8003424.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Many of the modules in this webrev contain a lot of
>>>>> changes.
>>>>> >>>>>>>>>>> Modules
>>>>> >>>>>>>>>>> macroAssembler_sparc.cpp and macroAssembler_x86.cpp were
>>>>> >>>>>>>>>>> changed to
>>>>> >>>>>>>>>>> support the new encoding and decoding of compressed
>>>>> klass
>>>>> >>>>>>>>>>> pointers.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Module metaspace.cpp was changed significantly to
>>>>> support
>>>>> >>>>>>>>>>> the new
>>>>> >>>>>>>>>>> allocation for metaspace and the CDS region and to
>>>>> determine
>>>>> >>>>>>>>>>> compressed
>>>>> >>>>>>>>>>> klass pointer encoding base and shifting values.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Most of the changes to module universe.cpp were to
>>>>> remove code
>>>>> >>>>>>>>>>> related
>>>>> >>>>>>>>>>> to allocating metaspace and remove code that considered
>>>>> >>>>>>>>>>> compressed
>>>>> >>>>>>>>>>> klass
>>>>> >>>>>>>>>>> pointers when determining the compressed oops
>>>>> compression
>>>>> >>>>>>>>>>> mechanism.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Modules klass.inline.hpp and oop.inline.hpp were
>>>>> changed as
>>>>> >>>>>>>>>>> part
>>>>> >>>>>>>>>>> of a
>>>>> >>>>>>>>>>> cleanup requested by Coleen.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> These changes were tested with JCK Lang and VM tests,
>>>>> JTReg
>>>>> >>>>>>>>>>> tests,
>>>>> >>>>>>>>>>> JPRT,
>>>>> >>>>>>>>>>> GCBasher, refworkload, ute vm.quick.testlist and
>>>>> >>>>>>>>>>> vm.mlvm.testlist
>>>>> >>>>>>>>>>> tests. Most of the test were run with -Xshare:on and
>>>>> >>>>>>>>>>> -Xshare:off
>>>>> >>>>>>>>>>> (with
>>>>> >>>>>>>>>>> and without CDS), and were run on Solaris Sparc, 32-Bit
>>>>> >>>>>>>>>>> Linux and
>>>>> >>>>>>>>>>> 64-Bit
>>>>> >>>>>>>>>>> Linux. Jtreg tests were run on Windows 7 and Mac OS.
>>>>> JCK tests
>>>>> >>>>>>>>>>> were
>>>>> >>>>>>>>>>> run on Solaris x86.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> The performance impact of these changes is TBD.
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>> Thanks, Harold
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>>>>
>>>>> >>>>>>>>
>>>>> >>>>>>
>>>>> >>>>
>>>>> >>
>>>>>
>>>
>
From harold.seigel at oracle.com Thu Aug 15 19:29:10 2013
From: harold.seigel at oracle.com (harold.seigel at oracle.com)
Date: Fri, 16 Aug 2013 02:29:10 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8003424: Enable Class Data Sharing for
CompressedOops; ...
Message-ID: <20130816022913.451264891D@hg.openjdk.java.net>
Changeset: 740e263c80c6
Author: hseigel
Date: 2013-08-15 20:04 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/740e263c80c6
8003424: Enable Class Data Sharing for CompressedOops
8016729: ObjectAlignmentInBytes=16 now forces the use of heap based compressed oops
8005933: The -Xshare:auto option is ignored for -server
Summary: Move klass metaspace above the heap and support CDS with compressed klass ptrs.
Reviewed-by: coleenp, kvn, mgerdin, tschatzl, stefank
! src/cpu/sparc/vm/macroAssembler_sparc.cpp
! src/cpu/sparc/vm/macroAssembler_sparc.hpp
! src/cpu/sparc/vm/relocInfo_sparc.cpp
! src/cpu/sparc/vm/sparc.ad
! src/cpu/sparc/vm/vtableStubs_sparc.cpp
! src/cpu/x86/vm/macroAssembler_x86.cpp
! src/cpu/x86/vm/macroAssembler_x86.hpp
! src/cpu/x86/vm/relocInfo_x86.cpp
! src/cpu/x86/vm/stubGenerator_x86_32.cpp
! src/cpu/x86/vm/stubGenerator_x86_64.cpp
! src/cpu/x86/vm/vtableStubs_x86_64.cpp
! src/cpu/x86/vm/x86_64.ad
! src/share/vm/memory/filemap.cpp
! src/share/vm/memory/filemap.hpp
! src/share/vm/memory/heap.cpp
! src/share/vm/memory/metaspace.cpp
! src/share/vm/memory/metaspace.hpp
! src/share/vm/memory/metaspaceShared.cpp
! src/share/vm/memory/universe.cpp
! src/share/vm/memory/universe.hpp
! src/share/vm/oops/klass.hpp
! src/share/vm/oops/klass.inline.hpp
! src/share/vm/oops/oop.hpp
! src/share/vm/oops/oop.inline.hpp
! src/share/vm/oops/oopsHierarchy.hpp
! src/share/vm/runtime/arguments.cpp
! src/share/vm/runtime/arguments.hpp
! src/share/vm/runtime/globals.hpp
! src/share/vm/runtime/init.cpp
! src/share/vm/utilities/globalDefinitions.hpp
+ test/runtime/CDSCompressedKPtrs/CDSCompressedKPtrs.java
+ test/runtime/CDSCompressedKPtrs/CDSCompressedKPtrsError.java
+ test/runtime/CDSCompressedKPtrs/XShareAuto.java
! test/runtime/SharedArchiveFile/CdsSameObjectAlignment.java
From christian.thalinger at oracle.com Thu Aug 15 19:38:43 2013
From: christian.thalinger at oracle.com (Christian Thalinger)
Date: Thu, 15 Aug 2013 19:38:43 -0700
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
Message-ID:
On Aug 15, 2013, at 9:05 AM, David Chase wrote:
> Webrev: http://cr.openjdk.java.net/~drchase/8014013/webrev.01/
src/share/vm/interpreter/linkResolver.cpp (and others):
+ debug_only(verify()); // verify before making side effects
Use upper-case DEBUG_ONLY. debug_only is deprecated.
+ if (resolved_klass == NULL) // 2nd argument defaults to holder of 1st
+ resolved_klass = resolved_method_holder;
+ _resolved_klass = resolved_klass;
+ _selected_klass = resolved_klass;
+ _resolved_method = resolved_method;
+ _selected_method = resolved_method;
It is almost impossible to see that there is an if statement and where it ends. Add {}.
+ ShouldNotReachHere(); // C++ constructor failure
fatal with error message would be better.
src/share/vm/oops/method.cpp:
+ // These are methods do not need vtable entries.
+ bool Method::is_final_method(AccessFlags class_access_flags) const {
This comment reads odd.
src/share/vm/opto/library_call.cpp:
+ assert(vtable_index >= 0 || vtable_index == Method::nonvirtual_vtable_index, err_msg("bad index %d", vtable_index));
Please use err_msg_res in the compiler. We had problems with stack overflows in the past.
src/share/vm/runtime/fieldDescriptor.cpp:
+ if (_cp.is_null() || field_holder() != ik) {
+ _cp = constantPoolHandle(Thread::current(), ik->constants());
+ assert(field_holder() == ik, "must be already initialized to this class");
+ }
This assert cannot hold.
-- Chris
>
> Bug: The addition of interface (default) methods made the old way
> of resolving method invocation not be right.
> In addition, the code was fiddly and distributed through the source.
> See also duplicate 7086758,
> "MethodHandles.Lookup.findVirtual is confused by interface methods that are multiply inherited"
>
> Fix: Enhance method resolution (add "CallKind")
> and the data structures for reporting resolution results,
> and centralize the process as much as possible.
>
> Testing:
>
> Note: this fix is bug-for-bug-compatible with current on jdk/lambda/vm/DefaultMethodsTest.java
>
> 64-bit Intel (MacOS):
> jtreg - compiler
> jtreg - jdk/{lib,sun,java/util, java/lang, jdk}
> ute/tonga - vm.quick.testlist
>
> 32-bit Intel (Ubuntu)
> Point checks on all the corner cases from the 64-bit testing.
> (jck60008, b7087658)
> jtreg - jdk/{java/util, java/lang, jdk}
>
> Solaris-sparc
> jtreg - jdk/{java/util, java/lang, jdk}
>
> Also compiled on Windows/VS2010 w/ JPRT.
>
>
From david.r.chase at oracle.com Thu Aug 15 19:50:45 2013
From: david.r.chase at oracle.com (David Chase)
Date: Thu, 15 Aug 2013 22:50:45 -0400
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To:
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
Message-ID: <6C2E3F57-9C21-4191-8B4E-8DA754F7638B@oracle.com>
Thanks much, I will attend to these tomorrow.
David
On 2013-08-15, at 10:38 PM, Christian Thalinger wrote:
...
From john.r.rose at oracle.com Thu Aug 15 23:12:36 2013
From: john.r.rose at oracle.com (John Rose)
Date: Thu, 15 Aug 2013 23:12:36 -0700
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To:
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
Message-ID: <6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
On Aug 15, 2013, at 7:38 PM, Christian Thalinger wrote:
> src/share/vm/runtime/fieldDescriptor.cpp:
>
> + if (_cp.is_null() || field_holder() != ik) {
> + _cp = constantPoolHandle(Thread::current(), ik->constants());
> + assert(field_holder() == ik, "must be already initialized to this class");
> + }
>
> This assert cannot hold.
The fd::initialize call resets a fd previously pointing at a different field to a new field.
This requires a shift in the field_holder.
The call to initialize is fieldStreams.hpp, where a fd embedded in the stream object gets reused for successive fields.
So I think this assert measures something meaningful.
Perhaps the method should be named "reinitialize" or "reset" to emphasize the multiple use.
? John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130815/04fc38f9/attachment.html
From david.holmes at oracle.com Thu Aug 15 23:25:39 2013
From: david.holmes at oracle.com (David Holmes)
Date: Fri, 16 Aug 2013 16:25:39 +1000
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To: <6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
<6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
Message-ID: <520DC5E3.6020302@oracle.com>
On 16/08/2013 4:12 PM, John Rose wrote:
> On Aug 15, 2013, at 7:38 PM, Christian Thalinger
> >
> wrote:
>
>> src/share/vm/runtime/fieldDescriptor.cpp:
>>
>> + if (_cp.is _null() || field_holder() != ik) {
>> + _cp = constantPoolHandle(Thread::current(), ik->constants());
>> + assert(field_holder() == ik, "must be already initialized to
>> this class");
>> + }
>>
>> This assert cannot hold.
>
> The fd::initialize call resets a fd previously pointing at a different
> field to a new field.
> This requires a shift in the field_holder.
> The call to initialize is fieldStreams.hpp, where a fd embedded in the
> stream object gets reused for successive fields.
> So I think this assert measures something meaningful.
But the second part of the if condition is "field_holder() != ik" - so
how does the call to constantPoolHandle force field_holder() to a value
that isn't even passed to it ???
David
-----
> Perhaps the method should be named "reinitialize" or "reset" to
> emphasize the multiple use.
>
> ? John
From john.r.rose at oracle.com Fri Aug 16 00:39:00 2013
From: john.r.rose at oracle.com (John Rose)
Date: Fri, 16 Aug 2013 00:39:00 -0700
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To: <520DC5E3.6020302@oracle.com>
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
<6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
<520DC5E3.6020302@oracle.com>
Message-ID: <88D78D15-F3D5-417E-A628-E639186DA418@oracle.com>
On Aug 15, 2013, at 11:25 PM, David Holmes wrote:
> But the second part of the if condition is "field_holder() != ik" - so how does the call to constantPoolHandle force field_holder() to a value that isn't even passed to it ???
That part needs a comment. Check the definition of field_holder. ? John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/e480e0ba/attachment-0001.html
From erik.helin at oracle.com Fri Aug 16 03:22:08 2013
From: erik.helin at oracle.com (Erik Helin)
Date: Fri, 16 Aug 2013 12:22:08 +0200
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <520CDD99.70403@oracle.com>
References: <20130814144906.GC2649@ehelin-thinkpad> <520CDD99.70403@oracle.com>
Message-ID: <20130816102208.GA2238@ehelin-thinkpad>
On 2013-08-15, Mikael Gerdin wrote:
> Erik,
>
> On 08/14/2013 04:49 PM, Erik Helin wrote:
> >Hi all,
> >
> >this change adds performance counters for compressed class space.
> >
> >Webrev:
> >http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
> >
> >Changes to hotspot:
> >The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
> >where the class MetaspaceCounters has been split up into
> >MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
> >an instance of MetaspacePerfCounters. The class
> >CompressedClassSpaceCounters has been added which also has its own
> >instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
> >updates the actual performance counters.
>
> I'm a bit concerned about the exception handling in the perf
> variable creation. But it appears to be similar to the other places
> where perf variables are created.
>
> Creating a 0-reporting perf counter if -UseCompressedKlassPointers
> seems consistent with the rest of the code.
>
> I'd say this is fine, but as Coleen mentioned you should verify this
> with Harold's change for CDS+CompressedOops.
Coleen, Mikael,
I've rebased the change on top of hotspot-rt (which includes Harold's
change). I had to resolve some merge conflicts in metaspace.cpp.
Please see the latest (and hopefully final) webrev at:
http://cr.openjdk.java.net/~ehelin/8014659/webrev.04/
The incremental changes since the first webrev are listed below:
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.03-04/
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.02-03/
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
I plan to push this to hotspot-rt as well, since the change now depends
on Harold's change.
Thanks,
Erik
> >The changes in metaspace.hpp/cpp were needed to get some additional data
> >from the metaspace data structures. The method
> >free_chunks_in_total(mdtype) was made public and the method
> >free_bytes(mdtype) was added. Some common functionality was extracted
> >into get_space_list(mdtype) which got rid of some duplicated code.
> >
> >The changes in:
> >- g1MonitorinSupport.cpp
> >- parallelScavengeHeap.cpp
> >- genCollectedHeap.cpp
> >- universe.cpp
> >are only "one-liners" that either update or initialize the new performance
> >counters.
> >
> >Changes to the testlibrary:
> >- Added Asserts.java for writing asserts like "assertTrue",
> > "assertEquals", etc.
> >- Added PerfCounter.java and PerfCounters.java to make it easy to
> > inspect performance counters for the currently running VM.
> >- Added InputArguments.java so a test can check the arguments it got
> > passed.
> >- Added InMemoryJavaCompiler.java for compiling a string into bytecode.
> > Useful for loading classes generated at runtime without using files.
> >- Added ByteCodeLoader.java for defining a new class when you already
> > have the bytecode.
>
> The test code looks fine.
>
> /Mikael
> >
> >Testing:
> >- Added the new test TestMetaspacePerfCounters.java
> >- JPRT
> >
> >Bug:
> >http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
> >
> >Thanks,
> >Erik
> >
>
From mikael.gerdin at oracle.com Fri Aug 16 05:07:20 2013
From: mikael.gerdin at oracle.com (Mikael Gerdin)
Date: Fri, 16 Aug 2013 14:07:20 +0200
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <20130816102208.GA2238@ehelin-thinkpad>
References: <20130814144906.GC2649@ehelin-thinkpad> <520CDD99.70403@oracle.com>
<20130816102208.GA2238@ehelin-thinkpad>
Message-ID: <520E15F8.7050004@oracle.com>
Erik,
On 2013-08-16 12:22, Erik Helin wrote:
> On 2013-08-15, Mikael Gerdin wrote:
>> Erik,
>>
>> On 08/14/2013 04:49 PM, Erik Helin wrote:
>>> Hi all,
>>>
>>> this change adds performance counters for compressed class space.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
>>>
>>> Changes to hotspot:
>>> The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
>>> where the class MetaspaceCounters has been split up into
>>> MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
>>> an instance of MetaspacePerfCounters. The class
>>> CompressedClassSpaceCounters has been added which also has its own
>>> instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
>>> updates the actual performance counters.
>>
>> I'm a bit concerned about the exception handling in the perf
>> variable creation. But it appears to be similar to the other places
>> where perf variables are created.
>>
>> Creating a 0-reporting perf counter if -UseCompressedKlassPointers
>> seems consistent with the rest of the code.
>>
>> I'd say this is fine, but as Coleen mentioned you should verify this
>> with Harold's change for CDS+CompressedOops.
>
> Coleen, Mikael,
>
> I've rebased the change on top of hotspot-rt (which includes Harold's
> change). I had to resolve some merge conflicts in metaspace.cpp.
>
> Please see the latest (and hopefully final) webrev at:
> http://cr.openjdk.java.net/~ehelin/8014659/webrev.04/
Still looks good to me.
/Mikael
>
> The incremental changes since the first webrev are listed below:
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.03-04/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.02-03/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
>
> I plan to push this to hotspot-rt as well, since the change now depends
> on Harold's change.
>
> Thanks,
> Erik
>
>>> The changes in metaspace.hpp/cpp were needed to get some additional data
>> >from the metaspace data structures. The method
>>> free_chunks_in_total(mdtype) was made public and the method
>>> free_bytes(mdtype) was added. Some common functionality was extracted
>>> into get_space_list(mdtype) which got rid of some duplicated code.
>>>
>>> The changes in:
>>> - g1MonitorinSupport.cpp
>>> - parallelScavengeHeap.cpp
>>> - genCollectedHeap.cpp
>>> - universe.cpp
>>> are only "one-liners" that either update or initialize the new performance
>>> counters.
>>>
>>> Changes to the testlibrary:
>>> - Added Asserts.java for writing asserts like "assertTrue",
>>> "assertEquals", etc.
>>> - Added PerfCounter.java and PerfCounters.java to make it easy to
>>> inspect performance counters for the currently running VM.
>>> - Added InputArguments.java so a test can check the arguments it got
>>> passed.
>>> - Added InMemoryJavaCompiler.java for compiling a string into bytecode.
>>> Useful for loading classes generated at runtime without using files.
>>> - Added ByteCodeLoader.java for defining a new class when you already
>>> have the bytecode.
>>
>> The test code looks fine.
>>
>> /Mikael
>>>
>>> Testing:
>>> - Added the new test TestMetaspacePerfCounters.java
>>> - JPRT
>>>
>>> Bug:
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
>>>
>>> Thanks,
>>> Erik
>>>
>>
From harold.seigel at oracle.com Fri Aug 16 05:10:33 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Fri, 16 Aug 2013 08:10:33 -0400
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <20130816102208.GA2238@ehelin-thinkpad>
References: <20130814144906.GC2649@ehelin-thinkpad> <520CDD99.70403@oracle.com>
<20130816102208.GA2238@ehelin-thinkpad>
Message-ID: <520E16B9.4000406@oracle.com>
Hi Erik,
Thanks for doing the work of merging our two changes. I had one small
comment. In MetaspaceAux::reserved_in_bytes() could you change this
size_t reserved = list == NULL ? 0 : list->virtual_space_total();
return reserved;
to
return list == NULL ? 0 : list->virtual_space_total();
Thanks, Harold
On 8/16/2013 6:22 AM, Erik Helin wrote:
> On 2013-08-15, Mikael Gerdin wrote:
>> Erik,
>>
>> On 08/14/2013 04:49 PM, Erik Helin wrote:
>>> Hi all,
>>>
>>> this change adds performance counters for compressed class space.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
>>>
>>> Changes to hotspot:
>>> The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
>>> where the class MetaspaceCounters has been split up into
>>> MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
>>> an instance of MetaspacePerfCounters. The class
>>> CompressedClassSpaceCounters has been added which also has its own
>>> instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
>>> updates the actual performance counters.
>> I'm a bit concerned about the exception handling in the perf
>> variable creation. But it appears to be similar to the other places
>> where perf variables are created.
>>
>> Creating a 0-reporting perf counter if -UseCompressedKlassPointers
>> seems consistent with the rest of the code.
>>
>> I'd say this is fine, but as Coleen mentioned you should verify this
>> with Harold's change for CDS+CompressedOops.
> Coleen, Mikael,
>
> I've rebased the change on top of hotspot-rt (which includes Harold's
> change). I had to resolve some merge conflicts in metaspace.cpp.
>
> Please see the latest (and hopefully final) webrev at:
> http://cr.openjdk.java.net/~ehelin/8014659/webrev.04/
>
> The incremental changes since the first webrev are listed below:
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.03-04/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.02-03/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
>
> I plan to push this to hotspot-rt as well, since the change now depends
> on Harold's change.
>
> Thanks,
> Erik
>
>>> The changes in metaspace.hpp/cpp were needed to get some additional data
>> >from the metaspace data structures. The method
>>> free_chunks_in_total(mdtype) was made public and the method
>>> free_bytes(mdtype) was added. Some common functionality was extracted
>>> into get_space_list(mdtype) which got rid of some duplicated code.
>>>
>>> The changes in:
>>> - g1MonitorinSupport.cpp
>>> - parallelScavengeHeap.cpp
>>> - genCollectedHeap.cpp
>>> - universe.cpp
>>> are only "one-liners" that either update or initialize the new performance
>>> counters.
>>>
>>> Changes to the testlibrary:
>>> - Added Asserts.java for writing asserts like "assertTrue",
>>> "assertEquals", etc.
>>> - Added PerfCounter.java and PerfCounters.java to make it easy to
>>> inspect performance counters for the currently running VM.
>>> - Added InputArguments.java so a test can check the arguments it got
>>> passed.
>>> - Added InMemoryJavaCompiler.java for compiling a string into bytecode.
>>> Useful for loading classes generated at runtime without using files.
>>> - Added ByteCodeLoader.java for defining a new class when you already
>>> have the bytecode.
>> The test code looks fine.
>>
>> /Mikael
>>> Testing:
>>> - Added the new test TestMetaspacePerfCounters.java
>>> - JPRT
>>>
>>> Bug:
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
>>>
>>> Thanks,
>>> Erik
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/b49390f8/attachment.html
From erik.helin at oracle.com Fri Aug 16 06:25:55 2013
From: erik.helin at oracle.com (Erik Helin)
Date: Fri, 16 Aug 2013 15:25:55 +0200
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <520E16B9.4000406@oracle.com>
References: <20130814144906.GC2649@ehelin-thinkpad> <520CDD99.70403@oracle.com>
<20130816102208.GA2238@ehelin-thinkpad>
<520E16B9.4000406@oracle.com>
Message-ID: <20130816132555.GA2135@ehelin-thinkpad>
On 2013-08-16, harold seigel wrote:
> Hi Erik,
>
> Thanks for doing the work of merging our two changes. I had one
> small comment. In MetaspaceAux::reserved_in_bytes() could you
> change this
>
> size_t reserved = list == NULL ? 0 : list->virtual_space_total();
> return reserved;
>
> to
>
> return list == NULL ? 0 : list->virtual_space_total();
Nice catch, thanks! I've uploaded a new webrev to:
http://cr.openjdk.java.net/~ehelin/8014659/webrev.05/
The incremental changes since the first webrev are list below:
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.04-05/
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.03-04/
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.02-03/
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
- http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
Thanks,
Erik
> Thanks, Harold
>
>
> On 8/16/2013 6:22 AM, Erik Helin wrote:
> >On 2013-08-15, Mikael Gerdin wrote:
> >>Erik,
> >>
> >>On 08/14/2013 04:49 PM, Erik Helin wrote:
> >>>Hi all,
> >>>
> >>>this change adds performance counters for compressed class space.
> >>>
> >>>Webrev:
> >>>http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
> >>>
> >>>Changes to hotspot:
> >>>The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
> >>>where the class MetaspaceCounters has been split up into
> >>>MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
> >>>an instance of MetaspacePerfCounters. The class
> >>>CompressedClassSpaceCounters has been added which also has its own
> >>>instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
> >>>updates the actual performance counters.
> >>I'm a bit concerned about the exception handling in the perf
> >>variable creation. But it appears to be similar to the other places
> >>where perf variables are created.
> >>
> >>Creating a 0-reporting perf counter if -UseCompressedKlassPointers
> >>seems consistent with the rest of the code.
> >>
> >>I'd say this is fine, but as Coleen mentioned you should verify this
> >>with Harold's change for CDS+CompressedOops.
> >Coleen, Mikael,
> >
> >I've rebased the change on top of hotspot-rt (which includes Harold's
> >change). I had to resolve some merge conflicts in metaspace.cpp.
> >
> >Please see the latest (and hopefully final) webrev at:
> >http://cr.openjdk.java.net/~ehelin/8014659/webrev.04/
> >
> >The incremental changes since the first webrev are listed below:
> >- http://cr.openjdk.java.net/~ehelin/8014659/webrev.03-04/
> >- http://cr.openjdk.java.net/~ehelin/8014659/webrev.02-03/
> >- http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
> >- http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
> >
> >I plan to push this to hotspot-rt as well, since the change now depends
> >on Harold's change.
> >
> >Thanks,
> >Erik
> >
> >>>The changes in metaspace.hpp/cpp were needed to get some additional data
> >>>from the metaspace data structures. The method
> >>>free_chunks_in_total(mdtype) was made public and the method
> >>>free_bytes(mdtype) was added. Some common functionality was extracted
> >>>into get_space_list(mdtype) which got rid of some duplicated code.
> >>>
> >>>The changes in:
> >>>- g1MonitorinSupport.cpp
> >>>- parallelScavengeHeap.cpp
> >>>- genCollectedHeap.cpp
> >>>- universe.cpp
> >>>are only "one-liners" that either update or initialize the new performance
> >>>counters.
> >>>
> >>>Changes to the testlibrary:
> >>>- Added Asserts.java for writing asserts like "assertTrue",
> >>> "assertEquals", etc.
> >>>- Added PerfCounter.java and PerfCounters.java to make it easy to
> >>> inspect performance counters for the currently running VM.
> >>>- Added InputArguments.java so a test can check the arguments it got
> >>> passed.
> >>>- Added InMemoryJavaCompiler.java for compiling a string into bytecode.
> >>> Useful for loading classes generated at runtime without using files.
> >>>- Added ByteCodeLoader.java for defining a new class when you already
> >>> have the bytecode.
> >>The test code looks fine.
> >>
> >>/Mikael
> >>>Testing:
> >>>- Added the new test TestMetaspacePerfCounters.java
> >>>- JPRT
> >>>
> >>>Bug:
> >>>http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
> >>>
> >>>Thanks,
> >>>Erik
> >>>
>
From david.simms at oracle.com Fri Aug 16 07:45:42 2013
From: david.simms at oracle.com (David Simms)
Date: Fri, 16 Aug 2013 16:45:42 +0200
Subject: RFR (S): 8022683 : JNI GetStringUTFChars should return NULL on
allocation failure not abort the VM
Message-ID: <520E3B16.2040100@oracle.com>
Hello all,
Need reviewers on a JDK8 fix for:
http://bugs.sun.com/view_bug.do?bug_id=8022683
Found the following functions need to return NULL as suggested by the
JNI spec
(http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html):
* GetStringChars()
* GetStringUTFChars()
* GetArrayElements() family of array getters (same
generating macro).
Although the specification suggests OOME may be thrown by certain
functions, the documentation on the aforementioned functions does not
suggest "throws". So they return NULL now without aborting the JVM as
before.
It was assumed the meaning of "isCopy" is undefined given a NULL result,
in keeping with the rest of jni.cpp.
Also discovered allocation.hpp macros missing proper argument bracketing
(e.g. size passed in NEW_C_HEAP_ARRAY_RETURN_NULL()), fixed them up
since I was there (and they caused trouble).
Webrev:
http://cr.openjdk.java.net/~dsimms/8022683/
Testing:
Attached "unit test" to bug, naive test program to trigger OOM. It is
not suitable for automated testing. Ideally require hooks into the JVM
to simulate OOM during JNI calls.
Cheers
/David Simms
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/10567d61/attachment.html
From coleen.phillimore at oracle.com Fri Aug 16 08:36:32 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Fri, 16 Aug 2013 11:36:32 -0400
Subject: RFR (M): 8014659: NPG: performance counters for compressed klass
space
In-Reply-To: <20130816102208.GA2238@ehelin-thinkpad>
References: <20130814144906.GC2649@ehelin-thinkpad> <520CDD99.70403@oracle.com>
<20130816102208.GA2238@ehelin-thinkpad>
Message-ID: <520E4700.4070805@oracle.com>
Erik, Thank you for doing this.
A small nit - can you put () around list == NULL?
+ size_t reserved = list == NULL ? 0 : list->virtual_space_total();
Also, I thought I read this intent of this change was to separate
CompressedClassSpaceCounters from MetaspaceCounters, but
MetaspaceCounters still call MetaspaceAux::free_bytes() and functions
with combine the two. I don't think we should combine them anymore.
I'm working on decoupling these two with LowMemoryThreshold counters
(which you have to see). It's sort of a mess from the users
perspective when these are combined.
Does MetaspaceCounters make sense if the CompressedClassSpace is removed
from the size calculations?
Thanks,
Coleen
On 8/16/2013 6:22 AM, Erik Helin wrote:
> On 2013-08-15, Mikael Gerdin wrote:
>> Erik,
>>
>> On 08/14/2013 04:49 PM, Erik Helin wrote:
>>> Hi all,
>>>
>>> this change adds performance counters for compressed class space.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~ehelin/8014659/webrev.00/
>>>
>>> Changes to hotspot:
>>> The main changes are in metaspaceCounters.hpp and metaspaceCounters.cpp,
>>> where the class MetaspaceCounters has been split up into
>>> MetaspaceCounters and MetaspacePerfCounters. MetaspaceCounters now owns
>>> an instance of MetaspacePerfCounters. The class
>>> CompressedClassSpaceCounters has been added which also has its own
>>> instance of MetaspacePerfCounters. MetaspacePerfCounters initializes and
>>> updates the actual performance counters.
>> I'm a bit concerned about the exception handling in the perf
>> variable creation. But it appears to be similar to the other places
>> where perf variables are created.
>>
>> Creating a 0-reporting perf counter if -UseCompressedKlassPointers
>> seems consistent with the rest of the code.
>>
>> I'd say this is fine, but as Coleen mentioned you should verify this
>> with Harold's change for CDS+CompressedOops.
> Coleen, Mikael,
>
> I've rebased the change on top of hotspot-rt (which includes Harold's
> change). I had to resolve some merge conflicts in metaspace.cpp.
>
> Please see the latest (and hopefully final) webrev at:
> http://cr.openjdk.java.net/~ehelin/8014659/webrev.04/
>
> The incremental changes since the first webrev are listed below:
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.03-04/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.02-03/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.01-02/
> - http://cr.openjdk.java.net/~ehelin/8014659/webrev.00-01/
>
> I plan to push this to hotspot-rt as well, since the change now depends
> on Harold's change.
>
> Thanks,
> Erik
>
>>> The changes in metaspace.hpp/cpp were needed to get some additional data
>> >from the metaspace data structures. The method
>>> free_chunks_in_total(mdtype) was made public and the method
>>> free_bytes(mdtype) was added. Some common functionality was extracted
>>> into get_space_list(mdtype) which got rid of some duplicated code.
>>>
>>> The changes in:
>>> - g1MonitorinSupport.cpp
>>> - parallelScavengeHeap.cpp
>>> - genCollectedHeap.cpp
>>> - universe.cpp
>>> are only "one-liners" that either update or initialize the new performance
>>> counters.
>>>
>>> Changes to the testlibrary:
>>> - Added Asserts.java for writing asserts like "assertTrue",
>>> "assertEquals", etc.
>>> - Added PerfCounter.java and PerfCounters.java to make it easy to
>>> inspect performance counters for the currently running VM.
>>> - Added InputArguments.java so a test can check the arguments it got
>>> passed.
>>> - Added InMemoryJavaCompiler.java for compiling a string into bytecode.
>>> Useful for loading classes generated at runtime without using files.
>>> - Added ByteCodeLoader.java for defining a new class when you already
>>> have the bytecode.
>> The test code looks fine.
>>
>> /Mikael
>>> Testing:
>>> - Added the new test TestMetaspacePerfCounters.java
>>> - JPRT
>>>
>>> Bug:
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8014659
>>>
>>> Thanks,
>>> Erik
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/05cf6148/attachment.html
From yumin.qi at oracle.com Fri Aug 16 09:39:25 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Fri, 16 Aug 2013 09:39:25 -0700
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <520CF52B.6050000@oracle.com>
References: <520CF52B.6050000@oracle.com>
Message-ID: <520E55BD.6010200@oracle.com>
Any volunteers for this review?
Thanks
Yumin
On 8/15/2013 8:35 AM, Yumin Qi wrote:
> Hi,
>
> Can I have your review for this small changes?
> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>
>
> This is for a enhancement to add head/tail message to the logging
> files to assist reading GC output.
> 1. modified prompt message if invalid arguments used for log rotating;
> 2. add time and file name message to log file head/tail.
> 3. for easily identify which log file is current, use file name
> like .n.current, after it reaches maximum size, rename it to
> .n
> On Windows, there is no F_OK (existing test) definition, F_OK
> is defined as "0" and for _access of VC++, it just describes:
>
> modevalue
>
>
>
> Checks file for
>
> 00
>
>
>
> Existence only
>
> 02
>
>
>
> Write-only
>
> 04
>
>
>
> Read-only
>
> 06
>
>
>
> Read and write
>
>
> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
> The definition are consistent with unistd.h.
>
> Test: JPRT and jtreg.
>
> Thanks
> Yumin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/f978ee1a/attachment.html
From david.r.chase at oracle.com Fri Aug 16 13:05:02 2013
From: david.r.chase at oracle.com (David Chase)
Date: Fri, 16 Aug 2013 16:05:02 -0400
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To: <6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
<6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
Message-ID: <858DD708-AA28-4997-BA3C-65BE5248B635@oracle.com>
How does this look?
void fieldDescriptor::reinitialize(InstanceKlass* ik, int index) {
if (_cp.is_null() || field_holder() != ik) {
_cp = constantPoolHandle(Thread::current(), ik->constants());
// _cp should now reference ik's constant pool; i.e., ik is now field_holder.
assert(field_holder() == ik, "must be already initialized to this class");
}
> The fd::initialize call resets a fd previously pointing at a different field to a new field.
> This requires a shift in the field_holder.
> The call to initialize is fieldStreams.hpp, where a fd embedded in the stream object gets reused for successive fields.
> So I think this assert measures something meaningful.
> Perhaps the method should be named "reinitialize" or "reset" to emphasize the multiple use.
>
> ? John
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 163 bytes
Desc: Message signed with OpenPGP using GPGMail
Url : http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/a5754560/signature.asc
From alejandro.murillo at oracle.com Fri Aug 16 14:19:54 2013
From: alejandro.murillo at oracle.com (alejandro.murillo at oracle.com)
Date: Fri, 16 Aug 2013 21:19:54 +0000
Subject: hg: hsx/hotspot-emb/hotspot: 31 new changesets
Message-ID: <20130816212109.D0D3F48951@hg.openjdk.java.net>
Changeset: 0bbd1c775bef
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/0bbd1c775bef
Added tag jdk8-b103 for changeset 6f9be7f87b96
! .hgtags
Changeset: ca0165daa6ec
Author: sspitsyn
Date: 2013-08-06 16:33 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/ca0165daa6ec
7187554: JSR 292: JVMTI PopFrame needs to handle appendix arguments
Summary: Restore the appendix argument after PopFrame() call
Reviewed-by: twisti, coleenp
Contributed-by: serguei.spitsyn at oracle.com
! src/cpu/sparc/vm/templateInterpreter_sparc.cpp
! src/cpu/x86/vm/templateInterpreter_x86_32.cpp
! src/cpu/x86/vm/templateInterpreter_x86_64.cpp
! src/share/vm/classfile/javaClasses.cpp
! src/share/vm/classfile/javaClasses.hpp
! src/share/vm/classfile/systemDictionary.hpp
! src/share/vm/classfile/vmSymbols.hpp
! src/share/vm/interpreter/interpreterRuntime.cpp
! src/share/vm/interpreter/interpreterRuntime.hpp
Changeset: c54a3122f9c8
Author: omajid
Date: 2013-08-06 12:28 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/c54a3122f9c8
8022188: Make zero compile after 8016131 and 8016697
Reviewed-by: dholmes, twisti
! src/cpu/zero/vm/entryFrame_zero.hpp
! src/cpu/zero/vm/frame_zero.inline.hpp
! src/cpu/zero/vm/stubGenerator_zero.cpp
! src/os_cpu/linux_zero/vm/os_linux_zero.cpp
Changeset: 196aa14f9f29
Author: dholmes
Date: 2013-08-06 21:06 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/196aa14f9f29
Merge
Changeset: 195ff07bc7f6
Author: dsamersoff
Date: 2013-08-07 19:02 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/195ff07bc7f6
8021771: warning stat64 is deprecated - when building on OSX 10.7.5
Summary: stat64 have to be replaced with stat
Reviewed-by: dholmes, kmo
Contributed-by: rednaxelafx at gmail.com
! src/os/bsd/vm/attachListener_bsd.cpp
Changeset: 31f3b1e1c5e5
Author: dcubed
Date: 2013-08-08 09:21 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/31f3b1e1c5e5
8016601: Unable to build hsx24 on Windows using project creator and Visual Studio
Summary: ProjectCreator tool is modified to support two new options: '-relativeAltSrcInclude' and '-altRelativeInclude' which prevents IDE linker errors. Also fixed some cmd line build linker warnings. Misc cleanups.
Reviewed-by: rdurbin, coleenp
! make/windows/create.bat
! make/windows/create_obj_files.sh
! make/windows/makefiles/projectcreator.make
! make/windows/makefiles/trace.make
! make/windows/makefiles/vm.make
! src/share/tools/ProjectCreator/BuildConfig.java
! src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
! src/share/tools/ProjectCreator/ProjectCreator.java
! src/share/tools/ProjectCreator/WinGammaPlatform.java
! src/share/tools/ProjectCreator/WinGammaPlatformVC10.java
Changeset: c661fa2e5189
Author: iklam
Date: 2013-08-08 14:45 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/c661fa2e5189
8022093: syntax error near "umpiconninfo_t" -- when building on Solaris 10
Summary: Added extra help message in make/solaris/makefiles/dtrace.make
Reviewed-by: dholmes, sspitsyn
! make/solaris/makefiles/dtrace.make
Changeset: 57ac7245594c
Author: minqi
Date: 2013-08-08 15:19 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/57ac7245594c
8019583: [TESTBUG] runtime/7107135 always passes
Summary: If java test return none zero, the value will be override by 'if' statement, the exit value will always '0' and pass. Fix by recording the result in a variable.
Reviewed-by: coleenp, dholmes, iklam
Contributed-by: yumin.qi at oracle.com
! test/runtime/7107135/Test7107135.sh
Changeset: 6222a021d582
Author: minqi
Date: 2013-08-08 20:13 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/6222a021d582
Merge
Changeset: 98aa538fd97e
Author: mikael
Date: 2013-08-09 09:51 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/98aa538fd97e
8022452: Hotspot needs to know about Windows 8.1 and Windows Server 2012 R2
Summary: Add support for recognizing Windows 8.1 and Server 2012 R2 and minor cleanup
Reviewed-by: coleenp, dsamersoff
! src/os/windows/vm/os_windows.cpp
Changeset: ed7c17e7d45b
Author: dcubed
Date: 2013-08-09 13:19 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/ed7c17e7d45b
Merge
Changeset: 7b03590c334b
Author: dcubed
Date: 2013-08-09 15:36 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/7b03590c334b
Merge
Changeset: bd0e82136b03
Author: iklam
Date: 2013-08-10 10:56 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/bd0e82136b03
8022740: Visual 2008 IDE build is broken
Summary: Fixed project generation code, and added warning to upgrade to VS 2008 SP1.
Reviewed-by: dcubed, ccheung
! make/windows/projectfiles/common/Makefile
! src/share/tools/ProjectCreator/FileTreeCreator.java
! src/share/tools/ProjectCreator/FileTreeCreatorVC10.java
! src/share/tools/ProjectCreator/FileTreeCreatorVC7.java
! src/share/tools/ProjectCreator/WinGammaPlatformVC7.java
Changeset: 85147f28faba
Author: coleenp
Date: 2013-08-12 17:24 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/85147f28faba
8009728: nsk/jvmti/AttachOnDemand/attach030 crashes on Win32
Summary: ActiveMethodOopsCache was used to keep track of old versions of some methods that are cached in Universe but is buggy with permgen removal and not needed anymore
Reviewed-by: sspitsyn, dcubed, mseledtsov
! src/share/vm/memory/universe.cpp
! src/share/vm/memory/universe.hpp
! src/share/vm/oops/method.cpp
! src/share/vm/prims/jvmtiRedefineClasses.cpp
! test/runtime/RedefineObject/Agent.java
! test/runtime/RedefineObject/TestRedefineObject.java
+ test/runtime/RedefineObject/WalkThroughInvoke.java
Changeset: d1034bd8cefc
Author: adlertz
Date: 2013-08-07 17:56 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/d1034bd8cefc
8022284: Hide internal data structure in PhaseCFG
Summary: Hide private node to block mapping using public interface
Reviewed-by: kvn, roland
! agent/src/share/classes/sun/jvm/hotspot/opto/PhaseCFG.java
! src/share/vm/opto/block.cpp
! src/share/vm/opto/block.hpp
! src/share/vm/opto/buildOopMap.cpp
! src/share/vm/opto/chaitin.cpp
! src/share/vm/opto/coalesce.cpp
! src/share/vm/opto/compile.cpp
! src/share/vm/opto/domgraph.cpp
! src/share/vm/opto/gcm.cpp
! src/share/vm/opto/idealGraphPrinter.cpp
! src/share/vm/opto/ifg.cpp
! src/share/vm/opto/lcm.cpp
! src/share/vm/opto/live.cpp
! src/share/vm/opto/node.hpp
! src/share/vm/opto/output.cpp
! src/share/vm/opto/output.hpp
! src/share/vm/opto/postaloc.cpp
! src/share/vm/opto/reg_split.cpp
! src/share/vm/runtime/vmStructs.cpp
Changeset: ce8969c36762
Author: adlertz
Date: 2013-08-07 18:04 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/ce8969c36762
8022475: Remove unneeded ad-files
Summary: Remove .ad files that are not used
Reviewed-by: kvn
! make/bsd/makefiles/adlc.make
! make/linux/makefiles/adlc.make
! make/solaris/makefiles/adlc.make
! make/windows/makefiles/adlc.make
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 5394ec69f112
Author: rbackman
Date: 2013-08-09 18:05 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/5394ec69f112
Merge
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 11237ee74aae
Author: iignatyev
Date: 2013-08-10 10:01 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/11237ee74aae
8019915: whitebox testClearMethodStateTest fails with tiered on sparc
Summary: 'compileonly' directive has beens added to each 'compiler/whitebox' test
Reviewed-by: kvn
! test/compiler/whitebox/ClearMethodStateTest.java
! test/compiler/whitebox/CompilerWhiteBoxTest.java
! test/compiler/whitebox/DeoptimizeAllTest.java
! test/compiler/whitebox/DeoptimizeMethodTest.java
! test/compiler/whitebox/EnqueueMethodForCompilationTest.java
! test/compiler/whitebox/IsMethodCompilableTest.java
! test/compiler/whitebox/MakeMethodNotCompilableTest.java
! test/compiler/whitebox/SetDontInlineMethodTest.java
! test/compiler/whitebox/SetForceInlineMethodTest.java
Changeset: bcc4f6f54d83
Author: kvn
Date: 2013-08-14 10:21 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/bcc4f6f54d83
8022993: Convert MAX_UNROLL constant to LoopMaxUnroll C2 flag
Summary: Replace MAX_UNROLL constant with new C2 LoopMaxUnroll flag.
Reviewed-by: roland
! src/share/vm/opto/c2_globals.hpp
! src/share/vm/opto/loopTransform.cpp
Changeset: 56b94e55267a
Author: rbackman
Date: 2013-08-15 15:26 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/56b94e55267a
Merge
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 9766f73e770d
Author: stefank
Date: 2013-05-31 14:32 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/9766f73e770d
8022880: False sharing between PSPromotionManager instances
Summary: Pad the PSPromotionManager instances in the manager array.
Reviewed-by: brutisso, jmasa
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
! src/share/vm/gc_implementation/parNew/parNewGeneration.hpp
! src/share/vm/gc_implementation/parNew/parOopClosures.hpp
! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp
! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp
! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp
+ src/share/vm/memory/padded.hpp
+ src/share/vm/memory/padded.inline.hpp
! src/share/vm/utilities/debug.hpp
! src/share/vm/utilities/globalDefinitions.hpp
Changeset: 330dfb0476f4
Author: brutisso
Date: 2013-08-14 09:02 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/330dfb0476f4
8022800: Use specific generations rather than generation iteration
Reviewed-by: jmasa, ehelin
! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
! src/share/vm/memory/cardTableRS.cpp
! src/share/vm/memory/cardTableRS.hpp
! src/share/vm/memory/defNewGeneration.cpp
! src/share/vm/memory/genCollectedHeap.cpp
! src/share/vm/memory/genCollectedHeap.hpp
! src/share/vm/memory/genMarkSweep.cpp
! src/share/vm/memory/genRemSet.hpp
Changeset: 3f22cbf5275d
Author: brutisso
Date: 2013-08-14 10:55 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/3f22cbf5275d
Merge
Changeset: 5d9995d16b26
Author: ehelin
Date: 2013-08-14 13:49 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/5d9995d16b26
8022899: SunStudio compiler can not handle EXCEPTION_MARK and inlining
Reviewed-by: coleenp, mgerdin
! src/share/vm/utilities/exceptions.hpp
Changeset: bd902affe102
Author: brutisso
Date: 2013-08-15 10:05 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/bd902affe102
8023021: Unnecessary clearing of the card table introduced by the fix for JDK-8023013
Reviewed-by: stefank, ehelin
! src/share/vm/memory/cardTableRS.cpp
! src/share/vm/memory/cardTableRS.hpp
! src/share/vm/memory/genMarkSweep.cpp
! src/share/vm/memory/genRemSet.hpp
Changeset: 274ce305e5b9
Author: ehelin
Date: 2013-08-13 18:16 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/274ce305e5b9
8020598: ObjectCountEventSender::send needs INCLUDE_TRACE guards when building OpenJDK with INCLUDE_TRACE=0
Reviewed-by: stefank, brutisso, sjohanss
! src/share/vm/gc_implementation/shared/objectCountEventSender.cpp
Changeset: 33d39b75663f
Author: ehelin
Date: 2013-08-15 06:20 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/33d39b75663f
Merge
Changeset: 5a62937e55b3
Author: brutisso
Date: 2013-08-16 09:02 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/5a62937e55b3
Merge
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 580430d131cc
Author: amurillo
Date: 2013-08-16 04:14 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/580430d131cc
Merge
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 104743074675
Author: amurillo
Date: 2013-08-16 04:14 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/104743074675
Added tag hs25-b46 for changeset 580430d131cc
! .hgtags
Changeset: 37165c3618a3
Author: amurillo
Date: 2013-08-16 04:24 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-emb/hotspot/rev/37165c3618a3
8023152: new hotspot build - hs25-b47
Reviewed-by: jcoomes
! make/hotspot_version
From yumin.qi at oracle.com Fri Aug 16 16:13:33 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Fri, 16 Aug 2013 16:13:33 -0700
Subject: RFR: 8023188: Unsafe double store on bsd is broken
Message-ID: <520EB21D.1030207@oracle.com>
Hi,
Please have a review of this small change which is a typo mistake
(but lead to this bug) in fix of
8016538: volatile double access via Unsafe.cpp is not atomic
http://cr.openjdk.java.net/~minqi/8023188/webrev00
Tested JPRT and java-concurrency-torture.jar (the original testing case)
Thanks
Yumin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/508ef8d3/attachment.html
From daniel.daugherty at oracle.com Fri Aug 16 16:51:18 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Fri, 16 Aug 2013 17:51:18 -0600
Subject: RFR: 8023188: Unsafe double store on bsd is broken
In-Reply-To: <520EB21D.1030207@oracle.com>
References: <520EB21D.1030207@oracle.com>
Message-ID: <520EBAF6.6020107@oracle.com>
Thumbs up!
Please make sure you hear back from your original reviewers for this fix:
8016538: volatile double access via Unsafe.cpp is not atomic
Summary: volatile jdouble load/store is not atomic, fix by using of
existing volatile jlong operations which are atomic for jdouble.
Reviewed-by: kvn, vladidan, jrose
Contributed-by: david.holmes at oracle.com
Just to make sure that they are on board here.
Dan
On 8/16/13 5:13 PM, Yumin Qi wrote:
> Hi,
>
> Please have a review of this small change which is a typo mistake
> (but lead to this bug) in fix of
> 8016538: volatile double access via Unsafe.cpp is not atomic
>
> http://cr.openjdk.java.net/~minqi/8023188/webrev00
>
>
> Tested JPRT and java-concurrency-torture.jar (the original testing
> case)
>
> Thanks
> Yumin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/c6613714/attachment-0001.html
From yumin.qi at oracle.com Fri Aug 16 17:24:34 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Fri, 16 Aug 2013 17:24:34 -0700
Subject: RFR: 8023188: Unsafe double store on bsd is broken
In-Reply-To: <520EBAF6.6020107@oracle.com>
References: <520EB21D.1030207@oracle.com> <520EBAF6.6020107@oracle.com>
Message-ID: <520EC2C2.40708@oracle.com>
Thanks Dan for the review.
Thanks
Yumin
On 8/16/2013 4:51 PM, Daniel D. Daugherty wrote:
> Thumbs up!
>
> Please make sure you hear back from your original reviewers for this fix:
>
> 8016538: volatile double access via Unsafe.cpp is not atomic
> Summary: volatile jdouble load/store is not atomic, fix by using of
> existing volatile jlong operations which are atomic for jdouble.
> Reviewed-by: kvn, vladidan, jrose
> Contributed-by: david.holmes at oracle.com
>
> Just to make sure that they are on board here.
>
> Dan
>
>
> On 8/16/13 5:13 PM, Yumin Qi wrote:
>> Hi,
>>
>> Please have a review of this small change which is a typo mistake
>> (but lead to this bug) in fix of
>> 8016538: volatile double access via Unsafe.cpp is not atomic
>>
>> http://cr.openjdk.java.net/~minqi/8023188/webrev00
>>
>>
>> Tested JPRT and java-concurrency-torture.jar (the original testing
>> case)
>>
>> Thanks
>> Yumin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/a164a73e/attachment.html
From daniel.daugherty at oracle.com Fri Aug 16 18:12:56 2013
From: daniel.daugherty at oracle.com (daniel.daugherty at oracle.com)
Date: Sat, 17 Aug 2013 01:12:56 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 19 new changesets
Message-ID: <20130817011334.73A9648958@hg.openjdk.java.net>
Changeset: d1034bd8cefc
Author: adlertz
Date: 2013-08-07 17:56 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/d1034bd8cefc
8022284: Hide internal data structure in PhaseCFG
Summary: Hide private node to block mapping using public interface
Reviewed-by: kvn, roland
! agent/src/share/classes/sun/jvm/hotspot/opto/PhaseCFG.java
! src/share/vm/opto/block.cpp
! src/share/vm/opto/block.hpp
! src/share/vm/opto/buildOopMap.cpp
! src/share/vm/opto/chaitin.cpp
! src/share/vm/opto/coalesce.cpp
! src/share/vm/opto/compile.cpp
! src/share/vm/opto/domgraph.cpp
! src/share/vm/opto/gcm.cpp
! src/share/vm/opto/idealGraphPrinter.cpp
! src/share/vm/opto/ifg.cpp
! src/share/vm/opto/lcm.cpp
! src/share/vm/opto/live.cpp
! src/share/vm/opto/node.hpp
! src/share/vm/opto/output.cpp
! src/share/vm/opto/output.hpp
! src/share/vm/opto/postaloc.cpp
! src/share/vm/opto/reg_split.cpp
! src/share/vm/runtime/vmStructs.cpp
Changeset: ce8969c36762
Author: adlertz
Date: 2013-08-07 18:04 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/ce8969c36762
8022475: Remove unneeded ad-files
Summary: Remove .ad files that are not used
Reviewed-by: kvn
! make/bsd/makefiles/adlc.make
! make/linux/makefiles/adlc.make
! make/solaris/makefiles/adlc.make
! make/windows/makefiles/adlc.make
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 5394ec69f112
Author: rbackman
Date: 2013-08-09 18:05 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/5394ec69f112
Merge
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 11237ee74aae
Author: iignatyev
Date: 2013-08-10 10:01 +0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/11237ee74aae
8019915: whitebox testClearMethodStateTest fails with tiered on sparc
Summary: 'compileonly' directive has beens added to each 'compiler/whitebox' test
Reviewed-by: kvn
! test/compiler/whitebox/ClearMethodStateTest.java
! test/compiler/whitebox/CompilerWhiteBoxTest.java
! test/compiler/whitebox/DeoptimizeAllTest.java
! test/compiler/whitebox/DeoptimizeMethodTest.java
! test/compiler/whitebox/EnqueueMethodForCompilationTest.java
! test/compiler/whitebox/IsMethodCompilableTest.java
! test/compiler/whitebox/MakeMethodNotCompilableTest.java
! test/compiler/whitebox/SetDontInlineMethodTest.java
! test/compiler/whitebox/SetForceInlineMethodTest.java
Changeset: bcc4f6f54d83
Author: kvn
Date: 2013-08-14 10:21 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/bcc4f6f54d83
8022993: Convert MAX_UNROLL constant to LoopMaxUnroll C2 flag
Summary: Replace MAX_UNROLL constant with new C2 LoopMaxUnroll flag.
Reviewed-by: roland
! src/share/vm/opto/c2_globals.hpp
! src/share/vm/opto/loopTransform.cpp
Changeset: 56b94e55267a
Author: rbackman
Date: 2013-08-15 15:26 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/56b94e55267a
Merge
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 9766f73e770d
Author: stefank
Date: 2013-05-31 14:32 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/9766f73e770d
8022880: False sharing between PSPromotionManager instances
Summary: Pad the PSPromotionManager instances in the manager array.
Reviewed-by: brutisso, jmasa
! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
! src/share/vm/gc_implementation/parNew/parNewGeneration.hpp
! src/share/vm/gc_implementation/parNew/parOopClosures.hpp
! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp
! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp
! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp
+ src/share/vm/memory/padded.hpp
+ src/share/vm/memory/padded.inline.hpp
! src/share/vm/utilities/debug.hpp
! src/share/vm/utilities/globalDefinitions.hpp
Changeset: 330dfb0476f4
Author: brutisso
Date: 2013-08-14 09:02 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/330dfb0476f4
8022800: Use specific generations rather than generation iteration
Reviewed-by: jmasa, ehelin
! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
! src/share/vm/memory/cardTableRS.cpp
! src/share/vm/memory/cardTableRS.hpp
! src/share/vm/memory/defNewGeneration.cpp
! src/share/vm/memory/genCollectedHeap.cpp
! src/share/vm/memory/genCollectedHeap.hpp
! src/share/vm/memory/genMarkSweep.cpp
! src/share/vm/memory/genRemSet.hpp
Changeset: 3f22cbf5275d
Author: brutisso
Date: 2013-08-14 10:55 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/3f22cbf5275d
Merge
Changeset: 5d9995d16b26
Author: ehelin
Date: 2013-08-14 13:49 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/5d9995d16b26
8022899: SunStudio compiler can not handle EXCEPTION_MARK and inlining
Reviewed-by: coleenp, mgerdin
! src/share/vm/utilities/exceptions.hpp
Changeset: bd902affe102
Author: brutisso
Date: 2013-08-15 10:05 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/bd902affe102
8023021: Unnecessary clearing of the card table introduced by the fix for JDK-8023013
Reviewed-by: stefank, ehelin
! src/share/vm/memory/cardTableRS.cpp
! src/share/vm/memory/cardTableRS.hpp
! src/share/vm/memory/genMarkSweep.cpp
! src/share/vm/memory/genRemSet.hpp
Changeset: 274ce305e5b9
Author: ehelin
Date: 2013-08-13 18:16 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/274ce305e5b9
8020598: ObjectCountEventSender::send needs INCLUDE_TRACE guards when building OpenJDK with INCLUDE_TRACE=0
Reviewed-by: stefank, brutisso, sjohanss
! src/share/vm/gc_implementation/shared/objectCountEventSender.cpp
Changeset: 33d39b75663f
Author: ehelin
Date: 2013-08-15 06:20 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/33d39b75663f
Merge
Changeset: 5a62937e55b3
Author: brutisso
Date: 2013-08-16 09:02 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/5a62937e55b3
Merge
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 0bbd1c775bef
Author: cl
Date: 2013-08-15 09:25 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/0bbd1c775bef
Added tag jdk8-b103 for changeset 6f9be7f87b96
! .hgtags
Changeset: 580430d131cc
Author: amurillo
Date: 2013-08-16 04:14 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/580430d131cc
Merge
- src/os_cpu/bsd_x86/vm/bsd_x86_32.ad
- src/os_cpu/bsd_x86/vm/bsd_x86_64.ad
- src/os_cpu/linux_x86/vm/linux_x86_32.ad
- src/os_cpu/linux_x86/vm/linux_x86_64.ad
- src/os_cpu/solaris_sparc/vm/solaris_sparc.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_32.ad
- src/os_cpu/solaris_x86/vm/solaris_x86_64.ad
- src/os_cpu/windows_x86/vm/windows_x86_32.ad
- src/os_cpu/windows_x86/vm/windows_x86_64.ad
Changeset: 104743074675
Author: amurillo
Date: 2013-08-16 04:14 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/104743074675
Added tag hs25-b46 for changeset 580430d131cc
! .hgtags
Changeset: 37165c3618a3
Author: amurillo
Date: 2013-08-16 04:24 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/37165c3618a3
8023152: new hotspot build - hs25-b47
Reviewed-by: jcoomes
! make/hotspot_version
Changeset: e5003079dfa5
Author: dcubed
Date: 2013-08-16 10:06 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/e5003079dfa5
Merge
! src/share/vm/utilities/globalDefinitions.hpp
From calvin.cheung at oracle.com Fri Aug 16 18:26:25 2013
From: calvin.cheung at oracle.com (Calvin Cheung)
Date: Fri, 16 Aug 2013 18:26:25 -0700
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <520CF52B.6050000@oracle.com>
References: <520CF52B.6050000@oracle.com>
Message-ID: <520ED141.6050108@oracle.com>
Couple of minor comments in ostream.cpp:
1)
479 char time_msg[256];
480 char time_str[64];
481 char renamed_file_name[256];
I think you can replace 256 with MAX_PATH. However, we define MAX_PATH
as (2 * K) in unix platforms. So it maybe too large of a buffer for this
purpose. On windows, I think it is defined as 256.
In the same file, there's
static const int buffer_length = 32;
in outputStream::date_stamp().
I'm thinking you can have a #define for the size for time_str and use
the same #define in
outputStream::date_stamp().
2)
int jio_snprintf(char *str, size_t count, const char *fmt, ...)
The return value of jio_snprintf() isn't checked.
It could return -1 from calling _vsnprintf(). However, I don't see the
return status being check in the existing code. So I'm not sure if it is
a must check.
3)
516 if (access(renamed_file_name, NOT_WINDOWS(F_OK) WINDOWS_ONLY(0)) ==
0) {
543 if (access(renamed_file_name, NOT_WINDOWS(F_OK) WINDOWS_ONLY(0)) == 0) {
You can use ERROR_SUCCESS instead of 0 for the WINDOWS_ONLY part.
Calvin
On 8/15/2013 8:35 AM, Yumin Qi wrote:
> Hi,
>
> Can I have your review for this small changes?
> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>
>
> This is for a enhancement to add head/tail message to the logging
> files to assist reading GC output.
> 1. modified prompt message if invalid arguments used for log rotating;
> 2. add time and file name message to log file head/tail.
> 3. for easily identify which log file is current, use file name
> like .n.current, after it reaches maximum size, rename it to
> .n
> On Windows, there is no F_OK (existing test) definition, F_OK
> is defined as "0" and for _access of VC++, it just describes:
>
> modevalue
>
>
>
> Checks file for
>
> 00
>
>
>
> Existence only
>
> 02
>
>
>
> Write-only
>
> 04
>
>
>
> Read-only
>
> 06
>
>
>
> Read and write
>
>
> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
> The definition are consistent with unistd.h.
>
> Test: JPRT and jtreg.
>
> Thanks
> Yumin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/df7c27b9/attachment-0001.html
From yumin.qi at oracle.com Fri Aug 16 19:39:13 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Fri, 16 Aug 2013 19:39:13 -0700
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <520ED141.6050108@oracle.com>
References: <520CF52B.6050000@oracle.com> <520ED141.6050108@oracle.com>
Message-ID: <520EE251.5070506@oracle.com>
Calvin,
Thanks for the review,
See embedded.
On 8/16/2013 6:26 PM, Calvin Cheung wrote:
> Couple of minor comments in ostream.cpp:
>
> 1)
> 479 char time_msg[256];
> 480 char time_str[64];
> 481 char renamed_file_name[256];
>
> I think you can replace 256 with MAX_PATH. However, we define MAX_PATH
> as (2 * K) in unix platforms. So it maybe too large of a buffer for
> this purpose. On windows, I think it is defined as 256.
>
> In the same file, there's
> static const int buffer_length = 32;
> in outputStream::date_stamp().
>
> I'm thinking you can have a #define for the size for time_str and use
> the same #define in
> outputStream::date_stamp().
>
I considered using MAX_PATH but it is too big for this purpose so take
current solution. For time string we may use buffer_length, I will
change that.
> 2)
> int jio_snprintf(char *str, size_t count, const char *fmt, ...)
>
> The return value of jio_snprintf() isn't checked.
> It could return -1 from calling _vsnprintf(). However, I don't see the
> return status being check in the existing code. So I'm not sure if it
> is a must check.
>
This return value only indicates the writing of chars finished and
number of chars is less or equals to count (buffer not over flowed). If
copy up to count and string truncated it is still OK, the buffer will
contain partial strings but not all. So usually we don't check its
return value.
> 3)
>
> 516 if (access(renamed_file_name, NOT_WINDOWS(F_OK) WINDOWS_ONLY(0))
> == 0) {
>
> 543 if (access(renamed_file_name, NOT_WINDOWS(F_OK) WINDOWS_ONLY(0))
> == 0) {
>
> You can use ERROR_SUCCESS instead of 0 for the WINDOWS_ONLY part.
>
Using ERROR_SUCCESS will mislead reading code since it is usually used
for a return value from Windows API call. In fact there is definitions
in io.h of Visual C++:
/* File attribute constants for _findfirst() */
#define _A_NORMAL 0x00 /* Normal file - No read/write
restrictions */
#define _A_RDONLY 0x01 /* Read only file */
#define _A_HIDDEN 0x02 /* Hidden file */
#define _A_SYSTEM 0x04 /* System file */
#define _A_SUBDIR 0x10 /* Subdirectory */
#define _A_ARCH 0x20 /* Archive file */
But I would like to use '0' here to not make the symbol complicate for
reading.
Thanks
Yumin
> Calvin
>
> On 8/15/2013 8:35 AM, Yumin Qi wrote:
>> Hi,
>>
>> Can I have your review for this small changes?
>> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>>
>>
>> This is for a enhancement to add head/tail message to the logging
>> files to assist reading GC output.
>> 1. modified prompt message if invalid arguments used for log rotating;
>> 2. add time and file name message to log file head/tail.
>> 3. for easily identify which log file is current, use file name
>> like .n.current, after it reaches maximum size, rename it
>> to .n
>> On Windows, there is no F_OK (existing test) definition, F_OK
>> is defined as "0" and for _access of VC++, it just describes:
>>
>> modevalue
>>
>>
>>
>> Checks file for
>>
>> 00
>>
>>
>>
>> Existence only
>>
>> 02
>>
>>
>>
>> Write-only
>>
>> 04
>>
>>
>>
>> Read-only
>>
>> 06
>>
>>
>>
>> Read and write
>>
>>
>> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
>> The definition are consistent with unistd.h.
>>
>> Test: JPRT and jtreg.
>>
>> Thanks
>> Yumin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/3314ee0c/attachment.html
From john.r.rose at oracle.com Fri Aug 16 22:41:48 2013
From: john.r.rose at oracle.com (John Rose)
Date: Fri, 16 Aug 2013 22:41:48 -0700
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To: <858DD708-AA28-4997-BA3C-65BE5248B635@oracle.com>
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
<6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
<858DD708-AA28-4997-BA3C-65BE5248B635@oracle.com>
Message-ID: <94224102-AC0E-42F3-BF9D-79DF904FD53D@oracle.com>
On Aug 16, 2013, at 1:05 PM, David Chase wrote:
> How does this look?
>
> void fieldDescriptor::reinitialize(InstanceKlass* ik, int index) {
> if (_cp.is_null() || field_holder() != ik) {
> _cp = constantPoolHandle(Thread::current(), ik->constants());
> // _cp should now reference ik's constant pool; i.e., ik is now field_holder.
> assert(field_holder() == ik, "must be already initialized to this class");
Good.
As a side note, this bit of code (and many others) assume that there is a 1-1 correspondence between constant pools and instance klasses.
I hope we can change this some day; the tracking bug is http://bugs.sun.com/view_bug.do?bug_id=6711913
? John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/ec507de3/attachment.html
From david.holmes at oracle.com Sun Aug 18 01:12:00 2013
From: david.holmes at oracle.com (David Holmes)
Date: Sun, 18 Aug 2013 18:12:00 +1000
Subject: RFR: 8023188: Unsafe double store on bsd is broken
In-Reply-To: <520EBAF6.6020107@oracle.com>
References: <520EB21D.1030207@oracle.com> <520EBAF6.6020107@oracle.com>
Message-ID: <521081D0.10609@oracle.com>
On 17/08/2013 9:51 AM, Daniel D. Daugherty wrote:
> Thumbs up!
Ditto.
> Please make sure you hear back from your original reviewers for this fix:
>
> 8016538: volatile double access via Unsafe.cpp is not atomic
> Summary: volatile jdouble load/store is not atomic, fix by using of
> existing volatile jlong operations which are atomic for jdouble.
> Reviewed-by: kvn, vladidan, jrose
> Contributed-by: david.holmes at oracle.com
>
> Just to make sure that they are on board here.
There's really nothing to be "onboard" with. The cast to double should
have been a cast to long - simple typo. The surprising thing is that the
OSX compiler didn't complain about it.
Cheers,
David
> Dan
>
>
> On 8/16/13 5:13 PM, Yumin Qi wrote:
>> Hi,
>>
>> Please have a review of this small change which is a typo mistake
>> (but lead to this bug) in fix of
>> 8016538: volatile double access via Unsafe.cpp is not atomic
>>
>> http://cr.openjdk.java.net/~minqi/8023188/webrev00
>>
>>
>> Tested JPRT and java-concurrency-torture.jar (the original testing
>> case)
>>
>> Thanks
>> Yumin
>
From david.r.chase at oracle.com Sun Aug 18 15:24:14 2013
From: david.r.chase at oracle.com (David Chase)
Date: Sun, 18 Aug 2013 18:24:14 -0400
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To: <94224102-AC0E-42F3-BF9D-79DF904FD53D@oracle.com>
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
<6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
<858DD708-AA28-4997-BA3C-65BE5248B635@oracle.com>
<94224102-AC0E-42F3-BF9D-79DF904FD53D@oracle.com>
Message-ID:
A question about err_msg_res -- should that generally be used in place of err_msg,
or only in certain source directories, and if so, which ones?
On 2013-08-17, at 1:41 AM, John Rose wrote:
> On Aug 16, 2013, at 1:05 PM, David Chase wrote:
>
>> How does this look?
>>
>> void fieldDescriptor::reinitialize(InstanceKlass* ik, int index) {
>> if (_cp.is_null() || field_holder() != ik) {
>> _cp = constantPoolHandle(Thread::current(), ik->constants());
>> // _cp should now reference ik's constant pool; i.e., ik is now field_holder.
>> assert(field_holder() == ik, "must be already initialized to this class");
>
> Good.
>
> As a side note, this bit of code (and many others) assume that there is a 1-1 correspondence between constant pools and instance klasses.
>
> I hope we can change this some day; the tracking bug is http://bugs.sun.com/view_bug.do?bug_id=6711913
>
> ? John
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 163 bytes
Desc: Message signed with OpenPGP using GPGMail
Url : http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130818/d413a3bf/signature.asc
From suenaga.yasumasa at lab.ntt.co.jp Sun Aug 18 17:34:08 2013
From: suenaga.yasumasa at lab.ntt.co.jp (Yasumasa Suenaga)
Date: Mon, 19 Aug 2013 09:34:08 +0900
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <520CF52B.6050000@oracle.com>
References: <520CF52B.6050000@oracle.com>
Message-ID: <52116800.3040901@lab.ntt.co.jp>
Hi Yumin,
I've posted a RFE and patch for adding timestamp, PID, etc to log filename.
JDK-6950794 : Make the GC log file name parameterized
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6950794
http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2012-July/004758.html
Your patch writes timestamp into logfile.
Howeverm, in production system, we may want to check log generation through
log filename. (e.g. ls command at Linux)
Could you check my patch?
Thanks,
Yasumasa
On 2013/08/16 0:35, Yumin Qi wrote:
> Hi,
>
> Can I have your review for this small changes?
> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>
> This is for a enhancement to add head/tail message to the logging files to assist reading GC output.
> 1. modified prompt message if invalid arguments used for log rotating;
> 2. add time and file name message to log file head/tail.
> 3. for easily identify which log file is current, use file name like .n.current, after it reaches maximum size, rename it to .n
> On Windows, there is no F_OK (existing test) definition, F_OK is defined as "0" and for _access of VC++, it just describes:
>
> modevalue
>
>
>
> Checks file for
>
> 00
>
>
>
> Existence only
>
> 02
>
>
>
> Write-only
>
> 04
>
>
>
> Read-only
>
> 06
>
>
>
> Read and write
>
>
> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
> The definition are consistent with unistd.h.
>
> Test: JPRT and jtreg.
>
> Thanks
> Yumin
From david.holmes at oracle.com Sun Aug 18 20:51:17 2013
From: david.holmes at oracle.com (David Holmes)
Date: Mon, 19 Aug 2013 13:51:17 +1000
Subject: RFR (S): 8022683 : JNI GetStringUTFChars should return NULL on
allocation failure not abort the VM
In-Reply-To: <520E3B16.2040100@oracle.com>
References: <520E3B16.2040100@oracle.com>
Message-ID: <52119635.1050908@oracle.com>
Hi David,
On 17/08/2013 12:45 AM, David Simms wrote:
> Hello all,
>
> Need reviewers on a JDK8 fix for:
> http://bugs.sun.com/view_bug.do?bug_id=8022683
>
> Found the following functions need to return NULL as suggested by the
> JNI spec
> (http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html):
>
> * GetStringChars()
> * GetStringUTFChars()
> * GetArrayElements() family of array getters (same
> generating macro).
>
> Although the specification suggests OOME may be thrown by certain
> functions, the documentation on the aforementioned functions does not
> suggest "throws". So they return NULL now without aborting the JVM as
> before.
There is always come contention with the JNI spec as to whether the
intent is as defined by the original JNI spec book, or whether it is
reflected in what is considered the "official spec". :)
> It was assumed the meaning of "isCopy" is undefined given a NULL result,
> in keeping with the rest of jni.cpp.
Even so I think it preferable to not set it unless the operation succeeds.
> Also discovered allocation.hpp macros missing proper argument bracketing
> (e.g. size passed in NEW_C_HEAP_ARRAY_RETURN_NULL()), fixed them up
> since I was there (and they caused trouble).
I can only see size causing a problem because it is used in an
expression. The rest seems somewhat overkill.
> Webrev:
>
> http://cr.openjdk.java.net/~dsimms/8022683/
>
One concern I have is in how the dtrace probes will handle things if
buf/result is NULL?
Thanks,
David
> Testing:
>
> Attached "unit test" to bug, naive test program to trigger OOM. It is
> not suitable for automated testing. Ideally require hooks into the JVM
> to simulate OOM during JNI calls.
>
> Cheers
> /David Simms
From david.holmes at oracle.com Sun Aug 18 21:04:09 2013
From: david.holmes at oracle.com (David Holmes)
Date: Mon, 19 Aug 2013 14:04:09 +1000
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To:
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
<6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
<858DD708-AA28-4997-BA3C-65BE5248B635@oracle.com>
<94224102-AC0E-42F3-BF9D-79DF904FD53D@oracle.com>
Message-ID: <52119939.50205@oracle.com>
On 19/08/2013 8:24 AM, David Chase wrote:
> A question about err_msg_res -- should that generally be used in place of err_msg,
> or only in certain source directories, and if so, which ones?
I can't answer that but be aware that there is an issue with using
err_msg_res as it is unclear as to whom has responsibility for ensuring
there is a ResourceMark on the stack. There's an open bug on that - 8022187.
David
> On 2013-08-17, at 1:41 AM, John Rose wrote:
>
>> On Aug 16, 2013, at 1:05 PM, David Chase wrote:
>>
>>> How does this look?
>>>
>>> void fieldDescriptor::reinitialize(InstanceKlass* ik, int index) {
>>> if (_cp.is_null() || field_holder() != ik) {
>>> _cp = constantPoolHandle(Thread::current(), ik->constants());
>>> // _cp should now reference ik's constant pool; i.e., ik is now field_holder.
>>> assert(field_holder() == ik, "must be already initialized to this class");
>>
>> Good.
>>
>> As a side note, this bit of code (and many others) assume that there is a 1-1 correspondence between constant pools and instance klasses.
>>
>> I hope we can change this some day; the tracking bug is http://bugs.sun.com/view_bug.do?bug_id=6711913
>>
>> ? John
>
From staffan.larsen at oracle.com Mon Aug 19 02:08:00 2013
From: staffan.larsen at oracle.com (Staffan Larsen)
Date: Mon, 19 Aug 2013 11:08:00 +0200
Subject: RFR: 8022808: Kitchensink hangs on macos
Message-ID:
We are using the mach thread port name as the os thread identifier on OS X. We get this value by calling mach_thread_self(), but we (I) didn't realize that this "port" resource is reference counted and mach_thread_self() increases the reference count, but we never call mach_port_deallocate() to decrease the reference count. This leads to a resource leak and eventually mach_thread_self() will return 0 to indicate that we are out of ports. Running out of ports causes the pthreads implementation (which is built on top of mach) to spin forever in some calls (most notably in this case pthread_kill()).
One way to fix this is to make sure we call mach_port_deallocate() for each call to mach_thread_self(). However, this adds extra complexity to the code and also makes it slower. Another solution is to ask pthreads for the mach port name that it already has. Pthreads provides the function pthread_mach_thread_np() for this purpose. In this case there is no need to deallocate the port since pthread_mach_thread_np() will not increase the reference count (and pthreads will call deallocate on the port once the thread terminates).
This fix has been verified by seeing that the number of ports the process has allocated does not increase in Activity Monitor (or top). It has also passed JPRT testing on all platforms.
webrev: http://cr.openjdk.java.net/~sla/8022808/webrev.00/
(there is not publicly visible bug for this)
Thanks,
/Staffan
From rickard.backman at oracle.com Mon Aug 19 03:15:45 2013
From: rickard.backman at oracle.com (=?iso-8859-1?Q?Rickard_B=E4ckman?=)
Date: Mon, 19 Aug 2013 12:15:45 +0200
Subject: RFR: 8022808: Kitchensink hangs on macos
In-Reply-To:
References:
Message-ID: <48AF30C9-72B0-42E9-9CD4-2BD79B323CCD@oracle.com>
Staffan,
the change looks good. (Not a Reviewer).
One thing to point out though, if we would leak ports the following line would get stuck in an infinite loop
(pthread_mach_thread_np calls _pthread_lookup_thread which calls _pthread_find_thread which will spin forever if the ports part of the pthread struct is zero - which it will be if we are out of ports).
mach_port_t thread_id = ::pthread_mach_thread_np(::pthread_self());
That makes the guarantee line redundant since it will never be reached.
Maybe it would be good if we had a better way of checking if we are out of resources.
/R
On Aug 19, 2013, at 11:08 AM, Staffan Larsen wrote:
> We are using the mach thread port name as the os thread identifier on OS X. We get this value by calling mach_thread_self(), but we (I) didn't realize that this "port" resource is reference counted and mach_thread_self() increases the reference count, but we never call mach_port_deallocate() to decrease the reference count. This leads to a resource leak and eventually mach_thread_self() will return 0 to indicate that we are out of ports. Running out of ports causes the pthreads implementation (which is built on top of mach) to spin forever in some calls (most notably in this case pthread_kill()).
>
> One way to fix this is to make sure we call mach_port_deallocate() for each call to mach_thread_self(). However, this adds extra complexity to the code and also makes it slower. Another solution is to ask pthreads for the mach port name that it already has. Pthreads provides the function pthread_mach_thread_np() for this purpose. In this case there is no need to deallocate the port since pthread_mach_thread_np() will not increase the reference count (and pthreads will call deallocate on the port once the thread terminates).
>
> This fix has been verified by seeing that the number of ports the process has allocated does not increase in Activity Monitor (or top). It has also passed JPRT testing on all platforms.
>
> webrev: http://cr.openjdk.java.net/~sla/8022808/webrev.00/
> (there is not publicly visible bug for this)
>
> Thanks,
> /Staffan
From staffan.larsen at oracle.com Mon Aug 19 04:03:21 2013
From: staffan.larsen at oracle.com (Staffan Larsen)
Date: Mon, 19 Aug 2013 13:03:21 +0200
Subject: RFR: 8022808: Kitchensink hangs on macos
In-Reply-To: <48AF30C9-72B0-42E9-9CD4-2BD79B323CCD@oracle.com>
References:
<48AF30C9-72B0-42E9-9CD4-2BD79B323CCD@oracle.com>
Message-ID: <7C1C69DB-A068-4124-88CE-46A7ABD412F7@oracle.com>
Yeah... I don't know a way to check that without calling mach_thread_self. Ideally pthreads should fail on pthread_create if we are out of resources, but that doesn't seem to be the case.
/Staffan
On 19 aug 2013, at 12:15, Rickard B?ckman wrote:
> Staffan,
>
> the change looks good. (Not a Reviewer).
>
> One thing to point out though, if we would leak ports the following line would get stuck in an infinite loop
> (pthread_mach_thread_np calls _pthread_lookup_thread which calls _pthread_find_thread which will spin forever if the ports part of the pthread struct is zero - which it will be if we are out of ports).
>
> mach_port_t thread_id = ::pthread_mach_thread_np(::pthread_self());
>
> That makes the guarantee line redundant since it will never be reached.
> Maybe it would be good if we had a better way of checking if we are out of resources.
>
> /R
>
> On Aug 19, 2013, at 11:08 AM, Staffan Larsen wrote:
>
>> We are using the mach thread port name as the os thread identifier on OS X. We get this value by calling mach_thread_self(), but we (I) didn't realize that this "port" resource is reference counted and mach_thread_self() increases the reference count, but we never call mach_port_deallocate() to decrease the reference count. This leads to a resource leak and eventually mach_thread_self() will return 0 to indicate that we are out of ports. Running out of ports causes the pthreads implementation (which is built on top of mach) to spin forever in some calls (most notably in this case pthread_kill()).
>>
>> One way to fix this is to make sure we call mach_port_deallocate() for each call to mach_thread_self(). However, this adds extra complexity to the code and also makes it slower. Another solution is to ask pthreads for the mach port name that it already has. Pthreads provides the function pthread_mach_thread_np() for this purpose. In this case there is no need to deallocate the port since pthread_mach_thread_np() will not increase the reference count (and pthreads will call deallocate on the port once the thread terminates).
>>
>> This fix has been verified by seeing that the number of ports the process has allocated does not increase in Activity Monitor (or top). It has also passed JPRT testing on all platforms.
>>
>> webrev: http://cr.openjdk.java.net/~sla/8022808/webrev.00/
>> (there is not publicly visible bug for this)
>>
>> Thanks,
>> /Staffan
>
From harold.seigel at oracle.com Mon Aug 19 06:52:26 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Mon, 19 Aug 2013 09:52:26 -0400
Subject: Request for Review 7121403: [TESTBUG] runtime/7051189/Xchecksig.sh
fails on 64-bit solaris
In-Reply-To: <5203F024.9040006@oracle.com>
References: <5203F024.9040006@oracle.com>
Message-ID: <5212231A.7070704@oracle.com>
Hi,
I'm resending this RFR because I did not get any reviewers the first
time. If you have chance, please take a look.
Thanks, Harold
On 8/8/2013 3:23 PM, harold seigel wrote:
> Hi,
>
> Please review this change to fix bug 7121403. The test was rewritten
> in Java and modified to properly determine when it is running on
> 64-bit Solaris.
>
> The fix was tested by running the new test on 32-bit Linux, Solaris
> Sparc, Solaris X86, and 64-bit Linux.
>
> webrev: http://cr.openjdk.java.net/~hseigel/bug_7121403/
>
>
> bug: http://bugs.sun.com/view_bug.do?bug_id=7121403
>
> JBS bug: https://jbs.oracle.com/bugs/browse/JDK-7121403
>
> Thanks! Harold
From gerard.ziemski at oracle.com Mon Aug 19 08:33:08 2013
From: gerard.ziemski at oracle.com (Gerard Ziemski)
Date: Mon, 19 Aug 2013 10:33:08 -0500
Subject: RFR: 8022808: Kitchensink hangs on macos
In-Reply-To:
References:
Message-ID: <52123AB4.3090609@oracle.com>
hi Staffan,
Why are we using the the "::" C++ name space before mach/pthread C APIs
calls?
cheers
On 8/19/2013 4:08 AM, Staffan Larsen wrote:
> We are using the mach thread port name as the os thread identifier on OS X. We get this value by calling mach_thread_self(), but we (I) didn't realize that this "port" resource is reference counted and mach_thread_self() increases the reference count, but we never call mach_port_deallocate() to decrease the reference count. This leads to a resource leak and eventually mach_thread_self() will return 0 to indicate that we are out of ports. Running out of ports causes the pthreads implementation (which is built on top of mach) to spin forever in some calls (most notably in this case pthread_kill()).
>
> One way to fix this is to make sure we call mach_port_deallocate() for each call to mach_thread_self(). However, this adds extra complexity to the code and also makes it slower. Another solution is to ask pthreads for the mach port name that it already has. Pthreads provides the function pthread_mach_thread_np() for this purpose. In this case there is no need to deallocate the port since pthread_mach_thread_np() will not increase the reference count (and pthreads will call deallocate on the port once the thread terminates).
>
> This fix has been verified by seeing that the number of ports the process has allocated does not increase in Activity Monitor (or top). It has also passed JPRT testing on all platforms.
>
> webrev: http://cr.openjdk.java.net/~sla/8022808/webrev.00/
> (there is not publicly visible bug for this)
>
> Thanks,
> /Staffan
From gerard.ziemski at oracle.com Mon Aug 19 09:11:01 2013
From: gerard.ziemski at oracle.com (Gerard Ziemski)
Date: Mon, 19 Aug 2013 11:11:01 -0500
Subject: RFR: 8022808: Kitchensink hangs on macos
In-Reply-To:
References:
Message-ID: <52124395.2000709@oracle.com>
hi Staffan,
A search on the topic of Mac thread id reveals that pretty much everyone
(including Apple itself) uses pthread_mach_thread_np() for thread id, so
it looks like you're correct to use it.
I do have some more quick feedback/questions:
1. Could the "just checking" string in guarantee() be set to something
more informative, like "thread id doesn't exist"?
2. Why are we using the the "::" C++ name space before mach/pthread C
APIs calls? I understand that you might be just following the existing
pattern in the file, I'm just wondering if you, or anyone knows why.
3. Also not directly related to your fix, but do you know why we need
both "set_thread_id" and "set_unique_thread_id"
cheers
On 8/19/2013 4:08 AM, Staffan Larsen wrote:
> We are using the mach thread port name as the os thread identifier on OS X. We get this value by calling mach_thread_self(), but we (I) didn't realize that this "port" resource is reference counted and mach_thread_self() increases the reference count, but we never call mach_port_deallocate() to decrease the reference count. This leads to a resource leak and eventually mach_thread_self() will return 0 to indicate that we are out of ports. Running out of ports causes the pthreads implementation (which is built on top of mach) to spin forever in some calls (most notably in this case pthread_kill()).
>
> One way to fix this is to make sure we call mach_port_deallocate() for each call to mach_thread_self(). However, this adds extra complexity to the code and also makes it slower. Another solution is to ask pthreads for the mach port name that it already has. Pthreads provides the function pthread_mach_thread_np() for this purpose. In this case there is no need to deallocate the port since pthread_mach_thread_np() will not increase the reference count (and pthreads will call deallocate on the port once the thread terminates).
>
> This fix has been verified by seeing that the number of ports the process has allocated does not increase in Activity Monitor (or top). It has also passed JPRT testing on all platforms.
>
> webrev: http://cr.openjdk.java.net/~sla/8022808/webrev.00/
> (there is not publicly visible bug for this)
>
> Thanks,
> /Staffan
From staffan.larsen at oracle.com Mon Aug 19 10:14:26 2013
From: staffan.larsen at oracle.com (Staffan Larsen)
Date: Mon, 19 Aug 2013 19:14:26 +0200
Subject: RFR: 8022808: Kitchensink hangs on macos
In-Reply-To: <52123AB4.3090609@oracle.com>
References:
<52123AB4.3090609@oracle.com>
Message-ID:
I thought that was the recommended way of calling OS functions. We seem to have both styles, though.
/Staffan
On 19 aug 2013, at 17:33, Gerard Ziemski wrote:
> hi Staffan,
>
> Why are we using the the "::" C++ name space before mach/pthread C APIs calls?
>
>
> cheers
>
> On 8/19/2013 4:08 AM, Staffan Larsen wrote:
>> We are using the mach thread port name as the os thread identifier on OS X. We get this value by calling mach_thread_self(), but we (I) didn't realize that this "port" resource is reference counted and mach_thread_self() increases the reference count, but we never call mach_port_deallocate() to decrease the reference count. This leads to a resource leak and eventually mach_thread_self() will return 0 to indicate that we are out of ports. Running out of ports causes the pthreads implementation (which is built on top of mach) to spin forever in some calls (most notably in this case pthread_kill()).
>>
>> One way to fix this is to make sure we call mach_port_deallocate() for each call to mach_thread_self(). However, this adds extra complexity to the code and also makes it slower. Another solution is to ask pthreads for the mach port name that it already has. Pthreads provides the function pthread_mach_thread_np() for this purpose. In this case there is no need to deallocate the port since pthread_mach_thread_np() will not increase the reference count (and pthreads will call deallocate on the port once the thread terminates).
>>
>> This fix has been verified by seeing that the number of ports the process has allocated does not increase in Activity Monitor (or top). It has also passed JPRT testing on all platforms.
>>
>> webrev: http://cr.openjdk.java.net/~sla/8022808/webrev.00/
>> (there is not publicly visible bug for this)
>>
>> Thanks,
>> /Staffan
>
From staffan.larsen at oracle.com Mon Aug 19 10:18:06 2013
From: staffan.larsen at oracle.com (Staffan Larsen)
Date: Mon, 19 Aug 2013 19:18:06 +0200
Subject: RFR: 8022808: Kitchensink hangs on macos
In-Reply-To: <52124395.2000709@oracle.com>
References:
<52124395.2000709@oracle.com>
Message-ID: <2759143D-222B-486A-9854-356997E57899@oracle.com>
On 19 aug 2013, at 18:11, Gerard Ziemski wrote:
> hi Staffan,
>
> A search on the topic of Mac thread id reveals that pretty much everyone (including Apple itself) uses pthread_mach_thread_np() for thread id, so it looks like you're correct to use it.
>
> I do have some more quick feedback/questions:
>
> 1. Could the "just checking" string in guarantee() be set to something more informative, like "thread id doesn't exist"?
I'll fix that.
> 2. Why are we using the the "::" C++ name space before mach/pthread C APIs calls? I understand that you might be just following the existing pattern in the file, I'm just wondering if you, or anyone knows why.
>
> 3. Also not directly related to your fix, but do you know why we need both "set_thread_id" and "set_unique_thread_id"
The "unique" (not a good name) id is used by SA when matching threads. See JDK-8006423 for a longer discussion. The reason we don't want to use the "unique" id as thread_id is that it is a 64 bit number.
Thanks,
/Staffan
>
>
> cheers
>
>
> On 8/19/2013 4:08 AM, Staffan Larsen wrote:
>> We are using the mach thread port name as the os thread identifier on OS X. We get this value by calling mach_thread_self(), but we (I) didn't realize that this "port" resource is reference counted and mach_thread_self() increases the reference count, but we never call mach_port_deallocate() to decrease the reference count. This leads to a resource leak and eventually mach_thread_self() will return 0 to indicate that we are out of ports. Running out of ports causes the pthreads implementation (which is built on top of mach) to spin forever in some calls (most notably in this case pthread_kill()).
>>
>> One way to fix this is to make sure we call mach_port_deallocate() for each call to mach_thread_self(). However, this adds extra complexity to the code and also makes it slower. Another solution is to ask pthreads for the mach port name that it already has. Pthreads provides the function pthread_mach_thread_np() for this purpose. In this case there is no need to deallocate the port since pthread_mach_thread_np() will not increase the reference count (and pthreads will call deallocate on the port once the thread terminates).
>>
>> This fix has been verified by seeing that the number of ports the process has allocated does not increase in Activity Monitor (or top). It has also passed JPRT testing on all platforms.
>>
>> webrev: http://cr.openjdk.java.net/~sla/8022808/webrev.00/
>> (there is not publicly visible bug for this)
>>
>> Thanks,
>> /Staffan
>
From lois.foltan at oracle.com Mon Aug 19 10:40:03 2013
From: lois.foltan at oracle.com (Lois Foltan)
Date: Mon, 19 Aug 2013 13:40:03 -0400
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <520CF52B.6050000@oracle.com>
References: <520CF52B.6050000@oracle.com>
Message-ID: <52125873.1070407@oracle.com>
Hi Yumin,
Looks good, a couple of review comments:
- I like that you pulled out the number 10 into the EXTRACHARLEN
macro, can you explain the assigned value of 20?
- Is -Xloggc:stdout or -Xloggc:stderr allowed? If yes, can
-XX:+UseGCLogFileRotation be specified at the same time?
- Also, I am concerned about the introduction of temporary files
called "..current", why is this necessary?
This scheme carries with it the additional potential for failure
points like the ones you added checks for in
rotatingFileStream::rotate_log().
During error conditions, spurious ..current
files could be left around that have no meaning or context.
- You've added checks in rotatingFileStream::rotate_log() for if a
pre-existing file can not be removed or if the current
..current can not be renamed. If either of
those errors occur, a warning is issued but then the log
rotation proceeds. So there could be a loss of -Xloggc
information in the concurrent progression of rotating files.
Would a better approach be to not close the existing log file in
the rotation, proceed to determine if the next log file can be opened
and if not, issue a warning, turn of UseGCLogFileRotation and
continue to concatenate -Xloggc info into current file?
Thanks,
Lois
On 8/15/2013 11:35 AM, Yumin Qi wrote:
> Hi,
>
> Can I have your review for this small changes?
> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>
>
> This is for a enhancement to add head/tail message to the logging
> files to assist reading GC output.
> 1. modified prompt message if invalid arguments used for log rotating;
> 2. add time and file name message to log file head/tail.
> 3. for easily identify which log file is current, use file name
> like .n.current, after it reaches maximum size, rename it to
> .n
> On Windows, there is no F_OK (existing test) definition, F_OK
> is defined as "0" and for _access of VC++, it just describes:
>
> modevalue
>
>
>
> Checks file for
>
> 00
>
>
>
> Existence only
>
> 02
>
>
>
> Write-only
>
> 04
>
>
>
> Read-only
>
> 06
>
>
>
> Read and write
>
>
> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
> The definition are consistent with unistd.h.
>
> Test: JPRT and jtreg.
>
> Thanks
> Yumin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130819/9479a089/attachment-0001.html
From yumin.qi at oracle.com Mon Aug 19 10:48:16 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Mon, 19 Aug 2013 10:48:16 -0700
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <10E39A148B301E4982FD13F7FCB3B5CE0A3FB5D4@MISOUT7MSGUSR9C.ITServices.sbc.com>
References: <520CF52B.6050000@oracle.com> <52116800.3040901@lab.ntt.co.jp>
<10E39A148B301E4982FD13F7FCB3B5CE0A3FB5D4@MISOUT7MSGUSR9C.ITServices.sbc.com>
Message-ID: <52125A60.4050906@oracle.com>
Scott and Yasumasa,
Thanks for your information for bug 6950794.
According to my current implementation, it is easy to identify which
file is the current log ---- it ends up with .current appendix. At app
exit, it did not renamed to other name so still is the last and latest
log file.
I will make modification based on current implementation to cover
suggestions mentioned in bug 6950794.
This will be only targeted to if gc log file rotations successfully set:
Log file name will be -pid%p-YYYY-MM-DD_HH-MM-SS.%i which
p is pid and i be one of 0, ...., n-1. I am not planning to parse
command line to get those info since they are available internally. Hope
this will solve the problems mentioned in bug 6950794.
So the rotation will be:
1) File name, like mentioned above, example:
gc.log-pid1234-2013-08-19_08-20-00.1 with
-Xloggc:gc.log -XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=1M
Time stamp is the start of first rotation file created, and all
rotation files share the same time stamp in file name.
2) Time stamp of each rotation begings still logged when it is
started, finished.
3) For rotation in same file, the file name will be
-pid%p-YYYY-MM-DD_HH-MM-SS
Let me know what you think.
Thanks
Yumin
On 8/19/2013 8:07 AM, STIRLING, SCOTT wrote:
> For hosting large e-comm sites with dozens to hundreds of JVMs, where we always have GC logging enabled, the advent of GC log rotation features in the JVM was a nice surprise and I started using it immediately on a major new e-comm site (with Oracle ATG and Weblogic on Sun 1.6-latest JDK and RHEL). But as the file naming and rotation work now, when you stop and then restart a JVM with GC log rotation enabled, it overwrites the last un-rotated log file. That's not usually what we want. We like logs to have the timestamp or datestamp encoded in the file name for scripting, for future reference when logs are on a laptop for analysis with visualization tools (more important these days as GC logs for new garbage collectors get uglier and uglier), etc.
>
> It's possible to parameterize the log file name in scripts before it is passed to the JVM, but that's been do-able for years. And if you take a product such as Oracle Weblogic, it has a versionable, auto-deployed, centrally manageable config.xml, which we like to use as much as possible for, e.g., all the JVM args for all the JVMs in the domain. There's no facility for parameterized variables in config.xml. So you have to, again, do stuff in the launch script, which is more stuff to maintain, and so on.
>
> I'm willing to compile the patch for 6950794 and let you know if it compiles on Windows 7, 64 bit. I'm just a list observer but I can build it.
>
> Scott Stirling
> AT&T, Boston
>
> -----Original Message-----
> From: hotspot-gc-dev-bounces at openjdk.java.net [mailto:hotspot-gc-dev-bounces at openjdk.java.net] On Behalf Of Yasumasa Suenaga
> Sent: Sunday, August 18, 2013 8:34 PM
> To: Yumin Qi
> Cc: hotspot-gc-dev at openjdk.java.net; hotspot-runtime-dev at openjdk.java.net
> Subject: Re: RFR: 7164841: Improvements to the GC log file rotation
>
> Hi Yumin,
>
> I've posted a RFE and patch for adding timestamp, PID, etc to log filename.
>
> JDK-6950794 : Make the GC log file name parameterized
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6950794
> http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2012-July/004758.html
>
> Your patch writes timestamp into logfile.
> Howeverm, in production system, we may want to check log generation through
> log filename. (e.g. ls command at Linux)
>
> Could you check my patch?
>
>
> Thanks,
>
> Yasumasa
>
> On 2013/08/16 0:35, Yumin Qi wrote:
>> Hi,
>>
>> Can I have your review for this small changes?
>> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>>
>> This is for a enhancement to add head/tail message to the logging files to assist reading GC output.
>> 1. modified prompt message if invalid arguments used for log rotating;
>> 2. add time and file name message to log file head/tail.
>> 3. for easily identify which log file is current, use file name like .n.current, after it reaches maximum size, rename it to .n
>> On Windows, there is no F_OK (existing test) definition, F_OK is defined as "0" and for _access of VC++, it just describes:
>>
>> modevalue
>>
>>
>>
>> Checks file for
>>
>> 00
>>
>>
>>
>> Existence only
>>
>> 02
>>
>>
>>
>> Write-only
>>
>> 04
>>
>>
>>
>> Read-only
>>
>> 06
>>
>>
>>
>> Read and write
>>
>>
>> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
>> The definition are consistent with unistd.h.
>>
>> Test: JPRT and jtreg.
>>
>> Thanks
>> Yumin
From mikhailo.seledtsov at oracle.com Mon Aug 19 10:50:07 2013
From: mikhailo.seledtsov at oracle.com (Mikhailo Seledtsov)
Date: Mon, 19 Aug 2013 13:50:07 -0400
Subject: RFR (M) : JDK-8016029 : test runtime/6878713/Test6878713.sh failed
- round 2
Message-ID: <52125ACF.9050803@oracle.com>
This is a round 2 review for this fix.
Please review.
Original review request (dated 16-July-2013) with the same subject was:
"
Please review this test fix. The change is a fix for the original bug,
plus an update to the test condition to reflect new JVM behavior and a
rewrite of an sh script test in Java.
JBS: https://jbs.oracle.com/bugs/browse/JDK-8016029
(Old) Webrev: http://cr.openjdk.java.net/~mseledtsov/6878713/webrev.00/
"
Change since last round of review:
JVM run-time technical leadership has made a decision to keep the
testcase.jar until a long-term solution is in place for handling "Java
assembler"-based and byte-code-based test cases.
Here is the updated webrev and comments:
Webrev: http://cr.openjdk.java.net/~mseledtsov/8016029/webrev.01/
Testing: JPRT run for this test
(2013-08-19-154813.mseledtsov.bugFixing01-hotspot-rt)
Here are original notes:
- the original behavior of the VM in this test case has changed, and the
expected error message has changed as well. There is an extensive amount
of information about this in the original bug, posted by Dan. The change
was introduced in change-set: 4876:f75faf51e8c4 by Harold. Checking for
the old expected messages has been removed from the test. This change is
for JDK8 and forward, and no back-ports planned.
- the flag -XX:+IgnoreUnrecognizedVMOptions has been removed to avoid
masking a potential problem. If VM drops support for any of XX flags
used in this test, it is better to know about it right away rather than
mask it and silently pass/ignore.
- the flag -XX:+PrintCommandLineFlags has been removed; if this
information is desired, IMO it should be triggered either by a verbose
mode of JTREG tools, or by hand, not by individual test(s).
Round 2 notes:
- the shell script has been replaced by Java
- test has been moved to a new location, moving away from using bug
numbers to using functional categories for test sub-folders
Misha
From calvin.cheung at oracle.com Mon Aug 19 11:01:53 2013
From: calvin.cheung at oracle.com (Calvin Cheung)
Date: Mon, 19 Aug 2013 11:01:53 -0700
Subject: Request for Review 7121403: [TESTBUG] runtime/7051189/Xchecksig.sh
fails on 64-bit solaris
In-Reply-To: <5212231A.7070704@oracle.com>
References: <5203F024.9040006@oracle.com> <5212231A.7070704@oracle.com>
Message-ID: <52125D91.5080807@oracle.com>
Hi Harold,
The fix looks good to me. (not a Reviewer)
A minor typo in line #27:
-xcheck:jni --> -Xcheck:jni
Calvin
On 8/19/2013 6:52 AM, harold seigel wrote:
> Hi,
>
> I'm resending this RFR because I did not get any reviewers the first
> time. If you have chance, please take a look.
>
> Thanks, Harold
>
> On 8/8/2013 3:23 PM, harold seigel wrote:
>> Hi,
>>
>> Please review this change to fix bug 7121403. The test was rewritten
>> in Java and modified to properly determine when it is running on
>> 64-bit Solaris.
>>
>> The fix was tested by running the new test on 32-bit Linux, Solaris
>> Sparc, Solaris X86, and 64-bit Linux.
>>
>> webrev: http://cr.openjdk.java.net/~hseigel/bug_7121403/
>>
>>
>> bug: http://bugs.sun.com/view_bug.do?bug_id=7121403
>>
>> JBS bug: https://jbs.oracle.com/bugs/browse/JDK-7121403
>>
>> Thanks! Harold
>
From harold.seigel at oracle.com Mon Aug 19 11:12:42 2013
From: harold.seigel at oracle.com (harold seigel)
Date: Mon, 19 Aug 2013 14:12:42 -0400
Subject: Request for Review 7121403: [TESTBUG] runtime/7051189/Xchecksig.sh
fails on 64-bit solaris
In-Reply-To: <52125D91.5080807@oracle.com>
References: <5203F024.9040006@oracle.com> <5212231A.7070704@oracle.com>
<52125D91.5080807@oracle.com>
Message-ID: <5212601A.3020302@oracle.com>
Thanks Calvin! I'll fix the typo.
Harold
On 8/19/2013 2:01 PM, Calvin Cheung wrote:
> Hi Harold,
>
> The fix looks good to me. (not a Reviewer)
> A minor typo in line #27:
> -xcheck:jni --> -Xcheck:jni
>
> Calvin
>
> On 8/19/2013 6:52 AM, harold seigel wrote:
>> Hi,
>>
>> I'm resending this RFR because I did not get any reviewers the first
>> time. If you have chance, please take a look.
>>
>> Thanks, Harold
>>
>> On 8/8/2013 3:23 PM, harold seigel wrote:
>>> Hi,
>>>
>>> Please review this change to fix bug 7121403. The test was
>>> rewritten in Java and modified to properly determine when it is
>>> running on 64-bit Solaris.
>>>
>>> The fix was tested by running the new test on 32-bit Linux, Solaris
>>> Sparc, Solaris X86, and 64-bit Linux.
>>>
>>> webrev: http://cr.openjdk.java.net/~hseigel/bug_7121403/
>>>
>>>
>>> bug: http://bugs.sun.com/view_bug.do?bug_id=7121403
>>>
>>> JBS bug: https://jbs.oracle.com/bugs/browse/JDK-7121403
>>>
>>> Thanks! Harold
>>
>
From david.r.chase at oracle.com Mon Aug 19 11:13:15 2013
From: david.r.chase at oracle.com (David Chase)
Date: Mon, 19 Aug 2013 14:13:15 -0400
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To: <52119939.50205@oracle.com>
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
<6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
<858DD708-AA28-4997-BA3C-65BE5248B635@oracle.com>
<94224102-AC0E-42F3-BF9D-79DF904FD53D@oracle.com>
<52119939.50205@oracle.com>
Message-ID: <2415DA74-C2C1-4B34-8598-9A0072FA7BA9@oracle.com>
New version, with Christian's and John's fixes (and limited use of err_msg_res):
http://cr.openjdk.java.net/~drchase/8014013/webrev.03/
retested (jtreg) on Mac against hotspot/test/compiler, jdk/test/{jdk,java/util}
David
On 2013-08-19, at 12:04 AM, David Holmes wrote:
> On 19/08/2013 8:24 AM, David Chase wrote:
>> A question about err_msg_res -- should that generally be used in place of err_msg,
>> or only in certain source directories, and if so, which ones?
>
> I can't answer that but be aware that there is an issue with using err_msg_res as it is unclear as to whom has responsibility for ensuring there is a ResourceMark on the stack. There's an open bug on that - 8022187.
>
> David
>
>> On 2013-08-17, at 1:41 AM, John Rose wrote:
>>
>>> On Aug 16, 2013, at 1:05 PM, David Chase wrote:
>>>
>>>> How does this look?
>>>>
>>>> void fieldDescriptor::reinitialize(InstanceKlass* ik, int index) {
>>>> if (_cp.is_null() || field_holder() != ik) {
>>>> _cp = constantPoolHandle(Thread::current(), ik->constants());
>>>> // _cp should now reference ik's constant pool; i.e., ik is now field_holder.
>>>> assert(field_holder() == ik, "must be already initialized to this class");
>>>
>>> Good.
>>>
>>> As a side note, this bit of code (and many others) assume that there is a 1-1 correspondence between constant pools and instance klasses.
>>>
>>> I hope we can change this some day; the tracking bug is http://bugs.sun.com/view_bug.do?bug_id=6711913
>>>
>>> ? John
>>
From mikhailo.seledtsov at oracle.com Mon Aug 19 11:44:11 2013
From: mikhailo.seledtsov at oracle.com (Mikhailo Seledtsov)
Date: Mon, 19 Aug 2013 14:44:11 -0400
Subject: Request for Review 7121403: [TESTBUG] runtime/7051189/Xchecksig.sh
fails on 64-bit solaris
In-Reply-To: <5212601A.3020302@oracle.com>
References: <5203F024.9040006@oracle.com> <5212231A.7070704@oracle.com>
<52125D91.5080807@oracle.com> <5212601A.3020302@oracle.com>
Message-ID: <5212677B.704@oracle.com>
Hi Harold,
Your change looks good, than you for re-writing sh in Java.
One minor comment:
import java.io.File; - looks like this import is no longer in use
No need to re-post the change.
Misha
On 8/19/2013 2:12 PM, harold seigel wrote:
> Thanks Calvin! I'll fix the typo.
>
> Harold
>
> On 8/19/2013 2:01 PM, Calvin Cheung wrote:
>> Hi Harold,
>>
>> The fix looks good to me. (not a Reviewer)
>> A minor typo in line #27:
>> -xcheck:jni --> -Xcheck:jni
>>
>> Calvin
>>
>> On 8/19/2013 6:52 AM, harold seigel wrote:
>>> Hi,
>>>
>>> I'm resending this RFR because I did not get any reviewers the first
>>> time. If you have chance, please take a look.
>>>
>>> Thanks, Harold
>>>
>>> On 8/8/2013 3:23 PM, harold seigel wrote:
>>>> Hi,
>>>>
>>>> Please review this change to fix bug 7121403. The test was
>>>> rewritten in Java and modified to properly determine when it is
>>>> running on 64-bit Solaris.
>>>>
>>>> The fix was tested by running the new test on 32-bit Linux, Solaris
>>>> Sparc, Solaris X86, and 64-bit Linux.
>>>>
>>>> webrev: http://cr.openjdk.java.net/~hseigel/bug_7121403/
>>>>
>>>>
>>>> bug: http://bugs.sun.com/view_bug.do?bug_id=7121403
>>>>
>>>> JBS bug: https://jbs.oracle.com/bugs/browse/JDK-7121403
>>>>
>>>> Thanks! Harold
>>>
>>
>
From yumin.qi at oracle.com Mon Aug 19 13:41:05 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Mon, 19 Aug 2013 13:41:05 -0700
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <52125873.1070407@oracle.com>
References: <520CF52B.6050000@oracle.com> <52125873.1070407@oracle.com>
Message-ID: <521282E1.9080403@oracle.com>
Thanks Lois for the review, see embedded.
On 8/19/2013 10:40 AM, Lois Foltan wrote:
> Hi Yumin,
>
> Looks good, a couple of review comments:
>
> - I like that you pulled out the number 10 into the EXTRACHARLEN
> macro, can you explain the assigned value of 20?
>
jio_snprintf(_file_name, strlen(file_name) + EXTRACHARLEN, "%s.%d.current", file_name, _cur_file_num);
This is for extra space needed to print chars after file_name, 20 seems enough.
> - Is -Xloggc:stdout or -Xloggc:stderr allowed? If yes, can
> -XX:+UseGCLogFileRotation be specified at the same time?
>
stdout and stderr is a number, 1 and 2 defined for io.h not stdio.h, so
they are perfectly filenames after loggc:, the file names will be
"stdout/err".
> - Also, I am concerned about the introduction of temporary files
> called "..current", why is this necessary?
> This scheme carries with it the additional potential for failure
> points like the ones you added checks for in
> rotatingFileStream::rotate_log().
> During error conditions, spurious ..current
> files could be left around that have no meaning or context.
>
The rotation itself has potential problems if the dir modified by owner
for access priorities. I think if cannot open the next rotation file,
the best way will be issue warning and stop log file rotation, or just
like you said, just rotate in the current file. This part is tricky and
just like the next question. If we don't have permission to access,
remove and rename files, that means we have no permissions to operate
files in current directory so the rotation is not possible. I will try
more tests about this part.
Thanks
Yumin
> - You've added checks in rotatingFileStream::rotate_log() for if a
> pre-existing file can not be removed or if the current
> ..current can not be renamed. If either of
> those errors occur, a warning is issued but then the log
> rotation proceeds. So there could be a loss of -Xloggc
> information in the concurrent progression of rotating files.
> Would a better approach be to not close the existing log file in
> the rotation, proceed to determine if the next log file can be opened
> and if not, issue a warning, turn of UseGCLogFileRotation and
> continue to concatenate -Xloggc info into current file?
>
> Thanks,
> Lois
>
>
> On 8/15/2013 11:35 AM, Yumin Qi wrote:
>> Hi,
>>
>> Can I have your review for this small changes?
>> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>>
>>
>> This is for a enhancement to add head/tail message to the logging
>> files to assist reading GC output.
>> 1. modified prompt message if invalid arguments used for log rotating;
>> 2. add time and file name message to log file head/tail.
>> 3. for easily identify which log file is current, use file name
>> like .n.current, after it reaches maximum size, rename it
>> to .n
>> On Windows, there is no F_OK (existing test) definition, F_OK
>> is defined as "0" and for _access of VC++, it just describes:
>>
>> modevalue
>>
>>
>>
>> Checks file for
>>
>> 00
>>
>>
>>
>> Existence only
>>
>> 02
>>
>>
>>
>> Write-only
>>
>> 04
>>
>>
>>
>> Read-only
>>
>> 06
>>
>>
>>
>> Read and write
>>
>>
>> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
>> The definition are consistent with unistd.h.
>>
>> Test: JPRT and jtreg.
>>
>> Thanks
>> Yumin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130819/74e514b9/attachment.html
From christian.thalinger at oracle.com Mon Aug 19 15:15:43 2013
From: christian.thalinger at oracle.com (Christian Thalinger)
Date: Mon, 19 Aug 2013 15:15:43 -0700
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To: <2415DA74-C2C1-4B34-8598-9A0072FA7BA9@oracle.com>
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
<6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
<858DD708-AA28-4997-BA3C-65BE5248B635@oracle.com>
<94224102-AC0E-42F3-BF9D-79DF904FD53D@oracle.com>
<52119939.50205@oracle.com>
<2415DA74-C2C1-4B34-8598-9A0072FA7BA9@oracle.com>
Message-ID: <925B8B0B-E7A9-4934-B8F8-FAABB6492B01@oracle.com>
Looks good. -- Chris
On Aug 19, 2013, at 11:13 AM, David Chase wrote:
> New version, with Christian's and John's fixes (and limited use of err_msg_res):
>
> http://cr.openjdk.java.net/~drchase/8014013/webrev.03/
>
> retested (jtreg) on Mac against hotspot/test/compiler, jdk/test/{jdk,java/util}
>
> David
>
>
> On 2013-08-19, at 12:04 AM, David Holmes wrote:
>
>> On 19/08/2013 8:24 AM, David Chase wrote:
>>> A question about err_msg_res -- should that generally be used in place of err_msg,
>>> or only in certain source directories, and if so, which ones?
>>
>> I can't answer that but be aware that there is an issue with using err_msg_res as it is unclear as to whom has responsibility for ensuring there is a ResourceMark on the stack. There's an open bug on that - 8022187.
>>
>> David
>>
>>> On 2013-08-17, at 1:41 AM, John Rose wrote:
>>>
>>>> On Aug 16, 2013, at 1:05 PM, David Chase wrote:
>>>>
>>>>> How does this look?
>>>>>
>>>>> void fieldDescriptor::reinitialize(InstanceKlass* ik, int index) {
>>>>> if (_cp.is_null() || field_holder() != ik) {
>>>>> _cp = constantPoolHandle(Thread::current(), ik->constants());
>>>>> // _cp should now reference ik's constant pool; i.e., ik is now field_holder.
>>>>> assert(field_holder() == ik, "must be already initialized to this class");
>>>>
>>>> Good.
>>>>
>>>> As a side note, this bit of code (and many others) assume that there is a 1-1 correspondence between constant pools and instance klasses.
>>>>
>>>> I hope we can change this some day; the tracking bug is http://bugs.sun.com/view_bug.do?bug_id=6711913
>>>>
>>>> ? John
>>>
>
From ysr1729 at gmail.com Mon Aug 19 15:31:25 2013
From: ysr1729 at gmail.com (Srinivas Ramakrishna)
Date: Mon, 19 Aug 2013 15:31:25 -0700
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <520CF52B.6050000@oracle.com>
References: <520CF52B.6050000@oracle.com>
Message-ID:
Hi Yumin --
Somewhat orthogonal to the discussion at hand, and certainly not a code
review/discussion (so i
apologize for injecting this into $SUBJ) but I wanted to say that log
rotation is definitely a useful capability in the field.
Have you folks perhaps considered two possible enhancements:
(1) rotate logs at a frequency and time specified. (For example, on a
daily, weekly or monthly basis.)
(2) rotate logs asynchronously upon request. (say via a suitable bean.)
If (1) can be simulated by existing means I am all ears.
thanks!
-- ramki
On Thu, Aug 15, 2013 at 8:35 AM, Yumin Qi wrote:
> Hi,
>
> Can I have your review for this small changes?
> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>
> This is for a enhancement to add head/tail message to the logging files
> to assist reading GC output.
> 1. modified prompt message if invalid arguments used for log rotating;
> 2. add time and file name message to log file head/tail.
> 3. for easily identify which log file is current, use file name like
> .n.current, after it reaches maximum size, rename it to
> .n
> On Windows, there is no F_OK (existing test) definition, F_OK is
> defined as "0" and for _access of VC++, it just describes:
>
>
> mode value
>
> Checks file for
>
> 00
>
> Existence only
>
> 02
>
> Write-only
>
> 04
>
> Read-only
>
> 06
>
> Read and write
>
> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
> The definition are consistent with unistd.h.
>
> Test: JPRT and jtreg.
>
> Thanks
> Yumin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130819/386dfe93/attachment-0001.html
From david.r.chase at oracle.com Mon Aug 19 15:46:55 2013
From: david.r.chase at oracle.com (David Chase)
Date: Mon, 19 Aug 2013 18:46:55 -0400
Subject: RFR (L) : 8014013 : CallInfo structure no longer accurately
reports the result of a LinkResolver operation
In-Reply-To: <925B8B0B-E7A9-4934-B8F8-FAABB6492B01@oracle.com>
References: <191C61A2-6E5A-4EE3-9F40-B6C977C92BD6@oracle.com>
<6C3948E7-7F89-4C27-BDCE-ABF9534E7D44@oracle.com>
<858DD708-AA28-4997-BA3C-65BE5248B635@oracle.com>
<94224102-AC0E-42F3-BF9D-79DF904FD53D@oracle.com>
<52119939.50205@oracle.com>
<2415DA74-C2C1-4B34-8598-9A0072FA7BA9@oracle.com>
<925B8B0B-E7A9-4934-B8F8-FAABB6492B01@oracle.com>
Message-ID: <727C0BA7-6E86-4FBB-A1CB-8E7670A27214@oracle.com>
Karen Kinnear would like me to study, carefully, the wrong answer that occur in one of the default methods tests.
Apparently this is an instance of a test where the wrong answers are still interesting -- this patch fails less, but
in a few cases it fails differently.
David
On 2013-08-19, at 6:15 PM, Christian Thalinger wrote:
> Looks good. -- Chris
>
> On Aug 19, 2013, at 11:13 AM, David Chase wrote:
>
>> New version, with Christian's and John's fixes (and limited use of err_msg_res):
>>
>> http://cr.openjdk.java.net/~drchase/8014013/webrev.03/
>>
>> retested (jtreg) on Mac against hotspot/test/compiler, jdk/test/{jdk,java/util}
>>
>> David
>>
>>
>> On 2013-08-19, at 12:04 AM, David Holmes wrote:
>>
>>> On 19/08/2013 8:24 AM, David Chase wrote:
>>>> A question about err_msg_res -- should that generally be used in place of err_msg,
>>>> or only in certain source directories, and if so, which ones?
>>>
>>> I can't answer that but be aware that there is an issue with using err_msg_res as it is unclear as to whom has responsibility for ensuring there is a ResourceMark on the stack. There's an open bug on that - 8022187.
>>>
>>> David
>>>
>>>> On 2013-08-17, at 1:41 AM, John Rose wrote:
>>>>
>>>>> On Aug 16, 2013, at 1:05 PM, David Chase wrote:
>>>>>
>>>>>> How does this look?
>>>>>>
>>>>>> void fieldDescriptor::reinitialize(InstanceKlass* ik, int index) {
>>>>>> if (_cp.is_null() || field_holder() != ik) {
>>>>>> _cp = constantPoolHandle(Thread::current(), ik->constants());
>>>>>> // _cp should now reference ik's constant pool; i.e., ik is now field_holder.
>>>>>> assert(field_holder() == ik, "must be already initialized to this class");
>>>>>
>>>>> Good.
>>>>>
>>>>> As a side note, this bit of code (and many others) assume that there is a 1-1 correspondence between constant pools and instance klasses.
>>>>>
>>>>> I hope we can change this some day; the tracking bug is http://bugs.sun.com/view_bug.do?bug_id=6711913
>>>>>
>>>>> ? John
>>>>
>>
>
From yumin.qi at oracle.com Mon Aug 19 15:52:30 2013
From: yumin.qi at oracle.com (Yumin Qi)
Date: Mon, 19 Aug 2013 15:52:30 -0700
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To:
References: <520CF52B.6050000@oracle.com>
Message-ID: <5212A1AE.1010005@oracle.com>
Thanks, Ramki
On 8/19/2013 3:31 PM, Srinivas Ramakrishna wrote:
>
> Hi Yumin --
>
> Somewhat orthogonal to the discussion at hand, and certainly not a
> code review/discussion (so i
> apologize for injecting this into $SUBJ) but I wanted to say that log
> rotation is definitely a useful capability in the field.
>
> Have you folks perhaps considered two possible enhancements:
> (1) rotate logs at a frequency and time specified. (For example, on a
> daily, weekly or monthly basis.)
No such consideration at present. This needs an option for specifying
the frequency.
> (2) rotate logs asynchronously upon request. (say via a suitable bean.)
>
I can file a bug for serviceability to have this function together with
(1) through jmx or jmc.
Thanks
Yumin
> If (1) can be simulated by existing means I am all ears.
>
> thanks!
> -- ramki
>
>
>
> On Thu, Aug 15, 2013 at 8:35 AM, Yumin Qi > wrote:
>
> Hi,
>
> Can I have your review for this small changes?
> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>
>
> This is for a enhancement to add head/tail message to the
> logging files to assist reading GC output.
> 1. modified prompt message if invalid arguments used for log
> rotating;
> 2. add time and file name message to log file head/tail.
> 3. for easily identify which log file is current, use file name
> like .n.current, after it reaches maximum size, rename
> it to .n
> On Windows, there is no F_OK (existing test) definition,
> F_OK is defined as "0" and for _access of VC++, it just describes:
>
> modevalue
>
>
>
> Checks file for
>
> 00
>
>
>
> Existence only
>
> 02
>
>
>
> Write-only
>
> 04
>
>
>
> Read-only
>
> 06
>
>
>
> Read and write
>
>
> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
> The definition are consistent with unistd.h.
>
> Test: JPRT and jtreg.
>
> Thanks
> Yumin
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130819/42076b17/attachment.html
From suenaga.yasumasa at lab.ntt.co.jp Mon Aug 19 16:48:43 2013
From: suenaga.yasumasa at lab.ntt.co.jp (Yasumasa Suenaga)
Date: Tue, 20 Aug 2013 08:48:43 +0900
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <5212A1AE.1010005@oracle.com>
References: <520CF52B.6050000@oracle.com>
<5212A1AE.1010005@oracle.com>
Message-ID: <5212AEDB.20007@lab.ntt.co.jp>
Hi all,
> I can file a bug for serviceability to have this function together with (1) through jmx or jmc.
I already filed as 7090324.
7090324: gclog rotation via external tool
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090324
In last year, I tried to implement GC log rotation to jcmd.
I've attached that patch in this email.
Please check it.
Thanks,
Yasumasa
On 2013/08/20 7:52, Yumin Qi wrote:
> Thanks, Ramki
>
> On 8/19/2013 3:31 PM, Srinivas Ramakrishna wrote:
>>
>> Hi Yumin --
>>
>> Somewhat orthogonal to the discussion at hand, and certainly not a code review/discussion (so i
>> apologize for injecting this into $SUBJ) but I wanted to say that log rotation is definitely a useful capability in the field.
>>
>> Have you folks perhaps considered two possible enhancements:
>> (1) rotate logs at a frequency and time specified. (For example, on a daily, weekly or monthly basis.)
> No such consideration at present. This needs an option for specifying the frequency.
>> (2) rotate logs asynchronously upon request. (say via a suitable bean.)
>>
> I can file a bug for serviceability to have this function together with (1) through jmx or jmc.
>
> Thanks
> Yumin
>> If (1) can be simulated by existing means I am all ears.
>>
>> thanks!
>> -- ramki
>>
>>
>>
>> On Thu, Aug 15, 2013 at 8:35 AM, Yumin Qi > wrote:
>>
>> Hi,
>>
>> Can I have your review for this small changes?
>> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>>
>> This is for a enhancement to add head/tail message to the logging files to assist reading GC output.
>> 1. modified prompt message if invalid arguments used for log rotating;
>> 2. add time and file name message to log file head/tail.
>> 3. for easily identify which log file is current, use file name like .n.current, after it reaches maximum size, rename it to .n
>> On Windows, there is no F_OK (existing test) definition, F_OK is defined as "0" and for _access of VC++, it just describes:
>>
>> modevalue
>>
>>
>>
>> Checks file for
>>
>> 00
>>
>>
>>
>> Existence only
>>
>> 02
>>
>>
>>
>> Write-only
>>
>> 04
>>
>>
>>
>> Read-only
>>
>> 06
>>
>>
>>
>> Read and write
>>
>>
>> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
>> The definition are consistent with unistd.h.
>>
>> Test: JPRT and jtreg.
>>
>> Thanks
>> Yumin
>>
>>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jcmd.patch
Type: text/x-patch
Size: 6667 bytes
Desc: not available
Url : http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130820/8685c6d5/jcmd-0001.patch
From suenaga.yasumasa at lab.ntt.co.jp Mon Aug 19 16:57:53 2013
From: suenaga.yasumasa at lab.ntt.co.jp (Yasumasa Suenaga)
Date: Tue, 20 Aug 2013 08:57:53 +0900
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <52125A60.4050906@oracle.com>
References: <520CF52B.6050000@oracle.com> <52116800.3040901@lab.ntt.co.jp>
<10E39A148B301E4982FD13F7FCB3B5CE0A3FB5D4@MISOUT7MSGUSR9C.ITServices.sbc.com>
<52125A60.4050906@oracle.com>
Message-ID: <5212B101.5000303@lab.ntt.co.jp>
Hi Yumin,
> Log file name will be -pid%p-YYYY-MM-DD_HH-MM-SS.%i which p is pid and i be one of 0, ...., n-1. I am not planning to parse command line to get those info since they are available internally. Hope this will solve the problems mentioned in bug 6950794.
I think this filename is too long. So I want to set filename format as 6950794.
If you run several JVMs as multi-tenancy, I think that PID will be very important.
But if not, PID is not so important.
Can you discuss for JVM options in this RFE ?
Thanks,
Yasumasa
On 2013/08/20 2:48, Yumin Qi wrote:
> Scott and Yasumasa,
>
> Thanks for your information for bug 6950794.
>
> According to my current implementation, it is easy to identify which file is the current log ---- it ends up with .current appendix. At app exit, it did not renamed to other name so still is the last and latest log file.
>
> I will make modification based on current implementation to cover suggestions mentioned in bug 6950794.
> This will be only targeted to if gc log file rotations successfully set:
> Log file name will be -pid%p-YYYY-MM-DD_HH-MM-SS.%i which p is pid and i be one of 0, ...., n-1. I am not planning to parse command line to get those info since they are available internally. Hope this will solve the problems mentioned in bug 6950794.
>
> So the rotation will be:
> 1) File name, like mentioned above, example: gc.log-pid1234-2013-08-19_08-20-00.1 with
> -Xloggc:gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=1M
> Time stamp is the start of first rotation file created, and all rotation files share the same time stamp in file name.
> 2) Time stamp of each rotation begings still logged when it is started, finished.
> 3) For rotation in same file, the file name will be -pid%p-YYYY-MM-DD_HH-MM-SS
>
> Let me know what you think.
>
> Thanks
> Yumin
>
> On 8/19/2013 8:07 AM, STIRLING, SCOTT wrote:
>> For hosting large e-comm sites with dozens to hundreds of JVMs, where we always have GC logging enabled, the advent of GC log rotation features in the JVM was a nice surprise and I started using it immediately on a major new e-comm site (with Oracle ATG and Weblogic on Sun 1.6-latest JDK and RHEL). But as the file naming and rotation work now, when you stop and then restart a JVM with GC log rotation enabled, it overwrites the last un-rotated log file. That's not usually what we want. We like logs to have the timestamp or datestamp encoded in the file name for scripting, for future reference when logs are on a laptop for analysis with visualization tools (more important these days as GC logs for new garbage collectors get uglier and uglier), etc.
>>
>> It's possible to parameterize the log file name in scripts before it is passed to the JVM, but that's been do-able for years. And if you take a product such as Oracle Weblogic, it has a versionable, auto-deployed, centrally manageable config.xml, which we like to use as much as possible for, e.g., all the JVM args for all the JVMs in the domain. There's no facility for parameterized variables in config.xml. So you have to, again, do stuff in the launch script, which is more stuff to maintain, and so on.
>>
>> I'm willing to compile the patch for 6950794 and let you know if it compiles on Windows 7, 64 bit. I'm just a list observer but I can build it.
>>
>> Scott Stirling
>> AT&T, Boston
>>
>> -----Original Message-----
>> From: hotspot-gc-dev-bounces at openjdk.java.net [mailto:hotspot-gc-dev-bounces at openjdk.java.net] On Behalf Of Yasumasa Suenaga
>> Sent: Sunday, August 18, 2013 8:34 PM
>> To: Yumin Qi
>> Cc: hotspot-gc-dev at openjdk.java.net; hotspot-runtime-dev at openjdk.java.net
>> Subject: Re: RFR: 7164841: Improvements to the GC log file rotation
>>
>> Hi Yumin,
>>
>> I've posted a RFE and patch for adding timestamp, PID, etc to log filename.
>>
>> JDK-6950794 : Make the GC log file name parameterized
>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6950794
>> http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2012-July/004758.html
>>
>> Your patch writes timestamp into logfile.
>> Howeverm, in production system, we may want to check log generation through
>> log filename. (e.g. ls command at Linux)
>>
>> Could you check my patch?
>>
>>
>> Thanks,
>>
>> Yasumasa
>>
>> On 2013/08/16 0:35, Yumin Qi wrote:
>>> Hi,
>>>
>>> Can I have your review for this small changes?
>>> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>>>
>>> This is for a enhancement to add head/tail message to the logging files to assist reading GC output.
>>> 1. modified prompt message if invalid arguments used for log rotating;
>>> 2. add time and file name message to log file head/tail.
>>> 3. for easily identify which log file is current, use file name like .n.current, after it reaches maximum size, rename it to .n
>>> On Windows, there is no F_OK (existing test) definition, F_OK is defined as "0" and for _access of VC++, it just describes:
>>>
>>> modevalue
>>>
>>>
>>>
>>> Checks file for
>>>
>>> 00
>>>
>>>
>>>
>>> Existence only
>>>
>>> 02
>>>
>>>
>>>
>>> Write-only
>>>
>>> 04
>>>
>>>
>>>
>>> Read-only
>>>
>>> 06
>>>
>>>
>>>
>>> Read and write
>>>
>>>
>>> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
>>> The definition are consistent with unistd.h.
>>>
>>> Test: JPRT and jtreg.
>>>
>>> Thanks
>>> Yumin
From yumin.qi at oracle.com Mon Aug 19 16:56:55 2013
From: yumin.qi at oracle.com (yumin.qi at oracle.com)
Date: Mon, 19 Aug 2013 23:56:55 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 8023188: Unsafe volatile double store on
bsd is broken
Message-ID: <20130819235657.BE7DF489C9@hg.openjdk.java.net>
Changeset: b1fd869e7df0
Author: minqi
Date: 2013-08-19 09:16 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/b1fd869e7df0
8023188: Unsafe volatile double store on bsd is broken
Reviewed-by: dcubed, dholmes
Contributed-by: yumin.qi at oracle.com
! src/os_cpu/bsd_x86/vm/orderAccess_bsd_x86.inline.hpp
From suenaga.yasumasa at lab.ntt.co.jp Mon Aug 19 17:02:37 2013
From: suenaga.yasumasa at lab.ntt.co.jp (Yasumasa Suenaga)
Date: Tue, 20 Aug 2013 09:02:37 +0900
Subject: RFR: 7164841: Improvements to the GC log file rotation
In-Reply-To: <10E39A148B301E4982FD13F7FCB3B5CE0A3FB5D4@MISOUT7MSGUSR9C.ITServices.sbc.com>
References: <520CF52B.6050000@oracle.com> <52116800.3040901@lab.ntt.co.jp>
<10E39A148B301E4982FD13F7FCB3B5CE0A3FB5D4@MISOUT7MSGUSR9C.ITServices.sbc.com>
Message-ID: <5212B21D.40602@lab.ntt.co.jp>
Hi Scott,
> I'm willing to compile the patch for 6950794 and let you know if it compiles on Windows 7, 64 bit. I'm just a list observer but I can build it.
Do you want to build JDK for Linux (RHEL) ? If so, you have to build JDK on Linux.
Please apply my patch for your OpenJDK source tree and read "README-builds.html" in it.
http://hg.openjdk.java.net/build-infra/jdk7/file/tip/README-builds.html
Thanks,
Yasumasa
On 2013/08/20 0:07, STIRLING, SCOTT wrote:
> For hosting large e-comm sites with dozens to hundreds of JVMs, where we always have GC logging enabled, the advent of GC log rotation features in the JVM was a nice surprise and I started using it immediately on a major new e-comm site (with Oracle ATG and Weblogic on Sun 1.6-latest JDK and RHEL). But as the file naming and rotation work now, when you stop and then restart a JVM with GC log rotation enabled, it overwrites the last un-rotated log file. That's not usually what we want. We like logs to have the timestamp or datestamp encoded in the file name for scripting, for future reference when logs are on a laptop for analysis with visualization tools (more important these days as GC logs for new garbage collectors get uglier and uglier), etc.
>
> It's possible to parameterize the log file name in scripts before it is passed to the JVM, but that's been do-able for years. And if you take a product such as Oracle Weblogic, it has a versionable, auto-deployed, centrally manageable config.xml, which we like to use as much as possible for, e.g., all the JVM args for all the JVMs in the domain. There's no facility for parameterized variables in config.xml. So you have to, again, do stuff in the launch script, which is more stuff to maintain, and so on.
>
> I'm willing to compile the patch for 6950794 and let you know if it compiles on Windows 7, 64 bit. I'm just a list observer but I can build it.
>
> Scott Stirling
> AT&T, Boston
>
> -----Original Message-----
> From: hotspot-gc-dev-bounces at openjdk.java.net [mailto:hotspot-gc-dev-bounces at openjdk.java.net] On Behalf Of Yasumasa Suenaga
> Sent: Sunday, August 18, 2013 8:34 PM
> To: Yumin Qi
> Cc: hotspot-gc-dev at openjdk.java.net; hotspot-runtime-dev at openjdk.java.net
> Subject: Re: RFR: 7164841: Improvements to the GC log file rotation
>
> Hi Yumin,
>
> I've posted a RFE and patch for adding timestamp, PID, etc to log filename.
>
> JDK-6950794 : Make the GC log file name parameterized
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6950794
> http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2012-July/004758.html
>
> Your patch writes timestamp into logfile.
> Howeverm, in production system, we may want to check log generation through
> log filename. (e.g. ls command at Linux)
>
> Could you check my patch?
>
>
> Thanks,
>
> Yasumasa
>
> On 2013/08/16 0:35, Yumin Qi wrote:
>> Hi,
>>
>> Can I have your review for this small changes?
>> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>>
>> This is for a enhancement to add head/tail message to the logging files to assist reading GC output.
>> 1. modified prompt message if invalid arguments used for log rotating;
>> 2. add time and file name message to log file head/tail.
>> 3. for easily identify which log file is current, use file name like.n.current, after it reaches maximum size, rename it to.n
>> On Windows, there is no F_OK (existing test) definition, F_OK is defined as "0" and for _access of VC++, it just describes:
>>
>> modevalue
>>
>>
>>
>> Checks file for
>>
>> 00
>>
>>
>>
>> Existence only
>>
>> 02
>>
>>
>>
>> Write-only
>>
>> 04
>>
>>
>>
>> Read-only
>>
>> 06
>>
>>
>>
>> Read and write
>>
>>
>> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
>> The definition are consistent with unistd.h.
>>
>> Test: JPRT and jtreg.
>>
>> Thanks
>> Yumin
>
From daniel.daugherty at oracle.com Mon Aug 19 17:18:13 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Mon, 19 Aug 2013 18:18:13 -0600
Subject: [JBS] (JDK-8023287) HOTSPOT_BUILD_COMPILER needs to support "Sun
Studio 12u3"
In-Reply-To:
References:
Message-ID: <5212B5C5.6080904@oracle.com>
HotSpot Runtime folks,
Here's a two line fix for getting the name of the SS12u3 compiler
correct. Not really worth a webrev (IMHO)...
The current (unfriendly) output looks like:
$ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-i586/bin/java
-Xinternalversion
Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
(1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
Workshop:0x5120
$ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-x64/bin/java
-Xinternalversion
Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
(1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
Workshop:0x5120
A couple of reviewers, please...
Dan
On 8/19/13 5:53 PM, Daniel Daugherty (JBS) wrote:
> Daniel Daugherty
>
> commented on Bug JDK-8023287
>
> *HOTSPOT_BUILD_COMPILER needs to support "Sun Studio 12u3"*
>
>
>
>
> Here's the proposed change:
>
> $ hg diff
> diff -r e5003079dfa5 src/share/vm/runtime/vm_version.cpp
> --- a/src/share/vm/runtime/vm_version.cpp Fri Aug 16 10:06:58 2013 -0700
> +++ b/src/share/vm/runtime/vm_version.cpp Mon Aug 19 16:50:40 2013 -0700
> @@ -231,6 +231,8 @@ const char* Abstract_VM_Version::interna
> #define HOTSPOT_BUILD_COMPILER "Workshop 5.9"
> #elif __SUNPRO_CC == 0x5100
> #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1"
> + #elif __SUNPRO_CC == 0x5120
> + #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u3"
> #else
> #define HOTSPOT_BUILD_COMPILER "unknown Workshop:"
> XSTR(__SUNPRO_CC)
> #endif
>
> This message is automatically generated by JIRA.
> If you think it was sent incorrectly, please contact your JIRA
> administrators
>
> For more information on JIRA, see: http://www.atlassian.com/software/jira
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130819/c021274c/attachment-0001.html
From david.holmes at oracle.com Mon Aug 19 18:47:01 2013
From: david.holmes at oracle.com (David Holmes)
Date: Tue, 20 Aug 2013 11:47:01 +1000
Subject: Request for Review 7121403: [TESTBUG] runtime/7051189/Xchecksig.sh
fails on 64-bit solaris
In-Reply-To: <5212231A.7070704@oracle.com>
References: <5203F024.9040006@oracle.com> <5212231A.7070704@oracle.com>
Message-ID: <5212CA95.3090304@oracle.com>
Hi Harold,
Should this also apply to OSX? Why is it restricted to 64-bit?
Thanks,
David
On 19/08/2013 11:52 PM, harold seigel wrote:
> Hi,
>
> I'm resending this RFR because I did not get any reviewers the first
> time. If you have chance, please take a look.
>
> Thanks, Harold
>
> On 8/8/2013 3:23 PM, harold seigel wrote:
>> Hi,
>>
>> Please review this change to fix bug 7121403. The test was rewritten
>> in Java and modified to properly determine when it is running on
>> 64-bit Solaris.
>>
>> The fix was tested by running the new test on 32-bit Linux, Solaris
>> Sparc, Solaris X86, and 64-bit Linux.
>>
>> webrev: http://cr.openjdk.java.net/~hseigel/bug_7121403/
>>
>>
>> bug: http://bugs.sun.com/view_bug.do?bug_id=7121403
>>
>> JBS bug: https://jbs.oracle.com/bugs/browse/JDK-7121403
>>
>> Thanks! Harold
>
From david.holmes at oracle.com Mon Aug 19 18:54:06 2013
From: david.holmes at oracle.com (David Holmes)
Date: Tue, 20 Aug 2013 11:54:06 +1000
Subject: Jarreorder and classlists
In-Reply-To: <521236FE.60409@oracle.com>
References: <521236FE.60409@oracle.com>
Message-ID: <5212CC3E.6040909@oracle.com>
Hi Erik,
Adding in hotspot-runtime-dev.
There is a lot of history here and I'm not sure who remembers all the
details - if anyone. There are existing open bugs to re-assess the
utility of the jarreorder (7032729) and to update the classlists (8005688).
David
------
On 20/08/2013 1:17 AM, Erik Joelsson wrote:
> Hello,
>
> I wonder if anyone knows more about the jarreorder tool and why we use it?
>
> As I understand it, we have precalculated classlists for each platform
> (most likely outdated) and the tool is used to make sure those classes
> end up in a specific order, last in rt.jar. I assume this is some kind
> of startup time optimization.
>
> I got some help from Claes in the performance team and did a quick run
> of a startup and footprint benchmark, comparing a build with the rt.jar
> reordered as normal and one where I simply turned off this feature and
> let the files end up in the default order. Our preliminary findings show
> that any difference between the two is negligible. Before we declare it
> useless, we might need to test with freshly generated classlists? Does
> anyone know how to generate them? Is there some other benefit of this
> that I might have missed?
>
> I would like to propose removing jarreorder to simplify the build. This
> would also enable faster incremental builds of the images target, by not
> having to rebuild the whole rt.jar every time.
>
> /Erik
From david.holmes at oracle.com Mon Aug 19 19:16:23 2013
From: david.holmes at oracle.com (David Holmes)
Date: Tue, 20 Aug 2013 12:16:23 +1000
Subject: RFR (M) : JDK-8016029 : test runtime/6878713/Test6878713.sh failed
- round 2
In-Reply-To: <52125ACF.9050803@oracle.com>
References: <52125ACF.9050803@oracle.com>
Message-ID: <5212D177.8070907@oracle.com>
Hi Misha,
I have a couple of issues with this.
1. Missing @run tag
2. The shell script uses the COMPILEJDK to find the jar tool, but you
are using JDKToolFinder which uses the TESTJDK - which means your test
will be limited to running only on a full JDK (not a JRE). I thought the
testlibrary supported using either the test-jdk or the compile-jdk but I
don't see that now. :(
3. Not new with your change, but the unpacked files don't get cleaned up.
Thanks,
David
On 20/08/2013 3:50 AM, Mikhailo Seledtsov wrote:
> This is a round 2 review for this fix.
> Please review.
>
> Original review request (dated 16-July-2013) with the same subject was:
> "
> Please review this test fix. The change is a fix for the original bug,
> plus an update to the test condition to reflect new JVM behavior and a
> rewrite of an sh script test in Java.
> JBS: https://jbs.oracle.com/bugs/browse/JDK-8016029
> (Old) Webrev: http://cr.openjdk.java.net/~mseledtsov/6878713/webrev.00/
>
> "
>
>
> Change since last round of review:
> JVM run-time technical leadership has made a decision to keep the
> testcase.jar until a long-term solution is in place for handling "Java
> assembler"-based and byte-code-based test cases.
>
> Here is the updated webrev and comments:
> Webrev: http://cr.openjdk.java.net/~mseledtsov/8016029/webrev.01/
>
> Testing: JPRT run for this test
> (2013-08-19-154813.mseledtsov.bugFixing01-hotspot-rt)
>
> Here are original notes:
> - the original behavior of the VM in this test case has changed, and the
> expected error message has changed as well. There is an extensive amount
> of information about this in the original bug, posted by Dan. The change
> was introduced in change-set: 4876:f75faf51e8c4 by Harold. Checking for
> the old expected messages has been removed from the test. This change is
> for JDK8 and forward, and no back-ports planned.
>
> - the flag -XX:+IgnoreUnrecognizedVMOptions has been removed to avoid
> masking a potential problem. If VM drops support for any of XX flags
> used in this test, it is better to know about it right away rather than
> mask it and silently pass/ignore.
>
> - the flag -XX:+PrintCommandLineFlags has been removed; if this
> information is desired, IMO it should be triggered either by a verbose
> mode of JTREG tools, or by hand, not by individual test(s).
>
> Round 2 notes:
> - the shell script has been replaced by Java
>
> - test has been moved to a new location, moving away from using bug
> numbers to using functional categories for test sub-folders
>
>
> Misha
From david.holmes at oracle.com Mon Aug 19 19:27:04 2013
From: david.holmes at oracle.com (David Holmes)
Date: Tue, 20 Aug 2013 12:27:04 +1000
Subject: [JBS] (JDK-8023287) HOTSPOT_BUILD_COMPILER needs to support "Sun
Studio 12u3"
In-Reply-To: <5212B5C5.6080904@oracle.com>
References:
<5212B5C5.6080904@oracle.com>
Message-ID: <5212D3F8.7020909@oracle.com>
Hi Dan,
If we are fixing the SS12u3 support then there are makefile changes
needed as well as I added to the bug report. Those changes are also
trivial, and I think it would be good to get SS12u3 support in in one hit.
Thanks,
David
On 20/08/2013 10:18 AM, Daniel D. Daugherty wrote:
> HotSpot Runtime folks,
>
> Here's a two line fix for getting the name of the SS12u3 compiler
> correct. Not really worth a webrev (IMHO)...
>
> The current (unfriendly) output looks like:
>
> $ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-i586/bin/java
> -Xinternalversion
> Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
> (1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
> Workshop:0x5120
>
> $ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-x64/bin/java
> -Xinternalversion
> Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
> (1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
> Workshop:0x5120
>
> A couple of reviewers, please...
>
> Dan
>
>
> On 8/19/13 5:53 PM, Daniel Daugherty (JBS) wrote:
>> Daniel Daugherty
>>
>> commented on Bug JDK-8023287
>>
>> *HOTSPOT_BUILD_COMPILER needs to support "Sun Studio 12u3"*
>>
>>
>>
>>
>> Here's the proposed change:
>>
>> $ hg diff
>> diff -r e5003079dfa5 src/share/vm/runtime/vm_version.cpp
>> --- a/src/share/vm/runtime/vm_version.cpp Fri Aug 16 10:06:58 2013 -0700
>> +++ b/src/share/vm/runtime/vm_version.cpp Mon Aug 19 16:50:40 2013 -0700
>> @@ -231,6 +231,8 @@ const char* Abstract_VM_Version::interna
>> #define HOTSPOT_BUILD_COMPILER "Workshop 5.9"
>> #elif __SUNPRO_CC == 0x5100
>> #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1"
>> + #elif __SUNPRO_CC == 0x5120
>> + #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u3"
>> #else
>> #define HOTSPOT_BUILD_COMPILER "unknown Workshop:"
>> XSTR(__SUNPRO_CC)
>> #endif
>>
>> This message is automatically generated by JIRA.
>> If you think it was sent incorrectly, please contact your JIRA
>> administrators
>>
>> For more information on JIRA, see: http://www.atlassian.com/software/jira
>>
>
From gary.collins at oracle.com Mon Aug 19 19:45:17 2013
From: gary.collins at oracle.com (Gary Collins)
Date: Mon, 19 Aug 2013 19:45:17 -0700
Subject: RFR (M) : JDK-8016029 : test runtime/6878713/Test6878713.sh
failed - round 2
In-Reply-To: <5212D177.8070907@oracle.com>
References: <52125ACF.9050803@oracle.com> <5212D177.8070907@oracle.com>
Message-ID:
Correct David. They need to use compile jdk as you stated.
Not sure what the jdktoolfinder is
Gary
Sent from my iPad
On Aug 19, 2013, at 7:16 PM, David Holmes wrote:
> Hi Misha,
>
> I have a couple of issues with this.
>
> 1. Missing @run tag
>
> 2. The shell script uses the COMPILEJDK to find the jar tool, but you are using JDKToolFinder which uses the TESTJDK - which means your test will be limited to running only on a full JDK (not a JRE). I thought the testlibrary supported using either the test-jdk or the compile-jdk but I don't see that now. :(
>
> 3. Not new with your change, but the unpacked files don't get cleaned up.
>
> Thanks,
> David
>
> On 20/08/2013 3:50 AM, Mikhailo Seledtsov wrote:
>> This is a round 2 review for this fix.
>> Please review.
>>
>> Original review request (dated 16-July-2013) with the same subject was:
>> "
>> Please review this test fix. The change is a fix for the original bug,
>> plus an update to the test condition to reflect new JVM behavior and a
>> rewrite of an sh script test in Java.
>> JBS: https://jbs.oracle.com/bugs/browse/JDK-8016029
>> (Old) Webrev: http://cr.openjdk.java.net/~mseledtsov/6878713/webrev.00/
>>
>> "
>>
>>
>> Change since last round of review:
>> JVM run-time technical leadership has made a decision to keep the
>> testcase.jar until a long-term solution is in place for handling "Java
>> assembler"-based and byte-code-based test cases.
>>
>> Here is the updated webrev and comments:
>> Webrev: http://cr.openjdk.java.net/~mseledtsov/8016029/webrev.01/
>>
>> Testing: JPRT run for this test
>> (2013-08-19-154813.mseledtsov.bugFixing01-hotspot-rt)
>>
>> Here are original notes:
>> - the original behavior of the VM in this test case has changed, and the
>> expected error message has changed as well. There is an extensive amount
>> of information about this in the original bug, posted by Dan. The change
>> was introduced in change-set: 4876:f75faf51e8c4 by Harold. Checking for
>> the old expected messages has been removed from the test. This change is
>> for JDK8 and forward, and no back-ports planned.
>>
>> - the flag -XX:+IgnoreUnrecognizedVMOptions has been removed to avoid
>> masking a potential problem. If VM drops support for any of XX flags
>> used in this test, it is better to know about it right away rather than
>> mask it and silently pass/ignore.
>>
>> - the flag -XX:+PrintCommandLineFlags has been removed; if this
>> information is desired, IMO it should be triggered either by a verbose
>> mode of JTREG tools, or by hand, not by individual test(s).
>>
>> Round 2 notes:
>> - the shell script has been replaced by Java
>>
>> - test has been moved to a new location, moving away from using bug
>> numbers to using functional categories for test sub-folders
>>
>>
>> Misha
From daniel.daugherty at oracle.com Mon Aug 19 19:57:52 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Mon, 19 Aug 2013 20:57:52 -0600
Subject: [JBS] (JDK-8023287) HOTSPOT_BUILD_COMPILER needs to support "Sun
Studio 12u3"
In-Reply-To: <5212D3F8.7020909@oracle.com>
References:
<5212B5C5.6080904@oracle.com> <5212D3F8.7020909@oracle.com>
Message-ID: <5212DB30.7060802@oracle.com>
Sorry David, it is not my place to claim that SS12u3 is the official
compiler version. I'm just fixing the problem where the version is
reported in an unfriendly way when the bits are built with SS12u3.
As far as I am concerned, SS12u1 is still the official compiler
version and SS12u3 has not yet passed "validation".
Dan
On 8/19/13 8:27 PM, David Holmes wrote:
> Hi Dan,
>
> If we are fixing the SS12u3 support then there are makefile changes
> needed as well as I added to the bug report. Those changes are also
> trivial, and I think it would be good to get SS12u3 support in in one
> hit.
>
> Thanks,
> David
>
> On 20/08/2013 10:18 AM, Daniel D. Daugherty wrote:
>> HotSpot Runtime folks,
>>
>> Here's a two line fix for getting the name of the SS12u3 compiler
>> correct. Not really worth a webrev (IMHO)...
>>
>> The current (unfriendly) output looks like:
>>
>> $ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-i586/bin/java
>> -Xinternalversion
>> Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
>> (1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
>> Workshop:0x5120
>>
>> $ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-x64/bin/java
>> -Xinternalversion
>> Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
>> (1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
>> Workshop:0x5120
>>
>> A couple of reviewers, please...
>>
>> Dan
>>
>>
>> On 8/19/13 5:53 PM, Daniel Daugherty (JBS) wrote:
>>> Daniel Daugherty
>>>
>>> commented on Bug JDK-8023287
>>>
>>> *HOTSPOT_BUILD_COMPILER needs to support "Sun Studio 12u3"*
>>>
>>>
>>>
>>>
>>> Here's the proposed change:
>>>
>>> $ hg diff
>>> diff -r e5003079dfa5 src/share/vm/runtime/vm_version.cpp
>>> --- a/src/share/vm/runtime/vm_version.cpp Fri Aug 16 10:06:58 2013
>>> -0700
>>> +++ b/src/share/vm/runtime/vm_version.cpp Mon Aug 19 16:50:40 2013
>>> -0700
>>> @@ -231,6 +231,8 @@ const char* Abstract_VM_Version::interna
>>> #define HOTSPOT_BUILD_COMPILER "Workshop 5.9"
>>> #elif __SUNPRO_CC == 0x5100
>>> #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1"
>>> + #elif __SUNPRO_CC == 0x5120
>>> + #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u3"
>>> #else
>>> #define HOTSPOT_BUILD_COMPILER "unknown Workshop:"
>>> XSTR(__SUNPRO_CC)
>>> #endif
>>>
>>> This message is automatically generated by JIRA.
>>> If you think it was sent incorrectly, please contact your JIRA
>>> administrators
>>>
>>>
>>> For more information on JIRA, see:
>>> http://www.atlassian.com/software/jira
>>>
>>
>
>
From david.holmes at oracle.com Mon Aug 19 20:17:23 2013
From: david.holmes at oracle.com (David Holmes)
Date: Tue, 20 Aug 2013 13:17:23 +1000
Subject: RFR (M) : JDK-8016029 : test runtime/6878713/Test6878713.sh failed
- round 2
In-Reply-To:
References: <52125ACF.9050803@oracle.com> <5212D177.8070907@oracle.com>
Message-ID: <5212DFC3.80804@oracle.com>
On 20/08/2013 12:45 PM, Gary Collins wrote:
> Correct David. They need to use compile jdk as you stated.
>
> Not sure what the jdktoolfinder is
It is one of the utilities in the testlibrary to make it easier to do
all this multi-process stuff from Java. Problem is that JDKToolFinder
only returns tools from the test-jdk. But if the tool (javac, jar, jcmd,
jps etc) is only incidental to what is being tested it can (usually but
not always) come from the compile-jdk.
David
>
>
> Gary
>
> Sent from my iPad
>
> On Aug 19, 2013, at 7:16 PM, David Holmes wrote:
>
>> Hi Misha,
>>
>> I have a couple of issues with this.
>>
>> 1. Missing @run tag
>>
>> 2. The shell script uses the COMPILEJDK to find the jar tool, but you are using JDKToolFinder which uses the TESTJDK - which means your test will be limited to running only on a full JDK (not a JRE). I thought the testlibrary supported using either the test-jdk or the compile-jdk but I don't see that now. :(
>>
>> 3. Not new with your change, but the unpacked files don't get cleaned up.
>>
>> Thanks,
>> David
>>
>> On 20/08/2013 3:50 AM, Mikhailo Seledtsov wrote:
>>> This is a round 2 review for this fix.
>>> Please review.
>>>
>>> Original review request (dated 16-July-2013) with the same subject was:
>>> "
>>> Please review this test fix. The change is a fix for the original bug,
>>> plus an update to the test condition to reflect new JVM behavior and a
>>> rewrite of an sh script test in Java.
>>> JBS: https://jbs.oracle.com/bugs/browse/JDK-8016029
>>> (Old) Webrev: http://cr.openjdk.java.net/~mseledtsov/6878713/webrev.00/
>>>
>>> "
>>>
>>>
>>> Change since last round of review:
>>> JVM run-time technical leadership has made a decision to keep the
>>> testcase.jar until a long-term solution is in place for handling "Java
>>> assembler"-based and byte-code-based test cases.
>>>
>>> Here is the updated webrev and comments:
>>> Webrev: http://cr.openjdk.java.net/~mseledtsov/8016029/webrev.01/
>>>
>>> Testing: JPRT run for this test
>>> (2013-08-19-154813.mseledtsov.bugFixing01-hotspot-rt)
>>>
>>> Here are original notes:
>>> - the original behavior of the VM in this test case has changed, and the
>>> expected error message has changed as well. There is an extensive amount
>>> of information about this in the original bug, posted by Dan. The change
>>> was introduced in change-set: 4876:f75faf51e8c4 by Harold. Checking for
>>> the old expected messages has been removed from the test. This change is
>>> for JDK8 and forward, and no back-ports planned.
>>>
>>> - the flag -XX:+IgnoreUnrecognizedVMOptions has been removed to avoid
>>> masking a potential problem. If VM drops support for any of XX flags
>>> used in this test, it is better to know about it right away rather than
>>> mask it and silently pass/ignore.
>>>
>>> - the flag -XX:+PrintCommandLineFlags has been removed; if this
>>> information is desired, IMO it should be triggered either by a verbose
>>> mode of JTREG tools, or by hand, not by individual test(s).
>>>
>>> Round 2 notes:
>>> - the shell script has been replaced by Java
>>>
>>> - test has been moved to a new location, moving away from using bug
>>> numbers to using functional categories for test sub-folders
>>>
>>>
>>> Misha
From david.holmes at oracle.com Mon Aug 19 20:24:10 2013
From: david.holmes at oracle.com (David Holmes)
Date: Tue, 20 Aug 2013 13:24:10 +1000
Subject: [JBS] (JDK-8023287) HOTSPOT_BUILD_COMPILER needs to support "Sun
Studio 12u3"
In-Reply-To: <5212DB30.7060802@oracle.com>
References:
<5212B5C5.6080904@oracle.com> <5212D3F8.7020909@oracle.com>
<5212DB30.7060802@oracle.com>
Message-ID: <5212E15A.4040804@oracle.com>
On 20/08/2013 12:57 PM, Daniel D. Daugherty wrote:
> Sorry David, it is not my place to claim that SS12u3 is the official
> compiler version. I'm just fixing the problem where the version is
> reported in an unfriendly way when the bits are built with SS12u3.
>
> As far as I am concerned, SS12u1 is still the official compiler
> version and SS12u3 has not yet passed "validation".
You are of course correct - the updates to the makefile should only
happen if/when we switch to SS12u3 as the official compiler.
Sorry, just trying to kill two birds with one changset ;-)
Reviewed.
Thanks,
David
> Dan
>
>
> On 8/19/13 8:27 PM, David Holmes wrote:
>> Hi Dan,
>>
>> If we are fixing the SS12u3 support then there are makefile changes
>> needed as well as I added to the bug report. Those changes are also
>> trivial, and I think it would be good to get SS12u3 support in in one
>> hit.
>>
>> Thanks,
>> David
>>
>> On 20/08/2013 10:18 AM, Daniel D. Daugherty wrote:
>>> HotSpot Runtime folks,
>>>
>>> Here's a two line fix for getting the name of the SS12u3 compiler
>>> correct. Not really worth a webrev (IMHO)...
>>>
>>> The current (unfriendly) output looks like:
>>>
>>> $ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-i586/bin/java
>>> -Xinternalversion
>>> Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
>>> (1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
>>> Workshop:0x5120
>>>
>>> $ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-x64/bin/java
>>> -Xinternalversion
>>> Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
>>> (1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
>>> Workshop:0x5120
>>>
>>> A couple of reviewers, please...
>>>
>>> Dan
>>>
>>>
>>> On 8/19/13 5:53 PM, Daniel Daugherty (JBS) wrote:
>>>> Daniel Daugherty
>>>>
>>>> commented on Bug JDK-8023287
>>>>
>>>> *HOTSPOT_BUILD_COMPILER needs to support "Sun Studio 12u3"*
>>>>
>>>>
>>>>
>>>>
>>>> Here's the proposed change:
>>>>
>>>> $ hg diff
>>>> diff -r e5003079dfa5 src/share/vm/runtime/vm_version.cpp
>>>> --- a/src/share/vm/runtime/vm_version.cpp Fri Aug 16 10:06:58 2013
>>>> -0700
>>>> +++ b/src/share/vm/runtime/vm_version.cpp Mon Aug 19 16:50:40 2013
>>>> -0700
>>>> @@ -231,6 +231,8 @@ const char* Abstract_VM_Version::interna
>>>> #define HOTSPOT_BUILD_COMPILER "Workshop 5.9"
>>>> #elif __SUNPRO_CC == 0x5100
>>>> #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1"
>>>> + #elif __SUNPRO_CC == 0x5120
>>>> + #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u3"
>>>> #else
>>>> #define HOTSPOT_BUILD_COMPILER "unknown Workshop:"
>>>> XSTR(__SUNPRO_CC)
>>>> #endif
>>>>
>>>> This message is automatically generated by JIRA.
>>>> If you think it was sent incorrectly, please contact your JIRA
>>>> administrators
>>>>
>>>>
>>>> For more information on JIRA, see:
>>>> http://www.atlassian.com/software/jira
>>>>
>>>
>>
>>
>
From daniel.daugherty at oracle.com Mon Aug 19 20:30:22 2013
From: daniel.daugherty at oracle.com (Daniel D. Daugherty)
Date: Mon, 19 Aug 2013 21:30:22 -0600
Subject: [JBS] (JDK-8023287) HOTSPOT_BUILD_COMPILER needs to support "Sun
Studio 12u3"
In-Reply-To: <5212E15A.4040804@oracle.com>
References:
<5212B5C5.6080904@oracle.com> <5212D3F8.7020909@oracle.com>
<5212DB30.7060802@oracle.com> <5212E15A.4040804@oracle.com>
Message-ID: <5212E2CE.30207@oracle.com>
On 8/19/13 9:24 PM, David Holmes wrote:
> On 20/08/2013 12:57 PM, Daniel D. Daugherty wrote:
>> Sorry David, it is not my place to claim that SS12u3 is the official
>> compiler version. I'm just fixing the problem where the version is
>> reported in an unfriendly way when the bits are built with SS12u3.
>>
>> As far as I am concerned, SS12u1 is still the official compiler
>> version and SS12u3 has not yet passed "validation".
>
> You are of course correct - the updates to the makefile should only
> happen if/when we switch to SS12u3 as the official compiler.
>
> Sorry, just trying to kill two birds with one changset ;-)
Thanks for your understanding!
> Reviewed.
Thanks for the review!
Dan
>
> Thanks,
> David
>
>> Dan
>>
>>
>> On 8/19/13 8:27 PM, David Holmes wrote:
>>> Hi Dan,
>>>
>>> If we are fixing the SS12u3 support then there are makefile changes
>>> needed as well as I added to the bug report. Those changes are also
>>> trivial, and I think it would be good to get SS12u3 support in in one
>>> hit.
>>>
>>> Thanks,
>>> David
>>>
>>> On 20/08/2013 10:18 AM, Daniel D. Daugherty wrote:
>>>> HotSpot Runtime folks,
>>>>
>>>> Here's a two line fix for getting the name of the SS12u3 compiler
>>>> correct. Not really worth a webrev (IMHO)...
>>>>
>>>> The current (unfriendly) output looks like:
>>>>
>>>> $ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-i586/bin/java
>>>> -Xinternalversion
>>>> Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
>>>> (1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
>>>> Workshop:0x5120
>>>>
>>>> $ /java/re/jdk/1.8.0/promoted/all/b100/binaries/solaris-x64/bin/java
>>>> -Xinternalversion
>>>> Java HotSpot(TM) Server VM (25.0-b42) for solaris-x86 JRE
>>>> (1.8.0-ea-b100), built on Jul 25 2013 05:03:21 by "" with unknown
>>>> Workshop:0x5120
>>>>
>>>> A couple of reviewers, please...
>>>>
>>>> Dan
>>>>
>>>>
>>>> On 8/19/13 5:53 PM, Daniel Daugherty (JBS) wrote:
>>>>> Daniel Daugherty
>>>>>
>>>>> commented on Bug JDK-8023287
>>>>>
>>>>> *HOTSPOT_BUILD_COMPILER needs to support "Sun Studio 12u3"*
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Here's the proposed change:
>>>>>
>>>>> $ hg diff
>>>>> diff -r e5003079dfa5 src/share/vm/runtime/vm_version.cpp
>>>>> --- a/src/share/vm/runtime/vm_version.cpp Fri Aug 16 10:06:58 2013
>>>>> -0700
>>>>> +++ b/src/share/vm/runtime/vm_version.cpp Mon Aug 19 16:50:40 2013
>>>>> -0700
>>>>> @@ -231,6 +231,8 @@ const char* Abstract_VM_Version::interna
>>>>> #define HOTSPOT_BUILD_COMPILER "Workshop 5.9"
>>>>> #elif __SUNPRO_CC == 0x5100
>>>>> #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u1"
>>>>> + #elif __SUNPRO_CC == 0x5120
>>>>> + #define HOTSPOT_BUILD_COMPILER "Sun Studio 12u3"
>>>>> #else
>>>>> #define HOTSPOT_BUILD_COMPILER "unknown Workshop:"
>>>>> XSTR(__SUNPRO_CC)
>>>>> #endif
>>>>>
>>>>> This message is automatically generated by JIRA.
>>>>> If you think it was sent incorrectly, please contact your JIRA
>>>>> administrators
>>>>>
>>>>>
>>>>>
>>>>> For more information on JIRA, see:
>>>>> http://www.atlassian.com/software/jira
>>>>>
>>>>
>>>
>>>
>>
>
>
From christian.tornqvist at oracle.com Mon Aug 19 21:10:19 2013
From: christian.tornqvist at oracle.com (Christian Tornqvist)
Date: Tue, 20 Aug 2013 00:10:19 -0400
Subject: RFR (M) : JDK-8016029 : test runtime/6878713/Test6878713.sh
failed - round 2
In-Reply-To: <5212D177.8070907@oracle.com>
References: <52125ACF.9050803@oracle.com> <5212D177.8070907@oracle.com>
Message-ID: <00a501ce9d5b$2f5bc050$8e1340f0$@oracle.com>
Hi David,
>1. Missing @run tag
The default action (when there is no @compile or @run tag ) of jtreg is '@run main Test.java'
>3. Not new with your change, but the unpacked files don't get cleaned up.
Jtreg will clean up the scratch directory when the test has passed, this not something the tests should do themselves
Thanks,
Christian
-----Original Message-----
From: hotspot-runtime-dev-bounces at openjdk.java.net [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of David Holmes
Sent: Monday, August 19, 2013 10:16 PM
To: Mikhailo Seledtsov
Cc: hotspot-runtime-dev
Subject: Re: RFR (M) : JDK-8016029 : test runtime/6878713/Test6878713.sh failed - round 2
Hi Misha,
I have a couple of issues with this.
1. Missing @run tag
2. The shell script uses the COMPILEJDK to find the jar tool, but you are using JDKToolFinder which uses the TESTJDK - which means your test will be limited to running only on a full JDK (not a JRE). I thought the testlibrary supported using either the test-jdk or the compile-jdk but I don't see that now. :(
3. Not new with your change, but the unpacked files don't get cleaned up.
Thanks,
David
On 20/08/2013 3:50 AM, Mikhailo Seledtsov wrote:
> This is a round 2 review for this fix.
> Please review.
>
> Original review request (dated 16-July-2013) with the same subject was:
> "
> Please review this test fix. The change is a fix for the original bug,
> plus an update to the test condition to reflect new JVM behavior and a
> rewrite of an sh script test in Java.
> JBS: https://jbs.oracle.com/bugs/browse/JDK-8016029
> (Old) Webrev:
> http://cr.openjdk.java.net/~mseledtsov/6878713/webrev.00/
>
> "
>
>
> Change since last round of review:
> JVM run-time technical leadership has made a decision to keep the
> testcase.jar until a long-term solution is in place for handling "Java
> assembler"-based and byte-code-based test cases.
>
> Here is the updated webrev and comments:
> Webrev: http://cr.openjdk.java.net/~mseledtsov/8016029/webrev.01/
>
> Testing: JPRT run for this test
> (2013-08-19-154813.mseledtsov.bugFixing01-hotspot-rt)
>
> Here are original notes:
> - the original behavior of the VM in this test case has changed, and
> the expected error message has changed as well. There is an extensive
> amount of information about this in the original bug, posted by Dan.
> The change was introduced in change-set: 4876:f75faf51e8c4 by Harold.
> Checking for the old expected messages has been removed from the test.
> This change is for JDK8 and forward, and no back-ports planned.
>
> - the flag -XX:+IgnoreUnrecognizedVMOptions has been removed to avoid
> masking a potential problem. If VM drops support for any of XX flags
> used in this test, it is better to know about it right away rather
> than mask it and silently pass/ignore.
>
> - the flag -XX:+PrintCommandLineFlags has been removed; if this
> information is desired, IMO it should be triggered either by a verbose
> mode of JTREG tools, or by hand, not by individual test(s).
>
> Round 2 notes:
> - the shell script has been replaced by Java
>
> - test has been moved to a new location, moving away from using bug
> numbers to using functional categories for test sub-folders
>
>
> Misha
From david.holmes at oracle.com Mon Aug 19 21:16:30 2013
From: david.holmes at oracle.com (David Holmes)
Date: Tue, 20 Aug 2013 14:16:30 +1000
Subject: RFR (M) : JDK-8016029 : test runtime/6878713/Test6878713.sh failed
- round 2
In-Reply-To: <00a501ce9d5b$2f5bc050$8e1340f0$@oracle.com>
References: <52125ACF.9050803@oracle.com> <5212D177.8070907@oracle.com>
<00a501ce9d5b$2f5bc050$8e1340f0$@oracle.com>
Message-ID: <5212ED9E.7090405@oracle.com>
Hi Christian,
On 20/08/2013 2:10 PM, Christian Tornqvist wrote:
> Hi David,
>
>> 1. Missing @run tag
>
> The default action (when there is no @compile or @run tag ) of jtreg is '@run main Test.java'
Okay, but there have been a few issues lately with misconfigured tags so
I think it preferable to be explicit.
>> 3. Not new with your change, but the unpacked files don't get cleaned up.
>
> Jtreg will clean up the scratch directory when the test has passed, this not something the tests should do themselves
I see we are relying on jtreg to do the cleanup here, but I like tests
that can be run outside of jtreg too and not cause problems and/or a
mess. But I won't push it. :)
Thanks,
David
> Thanks,
> Christian
>
> -----Original Message-----
> From: hotspot-runtime-dev-bounces at openjdk.java.net [mailto:hotspot-runtime-dev-bounces at openjdk.java.net] On Behalf Of David Holmes
> Sent: Monday, August 19, 2013 10:16 PM
> To: Mikhailo Seledtsov
> Cc: hotspot-runtime-dev
> Subject: Re: RFR (M) : JDK-8016029 : test runtime/6878713/Test6878713.sh failed - round 2
>
> Hi Misha,
>
> I have a couple of issues with this.
>
> 1. Missing @run tag
>
> 2. The shell script uses the COMPILEJDK to find the jar tool, but you are using JDKToolFinder which uses the TESTJDK - which means your test will be limited to running only on a full JDK (not a JRE). I thought the testlibrary supported using either the test-jdk or the compile-jdk but I don't see that now. :(
>
> 3. Not new with your change, but the unpacked files don't get cleaned up.
>
> Thanks,
> David
>
> On 20/08/2013 3:50 AM, Mikhailo Seledtsov wrote:
>> This is a round 2 review for this fix.
>> Please review.
>>
>> Original review request (dated 16-July-2013) with the same subject was:
>> "
>> Please review this test fix. The change is a fix for the original bug,
>> plus an update to the test condition to reflect new JVM behavior and a
>> rewrite of an sh script test in Java.
>> JBS: https://jbs.oracle.com/bugs/browse/JDK-8016029
>> (Old) Webrev:
>> http://cr.openjdk.java.net/~mseledtsov/6878713/webrev.00/
>>
>> "
>>
>>
>> Change since last round of review:
>> JVM run-time technical leadership has made a decision to keep the
>> testcase.jar until a long-term solution is in place for handling "Java
>> assembler"-based and byte-code-based test cases.
>>
>> Here is the updated webrev and comments:
>> Webrev: http://cr.openjdk.java.net/~mseledtsov/8016029/webrev.01/
>>
>> Testing: JPRT run for this test
>> (2013-08-19-154813.mseledtsov.bugFixing01-hotspot-rt)
>>
>> Here are original notes:
>> - the original behavior of the VM in this test case has changed, and
>> the expected error message has changed as well. There is an extensive
>> amount of information about this in the original bug, posted by Dan.
>> The change was introduced in change-set: 4876:f75faf51e8c4 by Harold.
>> Checking for the old expected messages has been removed from the test.
>> This change is for JDK8 and forward, and no back-ports planned.
>>
>> - the flag -XX:+IgnoreUnrecognizedVMOptions has been removed to avoid
>> masking a potential problem. If VM drops support for any of XX flags
>> used in this test, it is better to know about it right away rather
>> than mask it and silently pass/ignore.
>>
>> - the flag -XX:+PrintCommandLineFlags has been removed; if this
>> information is desired, IMO it should be triggered either by a verbose
>> mode of JTREG tools, or by hand, not by individual test(s).
>>
>> Round 2 notes:
>> - the shell script has been replaced by Java
>>
>> - test has been moved to a new location, moving away from using bug
>> numbers to using functional categories for test sub-folders
>>
>>
>> Misha
>
From erik.helin at oracle.com Mon Aug 19 22:25:00 2013
From: erik.helin at oracle.com (erik.helin at oracle.com)
Date: Tue, 20 Aug 2013 05:25:00 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 2 new changesets
Message-ID: <20130820052509.C4000489D1@hg.openjdk.java.net>
Changeset: 1a8fb39bdbc4
Author: ehelin
Date: 2013-08-07 16:47 +0200
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/1a8fb39bdbc4
8014659: NPG: performance counters for compressed klass space
Reviewed-by: mgerdin, coleenp, hseigel, jmasa, ctornqvi
! src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp
! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp
! src/share/vm/memory/genCollectedHeap.cpp
! src/share/vm/memory/metaspace.cpp
! src/share/vm/memory/metaspace.hpp
! src/share/vm/memory/metaspaceCounters.cpp
! src/share/vm/memory/metaspaceCounters.hpp
! src/share/vm/memory/universe.cpp
+ test/gc/metaspace/TestMetaspacePerfCounters.java
+ test/testlibrary/AssertsTest.java
+ test/testlibrary/com/oracle/java/testlibrary/Asserts.java
+ test/testlibrary/com/oracle/java/testlibrary/ByteCodeLoader.java
+ test/testlibrary/com/oracle/java/testlibrary/InMemoryJavaCompiler.java
+ test/testlibrary/com/oracle/java/testlibrary/InputArguments.java
+ test/testlibrary/com/oracle/java/testlibrary/PerfCounter.java
+ test/testlibrary/com/oracle/java/testlibrary/PerfCounters.java
Changeset: 878bb0b7e799
Author: ehelin
Date: 2013-08-19 17:29 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/878bb0b7e799
Merge
From kevin.walls at oracle.com Tue Aug 20 00:45:13 2013
From: kevin.walls at oracle.com (kevin.walls at oracle.com)
Date: Tue, 20 Aug 2013 07:45:13 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 2 new changesets
Message-ID: <20130820074520.2A6CF489D9@hg.openjdk.java.net>
Changeset: 10c59b8021ec
Author: kevinw
Date: 2013-08-19 14:28 +0100
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/10c59b8021ec
8022655: ClassDump ignored jarStream setting
Reviewed-by: minqi, sla
! agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassDump.java
! test/compiler/ciReplay/common.sh
Changeset: 9011aa6843ce
Author: kevinw
Date: 2013-08-19 22:28 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/9011aa6843ce
Merge
From dmitry.samersoff at oracle.com Tue Aug 20 02:14:07 2013
From: dmitry.samersoff at oracle.com (Dmitry Samersoff)
Date: Tue, 20 Aug 2013 13:14:07 +0400
Subject: RFR: 8022808: Kitchensink hangs on macos
In-Reply-To: <52124395.2000709@oracle.com>
References:
<52124395.2000709@oracle.com>
Message-ID: <5213335F.6060705@oracle.com>
On 2013-08-19 20:11, Gerard Ziemski wrote:
> hi Staffan,
>
> A search on the topic of Mac thread id reveals that pretty much everyone
> (including Apple itself) uses pthread_mach_thread_np() for thread id, so
> it looks like you're correct to use it.
>
> I do have some more quick feedback/questions:
>
> 1. Could the "just checking" string in guarantee() be set to something
> more informative, like "thread id doesn't exist"?
>
> 2. Why are we using the the "::" C++ name space before mach/pthread C
> APIs calls? I understand that you might be just following the existing
> pattern in the file, I'm just wondering if you, or anyone knows why.
C++ :: means global scope and it solves naming conflict if you would
have pthread_mach_thread_np() in your namespace and don't specify
namespace explicitly.
It's very good practice to always use :: for all os functions we call.
-Dmitry
> 3. Also not directly related to your fix, but do you know why we need
> both "set_thread_id" and "set_unique_thread_id"
>
>
> cheers
>
>
> On 8/19/2013 4:08 AM, Staffan Larsen wrote:
>> We are using the mach thread port name as the os thread identifier on
>> OS X. We get this value by calling mach_thread_self(), but we (I)
>> didn't realize that this "port" resource is reference counted and
>> mach_thread_self() increases the reference count, but we never call
>> mach_port_deallocate() to decrease the reference count. This leads to
>> a resource leak and eventually mach_thread_self() will return 0 to
>> indicate that we are out of ports. Running out of ports causes the
>> pthreads implementation (which is built on top of mach) to spin
>> forever in some calls (most notably in this case pthread_kill()).
>>
>> One way to fix this is to make sure we call mach_port_deallocate() for
>> each call to mach_thread_self(). However, this adds extra complexity
>> to the code and also makes it slower. Another solution is to ask
>> pthreads for the mach port name that it already has. Pthreads provides
>> the function pthread_mach_thread_np() for this purpose. In this case
>> there is no need to deallocate the port since pthread_mach_thread_np()
>> will not increase the reference count (and pthreads will call
>> deallocate on the port once the thread terminates).
>>
>> This fix has been verified by seeing that the number of ports the
>> process has allocated does not increase in Activity Monitor (or top).
>> It has also passed JPRT testing on all platforms.
>>
>> webrev: http://cr.openjdk.java.net/~sla/8022808/webrev.00/
>> (there is not publicly visible bug for this)
>>
>> Thanks,
>> /Staffan
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.
From jiangli.zhou at oracle.com Tue Aug 20 03:11:16 2013
From: jiangli.zhou at oracle.com (jiangli.zhou at oracle.com)
Date: Tue, 20 Aug 2013 10:11:16 +0000
Subject: hg: hsx/hotspot-rt/hotspot: 2 new changesets
Message-ID: <20130820101120.EDE64489DC@hg.openjdk.java.net>
Changeset: e22ee8e7ae62
Author: jiangli
Date: 2013-08-19 14:59 -0400
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/e22ee8e7ae62
8021948: Change InstanceKlass::_source_file_name and _generic_signature from Symbol* to constant pool indexes.
Summary: Change InstanceKlass::_source_file_name and _generic_signature to u2 fields.
Reviewed-by: coleenp, iklam
! agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java
! src/share/vm/classfile/classFileParser.cpp
! src/share/vm/classfile/classFileParser.hpp
! src/share/vm/oops/instanceKlass.cpp
! src/share/vm/oops/instanceKlass.hpp
! src/share/vm/prims/jvmtiRedefineClasses.cpp
! src/share/vm/runtime/vmStructs.cpp
Changeset: aeebffb56606
Author: jiangli
Date: 2013-08-20 00:48 -0700
URL: http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/aeebffb56606
Merge
From vladimir.kempik at oracle.com Tue Aug 20 04:44:33 2013
From: vladimir.kempik at oracle.com (Vladimir Kempik)
Date: Tue, 20 Aug 2013 15:44:33 +0400
Subject: Request for review: 8020530 Non heap memory size calculated
incorrectly
Message-ID: <521356A1.9010507@oracle.com>
Hi all,
Could I have a couple of reviews for this change?
http://cr.openjdk.java.net/~vkempik/8020530/webrev.00/
Running WebLogic server with 1.8.0 encounters this error:
Caused by: java.lang.IllegalArgumentException: committed = 86482944
should be < max = 50331648
at java.lang.management.MemoryUsage.(MemoryUsage.java:162)
at sun.management.MemoryImpl.getMemoryUsage0(Native Method)
at
sun.management.MemoryImpl.getNonHeapMemoryUsage(MemoryImpl.java:75)
... 37 more
There is a bug in jmm_GetMemoryUsage here -- if a memory region does not
define a maximum size, then the total_max is not updated:
if (u.max_size() == (size_t)-1) {
has_undefined_max_size = true;
}
if (!has_undefined_max_size) {
total_max += u.max_size();
}
It started with JDK version 1.8.0-ea-b97.
In src/share/vm/services/management.cpp: jmm_GetMemoryUsage() there is
next comment
// if any one of the memory pool has undefined init_size or max_size,
// set it to -1
But code doing this is missing, so I've added the code to do exactly
what comment says.
Thanks,
Vladimir
From dmitry.samersoff at oracle.com Tue Aug 20 05:00:21 2013
From: dmitry.samersoff at oracle.com (Dmitry Samersoff)
Date: Tue, 20 Aug 2013 16:00:21 +0400
Subject: Request for review: 8020530 Non heap memory size calculated
incorrectly
In-Reply-To: <521356A1.9010507@oracle.com>
References: <521356A1.9010507@oracle.com>
Message-ID: <52135A55.9010608@oracle.com>
Vladimir,
Explicit cast of -1 to size_t is required.
-Dmitry
On 2013-08-20 15:44, Vladimir Kempik wrote:
> Hi all,
>
> Could I have a couple of reviews for this change?
>
> http://cr.openjdk.java.net/~vkempik/8020530/webrev.00/
>
> Running WebLogic server with 1.8.0 encounters this error:
>
> Caused by: java.lang.IllegalArgumentException: committed = 86482944
> should be < max = 50331648
>
> at java.lang.management.MemoryUsage.(MemoryUsage.java:162)
>
> at sun.management.MemoryImpl.getMemoryUsage0(Native Method)
>
> at
> sun.management.MemoryImpl.getNonHeapMemoryUsage(MemoryImpl.java:75)
>
> ... 37 more
>
> There is a bug in jmm_GetMemoryUsage here -- if a memory region does not
> define a maximum size, then the total_max is not updated:
> if (u.max_size() == (size_t)-1) {
> has_undefined_max_size = true;
> }
> if (!has_undefined_max_size) {
> total_max += u.max_size();
> }
>
> It started with JDK version 1.8.0-ea-b97.
>
> In src/share/vm/services/management.cpp: jmm_GetMemoryUsage() there is
> next comment
>
> // if any one of the memory pool has undefined init_size or max_size,
> // set it to -1
>
> But code doing this is missing, so I've added the code to do exactly
> what comment says.
>
> Thanks,
> Vladimir
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.
From david.holmes at oracle.com Tue Aug 20 05:14:26 2013
From: david.holmes at oracle.com (David Holmes)
Date: Tue, 20 Aug 2013 22:14:26 +1000
Subject: Request for review: 8020530 Non heap memory size calculated
incorrectly
In-Reply-To: <521356A1.9010507@oracle.com>
References: <521356A1.9010507@oracle.com>
Message-ID: <52135DA2.4070403@oracle.com>
On 20/08/2013 9:44 PM, Vladimir Kempik wrote:
> Hi all,
>
> Could I have a couple of reviews for this change?
>
> http://cr.openjdk.java.net/~vkempik/8020530/webrev.00/
>
> Running WebLogic server with 1.8.0 encounters this error:
>
> Caused by: java.lang.IllegalArgumentException: committed = 86482944
> should be < max = 50331648
>
> at java.lang.management.MemoryUsage.(MemoryUsage.java:162)
>
> at sun.management.MemoryImpl.getMemoryUsage0(Native Method)
>
> at
> sun.management.MemoryImpl.getNonHeapMemoryUsage(MemoryImpl.java:75)
>
> ... 37 more
>
> There is a bug in jmm_GetMemoryUsage here -- if a memory region does not
> define a maximum size, then the total_max is not updated:
> if (u.max_size() == (size_t)-1) {
> has_undefined_max_size = true;
> }
> if (!has_undefined_max_size) {
> total_max += u.max_size();
> }
>
> It started with JDK version 1.8.0-ea-b97.
>
> In src/share/vm/services/management.cpp: jmm_GetMemoryUsage() there is
> next comment
>
> // if any one of the memory pool has undefined init_size or max_size,
> // set it to -1
>
> But code doing this is missing, so I've added the code to do exactly
> what comment says.
That doesn't make a lot of sense to me. Why would a pool have undefined
values? If a subset of pools have undefined values why report completely
fallacious values of -1?
It also isn't clear how this relates to the "committed" value in the
failure. What gets reported now?
Thanks,
David
> Thanks,
> Vladimir
>
From staffan.larsen at oracle.com Tue Aug 20 05:19:35 2013
From: staffan.larsen at oracle.com (Staffan Larsen)
Date: Tue, 20 Aug 2013 14:19:35 +0200
Subject: Request for review: 8020530 Non heap memory size calculated
incorrectly
In-Reply-To: <521356A1.9010507@oracle.com>
References: <521356A1.9010507@oracle.com>
Message-ID:
Looks good. Metaspace is the first memory pool with an undefined maximum size.
/Staffan
On 20 aug 2013, at 13:44, Vladimir Kempik wrote:
> Hi all,
>
> Could I have a couple of reviews for this change?
>
> http://cr.openjdk.java.net/~vkempik/8020530/webrev.00/
>
> Running WebLogic server with 1.8.0 encounters this error:
>
> Caused by: java.lang.IllegalArgumentException: committed = 86482944 should be < max = 50331648
>
> at java.lang.management.MemoryUsage.(MemoryUsage.java:162)
>
> at sun.management.MemoryImpl.getMemoryUsage0(Native Method)
>
> at sun.management.MemoryImpl.getNonHeapMemoryUsage(MemoryImpl.java:75)
>
> ... 37 more
>
> There is a bug in jmm_GetMemoryUsage here -- if a memory region does not define a maximum size, then the total_max is not updated:
> if (u.max_size() == (size_t)-1) {
> has_undefined_max_size = true;
> }
> if (!has_undefined_max_size) {
> total_max += u.max_size();
> }
>
> It started with JDK version 1.8.0-ea-b97.
>
> In src/share/vm/services/management.cpp: jmm_GetMemoryUsage() there is next comment
>
> // if any one of the memory pool has undefined init_size or max_size,
> // set it to -1
>
> But code doing this is missing, so I've added the code to do exactly what comment says.
>
> Thanks,
> Vladimir
>
From staffan.larsen at oracle.com Tue Aug 20 05:38:50 2013
From: staffan.larsen at oracle.com (Staffan Larsen)
Date: Tue, 20 Aug 2013 14:38:50 +0200
Subject: Request for review: 8020530 Non heap memory size calculated
incorrectly
In-Reply-To: <52135DA2.4070403@oracle.com>
References: <521356A1.9010507@oracle.com> <52135DA2.4070403@oracle.com>
Message-ID: <8F0F7B38-9F27-45ED-A9ED-1507D8B883EF@oracle.com>
On 20 aug 2013, at 14:14, David Holmes wrote:
> On 20/08/2013 9:44 PM, Vladimir Kempik wrote:
>> Hi all,
>>
>> Could I have a couple of reviews for this change?
>>
>> http://cr.openjdk.java.net/~vkempik/8020530/webrev.00/
>>
>> Running WebLogic server with 1.8.0 encounters this error:
>>
>> Caused by: java.lang.IllegalArgumentException: committed = 86482944
>> should be < max = 50331648
>>
>> at java.lang.management.MemoryUsage.(MemoryUsage.java:162)
>>
>> at sun.management.MemoryImpl.getMemoryUsage0(Native Method)
>>
>> at
>> sun.management.MemoryImpl.getNonHeapMemoryUsage(MemoryImpl.java:75)
>>
>> ... 37 more
>>
>> There is a bug in jmm_GetMemoryUsage here -- if a memory region does not
>> define a maximum size, then the total_max is not updated:
>> if (u.max_size() == (size_t)-1) {
>> has_undefined_max_size = true;
>> }
>> if (!has_undefined_max_size) {
>> total_max += u.max_size();
>> }
>>
>> It started with JDK version 1.8.0-ea-b97.
>>
>> In src/share/vm/services/management.cpp: jmm_GetMemoryUsage() there is
>> next comment
>>
>> // if any one of the memory pool has undefined init_size or max_size,
>> // set it to -1
>>
>> But code doing this is missing, so I've added the code to do exactly
>> what comment says.
>
> That doesn't make a lot of sense to me. Why would a pool have undefined values?
The Metaspace pool has no max value (unless you specify -XX:MaxMetaspaceSize=), thus undefined.
> If a subset of pools have undefined values why report completely fallacious values of -1?
The javadoc for MemoryUsage says getMax() returns -1 if the maximum memory size is undefined.
> It also isn't clear how this relates to the "committed" value in the failure. What gets reported now?
I guess there can still be a committed value even if we don't have a max value for how much we might commit in the future: used <= committed <= max.
/Staffan
>
> Thanks,
> David
>
>> Thanks,
>> Vladimir
>>
From coleen.phillimore at oracle.com Tue Aug 20 07:52:38 2013
From: coleen.phillimore at oracle.com (Coleen Phillimore)
Date: Tue, 20 Aug 2013 10:52:38 -0400
Subject: [JBS] (JDK-8023287) HOTSPOT_BUILD_COMPILER needs to support "Sun
Studio 12u3"
In-Reply-To: <5212E2CE.30207@oracle.com>
References: