RFR [L][3/7]: 8197850: Calculate liveness in regions during marking (original) (raw)
sangheon.kim sangheon.kim at oracle.com
Wed Mar 14 16:56:20 UTC 2018
- Previous message (by thread): RFR [L][3/7]: 8197850: Calculate liveness in regions during marking
- Next message (by thread): RFR [L][4/7]: 8180415: Rebuild remembered sets during the concurrent cycle
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Thomas,
On 03/14/2018 12:55 AM, Thomas Schatzl wrote:
Hi,
On Tue, 2018-03-13 at 14:39 -0700, sangheon.kim wrote: Hi Thomas,
On 03/13/2018 06:52 AM, Thomas Schatzl wrote: Hi Stefan,
On Wed, 2018-03-07 at 11:12 +0100, Stefan Johansson wrote: Thanks Thomas,
[...] In this particular case, contents of g1RegionMarkStatsCache had to be distributed to .cpp and .inline.hpp files (recent .inline.hpp include fixes), and I preemptively removed the use of one VALUEOBJCLASSSPEC. Webrevs: http://cr.openjdk.java.net/~tschatzl/8197850/webrev.1to2/index.ht ml (diff) http://cr.openjdk.java.net/~tschatzl/8197850/webrev.2/index.html (full) Looks good, I have several minor comments. =============================== src/hotspot/share/gc/g1/g1CardLiveData.cpp 292 assert(!hr->isold() || markedbytes == (cm- liveness(hr->hrmindex()) * HeapWordSize), Don't we need to print assert message for hr->isold()? This is a pre-existing bug (or feature, depending on your POV) - for humongous objects the regions are considered to be always full (by definition), while obviously if there is only one live object in them, they do not always fill all regions the humongous object is in. Also, the marking attributes all of the humongous object size to the starts region. There is need to distribute that. So the assert does not hold for other type of regions at the moment. This will be fixed with JDK-8178105 as far as my plan goes. Okay, thanks.
=============================== src/hotspot/share/gc/g1/g1CollectedHeap.cpp 4215 // Any worker id is fine here as we are in the VM thread and single-threaded.
Would be better to add 'valid'? // Any valid worker id ... Done. OK.
=============================== src/hotspot/share/gc/g1/g1ConcurrentMark.cpp 1840 logdebug(gc, stats)("Mark stats cache hits " SIZEFORMAT " misses " SIZEFORMAT " ratio %1.3lf", gc+stats is not registered at logPrefix.hpp, so currently GC ID is not printed. I guess this is not intensional? This is a pre-existing issue. I filed JDK-8199598. Thanks for filing a new one.
=============================== src/hotspot/share/gc/g1/g1RegionMarkStatsCache.hpp 25 #ifndef SHAREVMGCG1G1REGIONMARKSTATSCACHEHPP I'm okay leaving as is but we don't have 'VM' directory anymore. At some point we would want to clean up these stuffs at once? Yes. OK
61 // logical and. This seems incomplete sentence? This refers to the logical and ("&") operation and seems correct. My bad, sorry.
New webrevs: http://cr.openjdk.java.net/~tschatzl/8197850/webrev.2to3/ (diff) http://cr.openjdk.java.net/~tschatzl/8197850/webrev.3/ (full) Looks good to me.
Thanks, Sangheon
Thanks, Thomas
- Previous message (by thread): RFR [L][3/7]: 8197850: Calculate liveness in regions during marking
- Next message (by thread): RFR [L][4/7]: 8180415: Rebuild remembered sets during the concurrent cycle
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]