This commit is contained in:
Rob McKenna 2020-05-12 12:28:49 +00:00
commit 04c11cdf7f
55 changed files with 573 additions and 357 deletions

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -171,6 +171,7 @@ DOCS_MODULES += \
jdk.naming.dns \
jdk.naming.rmi \
jdk.net \
jdk.nio.mapmode \
jdk.rmic \
jdk.scripting.nashorn \
jdk.sctp \

View File

@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
tzdata2019c
tzdata2020a

View File

@ -890,19 +890,25 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
# Morocco will be on GMT starting from Sunday, May 5th 2019 at 3am.
# The switch to GMT+1 will occur on Sunday, June 9th 2019 at 2am....
# http://fr.le360.ma/societe/voici-la-date-du-retour-a-lheure-legale-au-maroc-188222
# From Semlali Naoufal (2020-04-14):
# Following the announcement by the Moroccan government, the switch to
# GMT time will take place on Sunday, April 19, 2020 from 3 a.m. and
# the return to GMT+1 time will take place on Sunday, May 31, 2020 at 2 a.m....
# https://maroc-diplomatique.net/maroc-le-retour-a-lheure-gmt-est-prevu-dimanche-prochain/
# http://aujourdhui.ma/actualite/gmt1-retour-a-lheure-normale-dimanche-prochain-1
#
# From Paul Eggert (2019-05-20):
# This agrees with our 2018-11-01 guess that the Moroccan government
# would continue the practice of falling back at 03:00 the last Sunday
# before Ramadan, and of springing forward at 02:00 the first Sunday after
# Ramadan, as this has been the practice since 2012. To implement this,
# transition dates for 2019 through 2087 were determined by running the
# following program under GNU Emacs 26.2.
# (let ((islamic-year 1440))
# From Paul Eggert (2020-04-14):
# For now, guess that in the future Morocco will fall back at 03:00
# the last Sunday before Ramadan, and spring forward at 02:00 the
# first Sunday after the day after Ramadan. To implement this,
# transition dates for 2021 through 2087 were determined by running
# the following program under GNU Emacs 26.3.
# (let ((islamic-year 1442))
# (require 'cal-islam)
# (while (< islamic-year 1511)
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
# (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
# (b (1+ (calendar-islamic-to-absolute (list 10 1 islamic-year))))
# (sunday 0))
# (while (/= sunday (mod (setq a (1- a)) 7)))
# (while (/= sunday (mod b 7))
@ -962,7 +968,7 @@ Rule Morocco 2018 only - Jun 17 2:00 1:00 -
Rule Morocco 2019 only - May 5 3:00 -1:00 -
Rule Morocco 2019 only - Jun 9 2:00 0 -
Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
Rule Morocco 2020 only - May 24 2:00 0 -
Rule Morocco 2020 only - May 31 2:00 0 -
Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
Rule Morocco 2021 only - May 16 2:00 0 -
Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
@ -978,7 +984,7 @@ Rule Morocco 2026 only - Mar 22 2:00 0 -
Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
Rule Morocco 2027 only - Mar 14 2:00 0 -
Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
Rule Morocco 2028 only - Feb 27 2:00 0 -
Rule Morocco 2028 only - Mar 5 2:00 0 -
Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
Rule Morocco 2029 only - Feb 18 2:00 0 -
Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
@ -994,7 +1000,7 @@ Rule Morocco 2033 only - Dec 25 2:00 0 -
Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
Rule Morocco 2034 only - Dec 17 2:00 0 -
Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
Rule Morocco 2035 only - Dec 2 2:00 0 -
Rule Morocco 2035 only - Dec 9 2:00 0 -
Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
Rule Morocco 2036 only - Nov 23 2:00 0 -
Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
@ -1010,7 +1016,7 @@ Rule Morocco 2041 only - Sep 29 2:00 0 -
Rule Morocco 2042 only - Aug 10 3:00 -1:00 -
Rule Morocco 2042 only - Sep 21 2:00 0 -
Rule Morocco 2043 only - Aug 2 3:00 -1:00 -
Rule Morocco 2043 only - Sep 6 2:00 0 -
Rule Morocco 2043 only - Sep 13 2:00 0 -
Rule Morocco 2044 only - Jul 24 3:00 -1:00 -
Rule Morocco 2044 only - Aug 28 2:00 0 -
Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
@ -1026,7 +1032,7 @@ Rule Morocco 2049 only - Jul 4 2:00 0 -
Rule Morocco 2050 only - May 15 3:00 -1:00 -
Rule Morocco 2050 only - Jun 26 2:00 0 -
Rule Morocco 2051 only - May 7 3:00 -1:00 -
Rule Morocco 2051 only - Jun 11 2:00 0 -
Rule Morocco 2051 only - Jun 18 2:00 0 -
Rule Morocco 2052 only - Apr 28 3:00 -1:00 -
Rule Morocco 2052 only - Jun 2 2:00 0 -
Rule Morocco 2053 only - Apr 13 3:00 -1:00 -
@ -1042,7 +1048,7 @@ Rule Morocco 2057 only - Apr 8 2:00 0 -
Rule Morocco 2058 only - Feb 17 3:00 -1:00 -
Rule Morocco 2058 only - Mar 31 2:00 0 -
Rule Morocco 2059 only - Feb 9 3:00 -1:00 -
Rule Morocco 2059 only - Mar 16 2:00 0 -
Rule Morocco 2059 only - Mar 23 2:00 0 -
Rule Morocco 2060 only - Feb 1 3:00 -1:00 -
Rule Morocco 2060 only - Mar 7 2:00 0 -
Rule Morocco 2061 only - Jan 16 3:00 -1:00 -
@ -1052,13 +1058,13 @@ Rule Morocco 2062 only - Feb 12 2:00 0 -
Rule Morocco 2062 only - Dec 31 3:00 -1:00 -
Rule Morocco 2063 only - Feb 4 2:00 0 -
Rule Morocco 2063 only - Dec 16 3:00 -1:00 -
Rule Morocco 2064 only - Jan 20 2:00 0 -
Rule Morocco 2064 only - Jan 27 2:00 0 -
Rule Morocco 2064 only - Dec 7 3:00 -1:00 -
Rule Morocco 2065 only - Jan 11 2:00 0 -
Rule Morocco 2065 only - Nov 22 3:00 -1:00 -
Rule Morocco 2066 only - Jan 3 2:00 0 -
Rule Morocco 2066 only - Nov 14 3:00 -1:00 -
Rule Morocco 2066 only - Dec 19 2:00 0 -
Rule Morocco 2066 only - Dec 26 2:00 0 -
Rule Morocco 2067 only - Nov 6 3:00 -1:00 -
Rule Morocco 2067 only - Dec 11 2:00 0 -
Rule Morocco 2068 only - Oct 21 3:00 -1:00 -
@ -1068,13 +1074,13 @@ Rule Morocco 2069 only - Nov 17 2:00 0 -
Rule Morocco 2070 only - Oct 5 3:00 -1:00 -
Rule Morocco 2070 only - Nov 9 2:00 0 -
Rule Morocco 2071 only - Sep 20 3:00 -1:00 -
Rule Morocco 2071 only - Oct 25 2:00 0 -
Rule Morocco 2071 only - Nov 1 2:00 0 -
Rule Morocco 2072 only - Sep 11 3:00 -1:00 -
Rule Morocco 2072 only - Oct 16 2:00 0 -
Rule Morocco 2073 only - Aug 27 3:00 -1:00 -
Rule Morocco 2073 only - Oct 8 2:00 0 -
Rule Morocco 2074 only - Aug 19 3:00 -1:00 -
Rule Morocco 2074 only - Sep 23 2:00 0 -
Rule Morocco 2074 only - Sep 30 2:00 0 -
Rule Morocco 2075 only - Aug 11 3:00 -1:00 -
Rule Morocco 2075 only - Sep 15 2:00 0 -
Rule Morocco 2076 only - Jul 26 3:00 -1:00 -
@ -1084,7 +1090,7 @@ Rule Morocco 2077 only - Aug 22 2:00 0 -
Rule Morocco 2078 only - Jul 10 3:00 -1:00 -
Rule Morocco 2078 only - Aug 14 2:00 0 -
Rule Morocco 2079 only - Jun 25 3:00 -1:00 -
Rule Morocco 2079 only - Jul 30 2:00 0 -
Rule Morocco 2079 only - Aug 6 2:00 0 -
Rule Morocco 2080 only - Jun 16 3:00 -1:00 -
Rule Morocco 2080 only - Jul 21 2:00 0 -
Rule Morocco 2081 only - Jun 1 3:00 -1:00 -
@ -1100,7 +1106,7 @@ Rule Morocco 2085 only - May 27 2:00 0 -
Rule Morocco 2086 only - Apr 14 3:00 -1:00 -
Rule Morocco 2086 only - May 19 2:00 0 -
Rule Morocco 2087 only - Mar 30 3:00 -1:00 -
Rule Morocco 2087 only - May 4 2:00 0 -
Rule Morocco 2087 only - May 11 2:00 0 -
# For dates after the somewhat-arbitrary cutoff of 2087, assume that
# Morocco will no longer observe DST. At some point this table will
# need to be extended, though quite possibly Morocco will change the
@ -1202,7 +1208,7 @@ Link Africa/Maputo Africa/Lusaka # Zambia
Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
# Rearguard section, for parsers that do not support negative DST.
# Rearguard section, for parsers lacking negative DST; see ziguard.awk.
#Rule Namibia 1994 only - Mar 21 0:00 0 WAT
#Rule Namibia 1994 2017 - Sep Sun>=1 2:00 1:00 CAT
#Rule Namibia 1995 2017 - Apr Sun>=1 2:00 0 WAT
@ -1216,7 +1222,7 @@ Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
2:00 - SAST 1990 Mar 21 # independence
# Vanguard section, for zic and other parsers that support negative DST.
2:00 Namibia %s
# Rearguard section, for parsers that do not support negative DST.
# Rearguard section, for parsers lacking negative DST; see ziguard.awk.
# 2:00 - CAT 1994 Mar 21 0:00
# From Paul Eggert (2017-04-07):
# The official date of the 2017 rule change was 2017-10-24. See:

View File

@ -309,6 +309,27 @@ Zone Asia/Yangon 6:24:47 - LMT 1880 # or Rangoon
# China
# From Phake Nick (2020-04-15):
# According to this news report:
# http://news.sina.com.cn/c/2004-09-01/19524201403.shtml
# on April 11, 1919, newspaper in Shanghai said clocks in Shanghai will spring
# forward for an hour starting from midnight of that Saturday. The report did
# not mention what happened in Shanghai thereafter, but it mentioned that a
# similar trial in Tianjin which ended at October 1st as citizens are told to
# recede the clock on September 30 from 12:00pm to 11:00pm. The trial at
# Tianjin got terminated in 1920.
#
# From Paul Eggert (2020-04-15):
# The Returns of Trade and Trade Reports, page 711, says "Daylight saving was
# given a trial during the year, and from the 12th April to the 1st October
# the clocks were all set one hour ahead of sun time. Though the scheme was
# generally esteemed a success, it was announced early in 1920 that it would
# not be repeated."
#
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Shang 1919 only - Apr 12 24:00 1:00 D
Rule Shang 1919 only - Sep 30 24:00 0 S
# From Paul Eggert (2018-10-02):
# The following comes from Table 1 of:
# Li Yu. Research on the daylight saving movement in 1940s Shanghai.
@ -317,6 +338,89 @@ Zone Asia/Yangon 6:24:47 - LMT 1880 # or Rangoon
# The table lists dates only; I am guessing 00:00 and 24:00 transition times.
# Also, the table lists the planned end of DST in 1949, but the corresponding
# zone line cuts this off on May 28, when the Communists took power.
# From Phake Nick (2020-04-15):
#
# For the history of time in Shanghai between 1940-1942, the situation is
# actually slightly more complex than the table [below].... At the time,
# there were three different authorities in Shanghai, including Shanghai
# International Settlement, a settlement established by western countries with
# its own westernized form of government, Shanghai French Concession, similar
# to the international settlement but is controlled by French, and then the
# rest of the city of Shanghai, which have already been controlled by Japanese
# force through a puppet local government (Wang Jingwei regime). It was
# additionally complicated by the circumstances that, according to the 1940s
# Shanghai summer time essay cited in the database, some
# departments/businesses/people in the Shanghai city itself during that time
# period, refused to change their clock and instead only changed their opening
# hours.
#
# For example, as quoted in the article, in 1940, other than the authority
# itself, power, tram, bus companies, cinema, department stores, and other
# public service organizations have all decided to follow the summer time and
# spring forward the clock. On the other hand, the custom office refused to
# spring forward the clock because of worry on mechanical wear to the physical
# clock, postal office refused to spring forward because of disruption to
# business and log-keeping, although they did changed their office hour to
# match rest of the city. So is travel agents, and also weather
# observatory. It is said both time standards had their own supporters in the
# city at the time, those who prefer new time standard would have moved their
# clock while those who prefer the old time standard would keep their clock
# unchange, and there were different clocks that use different time standard
# in the city at the time for people who use different time standard to adjust
# their clock to their preferred time.
#
# a. For the 1940 May 31 spring forward, the essay claim that it was
# coordinared between the international settlement authority and the French
# concession authority and have gathered support from Hong Kong and Xiamen,
# that it would spring forward an hour from May 31 "midnight", and the essay
# claim "Hong Kong government implemented the spring forward in the same time
# on the same date as Shanghai".
#
# b. For the 1940 fall back, it was said that they initially intended to do
# so on September 30 00:59 at night, however they postponed it to October 12
# after discussion with relevant parties. However schools restored to the
# original schedule ten days earlier.
#
# c. For the 1941 spring forward, it is said to start from March 15
# "following the previous year's method", and in addition to that the essay
# cited an announcement in 1941 from the Wang regime which said the Special
# City of Shanghai under Wang regime control will follow the DST rule set by
# the Settlements, irrespective of the original DST plan announced by the Wang
# regime for other area under its control(April 1 to September 30). (no idea
# to situation before that announcement)
#
# d. For the 1941 fall back, it was said that the fall back would occurs at
# the end of September (A newspaper headline cited by the essay, published on
# October 1, 1941, have the headlines which said "French Concession would
# rewind to the old clock this morning), but it ultimately didn't happen due
# to disagreement between the international settlement authority and the
# French concession authority, and the fall back ultimately occurred on
# November 1.
#
# e. In 1941 December, Japan have officially started war with the United
# States and the United Kingdom, and in Shanghai they have marched into the
# international settlement, taken over its control
#
# f. For the 1942 spring forward, the essay said that the spring forward
# started on January 31. It said this time the custom office and postal
# department will also change their clocks, unlike before.
#
# g. The essay itself didn't cover any specific changes thereafter until the
# end of the war, it quoted a November 1942 command from the government of the
# Wang regime, which claim the daylight saving time applies year round during
# the war. However, the essay ambiguously said the period is "February 1 to
# September 30", which I don't really understand what is the meaning of such
# period in the context of year round implementation here.. More researches
# might be needed to show exactly what happened during that period of time.
# From Phake Nick (2020-04-15):
# According to a Japanese tour bus pamphlet in Nanjing area believed to be
# from around year 1941: http://www.tt-museum.jp/tairiku_0280_nan1941.html ,
# the schedule listed was in the format of Japanese time. Which indicate some
# use of the Japanese time (instead of syncing by DST) might have occurred in
# the Yangtze river delta area during that period of time although the scope
# of such use will need to be investigated to determine.
#
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Shang 1940 only - Jun 1 0:00 1:00 D
@ -595,7 +699,7 @@ Zone Asia/Urumqi 5:50:20 - LMT 1928
6:00 - +06
# Hong Kong (Xianggang)
# Hong Kong
# Milne gives 7:36:41.7; round this.
@ -605,9 +709,7 @@ Zone Asia/Urumqi 5:50:20 - LMT 1928
# it is not [an] observatory, but the official meteorological agency of HK,
# and also serves as the official timing agency), there are some missing
# and incorrect rules. Although the exact switch over time is missing, I
# think 3:30 is correct. The official DST record for Hong Kong can be
# obtained from
# http://www.hko.gov.hk/gts/time/Summertime.htm
# think 3:30 is correct.
# From Phake Nick (2018-10-27):
# According to Singaporean newspaper
@ -718,10 +820,10 @@ Zone Asia/Urumqi 5:50:20 - LMT 1928
# Resolution of the Legislative Council passed on 9 May 1979
# https://www.legco.gov.hk/yr78-79/english/lc_sitg/hansard/h790509.pdf#page=39
# From Paul Eggert (2019-05-31):
# From Paul Eggert (2020-04-15):
# Here are the dates given at
# https://www.hko.gov.hk/gts/time/Summertime.htm
# as of 2014-06-19:
# https://www.hko.gov.hk/en/gts/time/Summertime.htm
# as of 2020-02-10:
# Year Period
# 1941 15 Jun to 30 Sep
# 1942 Whole year
@ -1851,6 +1953,47 @@ Zone Asia/Jerusalem 2:20:54 - LMT 1880
# '9:00' and 'JST' is from Guy Harris.
# From Paul Eggert (2020-01-19):
# Starting in the 7th century, Japan generally followed an ancient Chinese
# timekeeping system that divided night and day into six hours each,
# with hour length depending on season. In 1873 the government
# started requiring the use of a Western style 24-hour clock. See:
# Yulia Frumer, "Making Time: Astronomical Time Measurement in Tokugawa Japan"
# <https://www.worldcat.org/oclc/1043907065>. As the tzdb code and
# data support only 24-hour clocks, its tables model timestamps before
# 1873 using Western-style local mean time.
# From Hideyuki Suzuki (1998-11-09):
# 'Tokyo' usually stands for the former location of Tokyo Astronomical
# Observatory: 139° 44' 40.90" E (9h 18m 58.727s), 35° 39' 16.0" N.
# This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
# edited by National Astronomical Observatory of Japan....
# JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
# The law is enacted on 1886-07-07.
# From Hideyuki Suzuki (1998-11-16):
# The ordinance No. 51 (1886) established "standard time" in Japan,
# which stands for the time on 135° E.
# In the ordinance No. 167 (1895), "standard time" was renamed to "central
# standard time". And the same ordinance also established "western standard
# time", which stands for the time on 120° E.... But "western standard
# time" was abolished in the ordinance No. 529 (1937). In the ordinance No.
# 167, there is no mention regarding for what place western standard time is
# standard....
#
# I wrote "ordinance" above, but I don't know how to translate.
# In Japanese it's "chokurei", which means ordinance from emperor.
# From Yu-Cheng Chuang (2013-07-12):
# ...the Meiji Emperor announced Ordinance No. 167 of Meiji Year 28 "The clause
# about standard time" ... The adoption began from Jan 1, 1896.
# https://ja.wikisource.org/wiki/標準時ニ關スル件_(公布時)
#
# ...the Showa Emperor announced Ordinance No. 529 of Showa Year 12 ... which
# means the whole Japan territory, including later occupations, adopt Japan
# Central Time (UT+9). The adoption began on Oct 1, 1937.
# https://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
# From Paul Eggert (1995-03-06):
# Today's _Asahi Evening News_ (page 4) reports that Japan had
# daylight saving between 1948 and 1951, but "the system was discontinued
@ -1899,37 +2042,6 @@ Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
Rule Japan 1949 only - Apr Sat>=1 24:00 1:00 D
Rule Japan 1950 1951 - May Sat>=1 24:00 1:00 D
# From Hideyuki Suzuki (1998-11-09):
# 'Tokyo' usually stands for the former location of Tokyo Astronomical
# Observatory: 139° 44' 40.90" E (9h 18m 58.727s), 35° 39' 16.0" N.
# This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
# edited by National Astronomical Observatory of Japan....
# JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
# The law is enacted on 1886-07-07.
# From Hideyuki Suzuki (1998-11-16):
# The ordinance No. 51 (1886) established "standard time" in Japan,
# which stands for the time on 135° E.
# In the ordinance No. 167 (1895), "standard time" was renamed to "central
# standard time". And the same ordinance also established "western standard
# time", which stands for the time on 120° E.... But "western standard
# time" was abolished in the ordinance No. 529 (1937). In the ordinance No.
# 167, there is no mention regarding for what place western standard time is
# standard....
#
# I wrote "ordinance" above, but I don't know how to translate.
# In Japanese it's "chokurei", which means ordinance from emperor.
# From Yu-Cheng Chuang (2013-07-12):
# ...the Meiji Emperor announced Ordinance No. 167 of Meiji Year 28 "The clause
# about standard time" ... The adoption began from Jan 1, 1896.
# https://ja.wikisource.org/wiki/標準時ニ關スル件_(公布時)
#
# ...the Showa Emperor announced Ordinance No. 529 of Showa Year 12 ... which
# means the whole Japan territory, including later occupations, adopt Japan
# Central Time (UT+9). The adoption began on Oct 1, 1937.
# https://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
# Zone NAME STDOFF RULES FORMAT [UNTIL]
Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
9:00 Japan J%sT
@ -3109,22 +3221,9 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
# [T]he Palestinian cabinet decision (Mar 8th 2016) published on
# http://www.palestinecabinet.gov.ps/WebSite/Upload/Decree/GOV_17/16032016134830.pdf
# states that summer time will end on Oct 29th at 01:00.
#
# From Tim Parenti (2016-10-19):
# Predict fall transitions on October's last Saturday at 01:00 from now on.
# This is consistent with the 2016 transition as well as our spring
# predictions.
#
# From Paul Eggert (2016-10-19):
# It's also consistent with predictions in the following URLs today:
# https://www.timeanddate.com/time/change/gaza-strip/gaza
# https://www.timeanddate.com/time/change/west-bank/hebron
# From Sharef Mustafa (2018-03-16):
# Palestine summer time will start on Mar 24th 2018 by advancing the
# clock by 60 minutes as per Palestinian cabinet decision published on
# the official website, though the decree did not specify the exact
# time of the time shift.
# Palestine summer time will start on Mar 24th 2018 ...
# http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817
# From Even Scharning (2019-03-23):
@ -3134,15 +3233,20 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
# From Sharif Mustafa (2019-03-26):
# The Palestinian cabinet announced today that the switch to DST will
# be on Fri Mar 29th 2019 by advancing the clock by 60 minutes.
# The decree signing date is Mar 12th but it was not published till today.
# The decree does not specify the exact time of switch.
# http://palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e54e9ea1-50ee-4137-84df-0d6c78da259b
#
# From Even Scharning (2019-04-10):
# Our source in Palestine said it happened Friday 29 at 00:00 local time....
# From Sharef Mustafa (2019-10-18):
# Palestine summer time will end on midnight Oct 26th 2019 ...
# http://www.palestinecabinet.gov.ps/website/ar/ViewDetails?ID=43948
#
# From Paul Eggert (2019-04-10):
# For now, guess spring-ahead transitions are March's last Friday at 00:00.
#
# From Tim Parenti (2016-10-19):
# Predict fall transitions on October's last Saturday at 01:00 from now on.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule EgyptAsia 1957 only - May 10 0:00 1:00 S

View File

@ -40,6 +40,7 @@ Link America/Atikokan America/Coral_Harbour
Link America/Argentina/Cordoba America/Cordoba
Link America/Tijuana America/Ensenada
Link America/Indiana/Indianapolis America/Fort_Wayne
Link America/Nuuk America/Godthab
Link America/Indiana/Indianapolis America/Indianapolis
Link America/Argentina/Jujuy America/Jujuy
Link America/Indiana/Knox America/Knox_IN

View File

@ -572,12 +572,13 @@ Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
0:00 1:00 IST 1947 Nov 2 2:00s
0:00 - GMT 1948 Apr 18 2:00s
0:00 GB-Eire GMT/IST 1968 Oct 27
# The next line is for when negative SAVE values are used.
# Vanguard section, for zic and other parsers that support negative DST.
1:00 Eire IST/GMT
# These three lines are for when SAVE values are always nonnegative.
# Rearguard section, for parsers lacking negative DST; see ziguard.awk.
# 1:00 - IST 1971 Oct 31 2:00u
# 0:00 GB-Eire GMT/IST 1996
# 0:00 EU GMT/IST
# End of rearguard section.
###############################################################################
@ -1041,7 +1042,7 @@ Zone Europe/Prague 0:57:44 - LMT 1850
1:00 Czech CE%sT 1946 Dec 1 3:00
# Vanguard section, for zic and other parsers that support negative DST.
1:00 -1:00 GMT 1947 Feb 23 2:00
# Rearguard section, for parsers that do not support negative DST.
# Rearguard section, for parsers lacking negative DST; see ziguard.awk.
# 0:00 - GMT 1947 Feb 23 2:00
# End of rearguard section.
1:00 Czech CE%sT 1979
@ -1198,14 +1199,17 @@ Zone America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
-3:00 - -03 1980 Apr 6 2:00
-3:00 EU -03/-02 1996
0:00 - GMT
#
# Use the old name Scoresbysund, as the current name Ittoqqortoormiit
# exceeds tzdb's 14-letter limit and has no common English abbreviation.
Zone America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 # Ittoqqortoormiit
-2:00 - -02 1980 Apr 6 2:00
-2:00 C-Eur -02/-01 1981 Mar 29
-1:00 EU -01/+00
Zone America/Godthab -3:26:56 - LMT 1916 Jul 28 # Nuuk
Zone America/Nuuk -3:26:56 - LMT 1916 Jul 28 # Godthåb
-3:00 - -03 1980 Apr 6 2:00
-3:00 EU -03/-02
Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik air base
Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik
-4:00 Thule A%sT
# Estonia
@ -1575,7 +1579,7 @@ Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
#
# From January 1st, 1908 the whole of Iceland was standardised at 1 hour
# behind GMT. Previously, local mean solar time was used in different parts
# of Iceland, the almanak had been based on Reykjavik mean solar time which
# of Iceland, the almanak had been based on Reykjavík mean solar time which
# was 1 hour and 28 minutes behind GMT.
#
# "first day of winter" referred to [below] means the first day of the 26 weeks

View File

@ -87,9 +87,15 @@ Leap 2012 Jun 30 23:59:60 + S
Leap 2015 Jun 30 23:59:60 + S
Leap 2016 Dec 31 23:59:60 + S
# UTC timestamp when this leap second list expires.
# Any additional leap seconds will come after this.
# This Expires line is commented out for now,
# so that pre-2020a zic implementations do not reject this file.
#Expires 2020 Dec 28 00:00:00
# POSIX timestamps for the data in this file:
#updated 1467936000 (2016-07-08 00:00:00 UTC)
#expires 1593302400 (2020-06-28 00:00:00 UTC)
#expires 1609113600 (2020-12-28 00:00:00 UTC)
# Updated through IERS Bulletin C58
# File expires on: 28 June 2020
# Updated through IERS Bulletin C59
# File expires on: 28 December 2020

View File

@ -109,7 +109,7 @@
# For more about the first ten years of DST in the United States, see
# Robert Garland, Ten years of daylight saving from the Pittsburgh standpoint
# (Carnegie Library of Pittsburgh, 1927).
# http://www.clpgh.org/exhibit/dst.html
# https://web.archive.org/web/20160517155308/http://www.clpgh.org/exhibit/dst.html
#
# Shanks says that DST was called "War Time" in the US in 1918 and 1919.
# However, DST was imposed by the Standard Time Act of 1918, which
@ -1493,7 +1493,8 @@ Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
-4:00 Canada A%sT
# west Labrador, Nova Scotia, Prince Edward I
# west Labrador, Nova Scotia, Prince Edward I,
# Îles-de-la-Madeleine, Listuguj reserve
# From Brian Inglis (2015-07-20):
# From the historical weather station records available at:
@ -1512,6 +1513,13 @@ Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
# in Canada to observe DST in 1971 but not 1970; for now we'll assume
# this is a typo.
# From Jeffery Nichols (2020-01-09):
# America/Halifax ... also applies to Îles-de-la-Madeleine and the Listuguj
# reserve in Quebec. Officially, this came into effect on January 1, 2007
# (Legal Time Act, CQLR c T-5.1), but the legislative debates surrounding that
# bill say that it is "accommodating the customs and practices" of those
# regions, which suggests that they have always been in-line with Halifax.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Halifax 1916 only - Apr 1 0:00 1:00 D
Rule Halifax 1916 only - Oct 1 0:00 0 S
@ -1605,19 +1613,20 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9
# Quebec
# From Paul Eggert (2015-03-24):
# From Paul Eggert (2020-01-10):
# See America/Toronto for most of Quebec, including Montreal.
# See America/Halifax for the Îles de la Madeleine and the Listuguj reserve.
#
# Matthews and Vincent (1998) also write that Quebec east of the -63
# meridian is supposed to observe AST, but residents as far east as
# Natashquan use EST/EDT, and residents east of Natashquan use AST.
# The Quebec department of justice writes in
# "The situation in Minganie and Basse-Côte-Nord"
# http://www.justice.gouv.qc.ca/english/publications/generale/temps-minganie-a.htm
# https://www.justice.gouv.qc.ca/en/department/ministre/functions-and-responsabilities/legal-time-in-quebec/the-situation-in-minganie-and-basse-cote-nord/
# that the coastal strip from just east of Natashquan to Blanc-Sablon
# observes Atlantic standard time all year round.
# https://www.assnat.qc.ca/Media/Process.aspx?MediaId=ANQ.Vigie.Bll.DocumentGenerique_8845en
# says this common practice was codified into law as of 2007.
# This common practice was codified into law as of 2007; see Legal Time Act,
# CQLR c T-5.1 <http://legisquebec.gouv.qc.ca/en/ShowDoc/cs/T-5.1>.
# For lack of better info, guess this practice began around 1970, contra to
# Shanks & Pottenger who have this region observing AST/ADT.
@ -1636,6 +1645,15 @@ Zone America/Blanc-Sablon -3:48:28 - LMT 1884
# Nipigon (EST) and Rainy River (CST) are the largest that we know of.
# Far west Ontario is like Winnipeg; far east Quebec is like Halifax.
# From Jeffery Nichols (2020-02-06):
# According to the [Shanks] atlas, those western Ontario zones are huge,
# covering most of Ontario northwest of Sault Ste Marie and Timmins.
# The zones seem to include towns bigger than the ones they're named after,
# like Dryden in America/Rainy_River and Wawa (and maybe Attawapiskat) in
# America/Nipigon. I assume it's too much trouble to change the name of the
# zone (like when you found out that America/Glace_Bay includes Sydney, Nova
# Scotia)....
# From Mark Brader (2003-07-26):
# [According to the Toronto Star] Orillia, Ontario, adopted DST
# effective Saturday, 1912-06-22, 22:00; the article mentions that
@ -2442,6 +2460,18 @@ Zone America/Creston -7:46:04 - LMT 1884
# obtained in November 2008 should be ignored...
# I apologize for reporting incorrect information in 2008.
# From Tim Parenti (2020-03-05):
# The government of Yukon announced [yesterday] the cessation of seasonal time
# changes. "After clocks are pushed ahead one hour on March 8, the territory
# will remain on [UTC-07]. ... [The government] found 93 per cent of
# respondents wanted to end seasonal time changes and, of that group, 70 per
# cent wanted 'permanent Pacific Daylight Saving Time.'"
# https://www.cbc.ca/news/canada/north/yukon-end-daylight-saving-time-1.5486358
#
# Although the government press release prefers PDT, we prefer MST for
# consistency with nearby Dawson Creek, Creston, and Fort Nelson.
# https://yukon.ca/en/news/yukon-end-seasonal-time-change
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
Rule NT_YK 1918 only - Oct 27 2:00 0 S
@ -2496,11 +2526,13 @@ Zone America/Inuvik 0 - -00 1953 # Inuvik founded
Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
-9:00 NT_YK Y%sT 1967 May 28 0:00
-8:00 NT_YK P%sT 1980
-8:00 Canada P%sT
-8:00 Canada P%sT 2020 Mar 8 2:00
-7:00 - MST
Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
-9:00 NT_YK Y%sT 1973 Oct 28 0:00
-8:00 NT_YK P%sT 1980
-8:00 Canada P%sT
-8:00 Canada P%sT 2020 Mar 8 2:00
-7:00 - MST
###############################################################################

View File

@ -154,8 +154,8 @@ CA +4906-11631 America/Creston MST - BC (Creston)
CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson)
CA +4916-12307 America/Vancouver Pacific - BC (most areas)
CA +6043-13503 America/Whitehorse Pacific - Yukon (south)
CA +6404-13925 America/Dawson Pacific - Yukon (north)
CA +6043-13503 America/Whitehorse Pacific - Yukon (east)
CA +6404-13925 America/Dawson Pacific - Yukon (west)
CC -1210+09655 Indian/Cocos
CD -0418+01518 Africa/Kinshasa Dem. Rep. of Congo (west)
CD -1140+02728 Africa/Lubumbashi Dem. Rep. of Congo (east)
@ -212,7 +212,7 @@ GF +0456-05220 America/Cayenne
GG +492717-0023210 Europe/Guernsey
GH +0533-00013 Africa/Accra
GI +3608-00521 Europe/Gibraltar
GL +6411-05144 America/Godthab Greenland (most areas)
GL +6411-05144 America/Nuuk Greenland (most areas)
GL +7646-01840 America/Danmarkshavn National Park (east coast)
GL +7029-02158 America/Scoresbysund Scoresbysund/Ittoqqortoormiit
GL +7634-06847 America/Thule Thule/Pituffik
@ -358,7 +358,7 @@ RU +554521+0373704 Europe/Moscow MSK+00 - Moscow area
# The obsolescent zone.tab format cannot represent Europe/Simferopol well.
# Put it in RU section and list as UA. See "territorial claims" above.
# Programs should use zone1970.tab instead; see above.
UA +4457+03406 Europe/Simferopol MSK+00 - Crimea
UA +4457+03406 Europe/Simferopol Crimea
RU +5836+04939 Europe/Kirov MSK+00 - Kirov
RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan
RU +4844+04425 Europe/Volgograd MSK+01 - Volgograd
@ -422,8 +422,8 @@ TV -0831+17913 Pacific/Funafuti
TW +2503+12130 Asia/Taipei
TZ -0648+03917 Africa/Dar_es_Salaam
UA +5026+03031 Europe/Kiev Ukraine (most areas)
UA +4837+02218 Europe/Uzhgorod Ruthenia
UA +4750+03510 Europe/Zaporozhye Zaporozh'ye/Zaporizhia; Lugansk/Luhansk (east)
UA +4837+02218 Europe/Uzhgorod Transcarpathia
UA +4750+03510 Europe/Zaporozhye Zaporozhye and east Lugansk
UG +0019+03225 Africa/Kampala
UM +2813-17722 Pacific/Midway Midway Islands
UM +1917+16637 Pacific/Wake Wake Island

View File

@ -141,6 +141,13 @@ static bool check_signals = true;
static int SR_signum = SIGUSR2;
sigset_t SR_sigset;
#ifdef __APPLE__
static const int processor_id_unassigned = -1;
static const int processor_id_assigning = -2;
static const int processor_id_map_size = 256;
static volatile int processor_id_map[processor_id_map_size];
static volatile int processor_id_next = 0;
#endif
////////////////////////////////////////////////////////////////////////////////
// utility functions
@ -250,6 +257,13 @@ void os::Bsd::initialize_system_info() {
set_processor_count(1); // fallback
}
#ifdef __APPLE__
// initialize processor id map
for (int i = 0; i < processor_id_map_size; i++) {
processor_id_map[i] = processor_id_unassigned;
}
#endif
// get physical memory via hw.memsize sysctl (hw.memsize is used
// since it returns a 64 bit value)
mib[0] = CTL_HW;
@ -3222,69 +3236,32 @@ int os::active_processor_count() {
}
#ifdef __APPLE__
static volatile int* volatile apic_to_processor_mapping = NULL;
static volatile int next_processor_id = 0;
static inline volatile int* get_apic_to_processor_mapping() {
volatile int* mapping = Atomic::load_acquire(&apic_to_processor_mapping);
if (mapping == NULL) {
// Calculate possible number space for APIC ids. This space is not necessarily
// in the range [0, number_of_processors).
uint total_bits = 0;
for (uint i = 0;; ++i) {
uint eax = 0xb; // Query topology leaf
uint ebx;
uint ecx = i;
uint edx;
__asm__ ("cpuid\n\t" : "+a" (eax), "+b" (ebx), "+c" (ecx), "+d" (edx) : );
uint level_type = (ecx >> 8) & 0xFF;
if (level_type == 0) {
// Invalid level; end of topology
break;
}
uint level_apic_id_shift = eax & ((1u << 5) - 1);
total_bits += level_apic_id_shift;
}
uint max_apic_ids = 1u << total_bits;
mapping = NEW_C_HEAP_ARRAY(int, max_apic_ids, mtInternal);
for (uint i = 0; i < max_apic_ids; ++i) {
mapping[i] = -1;
}
if (!Atomic::replace_if_null(&apic_to_processor_mapping, mapping)) {
FREE_C_HEAP_ARRAY(int, mapping);
mapping = Atomic::load_acquire(&apic_to_processor_mapping);
}
}
return mapping;
}
uint os::processor_id() {
volatile int* mapping = get_apic_to_processor_mapping();
uint eax = 0xb;
// Get the initial APIC id and return the associated processor id. The initial APIC
// id is limited to 8-bits, which means we can have at most 256 unique APIC ids. If
// the system has more processors (or the initial APIC ids are discontiguous) the
// APIC id will be truncated and more than one processor will potentially share the
// same processor id. This is not optimal, but unlikely to happen in practice. Should
// this become a real problem we could switch to using x2APIC ids, which are 32-bit
// wide. However, note that x2APIC is Intel-specific, and the wider number space
// would require a more complicated mapping approach.
uint eax = 0x1;
uint ebx;
uint ecx = 0;
uint edx;
__asm__ ("cpuid\n\t" : "+a" (eax), "+b" (ebx), "+c" (ecx), "+d" (edx) : );
// Map from APIC id to a unique logical processor ID in the expected
// [0, num_processors) range.
uint apic_id = edx;
int processor_id = Atomic::load(&mapping[apic_id]);
uint apic_id = (ebx >> 24) & (processor_id_map_size - 1);
int processor_id = Atomic::load(&processor_id_map[apic_id]);
while (processor_id < 0) {
if (Atomic::cmpxchg(&mapping[apic_id], -1, -2) == -1) {
Atomic::store(&mapping[apic_id], Atomic::add(&next_processor_id, 1) - 1);
// Assign processor id to APIC id
processor_id = Atomic::cmpxchg(&processor_id_map[apic_id], processor_id_unassigned, processor_id_assigning);
if (processor_id == processor_id_unassigned) {
processor_id = (Atomic::add(&processor_id_next, 1) - 1) % os::processor_count();
Atomic::store(&processor_id_map[apic_id], processor_id);
}
processor_id = Atomic::load(&mapping[apic_id]);
}
assert(processor_id >= 0 && processor_id < os::processor_count(), "invalid processor id");

View File

@ -26,7 +26,8 @@
#include "gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp"
#include "gc/shenandoah/shenandoahCollectionSet.hpp"
#include "gc/shenandoah/shenandoahFreeSet.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "logging/log.hpp"
#include "logging/logTag.hpp"
#include "utilities/quickSort.hpp"

View File

@ -25,7 +25,7 @@
#include "gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp"
#include "gc/shenandoah/shenandoahCollectionSet.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "logging/log.hpp"
#include "logging/logTag.hpp"
#include "runtime/os.hpp"

View File

@ -26,7 +26,8 @@
#include "gc/shenandoah/shenandoahCollectionSet.hpp"
#include "gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp"
#include "gc/shenandoah/shenandoahFreeSet.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "logging/log.hpp"
#include "logging/logTag.hpp"

View File

@ -25,7 +25,8 @@
#include "gc/shenandoah/heuristics/shenandoahPassiveHeuristics.hpp"
#include "gc/shenandoah/shenandoahCollectionSet.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "logging/log.hpp"
#include "logging/logTag.hpp"

View File

@ -26,7 +26,8 @@
#include "gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp"
#include "gc/shenandoah/shenandoahCollectionSet.hpp"
#include "gc/shenandoah/shenandoahFreeSet.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "logging/log.hpp"
#include "logging/logTag.hpp"

View File

@ -25,6 +25,7 @@
#include "gc/shenandoah/shenandoahCollectionSet.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegionSet.hpp"
#include "gc/shenandoah/shenandoahUtils.hpp"
#include "runtime/atomic.hpp"
@ -39,7 +40,6 @@ ShenandoahCollectionSet::ShenandoahCollectionSet(ShenandoahHeap* heap, char* hea
_biased_cset_map(_map_space.base()),
_heap(heap),
_garbage(0),
_live_data(0),
_used(0),
_region_count(0),
_current_index(0) {
@ -83,9 +83,8 @@ void ShenandoahCollectionSet::add_region(ShenandoahHeapRegion* r) {
assert(Thread::current()->is_VM_thread(), "Must be VMThread");
assert(!is_in(r), "Already in collection set");
_cset_map[r->index()] = 1;
_region_count ++;
_region_count++;
_garbage += r->garbage();
_live_data += r->get_live_data_bytes();
_used += r->used();
// Update the region status too. State transition would be checked internally.
@ -103,7 +102,6 @@ void ShenandoahCollectionSet::clear() {
#endif
_garbage = 0;
_live_data = 0;
_used = 0;
_region_count = 0;

View File

@ -42,7 +42,6 @@ private:
ShenandoahHeap* const _heap;
size_t _garbage;
size_t _live_data;
size_t _used;
size_t _region_count;
@ -77,7 +76,6 @@ public:
void print_on(outputStream* out) const;
size_t used() const { return _used; }
size_t live_data() const { return _live_data; }
size_t garbage() const { return _garbage; }
void clear();

View File

@ -802,7 +802,7 @@ void ShenandoahConcurrentMark::mark_loop_prework(uint w, ShenandoahTaskTerminato
bool strdedup) {
ShenandoahObjToScanQueue* q = get_queue(w);
jushort* ld = _heap->get_liveness_cache(w);
ShenandoahLiveData* ld = _heap->get_liveness_cache(w);
// TODO: We can clean up this if we figure out how to do templated oop closures that
// play nice with specialized_oop_iterators.
@ -848,7 +848,7 @@ void ShenandoahConcurrentMark::mark_loop_prework(uint w, ShenandoahTaskTerminato
}
template <class T, bool CANCELLABLE>
void ShenandoahConcurrentMark::mark_loop_work(T* cl, jushort* live_data, uint worker_id, ShenandoahTaskTerminator *terminator) {
void ShenandoahConcurrentMark::mark_loop_work(T* cl, ShenandoahLiveData* live_data, uint worker_id, ShenandoahTaskTerminator *terminator) {
uintx stride = ShenandoahMarkLoopStride;
ShenandoahHeap* heap = ShenandoahHeap::heap();

View File

@ -44,7 +44,7 @@ public:
//
private:
template <class T>
inline void do_task(ShenandoahObjToScanQueue* q, T* cl, jushort* live_data, ShenandoahMarkTask* task);
inline void do_task(ShenandoahObjToScanQueue* q, T* cl, ShenandoahLiveData* live_data, ShenandoahMarkTask* task);
template <class T>
inline void do_chunked_array_start(ShenandoahObjToScanQueue* q, T* cl, oop array);
@ -52,10 +52,10 @@ private:
template <class T>
inline void do_chunked_array(ShenandoahObjToScanQueue* q, T* cl, oop array, int chunk, int pow);
inline void count_liveness(jushort* live_data, oop obj);
inline void count_liveness(ShenandoahLiveData* live_data, oop obj);
template <class T, bool CANCELLABLE>
void mark_loop_work(T* cl, jushort* live_data, uint worker_id, ShenandoahTaskTerminator *t);
void mark_loop_work(T* cl, ShenandoahLiveData* live_data, uint worker_id, ShenandoahTaskTerminator *t);
template <bool CANCELLABLE>
void mark_loop_prework(uint worker_id, ShenandoahTaskTerminator *terminator, ReferenceProcessor *rp, bool strdedup);

View File

@ -27,6 +27,7 @@
#include "gc/shenandoah/shenandoahAsserts.hpp"
#include "gc/shenandoah/shenandoahBarrierSet.inline.hpp"
#include "gc/shenandoah/shenandoahConcurrentMark.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
#include "gc/shenandoah/shenandoahStringDedup.inline.hpp"
#include "gc/shenandoah/shenandoahTaskqueue.inline.hpp"
@ -36,7 +37,7 @@
#include "runtime/prefetch.inline.hpp"
template <class T>
void ShenandoahConcurrentMark::do_task(ShenandoahObjToScanQueue* q, T* cl, jushort* live_data, ShenandoahMarkTask* task) {
void ShenandoahConcurrentMark::do_task(ShenandoahObjToScanQueue* q, T* cl, ShenandoahLiveData* live_data, ShenandoahMarkTask* task) {
oop obj = task->obj();
shenandoah_assert_not_forwarded(NULL, obj);
@ -66,28 +67,22 @@ void ShenandoahConcurrentMark::do_task(ShenandoahObjToScanQueue* q, T* cl, jusho
}
}
inline void ShenandoahConcurrentMark::count_liveness(jushort* live_data, oop obj) {
inline void ShenandoahConcurrentMark::count_liveness(ShenandoahLiveData* live_data, oop obj) {
size_t region_idx = _heap->heap_region_index_containing(obj);
ShenandoahHeapRegion* region = _heap->get_region(region_idx);
size_t size = obj->size();
if (!region->is_humongous_start()) {
assert(!region->is_humongous(), "Cannot have continuations here");
size_t max = (1 << (sizeof(jushort) * 8)) - 1;
if (size >= max) {
// too big, add to region data directly
region->increase_live_data_gc_words(size);
ShenandoahLiveData cur = live_data[region_idx];
size_t new_val = size + cur;
if (new_val >= SHENANDOAH_LIVEDATA_MAX) {
// overflow, flush to region data
region->increase_live_data_gc_words(new_val);
live_data[region_idx] = 0;
} else {
jushort cur = live_data[region_idx];
size_t new_val = cur + size;
if (new_val >= max) {
// overflow, flush to region data
region->increase_live_data_gc_words(new_val);
live_data[region_idx] = 0;
} else {
// still good, remember in locals
live_data[region_idx] = (jushort) new_val;
}
// still good, remember in locals
live_data[region_idx] = (ShenandoahLiveData) new_val;
}
} else {
shenandoah_assert_in_correct_region(NULL, obj);

View File

@ -47,6 +47,7 @@ ShenandoahControlThread::ShenandoahControlThread() :
_degen_point(ShenandoahHeap::_degenerated_outside_cycle),
_allocs_seen(0) {
reset_gc_id();
create_and_start(ShenandoahCriticalControlThreadPriority ? CriticalPriority : NearMaxPriority);
_periodic_task.enroll();
_periodic_satb_flush_task.enroll();
@ -172,6 +173,9 @@ void ShenandoahControlThread::run_service() {
assert (!gc_requested || cause != GCCause::_last_gc_cause, "GC cause should be set");
if (gc_requested) {
// GC is starting, bump the internal ID
update_gc_id();
heap->reset_bytes_allocated_since_gc_start();
// Use default constructor to snapshot the Metaspace state before GC.
@ -466,10 +470,20 @@ void ShenandoahControlThread::request_gc(GCCause::Cause cause) {
}
void ShenandoahControlThread::handle_requested_gc(GCCause::Cause cause) {
_requested_gc_cause = cause;
_gc_requested.set();
// Make sure we have at least one complete GC cycle before unblocking
// from the explicit GC request.
//
// This is especially important for weak references cleanup and/or native
// resources (e.g. DirectByteBuffers) machinery: when explicit GC request
// comes very late in the already running cycle, it would miss lots of new
// opportunities for cleanup that were made available before the caller
// requested the GC.
size_t required_gc_id = get_gc_id() + 1;
MonitorLocker ml(&_gc_waiters_lock);
while (_gc_requested.is_set()) {
while (get_gc_id() < required_gc_id) {
_gc_requested.set();
_requested_gc_cause = cause;
ml.wait();
}
}
@ -565,6 +579,18 @@ void ShenandoahControlThread::set_forced_counters_update(bool value) {
_force_counters_update.set_cond(value);
}
void ShenandoahControlThread::reset_gc_id() {
Atomic::store(&_gc_id, (size_t)0);
}
void ShenandoahControlThread::update_gc_id() {
Atomic::inc(&_gc_id);
}
size_t ShenandoahControlThread::get_gc_id() {
return Atomic::load(&_gc_id);
}
void ShenandoahControlThread::print() const {
print_on(tty);
}

View File

@ -87,6 +87,8 @@ private:
shenandoah_padding(0);
volatile size_t _allocs_seen;
shenandoah_padding(1);
volatile size_t _gc_id;
shenandoah_padding(2);
bool check_cancellation_or_degen(ShenandoahHeap::ShenandoahDegenPoint point);
void service_concurrent_normal_cycle(GCCause::Cause cause);
@ -98,6 +100,10 @@ private:
void notify_alloc_failure_waiters();
bool is_alloc_failure_gc();
void reset_gc_id();
void update_gc_id();
size_t get_gc_id();
void notify_gc_waiters();
// Handle GC request.

View File

@ -23,7 +23,7 @@
#include "precompiled.hpp"
#include "gc/shenandoah/shenandoahHeap.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahUtils.hpp"
#include "gc/shenandoah/shenandoahEvacOOMHandler.hpp"
#include "gc/shenandoah/shenandoahThreadLocalData.hpp"

View File

@ -124,18 +124,10 @@ HeapWord* ShenandoahFreeSet::allocate_single(ShenandoahAllocRequest& req, bool&
}
}
// Try to mix the allocation into the mutator view:
if (ShenandoahAllowMixedAllocs) {
for (size_t c = _mutator_rightmost + 1; c > _mutator_leftmost; c--) {
size_t idx = c - 1;
if (is_mutator_free(idx)) {
HeapWord* result = try_allocate_in(_heap->get_region(idx), req, in_new_region);
if (result != NULL) {
return result;
}
}
}
}
// No dice. Do not try to mix mutator and GC allocations, because
// URWM moves due to GC allocations would expose unparsable mutator
// allocations.
break;
}
default:

View File

@ -42,7 +42,7 @@
#include "gc/shenandoah/shenandoahFreeSet.hpp"
#include "gc/shenandoah/shenandoahPhaseTimings.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegionSet.hpp"
#include "gc/shenandoah/shenandoahMarkCompact.hpp"
#include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
@ -353,10 +353,10 @@ jint ShenandoahHeap::initialize() {
// Initialize the rest of GC subsystems
//
_liveness_cache = NEW_C_HEAP_ARRAY(jushort*, _max_workers, mtGC);
_liveness_cache = NEW_C_HEAP_ARRAY(ShenandoahLiveData*, _max_workers, mtGC);
for (uint worker = 0; worker < _max_workers; worker++) {
_liveness_cache[worker] = NEW_C_HEAP_ARRAY(jushort, _num_regions, mtGC);
Copy::fill_to_bytes(_liveness_cache[worker], _num_regions * sizeof(jushort));
_liveness_cache[worker] = NEW_C_HEAP_ARRAY(ShenandoahLiveData, _num_regions, mtGC);
Copy::fill_to_bytes(_liveness_cache[worker], _num_regions * sizeof(ShenandoahLiveData));
}
// There should probably be Shenandoah-specific options for these,
@ -470,7 +470,6 @@ ShenandoahHeap::ShenandoahHeap(ShenandoahCollectorPolicy* policy) :
_heap = this;
log_info(gc, init)("GC threads: " UINT32_FORMAT " parallel, " UINT32_FORMAT " concurrent", ParallelGCThreads, ConcGCThreads);
log_info(gc, init)("Reference processing: %s", ParallelRefProcEnabled ? "parallel" : "serial");
BarrierSet::set_barrier_set(new ShenandoahBarrierSet(this));
@ -1359,11 +1358,14 @@ public:
ShenandoahInitMarkUpdateRegionStateClosure() : _ctx(ShenandoahHeap::heap()->marking_context()) {}
void heap_region_do(ShenandoahHeapRegion* r) {
assert(!r->has_live(), "Region " SIZE_FORMAT " should have no live data", r->index());
if (r->is_active()) {
r->clear_live_data();
_ctx->capture_top_at_mark_start(r);
// Check if region needs updating its TAMS. We have updated it already during concurrent
// reset, so it is very likely we don't need to do another write here.
if (_ctx->top_at_mark_start(r) != r->top()) {
_ctx->capture_top_at_mark_start(r);
}
} else {
assert(!r->has_live(), "Region " SIZE_FORMAT " should have no live data", r->index());
assert(_ctx->top_at_mark_start(r) == r->top(),
"Region " SIZE_FORMAT " should already have correct TAMS", r->index());
}
@ -1463,7 +1465,7 @@ public:
// Remember limit for updating refs. It's guaranteed that we get no
// from-space-refs written from here on.
r->set_update_watermark(r->top());
r->set_update_watermark_at_safepoint(r->top());
} else {
assert(!r->has_live(), "Region " SIZE_FORMAT " should have no live data", r->index());
assert(_ctx->top_at_mark_start(r) == r->top(),
@ -1503,7 +1505,11 @@ void ShenandoahHeap::op_final_mark() {
assert_pinned_region_status();
}
// Force the threads to reacquire their TLABs outside the collection set.
// Retire the TLABs, which will force threads to reacquire their TLABs after the pause.
// This is needed for two reasons. Strong one: new allocations would be with new freeset,
// which would be outside the collection set, so no cset writes would happen there.
// Weaker one: new allocations would happen past update watermark, and so less work would
// be needed for reference updates (would update the large filler instead).
{
ShenandoahGCPhase phase(ShenandoahPhaseTimings::retire_tlabs);
make_parsable(true);
@ -1652,11 +1658,32 @@ void ShenandoahHeap::op_roots() {
set_concurrent_root_in_progress(false);
}
class ShenandoahResetUpdateRegionStateClosure : public ShenandoahHeapRegionClosure {
private:
ShenandoahMarkingContext* const _ctx;
public:
ShenandoahResetUpdateRegionStateClosure() : _ctx(ShenandoahHeap::heap()->marking_context()) {}
void heap_region_do(ShenandoahHeapRegion* r) {
if (r->is_active()) {
// Reset live data and set TAMS optimistically. We would recheck these under the pause
// anyway to capture any updates that happened since now.
r->clear_live_data();
_ctx->capture_top_at_mark_start(r);
}
}
bool is_thread_safe() { return true; }
};
void ShenandoahHeap::op_reset() {
if (ShenandoahPacing) {
pacer()->setup_for_reset();
}
reset_mark_bitmap();
ShenandoahResetUpdateRegionStateClosure cl;
parallel_heap_region_iterate(&cl);
}
void ShenandoahHeap::op_preclean() {
@ -1890,16 +1917,23 @@ void ShenandoahHeap::set_concurrent_root_in_progress(bool in_progress) {
void ShenandoahHeap::ref_processing_init() {
assert(_max_workers > 0, "Sanity");
bool mt_processing = ParallelRefProcEnabled && (ParallelGCThreads > 1);
bool mt_discovery = _max_workers > 1;
_ref_processor =
new ReferenceProcessor(&_subject_to_discovery, // is_subject_to_discovery
ParallelRefProcEnabled, // MT processing
mt_processing, // MT processing
_max_workers, // Degree of MT processing
true, // MT discovery
mt_discovery, // MT discovery
_max_workers, // Degree of MT discovery
false, // Reference discovery is not atomic
NULL, // No closure, should be installed before use
true); // Scale worker threads
log_info(gc, init)("Reference processing: %s discovery, %s processing",
mt_discovery ? "parallel" : "serial",
mt_processing ? "parallel" : "serial");
shenandoah_assert_rp_isalive_not_installed();
}
@ -2278,10 +2312,6 @@ void ShenandoahHeap::op_init_updaterefs() {
{
ShenandoahGCPhase phase(ShenandoahPhaseTimings::init_update_refs_prepare);
make_parsable(true);
// Reset iterator.
_update_refs_iterator.reset();
}
@ -2873,7 +2903,7 @@ const char* ShenandoahHeap::degen_event_message(ShenandoahDegenPoint point) cons
}
}
jushort* ShenandoahHeap::get_liveness_cache(uint worker_id) {
ShenandoahLiveData* ShenandoahHeap::get_liveness_cache(uint worker_id) {
#ifdef ASSERT
assert(_liveness_cache != NULL, "sanity");
assert(worker_id < _max_workers, "sanity");
@ -2887,11 +2917,11 @@ jushort* ShenandoahHeap::get_liveness_cache(uint worker_id) {
void ShenandoahHeap::flush_liveness_cache(uint worker_id) {
assert(worker_id < _max_workers, "sanity");
assert(_liveness_cache != NULL, "sanity");
jushort* ld = _liveness_cache[worker_id];
ShenandoahLiveData* ld = _liveness_cache[worker_id];
for (uint i = 0; i < num_regions(); i++) {
ShenandoahHeapRegion* r = get_region(i);
jushort live = ld[i];
ShenandoahLiveData live = ld[i];
if (live > 0) {
ShenandoahHeapRegion* r = get_region(i);
r->increase_live_data_gc_words(live);
ld[i] = 0;
}

View File

@ -61,6 +61,16 @@ class ShenandoahVerifier;
class ShenandoahWorkGang;
class VMStructs;
// Used for buffering per-region liveness data.
// Needed since ShenandoahHeapRegion uses atomics to update liveness.
// The ShenandoahHeap array has max-workers elements, each of which is an array of
// uint16_t * max_regions. The choice of uint16_t is not accidental:
// there is a tradeoff between static/dynamic footprint that translates
// into cache pressure (which is already high during marking), and
// too many atomic updates. uint32_t is too large, uint8_t is too small.
typedef uint16_t ShenandoahLiveData;
#define SHENANDOAH_LIVEDATA_MAX ((ShenandoahLiveData)-1)
class ShenandoahRegionIterator : public StackObj {
private:
ShenandoahHeap* _heap;
@ -612,15 +622,7 @@ private:
bool _bitmap_region_special;
bool _aux_bitmap_region_special;
// Used for buffering per-region liveness data.
// Needed since ShenandoahHeapRegion uses atomics to update liveness.
//
// The array has max-workers elements, each of which is an array of
// jushort * max_regions. The choice of jushort is not accidental:
// there is a tradeoff between static/dynamic footprint that translates
// into cache pressure (which is already high during marking), and
// too many atomic updates. size_t/jint is too large, jbyte is too small.
jushort** _liveness_cache;
ShenandoahLiveData** _liveness_cache;
public:
inline ShenandoahMarkingContext* complete_marking_context() const;
@ -650,7 +652,7 @@ public:
bool is_bitmap_slice_committed(ShenandoahHeapRegion* r, bool skip_self = false);
// Liveness caching support
jushort* get_liveness_cache(uint worker_id);
ShenandoahLiveData* get_liveness_cache(uint worker_id);
void flush_liveness_cache(uint worker_id);
// ---------- Evacuation support

View File

@ -298,10 +298,6 @@ void ShenandoahHeapRegion::make_committed_bypass() {
}
}
void ShenandoahHeapRegion::clear_live_data() {
Atomic::release_store_fence(&_live_data, (size_t)0);
}
void ShenandoahHeapRegion::reset_alloc_metadata() {
_tlab_allocs = 0;
_gclab_allocs = 0;
@ -324,26 +320,6 @@ void ShenandoahHeapRegion::set_live_data(size_t s) {
_live_data = (s >> LogHeapWordSize);
}
size_t ShenandoahHeapRegion::get_live_data_words() const {
return Atomic::load_acquire(&_live_data);
}
size_t ShenandoahHeapRegion::get_live_data_bytes() const {
return get_live_data_words() * HeapWordSize;
}
bool ShenandoahHeapRegion::has_live() const {
return get_live_data_words() != 0;
}
size_t ShenandoahHeapRegion::garbage() const {
assert(used() >= get_live_data_bytes(), "Live Data must be a subset of used() live: " SIZE_FORMAT " used: " SIZE_FORMAT,
get_live_data_bytes(), used());
size_t result = used() - get_live_data_bytes();
return result;
}
void ShenandoahHeapRegion::print_on(outputStream* st) const {
st->print("|");
st->print(SIZE_FORMAT_W(5), this->_index);

View File

@ -242,7 +242,7 @@ private:
volatile size_t _live_data;
volatile size_t _critical_pins;
HeapWord* _update_watermark;
HeapWord* volatile _update_watermark;
public:
ShenandoahHeapRegion(HeapWord* start, size_t index, bool committed);
@ -334,7 +334,7 @@ public:
// Allocation (return NULL if full)
inline HeapWord* allocate(size_t word_size, ShenandoahAllocRequest::Type type);
void clear_live_data();
inline void clear_live_data();
void set_live_data(size_t s);
// Increase live data for newly allocated region
@ -343,14 +343,14 @@ public:
// Increase live data for region scanned with GC
inline void increase_live_data_gc_words(size_t s);
bool has_live() const;
size_t get_live_data_bytes() const;
size_t get_live_data_words() const;
inline bool has_live() const;
inline size_t get_live_data_bytes() const;
inline size_t get_live_data_words() const;
inline size_t garbage() const;
void print_on(outputStream* st) const;
size_t garbage() const;
void recycle();
void oop_iterate(OopIterateClosure* cl);
@ -381,19 +381,9 @@ public:
size_t get_tlab_allocs() const;
size_t get_gclab_allocs() const;
HeapWord* get_update_watermark() const {
// Updates to the update-watermark only happen at safepoints.
// Since those updates are only monotonically increasing, possibly reading
// a stale value is only conservative - we would not miss to update any fields.
HeapWord* watermark = _update_watermark;
assert(bottom() <= watermark && watermark <= top(), "within bounds");
return watermark;
}
void set_update_watermark(HeapWord* w) {
assert(bottom() <= w && w <= top(), "within bounds");
_update_watermark = w;
}
inline HeapWord* get_update_watermark() const;
inline void set_update_watermark(HeapWord* w);
inline void set_update_watermark_at_safepoint(HeapWord* w);
private:
void do_commit();

View File

@ -88,4 +88,47 @@ inline void ShenandoahHeapRegion::internal_increase_live_data(size_t s) {
#endif
}
inline HeapWord* ShenandoahHeapRegion::get_update_watermark() const {
HeapWord* watermark = Atomic::load_acquire(&_update_watermark);
assert(bottom() <= watermark && watermark <= top(), "within bounds");
return watermark;
}
inline void ShenandoahHeapRegion::set_update_watermark(HeapWord* w) {
assert(bottom() <= w && w <= top(), "within bounds");
Atomic::release_store(&_update_watermark, w);
}
// Fast version that avoids synchronization, only to be used at safepoints.
inline void ShenandoahHeapRegion::set_update_watermark_at_safepoint(HeapWord* w) {
assert(bottom() <= w && w <= top(), "within bounds");
assert(SafepointSynchronize::is_at_safepoint(), "Should be at Shenandoah safepoint");
_update_watermark = w;
}
inline void ShenandoahHeapRegion::clear_live_data() {
Atomic::release_store_fence(&_live_data, (size_t)0);
}
inline size_t ShenandoahHeapRegion::get_live_data_words() const {
return Atomic::load_acquire(&_live_data);
}
inline size_t ShenandoahHeapRegion::get_live_data_bytes() const {
return get_live_data_words() * HeapWordSize;
}
inline bool ShenandoahHeapRegion::has_live() const {
return get_live_data_words() != 0;
}
inline size_t ShenandoahHeapRegion::garbage() const {
assert(used() >= get_live_data_bytes(),
"Live Data must be a subset of used() live: " SIZE_FORMAT " used: " SIZE_FORMAT,
get_live_data_bytes(), used());
size_t result = used() - get_live_data_bytes();
return result;
}
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHHEAPREGION_INLINE_HPP

View File

@ -23,7 +23,7 @@
#include "precompiled.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegionSet.hpp"
#include "gc/shenandoah/shenandoahHeapRegionCounters.hpp"
#include "memory/resourceArea.hpp"

View File

@ -27,7 +27,7 @@
#include "gc/shenandoah/shenandoahCollectionSet.inline.hpp"
#include "gc/shenandoah/shenandoahCollectorPolicy.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "gc/shenandoah/shenandoahHeuristics.hpp"
#include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
#include "logging/log.hpp"

View File

@ -22,7 +22,7 @@
*/
#include "precompiled.hpp"
#include "gc/shenandoah/shenandoahHeap.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahJfrSupport.hpp"
#include "jfr/jfrEvents.hpp"

View File

@ -34,6 +34,7 @@
#include "gc/shenandoah/shenandoahMarkCompact.hpp"
#include "gc/shenandoah/shenandoahHeapRegionSet.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "gc/shenandoah/shenandoahHeuristics.hpp"
#include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
#include "gc/shenandoah/shenandoahRootProcessor.inline.hpp"

View File

@ -23,7 +23,7 @@
#include "precompiled.hpp"
#include "gc/shared/markBitMap.inline.hpp"
#include "gc/shenandoah/shenandoahHeap.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "gc/shenandoah/shenandoahMarkingContext.hpp"

View File

@ -25,7 +25,7 @@
#define SHARE_GC_SHENANDOAH_SHENANDOAHOOPCLOSURES_HPP
#include "gc/shared/referenceProcessor.hpp"
#include "gc/shenandoah/shenandoahHeap.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahStrDedupQueue.hpp"
#include "gc/shenandoah/shenandoahTaskqueue.hpp"
#include "memory/iterator.hpp"

View File

@ -26,7 +26,7 @@
#include "gc/shared/workerDataArray.inline.hpp"
#include "gc/shenandoah/shenandoahCollectorPolicy.hpp"
#include "gc/shenandoah/shenandoahPhaseTimings.hpp"
#include "gc/shenandoah/shenandoahHeap.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeuristics.hpp"
#include "gc/shenandoah/shenandoahUtils.hpp"
#include "utilities/ostream.hpp"

View File

@ -30,7 +30,7 @@
#include "gc/shenandoah/shenandoahClosures.inline.hpp"
#include "gc/shenandoah/shenandoahConcurrentRoots.hpp"
#include "gc/shenandoah/shenandoahRootProcessor.inline.hpp"
#include "gc/shenandoah/shenandoahHeap.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahPhaseTimings.hpp"
#include "gc/shenandoah/shenandoahStringDedup.hpp"
#include "gc/shenandoah/shenandoahVMOperations.hpp"

View File

@ -31,6 +31,7 @@
#include "gc/shenandoah/shenandoahClosures.inline.hpp"
#include "gc/shenandoah/shenandoahConcurrentRoots.hpp"
#include "gc/shenandoah/shenandoahHeuristics.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahPhaseTimings.hpp"
#include "gc/shenandoah/shenandoahRootProcessor.hpp"
#include "gc/shenandoah/shenandoahUtils.hpp"

View File

@ -33,6 +33,7 @@
#include "gc/shenandoah/shenandoahClosures.inline.hpp"
#include "gc/shenandoah/shenandoahCodeRoots.hpp"
#include "gc/shenandoah/shenandoahConcurrentRoots.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahNMethod.inline.hpp"
#include "gc/shenandoah/shenandoahLock.hpp"
#include "gc/shenandoah/shenandoahRootProcessor.hpp"

View File

@ -30,7 +30,7 @@
#include "gc/shared/gcWhen.hpp"
#include "gc/shenandoah/shenandoahCollectorPolicy.hpp"
#include "gc/shenandoah/shenandoahMarkCompact.hpp"
#include "gc/shenandoah/shenandoahHeap.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeuristics.hpp"
#include "gc/shenandoah/shenandoahUtils.hpp"
#include "utilities/debug.hpp"

View File

@ -27,6 +27,7 @@
#include "gc/shenandoah/shenandoahForwarding.inline.hpp"
#include "gc/shenandoah/shenandoahPhaseTimings.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.inline.hpp"
#include "gc/shenandoah/shenandoahRootProcessor.hpp"
#include "gc/shenandoah/shenandoahTaskqueue.inline.hpp"
#include "gc/shenandoah/shenandoahUtils.hpp"

View File

@ -209,10 +209,6 @@
diagnostic(bool, ShenandoahElasticTLAB, true, \
"Use Elastic TLABs with Shenandoah") \
\
diagnostic(bool, ShenandoahAllowMixedAllocs, true, \
"Allow mixing mutator and collector allocations into a single " \
"region. Some heuristics enable/disable it for their needs") \
\
experimental(uintx, ShenandoahEvacReserve, 5, \
"How much of heap to reserve for evacuations. Larger values make "\
"GC evacuate more live objects on every cycle, while leaving " \

View File

@ -272,6 +272,9 @@ public final class TimeZoneNames extends TimeZoneNamesBundle {
String VICTORIA[] = new String[] {"Australian Eastern Standard Time (Victoria)", "AEST",
"Australian Eastern Daylight Time (Victoria)", "AEDT",
"Australian Eastern Time (Victoria)", "AET"};
String WGT[] = new String[] {"Western Greenland Time", "WGT",
"Western Greenland Summer Time", "WGST",
"Western Greenland Time", "WGT"};
String UTC[] = new String[] {"Coordinated Universal Time", "UTC",
"Coordinated Universal Time", "UTC",
"Coordinated Universal Time", "UTC"};
@ -432,7 +435,7 @@ public final class TimeZoneNames extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -444,9 +447,7 @@ public final class TimeZoneNames extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Western Greenland Time", "WGT",
"Western Greenland Summer Time", "WGST",
"Western Greenland Time", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -514,6 +515,7 @@ public final class TimeZoneNames extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -556,7 +558,7 @@ public final class TimeZoneNames extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -798,7 +800,7 @@ public final class TimeZoneNames extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -1,4 +1,4 @@
## Apache Xerces v2.12.0
## Apache Xerces v2.12.1
### Apache Xerces Notice
<pre>
@ -8,9 +8,11 @@
=========================================================================
Apache Xerces Java
Copyright 1999-2018 The Apache Software Foundation
Copyright 1999-2020 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
Portions of this software were originally based on the following:
- software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
- software copyright (c) 1999, Sun Microsystems., http://www.sun.com.

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_de extends TimeZoneNamesBundle {
String WET[] = new String[] {"Westeurop\u00e4ische Zeit", "WEZ",
"Westeurop\u00e4ische Sommerzeit", "WESZ",
"Westeurop\u00E4ische Zeit", "WEZ"};
String WGT[] = new String[] {"Westgr\u00f6nl\u00e4ndische Zeit", "WGT",
"Westgr\u00f6nl\u00e4ndische Sommerzeit", "WGST",
"Westgr\u00F6nl\u00E4ndische Zeit", "WGT"};
String WIT[] = new String[] {"Westindonesische Zeit", "WIB",
"Westindonesische Sommerzeit", "WIST",
"Westindonesische Zeit", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_de extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_de extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Westgr\u00f6nl\u00e4ndische Zeit", "WGT",
"Westgr\u00f6nl\u00e4ndische Sommerzeit", "WGST",
"Westgr\u00F6nl\u00E4ndische Zeit", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_de extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_de extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -782,7 +784,7 @@ public final class TimeZoneNames_de extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_es extends TimeZoneNamesBundle {
String WET[] = new String[] {"Hora de Europa Occidental", "WET",
"Hora de verano de Europa Occidental", "WEST",
"Hora de Europa Occidental", "WET"};
String WGT[] = new String[] {"Hora de Groenlandia Occidental", "WGT",
"Hora de verano de Groenlandia Occidental", "WGST",
"Hora de Groenlandia Occidental", "WGT"};
String WIT[] = new String[] {"Hora de Indonesia Occidental", "WIB",
"Indonesia Hora de verano de Indonesia Occidental", "WIST",
"Hora de Indonesia Occidental", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_es extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_es extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Hora de Groenlandia Occidental", "WGT",
"Hora de verano de Groenlandia Occidental", "WGST",
"Hora de Groenlandia Occidental", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_es extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_es extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -782,7 +784,7 @@ public final class TimeZoneNames_es extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_fr extends TimeZoneNamesBundle {
String WET[] = new String[] {"Heure d'Europe de l'Ouest", "WET",
"Heure d'\u00e9t\u00e9 d'Europe de l'Ouest", "WEST",
"Heure d'Europe de l'Ouest", "WET"} ;
String WGT[] = new String[] {"Heure du Groenland de l'Ouest", "WGT",
"Heure d'\u00e9t\u00e9 du Groenland de l'Ouest", "WGST",
"Heure du Groenland de l'Ouest", "WGT"};
String WIT[] = new String[] {"Heure de l'Indon\u00e9sie occidentale", "WIB",
"Heure d'\u00e9t\u00e9 de l'Indon\u00e9sie occidentale", "WIST",
"Heure de l'Indon\u00E9sie occidentale", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_fr extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_fr extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Heure du Groenland de l'Ouest", "WGT",
"Heure d'\u00e9t\u00e9 du Groenland de l'Ouest", "WGST",
"Heure du Groenland de l'Ouest", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_fr extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_fr extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -782,7 +784,7 @@ public final class TimeZoneNames_fr extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_it extends TimeZoneNamesBundle {
String WET[] = new String[] {"Ora dell'Europa occidentale", "WET",
"Ora estiva dell'Europa occidentale", "WEST",
"Ora dell'Europa occidentale", "WET"};
String WGT[] = new String[] {"Ora della Groenlandia occidentale", "WGT",
"Ora estiva della Groenlandia occidentale", "WGST",
"Ora della Groenlandia occidentale", "WGT"};
String WIT[] = new String[] {"Ora dell'Indonesia occidentale", "WIB",
"Ora estiva dell'Indonesia occidentale", "WIST",
"Ora dell'Indonesia occidentale", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_it extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_it extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Ora della Groenlandia occidentale", "WGT",
"Ora estiva della Groenlandia occidentale", "WGST",
"Ora della Groenlandia occidentale", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_it extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_it extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -782,7 +784,7 @@ public final class TimeZoneNames_it extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_ja extends TimeZoneNamesBundle {
String WET[] = new String[] {"\u897f\u30e8\u30fc\u30ed\u30c3\u30d1\u6642\u9593", "WET",
"\u897f\u30e8\u30fc\u30ed\u30c3\u30d1\u590f\u6642\u9593", "WEST",
"\u897F\u90E8\u30E8\u30FC\u30ED\u30C3\u30D1\u6642\u9593", "WET"};
String WGT[] = new String[] {"\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u6642\u9593", "WGT",
"\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "WGST",
"\u897F\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593", "WGT"};
String WIT[] = new String[] {"\u897f\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u6642\u9593", "WIB",
"\u897f\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u590f\u6642\u9593", "WIST",
"\u897F\u90E8\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u6642\u9593", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_ja extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_ja extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u6642\u9593", "WGT",
"\u897f\u30b0\u30ea\u30fc\u30f3\u30e9\u30f3\u30c9\u590f\u6642\u9593", "WGST",
"\u897F\u90E8\u30B0\u30EA\u30FC\u30F3\u30E9\u30F3\u30C9\u6642\u9593", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_ja extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_ja extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -782,7 +784,7 @@ public final class TimeZoneNames_ja extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_ko extends TimeZoneNamesBundle {
String WET[] = new String[] {"\uc11c\uc720\ub7fd \uc2dc\uac04", "WET",
"\uc11c\uc720\ub7fd \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WEST",
"\uC11C\uBD80 \uC720\uB7FD \uD45C\uC900\uC2DC", "WET"};
String WGT[] = new String[] {"\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc2dc\uac04", "WGT",
"\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WGST",
"\uC11C\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC", "WGT"};
String WIT[] = new String[] {"\uc11c\uc778\ub3c4\ub124\uc2dc\uc544 \uc2dc\uac04", "WIB",
"\uc11c\uc778\ub3c4\ub124\uc2dc\uc544 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WIST",
"\uC11C\uBD80 \uC778\uB3C4\uB124\uC2DC\uC544 \uD45C\uC900\uC2DC", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_ko extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_ko extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc2dc\uac04", "WGT",
"\uc11c\ubd80 \uadf8\ub9b0\ub79c\ub4dc \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "WGST",
"\uC11C\uBD80 \uADF8\uB9B0\uB780\uB4DC \uD45C\uC900\uC2DC", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_ko extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_ko extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -782,7 +784,7 @@ public final class TimeZoneNames_ko extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle {
String WET[] = new String[] {"Fuso hor\u00e1rio da Europa Ocidental", "WET",
"Fuso hor\u00e1rio de ver\u00e3o da Europa Ocidental", "WEST",
"Hor\u00E1rio da Europa Ocidental", "WET"};
String WGT[] = new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Ocidental", "WGT",
"Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST",
"Hor\u00E1rio da Groenl\u00E2ndia Ocidental", "WGT"};
String WIT[] = new String[] {"Fuso hor\u00e1rio da Indon\u00e9sia Ocidental", "WIB",
"Fuso hor\u00e1rio de ver\u00e3o da Indon\u00e9sia Ocidental", "WIST",
"Hor\u00E1rio da Indon\u00E9sia Ocidental", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"Fuso hor\u00e1rio da Groenl\u00e2ndia Ocidental", "WGT",
"Fuso hor\u00e1rio de ver\u00e3o da Groenl\u00e2ndia Ocidental", "WGST",
"Hor\u00E1rio da Groenl\u00E2ndia Ocidental", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -782,7 +784,7 @@ public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_sv extends TimeZoneNamesBundle {
String WET[] = new String[] {"V\u00e4steuropeisk tid", "WET",
"V\u00e4steuropeisk sommartid", "WEST",
"V\u00E4steuropeisk tid", "WET"};
String WGT[] = new String[] {"V\u00e4stra Gr\u00f6nland, normaltid", "WGT",
"V\u00e4stra Gr\u00f6nland, sommartid", "WGST",
"V\u00E4stgr\u00F6nl\u00E4ndsk tid", "WGT"};
String WIT[] = new String[] {"V\u00e4stindonesisk tid", "WIB",
"V\u00e4stindonesisk sommartid", "WIST",
"V\u00E4stindonesisk tid", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_sv extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_sv extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"V\u00e4stra Gr\u00f6nland, normaltid", "WGT",
"V\u00e4stra Gr\u00f6nland, sommartid", "WGST",
"V\u00E4stgr\u00F6nl\u00E4ndsk tid", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_sv extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_sv extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -782,7 +784,7 @@ public final class TimeZoneNames_sv extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_zh_CN extends TimeZoneNamesBundle {
String WET[] = new String[] {"\u897f\u6b27\u65f6\u95f4", "WET",
"\u897f\u6b27\u590f\u4ee4\u65f6", "WEST",
"\u897F\u6B27\u65F6\u95F4", "WET"};
String WGT[] = new String[] {"\u897f\u683c\u6797\u5170\u5c9b\u65f6\u95f4", "WGT",
"\u897f\u683c\u6797\u5170\u5c9b\u590f\u4ee4\u65f6", "WGST",
"\u897F\u683C\u6797\u5170\u5C9B\u65F6\u95F4", "WGT"};
String WIT[] = new String[] {"\u897f\u5370\u5ea6\u5c3c\u897f\u4e9a\u65f6\u95f4", "WIB",
"\u897f\u5370\u5ea6\u5c3c\u897f\u4e9a\u590f\u4ee4\u65f6", "WIST",
"\u897F\u5370\u5EA6\u5C3C\u897F\u4E9A\u65F6\u95F4", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_zh_CN extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_zh_CN extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\u897f\u683c\u6797\u5170\u5c9b\u65f6\u95f4", "WGT",
"\u897f\u683c\u6797\u5170\u5c9b\u590f\u4ee4\u65f6", "WGST",
"\u897F\u683C\u6797\u5170\u5C9B\u65F6\u95F4", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_zh_CN extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_zh_CN extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -782,7 +784,7 @@ public final class TimeZoneNames_zh_CN extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -252,6 +252,9 @@ public final class TimeZoneNames_zh_TW extends TimeZoneNamesBundle {
String WET[] = new String[] {"\u897f\u6b50\u6642\u9593", "WET",
"\u897f\u6b50\u590f\u4ee4\u6642\u9593", "WEST",
"\u897F\u6B50\u6642\u9593", "WET"};
String WGT[] = new String[] {"\u897f\u683c\u6797\u862d\u5cf6\u6642\u9593", "WGT",
"\u897f\u683c\u6797\u862d\u5cf6\u590f\u4ee4\u6642\u9593", "WGST",
"\u897F\u683C\u9675\u862D\u6642\u9593", "WGT"};
String WIT[] = new String[] {"\u897f\u5370\u5c3c\u6642\u9593", "WIB",
"\u897f\u5370\u5c3c\u590f\u4ee4\u6642\u9593", "WIST",
"\u897F\u5370\u5C3C\u6642\u9593", "WIB"};
@ -430,7 +433,7 @@ public final class TimeZoneNames_zh_TW extends TimeZoneNamesBundle {
{"America/Cuiaba", AMT},
{"America/Curacao", AST},
{"America/Danmarkshavn", GMT},
{"America/Dawson", PST},
{"America/Dawson", MST},
{"America/Dawson_Creek", MST},
{"America/Detroit", EST},
{"America/Dominica", AST},
@ -442,9 +445,7 @@ public final class TimeZoneNames_zh_TW extends TimeZoneNamesBundle {
{"America/Fort_Wayne", EST},
{"America/Fortaleza", BRT},
{"America/Glace_Bay", AST},
{"America/Godthab", new String[] {"\u897f\u683c\u6797\u862d\u5cf6\u6642\u9593", "WGT",
"\u897f\u683c\u6797\u862d\u5cf6\u590f\u4ee4\u6642\u9593", "WGST",
"\u897F\u683C\u9675\u862D\u6642\u9593", "WGT"}},
{"America/Godthab", WGT},
{"America/Goose_Bay", AST},
{"America/Grand_Turk", EST},
{"America/Grenada", AST},
@ -512,6 +513,7 @@ public final class TimeZoneNames_zh_TW extends TimeZoneNamesBundle {
{"America/North_Dakota/Beulah", CST},
{"America/North_Dakota/Center", CST},
{"America/North_Dakota/New_Salem", CST},
{"America/Nuuk", WGT},
{"America/Ojinaga", MST},
{"America/Panama", EST},
{"America/Pangnirtung", EST},
@ -551,7 +553,7 @@ public final class TimeZoneNames_zh_TW extends TimeZoneNamesBundle {
{"America/Tortola", AST},
{"America/Vancouver", PST},
{"America/Virgin", AST},
{"America/Whitehorse", PST},
{"America/Whitehorse", MST},
{"America/Winnipeg", CST},
{"America/Yakutat", AKST},
{"America/Yellowknife", MST},
@ -784,7 +786,7 @@ public final class TimeZoneNames_zh_TW extends TimeZoneNamesBundle {
{"Canada/Mountain", MST},
{"Canada/Newfoundland", NST},
{"Canada/Pacific", PST},
{"Canada/Yukon", PST},
{"Canada/Yukon", MST},
{"Canada/Saskatchewan", CST},
{"CAT", CAT},
{"CET", CET},

View File

@ -817,6 +817,7 @@ class ZoneName {
"America/Dominica", "America/Port_of_Spain",
"America/Ensenada", "America/Tijuana",
"America/Fort_Wayne", "America/Indiana/Indianapolis",
"America/Godthab", "America/Nuuk",
"America/Grenada", "America/Port_of_Spain",
"America/Guadeloupe", "America/Port_of_Spain",
"America/Indianapolis", "America/Indiana/Indianapolis",